From c6704fe488452ced473585bb1df49ae4fca0816d Mon Sep 17 00:00:00 2001 From: ostempel Date: Thu, 11 Dec 2025 10:54:35 +0100 Subject: [PATCH 1/4] added js client --- .gitignore | 3 + Makefile | 8 +- bun.lock | 24 + js/Makefile | 16 + js/buf/validate/validate_pb.d.ts | 4597 ++++++++++++++++ js/buf/validate/validate_pb.js | 351 ++ js/buf/validate/validate_pb.ts | 4761 +++++++++++++++++ js/metalstack/admin/v2/filesystem_pb.d.ts | 207 + js/metalstack/admin/v2/filesystem_pb.js | 48 + js/metalstack/admin/v2/filesystem_pb.ts | 248 + js/metalstack/admin/v2/image_pb.d.ts | 242 + js/metalstack/admin/v2/image_pb.js | 59 + js/metalstack/admin/v2/image_pb.ts | 288 + js/metalstack/admin/v2/ip_pb.d.ts | 60 + js/metalstack/admin/v2/ip_pb.js | 26 + js/metalstack/admin/v2/ip_pb.ts | 78 + js/metalstack/admin/v2/machine_pb.d.ts | 113 + js/metalstack/admin/v2/machine_pb.js | 38 + js/metalstack/admin/v2/machine_pb.ts | 140 + js/metalstack/admin/v2/network_pb.d.ts | 407 ++ js/metalstack/admin/v2/network_pb.js | 68 + js/metalstack/admin/v2/network_pb.ts | 478 ++ js/metalstack/admin/v2/partition_pb.d.ts | 341 ++ js/metalstack/admin/v2/partition_pb.js | 58 + js/metalstack/admin/v2/partition_pb.ts | 402 ++ js/metalstack/admin/v2/project_pb.d.ts | 67 + js/metalstack/admin/v2/project_pb.js | 27 + js/metalstack/admin/v2/project_pb.ts | 87 + js/metalstack/admin/v2/size_pb.d.ts | 183 + js/metalstack/admin/v2/size_pb.js | 48 + js/metalstack/admin/v2/size_pb.ts | 220 + js/metalstack/admin/v2/switch_pb.d.ts | 371 ++ js/metalstack/admin/v2/switch_pb.js | 79 + js/metalstack/admin/v2/switch_pb.ts | 435 ++ js/metalstack/admin/v2/tenant_pb.d.ts | 149 + js/metalstack/admin/v2/tenant_pb.js | 38 + js/metalstack/admin/v2/tenant_pb.ts | 182 + js/metalstack/admin/v2/token_pb.d.ts | 164 + js/metalstack/admin/v2/token_pb.js | 47 + js/metalstack/admin/v2/token_pb.ts | 199 + js/metalstack/api/v2/common_pb.d.ts | 407 ++ js/metalstack/api/v2/common_pb.js | 311 ++ js/metalstack/api/v2/common_pb.ts | 488 ++ js/metalstack/api/v2/filesystem_pb.d.ts | 704 +++ js/metalstack/api/v2/filesystem_pb.js | 259 + js/metalstack/api/v2/filesystem_pb.ts | 819 +++ js/metalstack/api/v2/health_pb.d.ts | 220 + js/metalstack/api/v2/health_pb.js | 130 + js/metalstack/api/v2/health_pb.ts | 264 + js/metalstack/api/v2/image_pb.d.ts | 368 ++ js/metalstack/api/v2/image_pb.js | 129 + js/metalstack/api/v2/image_pb.ts | 436 ++ js/metalstack/api/v2/ip_pb.d.ts | 555 ++ js/metalstack/api/v2/ip_pb.js | 137 + js/metalstack/api/v2/ip_pb.ts | 650 +++ js/metalstack/api/v2/machine_pb.d.ts | 1825 +++++++ js/metalstack/api/v2/machine_pb.js | 459 ++ js/metalstack/api/v2/machine_pb.ts | 2136 ++++++++ js/metalstack/api/v2/method_pb.d.ts | 122 + js/metalstack/api/v2/method_pb.js | 38 + js/metalstack/api/v2/method_pb.ts | 149 + js/metalstack/api/v2/network_pb.d.ts | 820 +++ js/metalstack/api/v2/network_pb.js | 244 + js/metalstack/api/v2/network_pb.ts | 954 ++++ js/metalstack/api/v2/partition_pb.d.ts | 251 + js/metalstack/api/v2/partition_pb.js | 62 + js/metalstack/api/v2/partition_pb.ts | 300 ++ js/metalstack/api/v2/predefined_rules_pb.d.ts | 54 + js/metalstack/api/v2/predefined_rules_pb.js | 57 + js/metalstack/api/v2/predefined_rules_pb.ts | 79 + js/metalstack/api/v2/project_pb.d.ts | 862 +++ js/metalstack/api/v2/project_pb.js | 163 + js/metalstack/api/v2/project_pb.ts | 1001 ++++ js/metalstack/api/v2/size_pb.d.ts | 261 + js/metalstack/api/v2/size_pb.js | 94 + js/metalstack/api/v2/size_pb.ts | 312 ++ js/metalstack/api/v2/switch_pb.d.ts | 508 ++ js/metalstack/api/v2/switch_pb.js | 207 + js/metalstack/api/v2/switch_pb.ts | 604 +++ js/metalstack/api/v2/tenant_pb.d.ts | 864 +++ js/metalstack/api/v2/tenant_pb.js | 163 + js/metalstack/api/v2/tenant_pb.ts | 1004 ++++ js/metalstack/api/v2/token_pb.d.ts | 540 ++ js/metalstack/api/v2/token_pb.js | 118 + js/metalstack/api/v2/token_pb.ts | 621 +++ js/metalstack/api/v2/user_pb.d.ts | 108 + js/metalstack/api/v2/user_pb.js | 34 + js/metalstack/api/v2/user_pb.ts | 139 + js/metalstack/api/v2/version_pb.d.ts | 88 + js/metalstack/api/v2/version_pb.js | 30 + js/metalstack/api/v2/version_pb.ts | 112 + js/metalstack/infra/v2/bmc_pb.d.ts | 45 + js/metalstack/infra/v2/bmc_pb.js | 25 + js/metalstack/infra/v2/bmc_pb.ts | 64 + js/metalstack/infra/v2/switch_pb.d.ts | 223 + js/metalstack/infra/v2/switch_pb.js | 54 + js/metalstack/infra/v2/switch_pb.ts | 263 + js/tsconfig.json | 70 + package.json | 23 + proto/buf.gen.yaml | 5 + 100 files changed, 37387 insertions(+), 2 deletions(-) create mode 100644 bun.lock create mode 100644 js/Makefile create mode 100644 js/buf/validate/validate_pb.d.ts create mode 100644 js/buf/validate/validate_pb.js create mode 100644 js/buf/validate/validate_pb.ts create mode 100644 js/metalstack/admin/v2/filesystem_pb.d.ts create mode 100644 js/metalstack/admin/v2/filesystem_pb.js create mode 100644 js/metalstack/admin/v2/filesystem_pb.ts create mode 100644 js/metalstack/admin/v2/image_pb.d.ts create mode 100644 js/metalstack/admin/v2/image_pb.js create mode 100644 js/metalstack/admin/v2/image_pb.ts create mode 100644 js/metalstack/admin/v2/ip_pb.d.ts create mode 100644 js/metalstack/admin/v2/ip_pb.js create mode 100644 js/metalstack/admin/v2/ip_pb.ts create mode 100644 js/metalstack/admin/v2/machine_pb.d.ts create mode 100644 js/metalstack/admin/v2/machine_pb.js create mode 100644 js/metalstack/admin/v2/machine_pb.ts create mode 100644 js/metalstack/admin/v2/network_pb.d.ts create mode 100644 js/metalstack/admin/v2/network_pb.js create mode 100644 js/metalstack/admin/v2/network_pb.ts create mode 100644 js/metalstack/admin/v2/partition_pb.d.ts create mode 100644 js/metalstack/admin/v2/partition_pb.js create mode 100644 js/metalstack/admin/v2/partition_pb.ts create mode 100644 js/metalstack/admin/v2/project_pb.d.ts create mode 100644 js/metalstack/admin/v2/project_pb.js create mode 100644 js/metalstack/admin/v2/project_pb.ts create mode 100644 js/metalstack/admin/v2/size_pb.d.ts create mode 100644 js/metalstack/admin/v2/size_pb.js create mode 100644 js/metalstack/admin/v2/size_pb.ts create mode 100644 js/metalstack/admin/v2/switch_pb.d.ts create mode 100644 js/metalstack/admin/v2/switch_pb.js create mode 100644 js/metalstack/admin/v2/switch_pb.ts create mode 100644 js/metalstack/admin/v2/tenant_pb.d.ts create mode 100644 js/metalstack/admin/v2/tenant_pb.js create mode 100644 js/metalstack/admin/v2/tenant_pb.ts create mode 100644 js/metalstack/admin/v2/token_pb.d.ts create mode 100644 js/metalstack/admin/v2/token_pb.js create mode 100644 js/metalstack/admin/v2/token_pb.ts create mode 100644 js/metalstack/api/v2/common_pb.d.ts create mode 100644 js/metalstack/api/v2/common_pb.js create mode 100644 js/metalstack/api/v2/common_pb.ts create mode 100644 js/metalstack/api/v2/filesystem_pb.d.ts create mode 100644 js/metalstack/api/v2/filesystem_pb.js create mode 100644 js/metalstack/api/v2/filesystem_pb.ts create mode 100644 js/metalstack/api/v2/health_pb.d.ts create mode 100644 js/metalstack/api/v2/health_pb.js create mode 100644 js/metalstack/api/v2/health_pb.ts create mode 100644 js/metalstack/api/v2/image_pb.d.ts create mode 100644 js/metalstack/api/v2/image_pb.js create mode 100644 js/metalstack/api/v2/image_pb.ts create mode 100644 js/metalstack/api/v2/ip_pb.d.ts create mode 100644 js/metalstack/api/v2/ip_pb.js create mode 100644 js/metalstack/api/v2/ip_pb.ts create mode 100644 js/metalstack/api/v2/machine_pb.d.ts create mode 100644 js/metalstack/api/v2/machine_pb.js create mode 100644 js/metalstack/api/v2/machine_pb.ts create mode 100644 js/metalstack/api/v2/method_pb.d.ts create mode 100644 js/metalstack/api/v2/method_pb.js create mode 100644 js/metalstack/api/v2/method_pb.ts create mode 100644 js/metalstack/api/v2/network_pb.d.ts create mode 100644 js/metalstack/api/v2/network_pb.js create mode 100644 js/metalstack/api/v2/network_pb.ts create mode 100644 js/metalstack/api/v2/partition_pb.d.ts create mode 100644 js/metalstack/api/v2/partition_pb.js create mode 100644 js/metalstack/api/v2/partition_pb.ts create mode 100644 js/metalstack/api/v2/predefined_rules_pb.d.ts create mode 100644 js/metalstack/api/v2/predefined_rules_pb.js create mode 100644 js/metalstack/api/v2/predefined_rules_pb.ts create mode 100644 js/metalstack/api/v2/project_pb.d.ts create mode 100644 js/metalstack/api/v2/project_pb.js create mode 100644 js/metalstack/api/v2/project_pb.ts create mode 100644 js/metalstack/api/v2/size_pb.d.ts create mode 100644 js/metalstack/api/v2/size_pb.js create mode 100644 js/metalstack/api/v2/size_pb.ts create mode 100644 js/metalstack/api/v2/switch_pb.d.ts create mode 100644 js/metalstack/api/v2/switch_pb.js create mode 100644 js/metalstack/api/v2/switch_pb.ts create mode 100644 js/metalstack/api/v2/tenant_pb.d.ts create mode 100644 js/metalstack/api/v2/tenant_pb.js create mode 100644 js/metalstack/api/v2/tenant_pb.ts create mode 100644 js/metalstack/api/v2/token_pb.d.ts create mode 100644 js/metalstack/api/v2/token_pb.js create mode 100644 js/metalstack/api/v2/token_pb.ts create mode 100644 js/metalstack/api/v2/user_pb.d.ts create mode 100644 js/metalstack/api/v2/user_pb.js create mode 100644 js/metalstack/api/v2/user_pb.ts create mode 100644 js/metalstack/api/v2/version_pb.d.ts create mode 100644 js/metalstack/api/v2/version_pb.js create mode 100644 js/metalstack/api/v2/version_pb.ts create mode 100644 js/metalstack/infra/v2/bmc_pb.d.ts create mode 100644 js/metalstack/infra/v2/bmc_pb.js create mode 100644 js/metalstack/infra/v2/bmc_pb.ts create mode 100644 js/metalstack/infra/v2/switch_pb.d.ts create mode 100644 js/metalstack/infra/v2/switch_pb.js create mode 100644 js/metalstack/infra/v2/switch_pb.ts create mode 100644 js/tsconfig.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore index 924f37ae..1e5a7c17 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,6 @@ pip-delete-this-directory.txt # see python README.md why this is required: go/buf/ go/tests/mocks/buf + +# js +node_modules/ \ No newline at end of file diff --git a/Makefile b/Makefile index 085ed1ef..6a7290f3 100644 --- a/Makefile +++ b/Makefile @@ -5,9 +5,9 @@ BUILDDATE := $(shell date -Iseconds) VERSION := $(or ${VERSION},$(shell git describe --tags --exact-match 2> /dev/null || git symbolic-ref -q --short HEAD || git rev-parse --short HEAD)) LOCALBIN ?= $(shell pwd)/bin -all: proto generate test +all: proto generate test build -release: proto generate test +release: proto generate test build .PHONY: proto proto: protolint @@ -27,3 +27,7 @@ generate: .PHONY: test test: $(MAKE) -C go test + +.PHONY: build +build: + make -C js build VERSION=$(VERSION) \ No newline at end of file diff --git a/bun.lock b/bun.lock new file mode 100644 index 00000000..48171448 --- /dev/null +++ b/bun.lock @@ -0,0 +1,24 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "@metal-stack/api", + "dependencies": { + "@bufbuild/protobuf": "^2.10.1", + "@connectrpc/connect-web": "^2.1.1", + }, + "devDependencies": { + "typescript": "^5.9.3", + }, + }, + }, + "packages": { + "@bufbuild/protobuf": ["@bufbuild/protobuf@2.10.1", "", {}, "sha512-ckS3+vyJb5qGpEYv/s1OebUHDi/xSNtfgw1wqKZo7MR9F2z+qXr0q5XagafAG/9O0QPVIUfST0smluYSTpYFkg=="], + + "@connectrpc/connect": ["@connectrpc/connect@2.1.1", "", { "peerDependencies": { "@bufbuild/protobuf": "^2.7.0" } }, "sha512-JzhkaTvM73m2K1URT6tv53k2RwngSmCXLZJgK580qNQOXRzZRR/BCMfZw3h+90JpnG6XksP5bYT+cz0rpUzUWQ=="], + + "@connectrpc/connect-web": ["@connectrpc/connect-web@2.1.1", "", { "peerDependencies": { "@bufbuild/protobuf": "^2.7.0", "@connectrpc/connect": "2.1.1" } }, "sha512-J8317Q2MaFRCT1jzVR1o06bZhDIBmU0UAzWx6xOIXzOq8+k71/+k7MUF7AwcBUX+34WIvbm5syRgC5HXQA8fOg=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + } +} diff --git a/js/Makefile b/js/Makefile new file mode 100644 index 00000000..30b83b30 --- /dev/null +++ b/js/Makefile @@ -0,0 +1,16 @@ +.PHONY: install +install: + bun install -dd + +.PHONY: clean +clean: + rm -rf metalstack + +.PHONY: build +build: install +ifeq ($(CI),true) + cd .. &&\ + yq e -i -o=json ".version=\"$(VERSION)\"" package.json &&\ + yq e -o=json ".version" package.json +endif + cd .. && bun run build \ No newline at end of file diff --git a/js/buf/validate/validate_pb.d.ts b/js/buf/validate/validate_pb.d.ts new file mode 100644 index 00000000..f081aca0 --- /dev/null +++ b/js/buf/validate/validate_pb.d.ts @@ -0,0 +1,4597 @@ +import type { GenEnum, GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { Duration, FieldDescriptorProto_Type, FieldOptions, MessageOptions, OneofOptions, Timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file buf/validate/validate.proto. + */ +export declare const file_buf_validate_validate: GenFile; +/** + * `Rule` represents a validation rule written in the Common Expression + * Language (CEL) syntax. Each Rule includes a unique identifier, an + * optional error message, and the CEL expression to evaluate. For more + * information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/). + * + * ```proto + * message Foo { + * option (buf.validate.message).cel = { + * id: "foo.bar" + * message: "bar must be greater than 0" + * expression: "this.bar > 0" + * }; + * int32 bar = 1; + * } + * ``` + * + * @generated from message buf.validate.Rule + */ +export type Rule = Message<"buf.validate.Rule"> & { + /** + * `id` is a string that serves as a machine-readable name for this Rule. + * It should be unique within its scope, which could be either a message or a field. + * + * @generated from field: optional string id = 1; + */ + id: string; + /** + * `message` is an optional field that provides a human-readable error message + * for this Rule when the CEL expression evaluates to false. If a + * non-empty message is provided, any strings resulting from the CEL + * expression evaluation are ignored. + * + * @generated from field: optional string message = 2; + */ + message: string; + /** + * `expression` is the actual CEL expression that will be evaluated for + * validation. This string must resolve to either a boolean or a string + * value. If the expression evaluates to false or a non-empty string, the + * validation is considered failed, and the message is rejected. + * + * @generated from field: optional string expression = 3; + */ + expression: string; +}; +/** + * Describes the message buf.validate.Rule. + * Use `create(RuleSchema)` to create a new message. + */ +export declare const RuleSchema: GenMessage; +/** + * MessageRules represents validation rules that are applied to the entire message. + * It includes disabling options and a list of Rule messages representing Common Expression Language (CEL) validation rules. + * + * @generated from message buf.validate.MessageRules + */ +export type MessageRules = Message<"buf.validate.MessageRules"> & { + /** + * `cel` is a repeated field of type Rule. Each Rule specifies a validation rule to be applied to this message. + * These rules are written in Common Expression Language (CEL) syntax. For more information, + * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/). + * + * + * ```proto + * message MyMessage { + * // The field `foo` must be greater than 42. + * option (buf.validate.message).cel = { + * id: "my_message.value", + * message: "value must be greater than 42", + * expression: "this.foo > 42", + * }; + * optional int32 foo = 1; + * } + * ``` + * + * @generated from field: repeated buf.validate.Rule cel = 3; + */ + cel: Rule[]; + /** + * `oneof` is a repeated field of type MessageOneofRule that specifies a list of fields + * of which at most one can be present. If `required` is also specified, then exactly one + * of the specified fields _must_ be present. + * + * This will enforce oneof-like constraints with a few features not provided by + * actual Protobuf oneof declarations: + * 1. Repeated and map fields are allowed in this validation. In a Protobuf oneof, + * only scalar fields are allowed. + * 2. Fields with implicit presence are allowed. In a Protobuf oneof, all member + * fields have explicit presence. This means that, for the purpose of determining + * how many fields are set, explicitly setting such a field to its zero value is + * effectively the same as not setting it at all. + * 3. This will always generate validation errors for a message unmarshalled from + * serialized data that sets more than one field. With a Protobuf oneof, when + * multiple fields are present in the serialized form, earlier values are usually + * silently ignored when unmarshalling, with only the last field being set when + * unmarshalling completes. + * + * Note that adding a field to a `oneof` will also set the IGNORE_IF_ZERO_VALUE on the fields. This means + * only the field that is set will be validated and the unset fields are not validated according to the field rules. + * This behavior can be overridden by setting `ignore` against a field. + * + * ```proto + * message MyMessage { + * // Only one of `field1` or `field2` _can_ be present in this message. + * option (buf.validate.message).oneof = { fields: ["field1", "field2"] }; + * // Exactly one of `field3` or `field4` _must_ be present in this message. + * option (buf.validate.message).oneof = { fields: ["field3", "field4"], required: true }; + * string field1 = 1; + * bytes field2 = 2; + * bool field3 = 3; + * int32 field4 = 4; + * } + * ``` + * + * @generated from field: repeated buf.validate.MessageOneofRule oneof = 4; + */ + oneof: MessageOneofRule[]; +}; +/** + * Describes the message buf.validate.MessageRules. + * Use `create(MessageRulesSchema)` to create a new message. + */ +export declare const MessageRulesSchema: GenMessage; +/** + * @generated from message buf.validate.MessageOneofRule + */ +export type MessageOneofRule = Message<"buf.validate.MessageOneofRule"> & { + /** + * A list of field names to include in the oneof. All field names must be + * defined in the message. At least one field must be specified, and + * duplicates are not permitted. + * + * @generated from field: repeated string fields = 1; + */ + fields: string[]; + /** + * If true, one of the fields specified _must_ be set. + * + * @generated from field: optional bool required = 2; + */ + required: boolean; +}; +/** + * Describes the message buf.validate.MessageOneofRule. + * Use `create(MessageOneofRuleSchema)` to create a new message. + */ +export declare const MessageOneofRuleSchema: GenMessage; +/** + * The `OneofRules` message type enables you to manage rules for + * oneof fields in your protobuf messages. + * + * @generated from message buf.validate.OneofRules + */ +export type OneofRules = Message<"buf.validate.OneofRules"> & { + /** + * If `required` is true, exactly one field of the oneof must be set. A + * validation error is returned if no fields in the oneof are set. Further rules + * should be placed on the fields themselves to ensure they are valid values, + * such as `min_len` or `gt`. + * + * ```proto + * message MyMessage { + * oneof value { + * // Either `a` or `b` must be set. If `a` is set, it must also be + * // non-empty; whereas if `b` is set, it can still be an empty string. + * option (buf.validate.oneof).required = true; + * string a = 1 [(buf.validate.field).string.min_len = 1]; + * string b = 2; + * } + * } + * ``` + * + * @generated from field: optional bool required = 1; + */ + required: boolean; +}; +/** + * Describes the message buf.validate.OneofRules. + * Use `create(OneofRulesSchema)` to create a new message. + */ +export declare const OneofRulesSchema: GenMessage; +/** + * FieldRules encapsulates the rules for each type of field. Depending on + * the field, the correct set should be used to ensure proper validations. + * + * @generated from message buf.validate.FieldRules + */ +export type FieldRules = Message<"buf.validate.FieldRules"> & { + /** + * `cel` is a repeated field used to represent a textual expression + * in the Common Expression Language (CEL) syntax. For more information, + * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/). + * + * ```proto + * message MyMessage { + * // The field `value` must be greater than 42. + * optional int32 value = 1 [(buf.validate.field).cel = { + * id: "my_message.value", + * message: "value must be greater than 42", + * expression: "this > 42", + * }]; + * } + * ``` + * + * @generated from field: repeated buf.validate.Rule cel = 23; + */ + cel: Rule[]; + /** + * If `required` is true, the field must be set. A validation error is returned + * if the field is not set. + * + * ```proto + * syntax="proto3"; + * + * message FieldsWithPresence { + * // Requires any string to be set, including the empty string. + * optional string link = 1 [ + * (buf.validate.field).required = true + * ]; + * // Requires true or false to be set. + * optional bool disabled = 2 [ + * (buf.validate.field).required = true + * ]; + * // Requires a message to be set, including the empty message. + * SomeMessage msg = 4 [ + * (buf.validate.field).required = true + * ]; + * } + * ``` + * + * All fields in the example above track presence. By default, Protovalidate + * ignores rules on those fields if no value is set. `required` ensures that + * the fields are set and valid. + * + * Fields that don't track presence are always validated by Protovalidate, + * whether they are set or not. It is not necessary to add `required`. It + * can be added to indicate that the field cannot be the zero value. + * + * ```proto + * syntax="proto3"; + * + * message FieldsWithoutPresence { + * // `string.email` always applies, even to an empty string. + * string link = 1 [ + * (buf.validate.field).string.email = true + * ]; + * // `repeated.min_items` always applies, even to an empty list. + * repeated string labels = 2 [ + * (buf.validate.field).repeated.min_items = 1 + * ]; + * // `required`, for fields that don't track presence, indicates + * // the value of the field can't be the zero value. + * int32 zero_value_not_allowed = 3 [ + * (buf.validate.field).required = true + * ]; + * } + * ``` + * + * To learn which fields track presence, see the + * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat). + * + * Note: While field rules can be applied to repeated items, map keys, and map + * values, the elements are always considered to be set. Consequently, + * specifying `repeated.items.required` is redundant. + * + * @generated from field: optional bool required = 25; + */ + required: boolean; + /** + * Ignore validation rules on the field if its value matches the specified + * criteria. See the `Ignore` enum for details. + * + * ```proto + * message UpdateRequest { + * // The uri rule only applies if the field is not an empty string. + * string url = 1 [ + * (buf.validate.field).ignore = IGNORE_IF_ZERO_VALUE, + * (buf.validate.field).string.uri = true + * ]; + * } + * ``` + * + * @generated from field: optional buf.validate.Ignore ignore = 27; + */ + ignore: Ignore; + /** + * @generated from oneof buf.validate.FieldRules.type + */ + type: { + /** + * Scalar Field Types + * + * @generated from field: buf.validate.FloatRules float = 1; + */ + value: FloatRules; + case: "float"; + } | { + /** + * @generated from field: buf.validate.DoubleRules double = 2; + */ + value: DoubleRules; + case: "double"; + } | { + /** + * @generated from field: buf.validate.Int32Rules int32 = 3; + */ + value: Int32Rules; + case: "int32"; + } | { + /** + * @generated from field: buf.validate.Int64Rules int64 = 4; + */ + value: Int64Rules; + case: "int64"; + } | { + /** + * @generated from field: buf.validate.UInt32Rules uint32 = 5; + */ + value: UInt32Rules; + case: "uint32"; + } | { + /** + * @generated from field: buf.validate.UInt64Rules uint64 = 6; + */ + value: UInt64Rules; + case: "uint64"; + } | { + /** + * @generated from field: buf.validate.SInt32Rules sint32 = 7; + */ + value: SInt32Rules; + case: "sint32"; + } | { + /** + * @generated from field: buf.validate.SInt64Rules sint64 = 8; + */ + value: SInt64Rules; + case: "sint64"; + } | { + /** + * @generated from field: buf.validate.Fixed32Rules fixed32 = 9; + */ + value: Fixed32Rules; + case: "fixed32"; + } | { + /** + * @generated from field: buf.validate.Fixed64Rules fixed64 = 10; + */ + value: Fixed64Rules; + case: "fixed64"; + } | { + /** + * @generated from field: buf.validate.SFixed32Rules sfixed32 = 11; + */ + value: SFixed32Rules; + case: "sfixed32"; + } | { + /** + * @generated from field: buf.validate.SFixed64Rules sfixed64 = 12; + */ + value: SFixed64Rules; + case: "sfixed64"; + } | { + /** + * @generated from field: buf.validate.BoolRules bool = 13; + */ + value: BoolRules; + case: "bool"; + } | { + /** + * @generated from field: buf.validate.StringRules string = 14; + */ + value: StringRules; + case: "string"; + } | { + /** + * @generated from field: buf.validate.BytesRules bytes = 15; + */ + value: BytesRules; + case: "bytes"; + } | { + /** + * Complex Field Types + * + * @generated from field: buf.validate.EnumRules enum = 16; + */ + value: EnumRules; + case: "enum"; + } | { + /** + * @generated from field: buf.validate.RepeatedRules repeated = 18; + */ + value: RepeatedRules; + case: "repeated"; + } | { + /** + * @generated from field: buf.validate.MapRules map = 19; + */ + value: MapRules; + case: "map"; + } | { + /** + * Well-Known Field Types + * + * @generated from field: buf.validate.AnyRules any = 20; + */ + value: AnyRules; + case: "any"; + } | { + /** + * @generated from field: buf.validate.DurationRules duration = 21; + */ + value: DurationRules; + case: "duration"; + } | { + /** + * @generated from field: buf.validate.TimestampRules timestamp = 22; + */ + value: TimestampRules; + case: "timestamp"; + } | { + case: undefined; + value?: undefined; + }; +}; +/** + * Describes the message buf.validate.FieldRules. + * Use `create(FieldRulesSchema)` to create a new message. + */ +export declare const FieldRulesSchema: GenMessage; +/** + * PredefinedRules are custom rules that can be re-used with + * multiple fields. + * + * @generated from message buf.validate.PredefinedRules + */ +export type PredefinedRules = Message<"buf.validate.PredefinedRules"> & { + /** + * `cel` is a repeated field used to represent a textual expression + * in the Common Expression Language (CEL) syntax. For more information, + * [see our documentation](https://buf.build/docs/protovalidate/schemas/predefined-rules/). + * + * ```proto + * message MyMessage { + * // The field `value` must be greater than 42. + * optional int32 value = 1 [(buf.validate.predefined).cel = { + * id: "my_message.value", + * message: "value must be greater than 42", + * expression: "this > 42", + * }]; + * } + * ``` + * + * @generated from field: repeated buf.validate.Rule cel = 1; + */ + cel: Rule[]; +}; +/** + * Describes the message buf.validate.PredefinedRules. + * Use `create(PredefinedRulesSchema)` to create a new message. + */ +export declare const PredefinedRulesSchema: GenMessage; +/** + * FloatRules describes the rules applied to `float` values. These + * rules may also be applied to the `google.protobuf.FloatValue` Well-Known-Type. + * + * @generated from message buf.validate.FloatRules + */ +export type FloatRules = Message<"buf.validate.FloatRules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyFloat { + * // value must equal 42.0 + * float value = 1 [(buf.validate.field).float.const = 42.0]; + * } + * ``` + * + * @generated from field: optional float const = 1; + */ + const: number; + /** + * @generated from oneof buf.validate.FloatRules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be less than 10.0 + * float value = 1 [(buf.validate.field).float.lt = 10.0]; + * } + * ``` + * + * @generated from field: float lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be less than or equal to 10.0 + * float value = 1 [(buf.validate.field).float.lte = 10.0]; + * } + * ``` + * + * @generated from field: float lte = 3; + */ + value: number; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.FloatRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be greater than 5.0 [float.gt] + * float value = 1 [(buf.validate.field).float.gt = 5.0]; + * + * // value must be greater than 5 and less than 10.0 [float.gt_lt] + * float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }]; + * + * // value must be greater than 10 or less than 5.0 [float.gt_lt_exclusive] + * float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: float gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be greater than or equal to 5.0 [float.gte] + * float value = 1 [(buf.validate.field).float.gte = 5.0]; + * + * // value must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt] + * float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }]; + * + * // value must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive] + * float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: float gte = 5; + */ + value: number; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message + * is generated. + * + * ```proto + * message MyFloat { + * // value must be in list [1.0, 2.0, 3.0] + * float value = 1 [(buf.validate.field).float = { in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated float in = 6; + */ + in: number[]; + /** + * `in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyFloat { + * // value must not be in list [1.0, 2.0, 3.0] + * float value = 1 [(buf.validate.field).float = { not_in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated float not_in = 7; + */ + notIn: number[]; + /** + * `finite` requires the field value to be finite. If the field value is + * infinite or NaN, an error message is generated. + * + * @generated from field: optional bool finite = 8; + */ + finite: boolean; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyFloat { + * float value = 1 [ + * (buf.validate.field).float.example = 1.0, + * (buf.validate.field).float.example = inf + * ]; + * } + * ``` + * + * @generated from field: repeated float example = 9; + */ + example: number[]; +}; +/** + * Describes the message buf.validate.FloatRules. + * Use `create(FloatRulesSchema)` to create a new message. + */ +export declare const FloatRulesSchema: GenMessage; +/** + * DoubleRules describes the rules applied to `double` values. These + * rules may also be applied to the `google.protobuf.DoubleValue` Well-Known-Type. + * + * @generated from message buf.validate.DoubleRules + */ +export type DoubleRules = Message<"buf.validate.DoubleRules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyDouble { + * // value must equal 42.0 + * double value = 1 [(buf.validate.field).double.const = 42.0]; + * } + * ``` + * + * @generated from field: optional double const = 1; + */ + const: number; + /** + * @generated from oneof buf.validate.DoubleRules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyDouble { + * // value must be less than 10.0 + * double value = 1 [(buf.validate.field).double.lt = 10.0]; + * } + * ``` + * + * @generated from field: double lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified value + * (field <= value). If the field value is greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyDouble { + * // value must be less than or equal to 10.0 + * double value = 1 [(buf.validate.field).double.lte = 10.0]; + * } + * ``` + * + * @generated from field: double lte = 3; + */ + value: number; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.DoubleRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or `lte`, + * the range is reversed, and the field value must be outside the specified + * range. If the field value doesn't meet the required conditions, an error + * message is generated. + * + * ```proto + * message MyDouble { + * // value must be greater than 5.0 [double.gt] + * double value = 1 [(buf.validate.field).double.gt = 5.0]; + * + * // value must be greater than 5 and less than 10.0 [double.gt_lt] + * double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }]; + * + * // value must be greater than 10 or less than 5.0 [double.gt_lt_exclusive] + * double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: double gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyDouble { + * // value must be greater than or equal to 5.0 [double.gte] + * double value = 1 [(buf.validate.field).double.gte = 5.0]; + * + * // value must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt] + * double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }]; + * + * // value must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive] + * double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: double gte = 5; + */ + value: number; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyDouble { + * // value must be in list [1.0, 2.0, 3.0] + * double value = 1 [(buf.validate.field).double = { in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated double in = 6; + */ + in: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyDouble { + * // value must not be in list [1.0, 2.0, 3.0] + * double value = 1 [(buf.validate.field).double = { not_in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated double not_in = 7; + */ + notIn: number[]; + /** + * `finite` requires the field value to be finite. If the field value is + * infinite or NaN, an error message is generated. + * + * @generated from field: optional bool finite = 8; + */ + finite: boolean; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyDouble { + * double value = 1 [ + * (buf.validate.field).double.example = 1.0, + * (buf.validate.field).double.example = inf + * ]; + * } + * ``` + * + * @generated from field: repeated double example = 9; + */ + example: number[]; +}; +/** + * Describes the message buf.validate.DoubleRules. + * Use `create(DoubleRulesSchema)` to create a new message. + */ +export declare const DoubleRulesSchema: GenMessage; +/** + * Int32Rules describes the rules applied to `int32` values. These + * rules may also be applied to the `google.protobuf.Int32Value` Well-Known-Type. + * + * @generated from message buf.validate.Int32Rules + */ +export type Int32Rules = Message<"buf.validate.Int32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must equal 42 + * int32 value = 1 [(buf.validate.field).int32.const = 42]; + * } + * ``` + * + * @generated from field: optional int32 const = 1; + */ + const: number; + /** + * @generated from oneof buf.validate.Int32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field + * < value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be less than 10 + * int32 value = 1 [(buf.validate.field).int32.lt = 10]; + * } + * ``` + * + * @generated from field: int32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be less than or equal to 10 + * int32 value = 1 [(buf.validate.field).int32.lte = 10]; + * } + * ``` + * + * @generated from field: int32 lte = 3; + */ + value: number; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.Int32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be greater than 5 [int32.gt] + * int32 value = 1 [(buf.validate.field).int32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [int32.gt_lt] + * int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [int32.gt_lt_exclusive] + * int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified value + * (exclusive). If the value of `gte` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be greater than or equal to 5 [int32.gte] + * int32 value = 1 [(buf.validate.field).int32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [int32.gte_lt] + * int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive] + * int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int32 gte = 5; + */ + value: number; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyInt32 { + * // value must be in list [1, 2, 3] + * int32 value = 1 [(buf.validate.field).int32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int32 in = 6; + */ + in: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error message + * is generated. + * + * ```proto + * message MyInt32 { + * // value must not be in list [1, 2, 3] + * int32 value = 1 [(buf.validate.field).int32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int32 not_in = 7; + */ + notIn: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyInt32 { + * int32 value = 1 [ + * (buf.validate.field).int32.example = 1, + * (buf.validate.field).int32.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated int32 example = 8; + */ + example: number[]; +}; +/** + * Describes the message buf.validate.Int32Rules. + * Use `create(Int32RulesSchema)` to create a new message. + */ +export declare const Int32RulesSchema: GenMessage; +/** + * Int64Rules describes the rules applied to `int64` values. These + * rules may also be applied to the `google.protobuf.Int64Value` Well-Known-Type. + * + * @generated from message buf.validate.Int64Rules + */ +export type Int64Rules = Message<"buf.validate.Int64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must equal 42 + * int64 value = 1 [(buf.validate.field).int64.const = 42]; + * } + * ``` + * + * @generated from field: optional int64 const = 1; + */ + const: bigint; + /** + * @generated from oneof buf.validate.Int64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be less than 10 + * int64 value = 1 [(buf.validate.field).int64.lt = 10]; + * } + * ``` + * + * @generated from field: int64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be less than or equal to 10 + * int64 value = 1 [(buf.validate.field).int64.lte = 10]; + * } + * ``` + * + * @generated from field: int64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.Int64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be greater than 5 [int64.gt] + * int64 value = 1 [(buf.validate.field).int64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [int64.gt_lt] + * int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [int64.gt_lt_exclusive] + * int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be greater than or equal to 5 [int64.gte] + * int64 value = 1 [(buf.validate.field).int64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [int64.gte_lt] + * int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive] + * int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyInt64 { + * // value must be in list [1, 2, 3] + * int64 value = 1 [(buf.validate.field).int64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int64 in = 6; + */ + in: bigint[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyInt64 { + * // value must not be in list [1, 2, 3] + * int64 value = 1 [(buf.validate.field).int64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int64 not_in = 7; + */ + notIn: bigint[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyInt64 { + * int64 value = 1 [ + * (buf.validate.field).int64.example = 1, + * (buf.validate.field).int64.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated int64 example = 9; + */ + example: bigint[]; +}; +/** + * Describes the message buf.validate.Int64Rules. + * Use `create(Int64RulesSchema)` to create a new message. + */ +export declare const Int64RulesSchema: GenMessage; +/** + * UInt32Rules describes the rules applied to `uint32` values. These + * rules may also be applied to the `google.protobuf.UInt32Value` Well-Known-Type. + * + * @generated from message buf.validate.UInt32Rules + */ +export type UInt32Rules = Message<"buf.validate.UInt32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must equal 42 + * uint32 value = 1 [(buf.validate.field).uint32.const = 42]; + * } + * ``` + * + * @generated from field: optional uint32 const = 1; + */ + const: number; + /** + * @generated from oneof buf.validate.UInt32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be less than 10 + * uint32 value = 1 [(buf.validate.field).uint32.lt = 10]; + * } + * ``` + * + * @generated from field: uint32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be less than or equal to 10 + * uint32 value = 1 [(buf.validate.field).uint32.lte = 10]; + * } + * ``` + * + * @generated from field: uint32 lte = 3; + */ + value: number; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.UInt32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be greater than 5 [uint32.gt] + * uint32 value = 1 [(buf.validate.field).uint32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [uint32.gt_lt] + * uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [uint32.gt_lt_exclusive] + * uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be greater than or equal to 5 [uint32.gte] + * uint32 value = 1 [(buf.validate.field).uint32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [uint32.gte_lt] + * uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive] + * uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint32 gte = 5; + */ + value: number; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyUInt32 { + * // value must be in list [1, 2, 3] + * uint32 value = 1 [(buf.validate.field).uint32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint32 in = 6; + */ + in: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyUInt32 { + * // value must not be in list [1, 2, 3] + * uint32 value = 1 [(buf.validate.field).uint32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint32 not_in = 7; + */ + notIn: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyUInt32 { + * uint32 value = 1 [ + * (buf.validate.field).uint32.example = 1, + * (buf.validate.field).uint32.example = 10 + * ]; + * } + * ``` + * + * @generated from field: repeated uint32 example = 8; + */ + example: number[]; +}; +/** + * Describes the message buf.validate.UInt32Rules. + * Use `create(UInt32RulesSchema)` to create a new message. + */ +export declare const UInt32RulesSchema: GenMessage; +/** + * UInt64Rules describes the rules applied to `uint64` values. These + * rules may also be applied to the `google.protobuf.UInt64Value` Well-Known-Type. + * + * @generated from message buf.validate.UInt64Rules + */ +export type UInt64Rules = Message<"buf.validate.UInt64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must equal 42 + * uint64 value = 1 [(buf.validate.field).uint64.const = 42]; + * } + * ``` + * + * @generated from field: optional uint64 const = 1; + */ + const: bigint; + /** + * @generated from oneof buf.validate.UInt64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be less than 10 + * uint64 value = 1 [(buf.validate.field).uint64.lt = 10]; + * } + * ``` + * + * @generated from field: uint64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be less than or equal to 10 + * uint64 value = 1 [(buf.validate.field).uint64.lte = 10]; + * } + * ``` + * + * @generated from field: uint64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.UInt64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be greater than 5 [uint64.gt] + * uint64 value = 1 [(buf.validate.field).uint64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [uint64.gt_lt] + * uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [uint64.gt_lt_exclusive] + * uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be greater than or equal to 5 [uint64.gte] + * uint64 value = 1 [(buf.validate.field).uint64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [uint64.gte_lt] + * uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive] + * uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyUInt64 { + * // value must be in list [1, 2, 3] + * uint64 value = 1 [(buf.validate.field).uint64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint64 in = 6; + */ + in: bigint[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyUInt64 { + * // value must not be in list [1, 2, 3] + * uint64 value = 1 [(buf.validate.field).uint64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint64 not_in = 7; + */ + notIn: bigint[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyUInt64 { + * uint64 value = 1 [ + * (buf.validate.field).uint64.example = 1, + * (buf.validate.field).uint64.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated uint64 example = 8; + */ + example: bigint[]; +}; +/** + * Describes the message buf.validate.UInt64Rules. + * Use `create(UInt64RulesSchema)` to create a new message. + */ +export declare const UInt64RulesSchema: GenMessage; +/** + * SInt32Rules describes the rules applied to `sint32` values. + * + * @generated from message buf.validate.SInt32Rules + */ +export type SInt32Rules = Message<"buf.validate.SInt32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must equal 42 + * sint32 value = 1 [(buf.validate.field).sint32.const = 42]; + * } + * ``` + * + * @generated from field: optional sint32 const = 1; + */ + const: number; + /** + * @generated from oneof buf.validate.SInt32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field + * < value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be less than 10 + * sint32 value = 1 [(buf.validate.field).sint32.lt = 10]; + * } + * ``` + * + * @generated from field: sint32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be less than or equal to 10 + * sint32 value = 1 [(buf.validate.field).sint32.lte = 10]; + * } + * ``` + * + * @generated from field: sint32 lte = 3; + */ + value: number; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.SInt32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be greater than 5 [sint32.gt] + * sint32 value = 1 [(buf.validate.field).sint32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sint32.gt_lt] + * sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sint32.gt_lt_exclusive] + * sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be greater than or equal to 5 [sint32.gte] + * sint32 value = 1 [(buf.validate.field).sint32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sint32.gte_lt] + * sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive] + * sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint32 gte = 5; + */ + value: number; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MySInt32 { + * // value must be in list [1, 2, 3] + * sint32 value = 1 [(buf.validate.field).sint32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint32 in = 6; + */ + in: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySInt32 { + * // value must not be in list [1, 2, 3] + * sint32 value = 1 [(buf.validate.field).sint32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint32 not_in = 7; + */ + notIn: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySInt32 { + * sint32 value = 1 [ + * (buf.validate.field).sint32.example = 1, + * (buf.validate.field).sint32.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated sint32 example = 8; + */ + example: number[]; +}; +/** + * Describes the message buf.validate.SInt32Rules. + * Use `create(SInt32RulesSchema)` to create a new message. + */ +export declare const SInt32RulesSchema: GenMessage; +/** + * SInt64Rules describes the rules applied to `sint64` values. + * + * @generated from message buf.validate.SInt64Rules + */ +export type SInt64Rules = Message<"buf.validate.SInt64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must equal 42 + * sint64 value = 1 [(buf.validate.field).sint64.const = 42]; + * } + * ``` + * + * @generated from field: optional sint64 const = 1; + */ + const: bigint; + /** + * @generated from oneof buf.validate.SInt64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field + * < value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be less than 10 + * sint64 value = 1 [(buf.validate.field).sint64.lt = 10]; + * } + * ``` + * + * @generated from field: sint64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be less than or equal to 10 + * sint64 value = 1 [(buf.validate.field).sint64.lte = 10]; + * } + * ``` + * + * @generated from field: sint64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.SInt64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be greater than 5 [sint64.gt] + * sint64 value = 1 [(buf.validate.field).sint64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sint64.gt_lt] + * sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sint64.gt_lt_exclusive] + * sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be greater than or equal to 5 [sint64.gte] + * sint64 value = 1 [(buf.validate.field).sint64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sint64.gte_lt] + * sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive] + * sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message + * is generated. + * + * ```proto + * message MySInt64 { + * // value must be in list [1, 2, 3] + * sint64 value = 1 [(buf.validate.field).sint64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint64 in = 6; + */ + in: bigint[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySInt64 { + * // value must not be in list [1, 2, 3] + * sint64 value = 1 [(buf.validate.field).sint64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint64 not_in = 7; + */ + notIn: bigint[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySInt64 { + * sint64 value = 1 [ + * (buf.validate.field).sint64.example = 1, + * (buf.validate.field).sint64.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated sint64 example = 8; + */ + example: bigint[]; +}; +/** + * Describes the message buf.validate.SInt64Rules. + * Use `create(SInt64RulesSchema)` to create a new message. + */ +export declare const SInt64RulesSchema: GenMessage; +/** + * Fixed32Rules describes the rules applied to `fixed32` values. + * + * @generated from message buf.validate.Fixed32Rules + */ +export type Fixed32Rules = Message<"buf.validate.Fixed32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must equal 42 + * fixed32 value = 1 [(buf.validate.field).fixed32.const = 42]; + * } + * ``` + * + * @generated from field: optional fixed32 const = 1; + */ + const: number; + /** + * @generated from oneof buf.validate.Fixed32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be less than 10 + * fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10]; + * } + * ``` + * + * @generated from field: fixed32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be less than or equal to 10 + * fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10]; + * } + * ``` + * + * @generated from field: fixed32 lte = 3; + */ + value: number; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.Fixed32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be greater than 5 [fixed32.gt] + * fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [fixed32.gt_lt] + * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive] + * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be greater than or equal to 5 [fixed32.gte] + * fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [fixed32.gte_lt] + * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive] + * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed32 gte = 5; + */ + value: number; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message + * is generated. + * + * ```proto + * message MyFixed32 { + * // value must be in list [1, 2, 3] + * fixed32 value = 1 [(buf.validate.field).fixed32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed32 in = 6; + */ + in: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyFixed32 { + * // value must not be in list [1, 2, 3] + * fixed32 value = 1 [(buf.validate.field).fixed32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed32 not_in = 7; + */ + notIn: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyFixed32 { + * fixed32 value = 1 [ + * (buf.validate.field).fixed32.example = 1, + * (buf.validate.field).fixed32.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated fixed32 example = 8; + */ + example: number[]; +}; +/** + * Describes the message buf.validate.Fixed32Rules. + * Use `create(Fixed32RulesSchema)` to create a new message. + */ +export declare const Fixed32RulesSchema: GenMessage; +/** + * Fixed64Rules describes the rules applied to `fixed64` values. + * + * @generated from message buf.validate.Fixed64Rules + */ +export type Fixed64Rules = Message<"buf.validate.Fixed64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must equal 42 + * fixed64 value = 1 [(buf.validate.field).fixed64.const = 42]; + * } + * ``` + * + * @generated from field: optional fixed64 const = 1; + */ + const: bigint; + /** + * @generated from oneof buf.validate.Fixed64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be less than 10 + * fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10]; + * } + * ``` + * + * @generated from field: fixed64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be less than or equal to 10 + * fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10]; + * } + * ``` + * + * @generated from field: fixed64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.Fixed64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be greater than 5 [fixed64.gt] + * fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [fixed64.gt_lt] + * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive] + * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be greater than or equal to 5 [fixed64.gte] + * fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [fixed64.gte_lt] + * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive] + * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyFixed64 { + * // value must be in list [1, 2, 3] + * fixed64 value = 1 [(buf.validate.field).fixed64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed64 in = 6; + */ + in: bigint[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyFixed64 { + * // value must not be in list [1, 2, 3] + * fixed64 value = 1 [(buf.validate.field).fixed64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed64 not_in = 7; + */ + notIn: bigint[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyFixed64 { + * fixed64 value = 1 [ + * (buf.validate.field).fixed64.example = 1, + * (buf.validate.field).fixed64.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated fixed64 example = 8; + */ + example: bigint[]; +}; +/** + * Describes the message buf.validate.Fixed64Rules. + * Use `create(Fixed64RulesSchema)` to create a new message. + */ +export declare const Fixed64RulesSchema: GenMessage; +/** + * SFixed32Rules describes the rules applied to `fixed32` values. + * + * @generated from message buf.validate.SFixed32Rules + */ +export type SFixed32Rules = Message<"buf.validate.SFixed32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must equal 42 + * sfixed32 value = 1 [(buf.validate.field).sfixed32.const = 42]; + * } + * ``` + * + * @generated from field: optional sfixed32 const = 1; + */ + const: number; + /** + * @generated from oneof buf.validate.SFixed32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be less than 10 + * sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10]; + * } + * ``` + * + * @generated from field: sfixed32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be less than or equal to 10 + * sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10]; + * } + * ``` + * + * @generated from field: sfixed32 lte = 3; + */ + value: number; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.SFixed32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be greater than 5 [sfixed32.gt] + * sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sfixed32.gt_lt] + * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive] + * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be greater than or equal to 5 [sfixed32.gte] + * sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt] + * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive] + * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed32 gte = 5; + */ + value: number; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MySFixed32 { + * // value must be in list [1, 2, 3] + * sfixed32 value = 1 [(buf.validate.field).sfixed32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed32 in = 6; + */ + in: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySFixed32 { + * // value must not be in list [1, 2, 3] + * sfixed32 value = 1 [(buf.validate.field).sfixed32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed32 not_in = 7; + */ + notIn: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySFixed32 { + * sfixed32 value = 1 [ + * (buf.validate.field).sfixed32.example = 1, + * (buf.validate.field).sfixed32.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated sfixed32 example = 8; + */ + example: number[]; +}; +/** + * Describes the message buf.validate.SFixed32Rules. + * Use `create(SFixed32RulesSchema)` to create a new message. + */ +export declare const SFixed32RulesSchema: GenMessage; +/** + * SFixed64Rules describes the rules applied to `fixed64` values. + * + * @generated from message buf.validate.SFixed64Rules + */ +export type SFixed64Rules = Message<"buf.validate.SFixed64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must equal 42 + * sfixed64 value = 1 [(buf.validate.field).sfixed64.const = 42]; + * } + * ``` + * + * @generated from field: optional sfixed64 const = 1; + */ + const: bigint; + /** + * @generated from oneof buf.validate.SFixed64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be less than 10 + * sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10]; + * } + * ``` + * + * @generated from field: sfixed64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be less than or equal to 10 + * sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10]; + * } + * ``` + * + * @generated from field: sfixed64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.SFixed64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be greater than 5 [sfixed64.gt] + * sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sfixed64.gt_lt] + * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive] + * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be greater than or equal to 5 [sfixed64.gte] + * sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt] + * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive] + * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MySFixed64 { + * // value must be in list [1, 2, 3] + * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed64 in = 6; + */ + in: bigint[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySFixed64 { + * // value must not be in list [1, 2, 3] + * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed64 not_in = 7; + */ + notIn: bigint[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySFixed64 { + * sfixed64 value = 1 [ + * (buf.validate.field).sfixed64.example = 1, + * (buf.validate.field).sfixed64.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated sfixed64 example = 8; + */ + example: bigint[]; +}; +/** + * Describes the message buf.validate.SFixed64Rules. + * Use `create(SFixed64RulesSchema)` to create a new message. + */ +export declare const SFixed64RulesSchema: GenMessage; +/** + * BoolRules describes the rules applied to `bool` values. These rules + * may also be applied to the `google.protobuf.BoolValue` Well-Known-Type. + * + * @generated from message buf.validate.BoolRules + */ +export type BoolRules = Message<"buf.validate.BoolRules"> & { + /** + * `const` requires the field value to exactly match the specified boolean value. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyBool { + * // value must equal true + * bool value = 1 [(buf.validate.field).bool.const = true]; + * } + * ``` + * + * @generated from field: optional bool const = 1; + */ + const: boolean; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyBool { + * bool value = 1 [ + * (buf.validate.field).bool.example = 1, + * (buf.validate.field).bool.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated bool example = 2; + */ + example: boolean[]; +}; +/** + * Describes the message buf.validate.BoolRules. + * Use `create(BoolRulesSchema)` to create a new message. + */ +export declare const BoolRulesSchema: GenMessage; +/** + * StringRules describes the rules applied to `string` values These + * rules may also be applied to the `google.protobuf.StringValue` Well-Known-Type. + * + * @generated from message buf.validate.StringRules + */ +export type StringRules = Message<"buf.validate.StringRules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyString { + * // value must equal `hello` + * string value = 1 [(buf.validate.field).string.const = "hello"]; + * } + * ``` + * + * @generated from field: optional string const = 1; + */ + const: string; + /** + * `len` dictates that the field value must have the specified + * number of characters (Unicode code points), which may differ from the number + * of bytes in the string. If the field value does not meet the specified + * length, an error message will be generated. + * + * ```proto + * message MyString { + * // value length must be 5 characters + * string value = 1 [(buf.validate.field).string.len = 5]; + * } + * ``` + * + * @generated from field: optional uint64 len = 19; + */ + len: bigint; + /** + * `min_len` specifies that the field value must have at least the specified + * number of characters (Unicode code points), which may differ from the number + * of bytes in the string. If the field value contains fewer characters, an error + * message will be generated. + * + * ```proto + * message MyString { + * // value length must be at least 3 characters + * string value = 1 [(buf.validate.field).string.min_len = 3]; + * } + * ``` + * + * @generated from field: optional uint64 min_len = 2; + */ + minLen: bigint; + /** + * `max_len` specifies that the field value must have no more than the specified + * number of characters (Unicode code points), which may differ from the + * number of bytes in the string. If the field value contains more characters, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value length must be at most 10 characters + * string value = 1 [(buf.validate.field).string.max_len = 10]; + * } + * ``` + * + * @generated from field: optional uint64 max_len = 3; + */ + maxLen: bigint; + /** + * `len_bytes` dictates that the field value must have the specified number of + * bytes. If the field value does not match the specified length in bytes, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value length must be 6 bytes + * string value = 1 [(buf.validate.field).string.len_bytes = 6]; + * } + * ``` + * + * @generated from field: optional uint64 len_bytes = 20; + */ + lenBytes: bigint; + /** + * `min_bytes` specifies that the field value must have at least the specified + * number of bytes. If the field value contains fewer bytes, an error message + * will be generated. + * + * ```proto + * message MyString { + * // value length must be at least 4 bytes + * string value = 1 [(buf.validate.field).string.min_bytes = 4]; + * } + * + * ``` + * + * @generated from field: optional uint64 min_bytes = 4; + */ + minBytes: bigint; + /** + * `max_bytes` specifies that the field value must have no more than the + * specified number of bytes. If the field value contains more bytes, an + * error message will be generated. + * + * ```proto + * message MyString { + * // value length must be at most 8 bytes + * string value = 1 [(buf.validate.field).string.max_bytes = 8]; + * } + * ``` + * + * @generated from field: optional uint64 max_bytes = 5; + */ + maxBytes: bigint; + /** + * `pattern` specifies that the field value must match the specified + * regular expression (RE2 syntax), with the expression provided without any + * delimiters. If the field value doesn't match the regular expression, an + * error message will be generated. + * + * ```proto + * message MyString { + * // value does not match regex pattern `^[a-zA-Z]//$` + * string value = 1 [(buf.validate.field).string.pattern = "^[a-zA-Z]//$"]; + * } + * ``` + * + * @generated from field: optional string pattern = 6; + */ + pattern: string; + /** + * `prefix` specifies that the field value must have the + * specified substring at the beginning of the string. If the field value + * doesn't start with the specified prefix, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value does not have prefix `pre` + * string value = 1 [(buf.validate.field).string.prefix = "pre"]; + * } + * ``` + * + * @generated from field: optional string prefix = 7; + */ + prefix: string; + /** + * `suffix` specifies that the field value must have the + * specified substring at the end of the string. If the field value doesn't + * end with the specified suffix, an error message will be generated. + * + * ```proto + * message MyString { + * // value does not have suffix `post` + * string value = 1 [(buf.validate.field).string.suffix = "post"]; + * } + * ``` + * + * @generated from field: optional string suffix = 8; + */ + suffix: string; + /** + * `contains` specifies that the field value must have the + * specified substring anywhere in the string. If the field value doesn't + * contain the specified substring, an error message will be generated. + * + * ```proto + * message MyString { + * // value does not contain substring `inside`. + * string value = 1 [(buf.validate.field).string.contains = "inside"]; + * } + * ``` + * + * @generated from field: optional string contains = 9; + */ + contains: string; + /** + * `not_contains` specifies that the field value must not have the + * specified substring anywhere in the string. If the field value contains + * the specified substring, an error message will be generated. + * + * ```proto + * message MyString { + * // value contains substring `inside`. + * string value = 1 [(buf.validate.field).string.not_contains = "inside"]; + * } + * ``` + * + * @generated from field: optional string not_contains = 23; + */ + notContains: string; + /** + * `in` specifies that the field value must be equal to one of the specified + * values. If the field value isn't one of the specified values, an error + * message will be generated. + * + * ```proto + * message MyString { + * // value must be in list ["apple", "banana"] + * string value = 1 [(buf.validate.field).string.in = "apple", (buf.validate.field).string.in = "banana"]; + * } + * ``` + * + * @generated from field: repeated string in = 10; + */ + in: string[]; + /** + * `not_in` specifies that the field value cannot be equal to any + * of the specified values. If the field value is one of the specified values, + * an error message will be generated. + * ```proto + * message MyString { + * // value must not be in list ["orange", "grape"] + * string value = 1 [(buf.validate.field).string.not_in = "orange", (buf.validate.field).string.not_in = "grape"]; + * } + * ``` + * + * @generated from field: repeated string not_in = 11; + */ + notIn: string[]; + /** + * `WellKnown` rules provide advanced rules against common string + * patterns. + * + * @generated from oneof buf.validate.StringRules.well_known + */ + wellKnown: { + /** + * `email` specifies that the field value must be a valid email address, for + * example "foo@example.com". + * + * Conforms to the definition for a valid email address from the [HTML standard](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address). + * Note that this standard willfully deviates from [RFC 5322](https://datatracker.ietf.org/doc/html/rfc5322), + * which allows many unexpected forms of email addresses and will easily match + * a typographical error. + * + * If the field value isn't a valid email address, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid email address + * string value = 1 [(buf.validate.field).string.email = true]; + * } + * ``` + * + * @generated from field: bool email = 12; + */ + value: boolean; + case: "email"; + } | { + /** + * `hostname` specifies that the field value must be a valid hostname, for + * example "foo.example.com". + * + * A valid hostname follows the rules below: + * - The name consists of one or more labels, separated by a dot ("."). + * - Each label can be 1 to 63 alphanumeric characters. + * - A label can contain hyphens ("-"), but must not start or end with a hyphen. + * - The right-most label must not be digits only. + * - The name can have a trailing dot—for example, "foo.example.com.". + * - The name can be 253 characters at most, excluding the optional trailing dot. + * + * If the field value isn't a valid hostname, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid hostname + * string value = 1 [(buf.validate.field).string.hostname = true]; + * } + * ``` + * + * @generated from field: bool hostname = 13; + */ + value: boolean; + case: "hostname"; + } | { + /** + * `ip` specifies that the field value must be a valid IP (v4 or v6) address. + * + * IPv4 addresses are expected in the dotted decimal format—for example, "192.168.5.21". + * IPv6 addresses are expected in their text representation—for example, "::1", + * or "2001:0DB8:ABCD:0012::0". + * + * Both formats are well-defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). + * Zone identifiers for IPv6 addresses (for example, "fe80::a%en1") are supported. + * + * If the field value isn't a valid IP address, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid IP address + * string value = 1 [(buf.validate.field).string.ip = true]; + * } + * ``` + * + * @generated from field: bool ip = 14; + */ + value: boolean; + case: "ip"; + } | { + /** + * `ipv4` specifies that the field value must be a valid IPv4 address—for + * example "192.168.5.21". If the field value isn't a valid IPv4 address, an + * error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv4 address + * string value = 1 [(buf.validate.field).string.ipv4 = true]; + * } + * ``` + * + * @generated from field: bool ipv4 = 15; + */ + value: boolean; + case: "ipv4"; + } | { + /** + * `ipv6` specifies that the field value must be a valid IPv6 address—for + * example "::1", or "d7a:115c:a1e0:ab12:4843:cd96:626b:430b". If the field + * value is not a valid IPv6 address, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv6 address + * string value = 1 [(buf.validate.field).string.ipv6 = true]; + * } + * ``` + * + * @generated from field: bool ipv6 = 16; + */ + value: boolean; + case: "ipv6"; + } | { + /** + * `uri` specifies that the field value must be a valid URI, for example + * "https://example.com/foo/bar?baz=quux#frag". + * + * URI is defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). + * Zone Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)). + * + * If the field value isn't a valid URI, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid URI + * string value = 1 [(buf.validate.field).string.uri = true]; + * } + * ``` + * + * @generated from field: bool uri = 17; + */ + value: boolean; + case: "uri"; + } | { + /** + * `uri_ref` specifies that the field value must be a valid URI Reference—either + * a URI such as "https://example.com/foo/bar?baz=quux#frag", or a Relative + * Reference such as "./foo/bar?query". + * + * URI, URI Reference, and Relative Reference are defined in the internet + * standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). Zone + * Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)). + * + * If the field value isn't a valid URI Reference, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid URI Reference + * string value = 1 [(buf.validate.field).string.uri_ref = true]; + * } + * ``` + * + * @generated from field: bool uri_ref = 18; + */ + value: boolean; + case: "uriRef"; + } | { + /** + * `address` specifies that the field value must be either a valid hostname + * (for example, "example.com"), or a valid IP (v4 or v6) address (for example, + * "192.168.0.1", or "::1"). If the field value isn't a valid hostname or IP, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid hostname, or ip address + * string value = 1 [(buf.validate.field).string.address = true]; + * } + * ``` + * + * @generated from field: bool address = 21; + */ + value: boolean; + case: "address"; + } | { + /** + * `uuid` specifies that the field value must be a valid UUID as defined by + * [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2). If the + * field value isn't a valid UUID, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid UUID + * string value = 1 [(buf.validate.field).string.uuid = true]; + * } + * ``` + * + * @generated from field: bool uuid = 22; + */ + value: boolean; + case: "uuid"; + } | { + /** + * `tuuid` (trimmed UUID) specifies that the field value must be a valid UUID as + * defined by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2) with all dashes + * omitted. If the field value isn't a valid UUID without dashes, an error message + * will be generated. + * + * ```proto + * message MyString { + * // value must be a valid trimmed UUID + * string value = 1 [(buf.validate.field).string.tuuid = true]; + * } + * ``` + * + * @generated from field: bool tuuid = 33; + */ + value: boolean; + case: "tuuid"; + } | { + /** + * `ip_with_prefixlen` specifies that the field value must be a valid IP + * (v4 or v6) address with prefix length—for example, "192.168.5.21/16" or + * "2001:0DB8:ABCD:0012::F1/64". If the field value isn't a valid IP with + * prefix length, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IP with prefix length + * string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true]; + * } + * ``` + * + * @generated from field: bool ip_with_prefixlen = 26; + */ + value: boolean; + case: "ipWithPrefixlen"; + } | { + /** + * `ipv4_with_prefixlen` specifies that the field value must be a valid + * IPv4 address with prefix length—for example, "192.168.5.21/16". If the + * field value isn't a valid IPv4 address with prefix length, an error + * message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv4 address with prefix length + * string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true]; + * } + * ``` + * + * @generated from field: bool ipv4_with_prefixlen = 27; + */ + value: boolean; + case: "ipv4WithPrefixlen"; + } | { + /** + * `ipv6_with_prefixlen` specifies that the field value must be a valid + * IPv6 address with prefix length—for example, "2001:0DB8:ABCD:0012::F1/64". + * If the field value is not a valid IPv6 address with prefix length, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv6 address prefix length + * string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true]; + * } + * ``` + * + * @generated from field: bool ipv6_with_prefixlen = 28; + */ + value: boolean; + case: "ipv6WithPrefixlen"; + } | { + /** + * `ip_prefix` specifies that the field value must be a valid IP (v4 or v6) + * prefix—for example, "192.168.0.0/16" or "2001:0DB8:ABCD:0012::0/64". + * + * The prefix must have all zeros for the unmasked bits. For example, + * "2001:0DB8:ABCD:0012::0/64" designates the left-most 64 bits for the + * prefix, and the remaining 64 bits must be zero. + * + * If the field value isn't a valid IP prefix, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid IP prefix + * string value = 1 [(buf.validate.field).string.ip_prefix = true]; + * } + * ``` + * + * @generated from field: bool ip_prefix = 29; + */ + value: boolean; + case: "ipPrefix"; + } | { + /** + * `ipv4_prefix` specifies that the field value must be a valid IPv4 + * prefix, for example "192.168.0.0/16". + * + * The prefix must have all zeros for the unmasked bits. For example, + * "192.168.0.0/16" designates the left-most 16 bits for the prefix, + * and the remaining 16 bits must be zero. + * + * If the field value isn't a valid IPv4 prefix, an error message + * will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv4 prefix + * string value = 1 [(buf.validate.field).string.ipv4_prefix = true]; + * } + * ``` + * + * @generated from field: bool ipv4_prefix = 30; + */ + value: boolean; + case: "ipv4Prefix"; + } | { + /** + * `ipv6_prefix` specifies that the field value must be a valid IPv6 prefix—for + * example, "2001:0DB8:ABCD:0012::0/64". + * + * The prefix must have all zeros for the unmasked bits. For example, + * "2001:0DB8:ABCD:0012::0/64" designates the left-most 64 bits for the + * prefix, and the remaining 64 bits must be zero. + * + * If the field value is not a valid IPv6 prefix, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv6 prefix + * string value = 1 [(buf.validate.field).string.ipv6_prefix = true]; + * } + * ``` + * + * @generated from field: bool ipv6_prefix = 31; + */ + value: boolean; + case: "ipv6Prefix"; + } | { + /** + * `host_and_port` specifies that the field value must be valid host/port + * pair—for example, "example.com:8080". + * + * The host can be one of: + * - An IPv4 address in dotted decimal format—for example, "192.168.5.21". + * - An IPv6 address enclosed in square brackets—for example, "[2001:0DB8:ABCD:0012::F1]". + * - A hostname—for example, "example.com". + * + * The port is separated by a colon. It must be non-empty, with a decimal number + * in the range of 0-65535, inclusive. + * + * @generated from field: bool host_and_port = 32; + */ + value: boolean; + case: "hostAndPort"; + } | { + /** + * `well_known_regex` specifies a common well-known pattern + * defined as a regex. If the field value doesn't match the well-known + * regex, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid HTTP header value + * string value = 1 [(buf.validate.field).string.well_known_regex = KNOWN_REGEX_HTTP_HEADER_VALUE]; + * } + * ``` + * + * #### KnownRegex + * + * `well_known_regex` contains some well-known patterns. + * + * | Name | Number | Description | + * |-------------------------------|--------|-------------------------------------------| + * | KNOWN_REGEX_UNSPECIFIED | 0 | | + * | KNOWN_REGEX_HTTP_HEADER_NAME | 1 | HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2) | + * | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4) | + * + * @generated from field: buf.validate.KnownRegex well_known_regex = 24; + */ + value: KnownRegex; + case: "wellKnownRegex"; + } | { + case: undefined; + value?: undefined; + }; + /** + * This applies to regexes `HTTP_HEADER_NAME` and `HTTP_HEADER_VALUE` to + * enable strict header validation. By default, this is true, and HTTP header + * validations are [RFC-compliant](https://datatracker.ietf.org/doc/html/rfc7230#section-3). Setting to false will enable looser + * validations that only disallow `\r\n\0` characters, which can be used to + * bypass header matching rules. + * + * ```proto + * message MyString { + * // The field `value` must have be a valid HTTP headers, but not enforced with strict rules. + * string value = 1 [(buf.validate.field).string.strict = false]; + * } + * ``` + * + * @generated from field: optional bool strict = 25; + */ + strict: boolean; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyString { + * string value = 1 [ + * (buf.validate.field).string.example = "hello", + * (buf.validate.field).string.example = "world" + * ]; + * } + * ``` + * + * @generated from field: repeated string example = 34; + */ + example: string[]; +}; +/** + * Describes the message buf.validate.StringRules. + * Use `create(StringRulesSchema)` to create a new message. + */ +export declare const StringRulesSchema: GenMessage; +/** + * BytesRules describe the rules applied to `bytes` values. These rules + * may also be applied to the `google.protobuf.BytesValue` Well-Known-Type. + * + * @generated from message buf.validate.BytesRules + */ +export type BytesRules = Message<"buf.validate.BytesRules"> & { + /** + * `const` requires the field value to exactly match the specified bytes + * value. If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be "\x01\x02\x03\x04" + * bytes value = 1 [(buf.validate.field).bytes.const = "\x01\x02\x03\x04"]; + * } + * ``` + * + * @generated from field: optional bytes const = 1; + */ + const: Uint8Array; + /** + * `len` requires the field value to have the specified length in bytes. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyBytes { + * // value length must be 4 bytes. + * optional bytes value = 1 [(buf.validate.field).bytes.len = 4]; + * } + * ``` + * + * @generated from field: optional uint64 len = 13; + */ + len: bigint; + /** + * `min_len` requires the field value to have at least the specified minimum + * length in bytes. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value length must be at least 2 bytes. + * optional bytes value = 1 [(buf.validate.field).bytes.min_len = 2]; + * } + * ``` + * + * @generated from field: optional uint64 min_len = 2; + */ + minLen: bigint; + /** + * `max_len` requires the field value to have at most the specified maximum + * length in bytes. + * If the field value exceeds the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be at most 6 bytes. + * optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6]; + * } + * ``` + * + * @generated from field: optional uint64 max_len = 3; + */ + maxLen: bigint; + /** + * `pattern` requires the field value to match the specified regular + * expression ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)). + * The value of the field must be valid UTF-8 or validation will fail with a + * runtime error. + * If the field value doesn't match the pattern, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must match regex pattern "^[a-zA-Z0-9]+$". + * optional bytes value = 1 [(buf.validate.field).bytes.pattern = "^[a-zA-Z0-9]+$"]; + * } + * ``` + * + * @generated from field: optional string pattern = 4; + */ + pattern: string; + /** + * `prefix` requires the field value to have the specified bytes at the + * beginning of the string. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value does not have prefix \x01\x02 + * optional bytes value = 1 [(buf.validate.field).bytes.prefix = "\x01\x02"]; + * } + * ``` + * + * @generated from field: optional bytes prefix = 5; + */ + prefix: Uint8Array; + /** + * `suffix` requires the field value to have the specified bytes at the end + * of the string. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value does not have suffix \x03\x04 + * optional bytes value = 1 [(buf.validate.field).bytes.suffix = "\x03\x04"]; + * } + * ``` + * + * @generated from field: optional bytes suffix = 6; + */ + suffix: Uint8Array; + /** + * `contains` requires the field value to have the specified bytes anywhere in + * the string. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```protobuf + * message MyBytes { + * // value does not contain \x02\x03 + * optional bytes value = 1 [(buf.validate.field).bytes.contains = "\x02\x03"]; + * } + * ``` + * + * @generated from field: optional bytes contains = 7; + */ + contains: Uint8Array; + /** + * `in` requires the field value to be equal to one of the specified + * values. If the field value doesn't match any of the specified values, an + * error message is generated. + * + * ```protobuf + * message MyBytes { + * // value must in ["\x01\x02", "\x02\x03", "\x03\x04"] + * optional bytes value = 1 [(buf.validate.field).bytes.in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; + * } + * ``` + * + * @generated from field: repeated bytes in = 8; + */ + in: Uint8Array[]; + /** + * `not_in` requires the field value to be not equal to any of the specified + * values. + * If the field value matches any of the specified values, an error message is + * generated. + * + * ```proto + * message MyBytes { + * // value must not in ["\x01\x02", "\x02\x03", "\x03\x04"] + * optional bytes value = 1 [(buf.validate.field).bytes.not_in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; + * } + * ``` + * + * @generated from field: repeated bytes not_in = 9; + */ + notIn: Uint8Array[]; + /** + * WellKnown rules provide advanced rules against common byte + * patterns + * + * @generated from oneof buf.validate.BytesRules.well_known + */ + wellKnown: { + /** + * `ip` ensures that the field `value` is a valid IP address (v4 or v6) in byte format. + * If the field value doesn't meet this rule, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be a valid IP address + * optional bytes value = 1 [(buf.validate.field).bytes.ip = true]; + * } + * ``` + * + * @generated from field: bool ip = 10; + */ + value: boolean; + case: "ip"; + } | { + /** + * `ipv4` ensures that the field `value` is a valid IPv4 address in byte format. + * If the field value doesn't meet this rule, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be a valid IPv4 address + * optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true]; + * } + * ``` + * + * @generated from field: bool ipv4 = 11; + */ + value: boolean; + case: "ipv4"; + } | { + /** + * `ipv6` ensures that the field `value` is a valid IPv6 address in byte format. + * If the field value doesn't meet this rule, an error message is generated. + * ```proto + * message MyBytes { + * // value must be a valid IPv6 address + * optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true]; + * } + * ``` + * + * @generated from field: bool ipv6 = 12; + */ + value: boolean; + case: "ipv6"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyBytes { + * bytes value = 1 [ + * (buf.validate.field).bytes.example = "\x01\x02", + * (buf.validate.field).bytes.example = "\x02\x03" + * ]; + * } + * ``` + * + * @generated from field: repeated bytes example = 14; + */ + example: Uint8Array[]; +}; +/** + * Describes the message buf.validate.BytesRules. + * Use `create(BytesRulesSchema)` to create a new message. + */ +export declare const BytesRulesSchema: GenMessage; +/** + * EnumRules describe the rules applied to `enum` values. + * + * @generated from message buf.validate.EnumRules + */ +export type EnumRules = Message<"buf.validate.EnumRules"> & { + /** + * `const` requires the field value to exactly match the specified enum value. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must be exactly MY_ENUM_VALUE1. + * MyEnum value = 1 [(buf.validate.field).enum.const = 1]; + * } + * ``` + * + * @generated from field: optional int32 const = 1; + */ + const: number; + /** + * `defined_only` requires the field value to be one of the defined values for + * this enum, failing on any undefined value. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must be a defined value of MyEnum. + * MyEnum value = 1 [(buf.validate.field).enum.defined_only = true]; + * } + * ``` + * + * @generated from field: optional bool defined_only = 2; + */ + definedOnly: boolean; + /** + * `in` requires the field value to be equal to one of the + * specified enum values. If the field value doesn't match any of the + * specified values, an error message is generated. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must be equal to one of the specified values. + * MyEnum value = 1 [(buf.validate.field).enum = { in: [1, 2]}]; + * } + * ``` + * + * @generated from field: repeated int32 in = 3; + */ + in: number[]; + /** + * `not_in` requires the field value to be not equal to any of the + * specified enum values. If the field value matches one of the specified + * values, an error message is generated. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must not be equal to any of the specified values. + * MyEnum value = 1 [(buf.validate.field).enum = { not_in: [1, 2]}]; + * } + * ``` + * + * @generated from field: repeated int32 not_in = 4; + */ + notIn: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * (buf.validate.field).enum.example = 1, + * (buf.validate.field).enum.example = 2 + * } + * ``` + * + * @generated from field: repeated int32 example = 5; + */ + example: number[]; +}; +/** + * Describes the message buf.validate.EnumRules. + * Use `create(EnumRulesSchema)` to create a new message. + */ +export declare const EnumRulesSchema: GenMessage; +/** + * RepeatedRules describe the rules applied to `repeated` values. + * + * @generated from message buf.validate.RepeatedRules + */ +export type RepeatedRules = Message<"buf.validate.RepeatedRules"> & { + /** + * `min_items` requires that this field must contain at least the specified + * minimum number of items. + * + * Note that `min_items = 1` is equivalent to setting a field as `required`. + * + * ```proto + * message MyRepeated { + * // value must contain at least 2 items + * repeated string value = 1 [(buf.validate.field).repeated.min_items = 2]; + * } + * ``` + * + * @generated from field: optional uint64 min_items = 1; + */ + minItems: bigint; + /** + * `max_items` denotes that this field must not exceed a + * certain number of items as the upper limit. If the field contains more + * items than specified, an error message will be generated, requiring the + * field to maintain no more than the specified number of items. + * + * ```proto + * message MyRepeated { + * // value must contain no more than 3 item(s) + * repeated string value = 1 [(buf.validate.field).repeated.max_items = 3]; + * } + * ``` + * + * @generated from field: optional uint64 max_items = 2; + */ + maxItems: bigint; + /** + * `unique` indicates that all elements in this field must + * be unique. This rule is strictly applicable to scalar and enum + * types, with message types not being supported. + * + * ```proto + * message MyRepeated { + * // repeated value must contain unique items + * repeated string value = 1 [(buf.validate.field).repeated.unique = true]; + * } + * ``` + * + * @generated from field: optional bool unique = 3; + */ + unique: boolean; + /** + * `items` details the rules to be applied to each item + * in the field. Even for repeated message fields, validation is executed + * against each item unless `ignore` is specified. + * + * ```proto + * message MyRepeated { + * // The items in the field `value` must follow the specified rules. + * repeated string value = 1 [(buf.validate.field).repeated.items = { + * string: { + * min_len: 3 + * max_len: 10 + * } + * }]; + * } + * ``` + * + * Note that the `required` rule does not apply. Repeated items + * cannot be unset. + * + * @generated from field: optional buf.validate.FieldRules items = 4; + */ + items?: FieldRules; +}; +/** + * Describes the message buf.validate.RepeatedRules. + * Use `create(RepeatedRulesSchema)` to create a new message. + */ +export declare const RepeatedRulesSchema: GenMessage; +/** + * MapRules describe the rules applied to `map` values. + * + * @generated from message buf.validate.MapRules + */ +export type MapRules = Message<"buf.validate.MapRules"> & { + /** + * Specifies the minimum number of key-value pairs allowed. If the field has + * fewer key-value pairs than specified, an error message is generated. + * + * ```proto + * message MyMap { + * // The field `value` must have at least 2 key-value pairs. + * map value = 1 [(buf.validate.field).map.min_pairs = 2]; + * } + * ``` + * + * @generated from field: optional uint64 min_pairs = 1; + */ + minPairs: bigint; + /** + * Specifies the maximum number of key-value pairs allowed. If the field has + * more key-value pairs than specified, an error message is generated. + * + * ```proto + * message MyMap { + * // The field `value` must have at most 3 key-value pairs. + * map value = 1 [(buf.validate.field).map.max_pairs = 3]; + * } + * ``` + * + * @generated from field: optional uint64 max_pairs = 2; + */ + maxPairs: bigint; + /** + * Specifies the rules to be applied to each key in the field. + * + * ```proto + * message MyMap { + * // The keys in the field `value` must follow the specified rules. + * map value = 1 [(buf.validate.field).map.keys = { + * string: { + * min_len: 3 + * max_len: 10 + * } + * }]; + * } + * ``` + * + * Note that the `required` rule does not apply. Map keys cannot be unset. + * + * @generated from field: optional buf.validate.FieldRules keys = 4; + */ + keys?: FieldRules; + /** + * Specifies the rules to be applied to the value of each key in the + * field. Message values will still have their validations evaluated unless + * `ignore` is specified. + * + * ```proto + * message MyMap { + * // The values in the field `value` must follow the specified rules. + * map value = 1 [(buf.validate.field).map.values = { + * string: { + * min_len: 5 + * max_len: 20 + * } + * }]; + * } + * ``` + * Note that the `required` rule does not apply. Map values cannot be unset. + * + * @generated from field: optional buf.validate.FieldRules values = 5; + */ + values?: FieldRules; +}; +/** + * Describes the message buf.validate.MapRules. + * Use `create(MapRulesSchema)` to create a new message. + */ +export declare const MapRulesSchema: GenMessage; +/** + * AnyRules describe rules applied exclusively to the `google.protobuf.Any` well-known type. + * + * @generated from message buf.validate.AnyRules + */ +export type AnyRules = Message<"buf.validate.AnyRules"> & { + /** + * `in` requires the field's `type_url` to be equal to one of the + * specified values. If it doesn't match any of the specified values, an error + * message is generated. + * + * ```proto + * message MyAny { + * // The `value` field must have a `type_url` equal to one of the specified values. + * google.protobuf.Any value = 1 [(buf.validate.field).any = { + * in: ["type.googleapis.com/MyType1", "type.googleapis.com/MyType2"] + * }]; + * } + * ``` + * + * @generated from field: repeated string in = 2; + */ + in: string[]; + /** + * requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated. + * + * ```proto + * message MyAny { + * // The `value` field must not have a `type_url` equal to any of the specified values. + * google.protobuf.Any value = 1 [(buf.validate.field).any = { + * not_in: ["type.googleapis.com/ForbiddenType1", "type.googleapis.com/ForbiddenType2"] + * }]; + * } + * ``` + * + * @generated from field: repeated string not_in = 3; + */ + notIn: string[]; +}; +/** + * Describes the message buf.validate.AnyRules. + * Use `create(AnyRulesSchema)` to create a new message. + */ +export declare const AnyRulesSchema: GenMessage; +/** + * DurationRules describe the rules applied exclusively to the `google.protobuf.Duration` well-known type. + * + * @generated from message buf.validate.DurationRules + */ +export type DurationRules = Message<"buf.validate.DurationRules"> & { + /** + * `const` dictates that the field must match the specified value of the `google.protobuf.Duration` type exactly. + * If the field's value deviates from the specified value, an error message + * will be generated. + * + * ```proto + * message MyDuration { + * // value must equal 5s + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = "5s"]; + * } + * ``` + * + * @generated from field: optional google.protobuf.Duration const = 2; + */ + const?: Duration; + /** + * @generated from oneof buf.validate.DurationRules.less_than + */ + lessThan: { + /** + * `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type, + * exclusive. If the field's value is greater than or equal to the specified + * value, an error message will be generated. + * + * ```proto + * message MyDuration { + * // value must be less than 5s + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = "5s"]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration lt = 3; + */ + value: Duration; + case: "lt"; + } | { + /** + * `lte` indicates that the field must be less than or equal to the specified + * value of the `google.protobuf.Duration` type, inclusive. If the field's value is greater than the specified value, + * an error message will be generated. + * + * ```proto + * message MyDuration { + * // value must be less than or equal to 10s + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = "10s"]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration lte = 4; + */ + value: Duration; + case: "lte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.DurationRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the duration field value to be greater than the specified + * value (exclusive). If the value of `gt` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyDuration { + * // duration must be greater than 5s [duration.gt] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gt = { seconds: 5 }]; + * + * // duration must be greater than 5s and less than 10s [duration.gt_lt] + * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gt: { seconds: 5 }, lt: { seconds: 10 } }]; + * + * // duration must be greater than 10s or less than 5s [duration.gt_lt_exclusive] + * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gt: { seconds: 10 }, lt: { seconds: 5 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration gt = 5; + */ + value: Duration; + case: "gt"; + } | { + /** + * `gte` requires the duration field value to be greater than or equal to the + * specified value (exclusive). If the value of `gte` is larger than a + * specified `lt` or `lte`, the range is reversed, and the field value must + * be outside the specified range. If the field value doesn't meet the + * required conditions, an error message is generated. + * + * ```proto + * message MyDuration { + * // duration must be greater than or equal to 5s [duration.gte] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gte = { seconds: 5 }]; + * + * // duration must be greater than or equal to 5s and less than 10s [duration.gte_lt] + * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gte: { seconds: 5 }, lt: { seconds: 10 } }]; + * + * // duration must be greater than or equal to 10s or less than 5s [duration.gte_lt_exclusive] + * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gte: { seconds: 10 }, lt: { seconds: 5 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration gte = 6; + */ + value: Duration; + case: "gte"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `in` asserts that the field must be equal to one of the specified values of the `google.protobuf.Duration` type. + * If the field's value doesn't correspond to any of the specified values, + * an error message will be generated. + * + * ```proto + * message MyDuration { + * // value must be in list [1s, 2s, 3s] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.in = ["1s", "2s", "3s"]]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Duration in = 7; + */ + in: Duration[]; + /** + * `not_in` denotes that the field must not be equal to + * any of the specified values of the `google.protobuf.Duration` type. + * If the field's value matches any of these values, an error message will be + * generated. + * + * ```proto + * message MyDuration { + * // value must not be in list [1s, 2s, 3s] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.not_in = ["1s", "2s", "3s"]]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Duration not_in = 8; + */ + notIn: Duration[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyDuration { + * google.protobuf.Duration value = 1 [ + * (buf.validate.field).duration.example = { seconds: 1 }, + * (buf.validate.field).duration.example = { seconds: 2 }, + * ]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Duration example = 9; + */ + example: Duration[]; +}; +/** + * Describes the message buf.validate.DurationRules. + * Use `create(DurationRulesSchema)` to create a new message. + */ +export declare const DurationRulesSchema: GenMessage; +/** + * TimestampRules describe the rules applied exclusively to the `google.protobuf.Timestamp` well-known type. + * + * @generated from message buf.validate.TimestampRules + */ +export type TimestampRules = Message<"buf.validate.TimestampRules"> & { + /** + * `const` dictates that this field, of the `google.protobuf.Timestamp` type, must exactly match the specified value. If the field value doesn't correspond to the specified timestamp, an error message will be generated. + * + * ```proto + * message MyTimestamp { + * // value must equal 2023-05-03T10:00:00Z + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.const = {seconds: 1727998800}]; + * } + * ``` + * + * @generated from field: optional google.protobuf.Timestamp const = 2; + */ + const?: Timestamp; + /** + * @generated from oneof buf.validate.TimestampRules.less_than + */ + lessThan: { + /** + * requires the duration field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated. + * + * ```proto + * message MyDuration { + * // duration must be less than 'P3D' [duration.lt] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 259200 }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp lt = 3; + */ + value: Timestamp; + case: "lt"; + } | { + /** + * requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated. + * + * ```proto + * message MyTimestamp { + * // timestamp must be less than or equal to '2023-05-14T00:00:00Z' [timestamp.lte] + * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lte = { seconds: 1678867200 }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp lte = 4; + */ + value: Timestamp; + case: "lte"; + } | { + /** + * `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule. + * + * ```proto + * message MyTimestamp { + * // value must be less than now + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true]; + * } + * ``` + * + * @generated from field: bool lt_now = 7; + */ + value: boolean; + case: "ltNow"; + } | { + case: undefined; + value?: undefined; + }; + /** + * @generated from oneof buf.validate.TimestampRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the timestamp field value to be greater than the specified + * value (exclusive). If the value of `gt` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyTimestamp { + * // timestamp must be greater than '2023-01-01T00:00:00Z' [timestamp.gt] + * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gt = { seconds: 1672444800 }]; + * + * // timestamp must be greater than '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gt_lt] + * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gt: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; + * + * // timestamp must be greater than '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gt_lt_exclusive] + * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gt: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp gt = 5; + */ + value: Timestamp; + case: "gt"; + } | { + /** + * `gte` requires the timestamp field value to be greater than or equal to the + * specified value (exclusive). If the value of `gte` is larger than a + * specified `lt` or `lte`, the range is reversed, and the field value + * must be outside the specified range. If the field value doesn't meet + * the required conditions, an error message is generated. + * + * ```proto + * message MyTimestamp { + * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' [timestamp.gte] + * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gte = { seconds: 1672444800 }]; + * + * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gte_lt] + * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gte: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; + * + * // timestamp must be greater than or equal to '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gte_lt_exclusive] + * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gte: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp gte = 6; + */ + value: Timestamp; + case: "gte"; + } | { + /** + * `gt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be greater than the current time. `gt_now` can only be used with the `within` rule. + * + * ```proto + * message MyTimestamp { + * // value must be greater than now + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true]; + * } + * ``` + * + * @generated from field: bool gt_now = 8; + */ + value: boolean; + case: "gtNow"; + } | { + case: undefined; + value?: undefined; + }; + /** + * `within` specifies that this field, of the `google.protobuf.Timestamp` type, must be within the specified duration of the current time. If the field value isn't within the duration, an error message is generated. + * + * ```proto + * message MyTimestamp { + * // value must be within 1 hour of now + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}]; + * } + * ``` + * + * @generated from field: optional google.protobuf.Duration within = 9; + */ + within?: Duration; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyTimestamp { + * google.protobuf.Timestamp value = 1 [ + * (buf.validate.field).timestamp.example = { seconds: 1672444800 }, + * (buf.validate.field).timestamp.example = { seconds: 1672531200 }, + * ]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Timestamp example = 10; + */ + example: Timestamp[]; +}; +/** + * Describes the message buf.validate.TimestampRules. + * Use `create(TimestampRulesSchema)` to create a new message. + */ +export declare const TimestampRulesSchema: GenMessage; +/** + * `Violations` is a collection of `Violation` messages. This message type is returned by + * Protovalidate when a proto message fails to meet the requirements set by the `Rule` validation rules. + * Each individual violation is represented by a `Violation` message. + * + * @generated from message buf.validate.Violations + */ +export type Violations = Message<"buf.validate.Violations"> & { + /** + * `violations` is a repeated field that contains all the `Violation` messages corresponding to the violations detected. + * + * @generated from field: repeated buf.validate.Violation violations = 1; + */ + violations: Violation[]; +}; +/** + * Describes the message buf.validate.Violations. + * Use `create(ViolationsSchema)` to create a new message. + */ +export declare const ViolationsSchema: GenMessage; +/** + * `Violation` represents a single instance where a validation rule, expressed + * as a `Rule`, was not met. It provides information about the field that + * caused the violation, the specific rule that wasn't fulfilled, and a + * human-readable error message. + * + * For example, consider the following message: + * + * ```proto + * message User { + * int32 age = 1 [(buf.validate.field).cel = { + * id: "user.age", + * expression: "this < 18 ? 'User must be at least 18 years old' : ''", + * }]; + * } + * ``` + * + * It could produce the following violation: + * + * ```json + * { + * "ruleId": "user.age", + * "message": "User must be at least 18 years old", + * "field": { + * "elements": [ + * { + * "fieldNumber": 1, + * "fieldName": "age", + * "fieldType": "TYPE_INT32" + * } + * ] + * }, + * "rule": { + * "elements": [ + * { + * "fieldNumber": 23, + * "fieldName": "cel", + * "fieldType": "TYPE_MESSAGE", + * "index": "0" + * } + * ] + * } + * } + * ``` + * + * @generated from message buf.validate.Violation + */ +export type Violation = Message<"buf.validate.Violation"> & { + /** + * `field` is a machine-readable path to the field that failed validation. + * This could be a nested field, in which case the path will include all the parent fields leading to the actual field that caused the violation. + * + * For example, consider the following message: + * + * ```proto + * message Message { + * bool a = 1 [(buf.validate.field).required = true]; + * } + * ``` + * + * It could produce the following violation: + * + * ```textproto + * violation { + * field { element { field_number: 1, field_name: "a", field_type: 8 } } + * ... + * } + * ``` + * + * @generated from field: optional buf.validate.FieldPath field = 5; + */ + field?: FieldPath; + /** + * `rule` is a machine-readable path that points to the specific rule that failed validation. + * This will be a nested field starting from the FieldRules of the field that failed validation. + * For custom rules, this will provide the path of the rule, e.g. `cel[0]`. + * + * For example, consider the following message: + * + * ```proto + * message Message { + * bool a = 1 [(buf.validate.field).required = true]; + * bool b = 2 [(buf.validate.field).cel = { + * id: "custom_rule", + * expression: "!this ? 'b must be true': ''" + * }] + * } + * ``` + * + * It could produce the following violations: + * + * ```textproto + * violation { + * rule { element { field_number: 25, field_name: "required", field_type: 8 } } + * ... + * } + * violation { + * rule { element { field_number: 23, field_name: "cel", field_type: 11, index: 0 } } + * ... + * } + * ``` + * + * @generated from field: optional buf.validate.FieldPath rule = 6; + */ + rule?: FieldPath; + /** + * `rule_id` is the unique identifier of the `Rule` that was not fulfilled. + * This is the same `id` that was specified in the `Rule` message, allowing easy tracing of which rule was violated. + * + * @generated from field: optional string rule_id = 2; + */ + ruleId: string; + /** + * `message` is a human-readable error message that describes the nature of the violation. + * This can be the default error message from the violated `Rule`, or it can be a custom message that gives more context about the violation. + * + * @generated from field: optional string message = 3; + */ + message: string; + /** + * `for_key` indicates whether the violation was caused by a map key, rather than a value. + * + * @generated from field: optional bool for_key = 4; + */ + forKey: boolean; +}; +/** + * Describes the message buf.validate.Violation. + * Use `create(ViolationSchema)` to create a new message. + */ +export declare const ViolationSchema: GenMessage; +/** + * `FieldPath` provides a path to a nested protobuf field. + * + * This message provides enough information to render a dotted field path even without protobuf descriptors. + * It also provides enough information to resolve a nested field through unknown wire data. + * + * @generated from message buf.validate.FieldPath + */ +export type FieldPath = Message<"buf.validate.FieldPath"> & { + /** + * `elements` contains each element of the path, starting from the root and recursing downward. + * + * @generated from field: repeated buf.validate.FieldPathElement elements = 1; + */ + elements: FieldPathElement[]; +}; +/** + * Describes the message buf.validate.FieldPath. + * Use `create(FieldPathSchema)` to create a new message. + */ +export declare const FieldPathSchema: GenMessage; +/** + * `FieldPathElement` provides enough information to nest through a single protobuf field. + * + * If the selected field is a map or repeated field, the `subscript` value selects a specific element from it. + * A path that refers to a value nested under a map key or repeated field index will have a `subscript` value. + * The `field_type` field allows unambiguous resolution of a field even if descriptors are not available. + * + * @generated from message buf.validate.FieldPathElement + */ +export type FieldPathElement = Message<"buf.validate.FieldPathElement"> & { + /** + * `field_number` is the field number this path element refers to. + * + * @generated from field: optional int32 field_number = 1; + */ + fieldNumber: number; + /** + * `field_name` contains the field name this path element refers to. + * This can be used to display a human-readable path even if the field number is unknown. + * + * @generated from field: optional string field_name = 2; + */ + fieldName: string; + /** + * `field_type` specifies the type of this field. When using reflection, this value is not needed. + * + * This value is provided to make it possible to traverse unknown fields through wire data. + * When traversing wire data, be mindful of both packed[1] and delimited[2] encoding schemes. + * + * [1]: https://protobuf.dev/programming-guides/encoding/#packed + * [2]: https://protobuf.dev/programming-guides/encoding/#groups + * + * N.B.: Although groups are deprecated, the corresponding delimited encoding scheme is not, and + * can be explicitly used in Protocol Buffers 2023 Edition. + * + * @generated from field: optional google.protobuf.FieldDescriptorProto.Type field_type = 3; + */ + fieldType: FieldDescriptorProto_Type; + /** + * `key_type` specifies the map key type of this field. This value is useful when traversing + * unknown fields through wire data: specifically, it allows handling the differences between + * different integer encodings. + * + * @generated from field: optional google.protobuf.FieldDescriptorProto.Type key_type = 4; + */ + keyType: FieldDescriptorProto_Type; + /** + * `value_type` specifies map value type of this field. This is useful if you want to display a + * value inside unknown fields through wire data. + * + * @generated from field: optional google.protobuf.FieldDescriptorProto.Type value_type = 5; + */ + valueType: FieldDescriptorProto_Type; + /** + * `subscript` contains a repeated index or map key, if this path element nests into a repeated or map field. + * + * @generated from oneof buf.validate.FieldPathElement.subscript + */ + subscript: { + /** + * `index` specifies a 0-based index into a repeated field. + * + * @generated from field: uint64 index = 6; + */ + value: bigint; + case: "index"; + } | { + /** + * `bool_key` specifies a map key of type bool. + * + * @generated from field: bool bool_key = 7; + */ + value: boolean; + case: "boolKey"; + } | { + /** + * `int_key` specifies a map key of type int32, int64, sint32, sint64, sfixed32 or sfixed64. + * + * @generated from field: int64 int_key = 8; + */ + value: bigint; + case: "intKey"; + } | { + /** + * `uint_key` specifies a map key of type uint32, uint64, fixed32 or fixed64. + * + * @generated from field: uint64 uint_key = 9; + */ + value: bigint; + case: "uintKey"; + } | { + /** + * `string_key` specifies a map key of type string. + * + * @generated from field: string string_key = 10; + */ + value: string; + case: "stringKey"; + } | { + case: undefined; + value?: undefined; + }; +}; +/** + * Describes the message buf.validate.FieldPathElement. + * Use `create(FieldPathElementSchema)` to create a new message. + */ +export declare const FieldPathElementSchema: GenMessage; +/** + * Specifies how `FieldRules.ignore` behaves, depending on the field's value, and + * whether the field tracks presence. + * + * @generated from enum buf.validate.Ignore + */ +export declare enum Ignore { + /** + * Ignore rules if the field tracks presence and is unset. This is the default + * behavior. + * + * In proto3, only message fields, members of a Protobuf `oneof`, and fields + * with the `optional` label track presence. Consequently, the following fields + * are always validated, whether a value is set or not: + * + * ```proto + * syntax="proto3"; + * + * message RulesApply { + * string email = 1 [ + * (buf.validate.field).string.email = true + * ]; + * int32 age = 2 [ + * (buf.validate.field).int32.gt = 0 + * ]; + * repeated string labels = 3 [ + * (buf.validate.field).repeated.min_items = 1 + * ]; + * } + * ``` + * + * In contrast, the following fields track presence, and are only validated if + * a value is set: + * + * ```proto + * syntax="proto3"; + * + * message RulesApplyIfSet { + * optional string email = 1 [ + * (buf.validate.field).string.email = true + * ]; + * oneof ref { + * string reference = 2 [ + * (buf.validate.field).string.uuid = true + * ]; + * string name = 3 [ + * (buf.validate.field).string.min_len = 4 + * ]; + * } + * SomeMessage msg = 4 [ + * (buf.validate.field).cel = {/* ... *\/} + * ]; + * } + * ``` + * + * To ensure that such a field is set, add the `required` rule. + * + * To learn which fields track presence, see the + * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat). + * + * @generated from enum value: IGNORE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * Ignore rules if the field is unset, or set to the zero value. + * + * The zero value depends on the field type: + * - For strings, the zero value is the empty string. + * - For bytes, the zero value is empty bytes. + * - For bool, the zero value is false. + * - For numeric types, the zero value is zero. + * - For enums, the zero value is the first defined enum value. + * - For repeated fields, the zero is an empty list. + * - For map fields, the zero is an empty map. + * - For message fields, absence of the message (typically a null-value) is considered zero value. + * + * For fields that track presence (e.g. adding the `optional` label in proto3), + * this a no-op and behavior is the same as the default `IGNORE_UNSPECIFIED`. + * + * @generated from enum value: IGNORE_IF_ZERO_VALUE = 1; + */ + IF_ZERO_VALUE = 1, + /** + * Always ignore rules, including the `required` rule. + * + * This is useful for ignoring the rules of a referenced message, or to + * temporarily ignore rules during development. + * + * ```proto + * message MyMessage { + * // The field's rules will always be ignored, including any validations + * // on value's fields. + * MyOtherMessage value = 1 [ + * (buf.validate.field).ignore = IGNORE_ALWAYS + * ]; + * } + * ``` + * + * @generated from enum value: IGNORE_ALWAYS = 3; + */ + ALWAYS = 3 +} +/** + * Describes the enum buf.validate.Ignore. + */ +export declare const IgnoreSchema: GenEnum; +/** + * KnownRegex contains some well-known patterns. + * + * @generated from enum buf.validate.KnownRegex + */ +export declare enum KnownRegex { + /** + * @generated from enum value: KNOWN_REGEX_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2). + * + * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_NAME = 1; + */ + HTTP_HEADER_NAME = 1, + /** + * HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4). + * + * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_VALUE = 2; + */ + HTTP_HEADER_VALUE = 2 +} +/** + * Describes the enum buf.validate.KnownRegex. + */ +export declare const KnownRegexSchema: GenEnum; +/** + * Rules specify the validations to be performed on this message. By default, + * no validation is performed against a message. + * + * @generated from extension: optional buf.validate.MessageRules message = 1159; + */ +export declare const message: GenExtension; +/** + * Rules specify the validations to be performed on this oneof. By default, + * no validation is performed against a oneof. + * + * @generated from extension: optional buf.validate.OneofRules oneof = 1159; + */ +export declare const oneof: GenExtension; +/** + * Rules specify the validations to be performed on this field. By default, + * no validation is performed against a field. + * + * @generated from extension: optional buf.validate.FieldRules field = 1159; + */ +export declare const field: GenExtension; +/** + * Specifies predefined rules. When extending a standard rule message, + * this adds additional CEL expressions that apply when the extension is used. + * + * ```proto + * extend buf.validate.Int32Rules { + * bool is_zero [(buf.validate.predefined).cel = { + * id: "int32.is_zero", + * message: "value must be zero", + * expression: "!rule || this == 0", + * }]; + * } + * + * message Foo { + * int32 reserved = 1 [(buf.validate.field).int32.(is_zero) = true]; + * } + * ``` + * + * @generated from extension: optional buf.validate.PredefinedRules predefined = 1160; + */ +export declare const predefined: GenExtension; diff --git a/js/buf/validate/validate_pb.js b/js/buf/validate/validate_pb.js new file mode 100644 index 00000000..1a432cd3 --- /dev/null +++ b/js/buf/validate/validate_pb.js @@ -0,0 +1,351 @@ +// Copyright 2023-2025 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +import { enumDesc, extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +/** + * Describes the file buf/validate/validate.proto. + */ +export const file_buf_validate_validate = /*@__PURE__*/ fileDesc("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSJuCgxNZXNzYWdlUnVsZXMSHwoDY2VsGAMgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSLQoFb25lb2YYBCADKAsyHi5idWYudmFsaWRhdGUuTWVzc2FnZU9uZW9mUnVsZUoECAEQAlIIZGlzYWJsZWQiNAoQTWVzc2FnZU9uZW9mUnVsZRIOCgZmaWVsZHMYASADKAkSEAoIcmVxdWlyZWQYAiABKAgiHgoKT25lb2ZSdWxlcxIQCghyZXF1aXJlZBgBIAEoCCK/CAoKRmllbGRSdWxlcxIfCgNjZWwYFyADKAsyEi5idWYudmFsaWRhdGUuUnVsZRIQCghyZXF1aXJlZBgZIAEoCBIkCgZpZ25vcmUYGyABKA4yFC5idWYudmFsaWRhdGUuSWdub3JlEikKBWZsb2F0GAEgASgLMhguYnVmLnZhbGlkYXRlLkZsb2F0UnVsZXNIABIrCgZkb3VibGUYAiABKAsyGS5idWYudmFsaWRhdGUuRG91YmxlUnVsZXNIABIpCgVpbnQzMhgDIAEoCzIYLmJ1Zi52YWxpZGF0ZS5JbnQzMlJ1bGVzSAASKQoFaW50NjQYBCABKAsyGC5idWYudmFsaWRhdGUuSW50NjRSdWxlc0gAEisKBnVpbnQzMhgFIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50MzJSdWxlc0gAEisKBnVpbnQ2NBgGIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50NjRSdWxlc0gAEisKBnNpbnQzMhgHIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50MzJSdWxlc0gAEisKBnNpbnQ2NBgIIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50NjRSdWxlc0gAEi0KB2ZpeGVkMzIYCSABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQzMlJ1bGVzSAASLQoHZml4ZWQ2NBgKIAEoCzIaLmJ1Zi52YWxpZGF0ZS5GaXhlZDY0UnVsZXNIABIvCghzZml4ZWQzMhgLIAEoCzIbLmJ1Zi52YWxpZGF0ZS5TRml4ZWQzMlJ1bGVzSAASLwoIc2ZpeGVkNjQYDCABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkNjRSdWxlc0gAEicKBGJvb2wYDSABKAsyFy5idWYudmFsaWRhdGUuQm9vbFJ1bGVzSAASKwoGc3RyaW5nGA4gASgLMhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzSAASKQoFYnl0ZXMYDyABKAsyGC5idWYudmFsaWRhdGUuQnl0ZXNSdWxlc0gAEicKBGVudW0YECABKAsyFy5idWYudmFsaWRhdGUuRW51bVJ1bGVzSAASLwoIcmVwZWF0ZWQYEiABKAsyGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlc0gAEiUKA21hcBgTIAEoCzIWLmJ1Zi52YWxpZGF0ZS5NYXBSdWxlc0gAEiUKA2FueRgUIAEoCzIWLmJ1Zi52YWxpZGF0ZS5BbnlSdWxlc0gAEi8KCGR1cmF0aW9uGBUgASgLMhsuYnVmLnZhbGlkYXRlLkR1cmF0aW9uUnVsZXNIABIxCgl0aW1lc3RhbXAYFiABKAsyHC5idWYudmFsaWRhdGUuVGltZXN0YW1wUnVsZXNIAEIGCgR0eXBlSgQIGBAZSgQIGhAbUgdza2lwcGVkUgxpZ25vcmVfZW1wdHkiVQoPUHJlZGVmaW5lZFJ1bGVzEh8KA2NlbBgBIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlSgQIGBAZSgQIGhAbUgdza2lwcGVkUgxpZ25vcmVfZW1wdHki2hcKCkZsb2F0UnVsZXMSgwEKBWNvbnN0GAEgASgCQnTCSHEKbwoLZmxvYXQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKfAQoCbHQYAiABKAJCkAHCSIwBCokBCghmbG9hdC5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKvAQoDbHRlGAMgASgCQp8BwkibAQqYAQoJZmxvYXQubHRlGooBIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS7wcKAmd0GAQgASgCQuAHwkjcBwqNAQoIZmxvYXQuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrDAQoLZmxvYXQuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrNAQoVZmxvYXQuZ3RfbHRfZXhjbHVzaXZlGrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycK0wEKDGZsb2F0Lmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt0BChZmbG9hdC5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK6CAoDZ3RlGAUgASgCQqoIwkimCAqbAQoJZmxvYXQuZ3RlGo0BIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCtIBCgxmbG9hdC5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtwBChZmbG9hdC5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwriAQoNZmxvYXQuZ3RlX2x0ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK7AEKF2Zsb2F0Lmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygCQnPCSHAKbgoIZmxvYXQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoAkJmwkhjCmEKDGZsb2F0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnUKBmZpbml0ZRgIIAEoCEJlwkhiCmAKDGZsb2F0LmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIu0XCgtEb3VibGVSdWxlcxKEAQoFY29uc3QYASABKAFCdcJIcgpwCgxkb3VibGUuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKgAQoCbHQYAiABKAFCkQHCSI0BCooBCglkb3VibGUubHQafSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASsAEKA2x0ZRgDIAEoAUKgAcJInAEKmQEKCmRvdWJsZS5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL0BwoCZ3QYBCABKAFC5QfCSOEHCo4BCglkb3VibGUuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrEAQoMZG91YmxlLmd0X2x0GrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKFmRvdWJsZS5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrUAQoNZG91YmxlLmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt4BChdkb3VibGUuZ3RfbHRlX2V4Y2x1c2l2ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESvwgKA2d0ZRgFIAEoAUKvCMJIqwgKnAEKCmRvdWJsZS5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0wEKDWRvdWJsZS5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BChdkb3VibGUuZ3RlX2x0X2V4Y2x1c2l2ZRrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK4wEKDmRvdWJsZS5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrtAQoYZG91YmxlLmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoAUJ0wkhxCm8KCWRvdWJsZS5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygBQmfCSGQKYgoNZG91YmxlLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnYKBmZpbml0ZRgIIAEoCEJmwkhjCmEKDWRvdWJsZS5maW5pdGUaUHJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ3ZhbHVlIG11c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEiwKB2V4YW1wbGUYCSADKAFCG8JIGAoWCg5kb3VibGUuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDMyUnVsZXMSgwEKBWNvbnN0GAEgASgFQnTCSHEKbwoLaW50MzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKAVCfMJIeQp3CghpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgFQowBwkiIAQqFAQoJaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKAVCiAfCSIQHCnoKCGludDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50MzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoBULTB8JIzwcKiAEKCWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoBUJzwkhwCm4KCGludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKAVCZsJIYwphCgxpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAggAygFQhrCSBcKFQoNaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDY0UnVsZXMSgwEKBWNvbnN0GAEgASgDQnTCSHEKbwoLaW50NjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKANCfMJIeQp3CghpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgDQowBwkiIAQqFAQoJaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKANCiAfCSIQHCnoKCGludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoA0LTB8JIzwcKiAEKCWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoA0JzwkhwCm4KCGludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKANCZsJIYwphCgxpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAkgAygDQhrCSBcKFQoNaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoDUJ1wkhyCnAKDHVpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoDUJ9wkh6CngKCXVpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgNQo0BwkiJAQqGAQoKdWludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgNQo0HwkiJBwp7Cgl1aW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoDULYB8JI1AcKiQEKCnVpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoDUJ0wkhxCm8KCXVpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygNQmfCSGQKYgoNdWludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoBEJ1wkhyCnAKDHVpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoBEJ9wkh6CngKCXVpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgEQo0BwkiJAQqGAQoKdWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgEQo0HwkiJBwp7Cgl1aW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoBELYB8JI1AcKiQEKCnVpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoBEJ0wkhxCm8KCXVpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygEQmfCSGQKYgoNdWludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKARCG8JIGAoWCg51aW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoEUJ1wkhyCnAKDHNpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEUJ9wkh6CngKCXNpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgRQo0BwkiJAQqGAQoKc2ludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgRQo0HwkiJBwp7CglzaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEULYB8JI1AcKiQEKCnNpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEUJ0wkhxCm8KCXNpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygRQmfCSGQKYgoNc2ludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBFCG8JIGAoWCg5zaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoEkJ1wkhyCnAKDHNpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEkJ9wkh6CngKCXNpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgSQo0BwkiJAQqGAQoKc2ludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgSQo0HwkiJBwp7CglzaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEkLYB8JI1AcKiQEKCnNpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEkJ0wkhxCm8KCXNpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygSQmfCSGQKYgoNc2ludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4irxUKDEZpeGVkMzJSdWxlcxKFAQoFY29uc3QYASABKAdCdsJIcwpxCg1maXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjAEKAmx0GAIgASgHQn7CSHsKeQoKZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgHQo4BwkiKAQqHAQoLZml4ZWQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqEHCgJndBgEIAEoB0KSB8JIjgcKfAoKZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtQEKDWZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BChdmaXhlZDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsUBCg5maXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzQEKGGZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES7QcKA2d0ZRgFIAEoB0LdB8JI2QcKigEKC2ZpeGVkMzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxAEKDmZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCswBChhmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtQBCg9maXhlZDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3AEKGWZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgQEKAmluGAYgAygHQnXCSHIKcAoKZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeAoGbm90X2luGAcgAygHQmjCSGUKYwoOZml4ZWQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxItCgdleGFtcGxlGAggAygHQhzCSBkKFwoPZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKvFQoMRml4ZWQ2NFJ1bGVzEoUBCgVjb25zdBgBIAEoBkJ2wkhzCnEKDWZpeGVkNjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKMAQoCbHQYAiABKAZCfsJIewp5CgpmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp4BCgNsdGUYAyABKAZCjgHCSIoBCocBCgtmaXhlZDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASoQcKAmd0GAQgASgGQpIHwkiOBwp8CgpmaXhlZDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkNjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLtBwoDZ3RlGAUgASgGQt0HwkjZBwqKAQoLZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrEAQoOZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1AEKD2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrcAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKAZCdcJIcgpwCgpmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKAZCaMJIZQpjCg5maXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAZCHMJIGQoXCg9maXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsAVCg1TRml4ZWQzMlJ1bGVzEoYBCgVjb25zdBgBIAEoD0J3wkh0CnIKDnNmaXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjQEKAmx0GAIgASgPQn/CSHwKegoLc2ZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoD0KPAcJIiwEKiAEKDHNmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgPQpcHwkiTBwp9CgtzZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKA9C4gfCSN4HCosBCgxzZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygPQnbCSHMKcQoLc2ZpeGVkMzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoD0JpwkhmCmQKD3NmaXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKA9CHcJIGgoYChBzZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLAFQoNU0ZpeGVkNjRSdWxlcxKGAQoFY29uc3QYASABKBBCd8JIdApyCg5zZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEo0BCgJsdBgCIAEoEEJ/wkh8CnoKC3NmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp8BCgNsdGUYAyABKBBCjwHCSIsBCogBCgxzZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqYHCgJndBgEIAEoEEKXB8JIkwcKfQoLc2ZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrYBCg5zZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKGHNmaXhlZDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsYBCg9zZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs4BChlzZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLyBwoDZ3RlGAUgASgQQuIHwkjeBwqLAQoMc2ZpeGVkNjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxQEKD3NmaXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoZc2ZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1QEKEHNmaXhlZDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3QEKGnNmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoIBCgJpbhgGIAMoEEJ2wkhzCnEKC3NmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ5CgZub3RfaW4YByADKBBCacJIZgpkCg9zZml4ZWQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygQQh3CSBoKGAoQc2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ixwEKCUJvb2xSdWxlcxKCAQoFY29uc3QYASABKAhCc8JIcApuCgpib29sLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSKgoHZXhhbXBsZRgCIAMoCEIZwkgWChQKDGJvb2wuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIpA3CgtTdHJpbmdSdWxlcxKGAQoFY29uc3QYASABKAlCd8JIdApyCgxzdHJpbmcuY29uc3QaYnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgYCVzYCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEn4KA2xlbhgTIAEoBEJxwkhuCmwKCnN0cmluZy5sZW4aXnVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSmQEKB21pbl9sZW4YAiABKARChwHCSIMBCoABCg5zdHJpbmcubWluX2xlbhpudWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSlwEKB21heF9sZW4YAyABKARChQHCSIEBCn8KDnN0cmluZy5tYXhfbGVuGm11aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEpsBCglsZW5fYnl0ZXMYFCABKARChwHCSIMBCoABChBzdHJpbmcubGVuX2J5dGVzGmx1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl9ieXRlc10pIDogJycSowEKCW1pbl9ieXRlcxgEIAEoBEKPAcJIiwEKiAEKEHN0cmluZy5taW5fYnl0ZXMadHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fYnl0ZXNdKSA6ICcnEqIBCgltYXhfYnl0ZXMYBSABKARCjgHCSIoBCocBChBzdHJpbmcubWF4X2J5dGVzGnN1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgPiBydWxlcy5tYXhfYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfYnl0ZXNdKSA6ICcnEo0BCgdwYXR0ZXJuGAYgASgJQnzCSHkKdwoOc3RyaW5nLnBhdHRlcm4aZSF0aGlzLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgZG9lcyBub3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnEoQBCgZwcmVmaXgYByABKAlCdMJIcQpvCg1zdHJpbmcucHJlZml4Gl4hdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBwcmVmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEoIBCgZzdWZmaXgYCCABKAlCcsJIbwptCg1zdHJpbmcuc3VmZml4GlwhdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4IGAlc2AnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxKQAQoIY29udGFpbnMYCSABKAlCfsJIewp5Cg9zdHJpbmcuY29udGFpbnMaZiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKYAQoMbm90X2NvbnRhaW5zGBcgASgJQoEBwkh+CnwKE3N0cmluZy5ub3RfY29udGFpbnMaZXRoaXMuY29udGFpbnMocnVsZXMubm90X2NvbnRhaW5zKSA/ICd2YWx1ZSBjb250YWlucyBzdWJzdHJpbmcgYCVzYCcuZm9ybWF0KFtydWxlcy5ub3RfY29udGFpbnNdKSA6ICcnEoABCgJpbhgKIAMoCUJ0wkhxCm8KCXN0cmluZy5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAsgAygJQmfCSGQKYgoNc3RyaW5nLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEt8BCgVlbWFpbBgMIAEoCELNAcJIyQEKYQoMc3RyaW5nLmVtYWlsEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLnAQoIaG9zdG5hbWUYDSABKAhC0gHCSM4BCmUKD3N0cmluZy5ob3N0bmFtZRIedmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLHAQoCaXAYDiABKAhCuAHCSLQBClUKCXN0cmluZy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjQYDyABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY0EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtYBCgRpcHY2GBAgASgIQsUBwkjBAQpcCgtzdHJpbmcuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK/AQoDdXJpGBEgASgIQq8BwkirAQpRCgpzdHJpbmcudXJpEhl2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEnAKB3VyaV9yZWYYEiABKAhCXcJIWgpYCg5zdHJpbmcudXJpX3JlZhIjdmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVSSSBSZWZlcmVuY2UaISFydWxlcy51cmlfcmVmIHx8IHRoaXMuaXNVcmlSZWYoKUgAEpACCgdhZGRyZXNzGBUgASgIQvwBwkj4AQqBAQoOc3RyaW5nLmFkZHJlc3MSLXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0bmFtZSwgb3IgaXAgYWRkcmVzcxpAIXJ1bGVzLmFkZHJlc3MgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKSB8fCB0aGlzLmlzSXAoKQpyChRzdHJpbmcuYWRkcmVzc19lbXB0eRI8dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGhwhcnVsZXMuYWRkcmVzcyB8fCB0aGlzICE9ICcnSAASmAIKBHV1aWQYFiABKAhChwLCSIMCCqUBCgtzdHJpbmcudXVpZBIadmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVVSUQaeiFydWxlcy51dWlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpClkKEXN0cmluZy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBoZIXJ1bGVzLnV1aWQgfHwgdGhpcyAhPSAnJ0gAEvABCgV0dXVpZBghIAEoCELeAcJI2gEKcwoMc3RyaW5nLnR1dWlkEiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgdHJpbW1lZCBVVUlEGj8hcnVsZXMudHV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXszMn0kJykKYwoSc3RyaW5nLnR1dWlkX2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgdHJpbW1lZCBVVUlEGhohcnVsZXMudHV1aWQgfHwgdGhpcyAhPSAnJ0gAEpYCChFpcF93aXRoX3ByZWZpeGxlbhgaIAEoCEL4AcJI9AEKeAoYc3RyaW5nLmlwX3dpdGhfcHJlZml4bGVuEh92YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgcHJlZml4GjshcnVsZXMuaXBfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoKQp4Ch5zdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW5fZW1wdHkSLnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUCBwcmVmaXgaJiFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAASzwIKE2lwdjRfd2l0aF9wcmVmaXhsZW4YGyABKAhCrwLCSKsCCpMBChpzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbhI1dmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaPiFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQpCpIBCiBzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbl9lbXB0eRJEdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaKCFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2Nl93aXRoX3ByZWZpeGxlbhgcIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNikKkgEKIHN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEvIBCglpcF9wcmVmaXgYHSABKAhC3AHCSNgBCmwKEHN0cmluZy5pcF9wcmVmaXgSH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaNyFydWxlcy5pcF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgodHJ1ZSkKaAoWc3RyaW5nLmlwX3ByZWZpeF9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBoeIXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjRfcHJlZml4GB4gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2NF9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IHByZWZpeBo8IXJ1bGVzLmlwdjRfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQsIHRydWUpCm4KGHN0cmluZy5pcHY0X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgcHJlZml4GiAhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEoMCCgtpcHY2X3ByZWZpeBgfIAEoCELrAcJI5wEKdQoSc3RyaW5nLmlwdjZfcHJlZml4EiF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBwcmVmaXgaPCFydWxlcy5pcHY2X3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2LCB0cnVlKQpuChhzdHJpbmcuaXB2Nl9wcmVmaXhfZW1wdHkSMHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IHByZWZpeBogIXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgIT0gJydIABK1AgoNaG9zdF9hbmRfcG9ydBggIAEoCEKbAsJIlwIKmQEKFHN0cmluZy5ob3N0X2FuZF9wb3J0EkF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdCAoaG9zdG5hbWUgb3IgSVAgYWRkcmVzcykgYW5kIHBvcnQgcGFpcho+IXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdEFuZFBvcnQodHJ1ZSkKeQoac3RyaW5nLmhvc3RfYW5kX3BvcnRfZW1wdHkSN3ZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0IGFuZCBwb3J0IHBhaXIaIiFydWxlcy5ob3N0X2FuZF9wb3J0IHx8IHRoaXMgIT0gJydIABKoBQoQd2VsbF9rbm93bl9yZWdleBgYIAEoDjIYLmJ1Zi52YWxpZGF0ZS5Lbm93blJlZ2V4QvEEwkjtBArwAQojc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWUSJnZhbHVlIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGqABcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeOj9bMC05YS16QS1aISMkJSZcJyorLS5eX3x+XHg2MF0rJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKyQnKQqNAQopc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWVfZW1wdHkSNXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGilydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyAhPSAnJwrnAQokc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX3ZhbHVlEid2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgdmFsdWUalQFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDIgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeW15cdTAwMDAtXHUwMDA4XHUwMDBBLVx1MDAxRlx1MDA3Rl0qJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKiQnKUgAEg4KBnN0cmljdBgZIAEoCBIsCgdleGFtcGxlGCIgAygJQhvCSBgKFgoOc3RyaW5nLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIuoQCgpCeXRlc1J1bGVzEoABCgVjb25zdBgBIAEoDEJxwkhuCmwKC2J5dGVzLmNvbnN0Gl10aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGJlICV4Jy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSeAoDbGVuGA0gASgEQmvCSGgKZgoJYnl0ZXMubGVuGll1aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKQAQoHbWluX2xlbhgCIAEoBEJ/wkh8CnoKDWJ5dGVzLm1pbl9sZW4aaXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKIAQoHbWF4X2xlbhgDIAEoBEJ3wkh0CnIKDWJ5dGVzLm1heF9sZW4aYXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSkAEKB3BhdHRlcm4YBCABKAlCf8JIfAp6Cg1ieXRlcy5wYXR0ZXJuGmkhc3RyaW5nKHRoaXMpLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgbXVzdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycSgQEKBnByZWZpeBgFIAEoDEJxwkhuCmwKDGJ5dGVzLnByZWZpeBpcIXRoaXMuc3RhcnRzV2l0aChydWxlcy5wcmVmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgcHJlZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSfwoGc3VmZml4GAYgASgMQm/CSGwKagoMYnl0ZXMuc3VmZml4GlohdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnN1ZmZpeF0pIDogJycSgwEKCGNvbnRhaW5zGAcgASgMQnHCSG4KbAoOYnl0ZXMuY29udGFpbnMaWiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluICV4Jy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKnAQoCaW4YCCADKAxCmgHCSJYBCpMBCghieXRlcy5pbhqGAWdldEZpZWxkKHJ1bGVzLCAnaW4nKS5zaXplKCkgPiAwICYmICEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgJIAMoDEJmwkhjCmEKDGJ5dGVzLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEusBCgJpcBgKIAEoCELcAcJI2AEKdAoIYnl0ZXMuaXASIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBhZGRyZXNzGkYhcnVsZXMuaXAgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0IHx8IHRoaXMuc2l6ZSgpID09IDE2CmAKDmJ5dGVzLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxodIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpICE9IDBIABLkAQoEaXB2NBgLIAEoCELTAcJIzwEKZQoKYnl0ZXMuaXB2NBIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcxozIXJ1bGVzLmlwdjQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0CmYKEGJ5dGVzLmlwdjRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MaHyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpICE9IDBIABLlAQoEaXB2NhgMIAEoCELUAcJI0AEKZgoKYnl0ZXMuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxo0IXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpmChBieXRlcy5pcHY2X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzGh8hcnVsZXMuaXB2NiB8fCB0aGlzLnNpemUoKSAhPSAwSAASKwoHZXhhbXBsZRgOIAMoDEIawkgXChUKDWJ5dGVzLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duItQDCglFbnVtUnVsZXMSggEKBWNvbnN0GAEgASgFQnPCSHAKbgoKZW51bS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ+CgJpbhgDIAMoBUJywkhvCm0KB2VudW0uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnUKBm5vdF9pbhgEIAMoBUJlwkhiCmAKC2VudW0ubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIvsDCg1SZXBlYXRlZFJ1bGVzEp4BCgltaW5faXRlbXMYASABKARCigHCSIYBCoMBChJyZXBlYXRlZC5taW5faXRlbXMabXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBhdCBsZWFzdCAlZCBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1pbl9pdGVtc10pIDogJycSogEKCW1heF9pdGVtcxgCIAEoBEKOAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJycScAoGdW5pcXVlGAMgASgIQmDCSF0KWwoPcmVwZWF0ZWQudW5pcXVlEihyZXBlYXRlZCB2YWx1ZSBtdXN0IGNvbnRhaW4gdW5pcXVlIGl0ZW1zGh4hcnVsZXMudW5pcXVlIHx8IHRoaXMudW5pcXVlKCkSJwoFaXRlbXMYBCABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlcyoJCOgHEICAgIACIooDCghNYXBSdWxlcxKPAQoJbWluX3BhaXJzGAEgASgEQnzCSHkKdwoNbWFwLm1pbl9wYWlycxpmdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbGVhc3QgJWQgZW50cmllcycuZm9ybWF0KFtydWxlcy5taW5fcGFpcnNdKSA6ICcnEo4BCgltYXhfcGFpcnMYAiABKARCe8JIeAp2Cg1tYXAubWF4X3BhaXJzGmV1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBtb3N0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWF4X3BhaXJzXSkgOiAnJxImCgRrZXlzGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMSKAoGdmFsdWVzGAUgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiImCghBbnlSdWxlcxIKCgJpbhgCIAMoCRIOCgZub3RfaW4YAyADKAkimRcKDUR1cmF0aW9uUnVsZXMSoQEKBWNvbnN0GAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnfCSHQKcgoOZHVyYXRpb24uY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKoAQoCbHQYAyABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25Cf8JIfAp6CgtkdXJhdGlvbi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK6AQoDbHRlGAQgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQo8BwkiLAQqIAQoMZHVyYXRpb24ubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLBBwoCZ3QYBSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ClwfCSJMHCn0KC2R1cmF0aW9uLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOZHVyYXRpb24uZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhkdXJhdGlvbi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPZHVyYXRpb24uZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZZHVyYXRpb24uZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESjQgKA2d0ZRgGIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkLiB8JI3gcKiwEKDGR1cmF0aW9uLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9kdXJhdGlvbi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGWR1cmF0aW9uLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBkdXJhdGlvbi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpkdXJhdGlvbi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKdAQoCaW4YByADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CdsJIcwpxCgtkdXJhdGlvbi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSlAEKBm5vdF9pbhgIIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJpwkhmCmQKD2R1cmF0aW9uLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEkkKB2V4YW1wbGUYCSADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CHcJIGgoYChBkdXJhdGlvbi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKSGAoOVGltZXN0YW1wUnVsZXMSowEKBWNvbnN0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEJ4wkh1CnMKD3RpbWVzdGFtcC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqsBCgJsdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCgAHCSH0KewoMdGltZXN0YW1wLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErwBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpABwkiMAQqJAQoNdGltZXN0YW1wLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASbAoGbHRfbm93GAcgASgIQlrCSFcKVQoQdGltZXN0YW1wLmx0X25vdxpBKHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABLHBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpwHwkiYBwp+Cgx0aW1lc3RhbXAuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrcBCg90aW1lc3RhbXAuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr8BChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxwEKEHRpbWVzdGFtcC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs8BChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESkwgKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBC5wfCSOMHCowBCg10aW1lc3RhbXAuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxgEKEHRpbWVzdGFtcC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrWAQoRdGltZXN0YW1wLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3gEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJvCgZndF9ub3cYCCABKAhCXcJIWgpYChB0aW1lc3RhbXAuZ3Rfbm93GkQocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErgBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CjAHCSIgBCoUBChB0aW1lc3RhbXAud2l0aGluGnF0aGlzIDwgbm93LXJ1bGVzLndpdGhpbiB8fCB0aGlzID4gbm93K3J1bGVzLndpdGhpbiA/ICd2YWx1ZSBtdXN0IGJlIHdpdGhpbiAlcyBvZiBub3cnLmZvcm1hdChbcnVsZXMud2l0aGluXSkgOiAnJxJLCgdleGFtcGxlGAogAygLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIewkgbChkKEXRpbWVzdGFtcC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiI5CgpWaW9sYXRpb25zEisKCnZpb2xhdGlvbnMYASADKAsyFy5idWYudmFsaWRhdGUuVmlvbGF0aW9uIp8BCglWaW9sYXRpb24SJgoFZmllbGQYBSABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEiUKBHJ1bGUYBiABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEg8KB3J1bGVfaWQYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIPCgdmb3Jfa2V5GAQgASgISgQIARACUgpmaWVsZF9wYXRoIj0KCUZpZWxkUGF0aBIwCghlbGVtZW50cxgBIAMoCzIeLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGhFbGVtZW50IukCChBGaWVsZFBhdGhFbGVtZW50EhQKDGZpZWxkX251bWJlchgBIAEoBRISCgpmaWVsZF9uYW1lGAIgASgJEj4KCmZpZWxkX3R5cGUYAyABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI8CghrZXlfdHlwZRgEIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEj4KCnZhbHVlX3R5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRIPCgVpbmRleBgGIAEoBEgAEhIKCGJvb2xfa2V5GAcgASgISAASEQoHaW50X2tleRgIIAEoA0gAEhIKCHVpbnRfa2V5GAkgASgESAASFAoKc3RyaW5nX2tleRgKIAEoCUgAQgsKCXN1YnNjcmlwdCqhAQoGSWdub3JlEhYKEklHTk9SRV9VTlNQRUNJRklFRBAAEhgKFElHTk9SRV9JRl9aRVJPX1ZBTFVFEAESEQoNSUdOT1JFX0FMV0FZUxADIgQIAhACKgxJR05PUkVfRU1QVFkqDklHTk9SRV9ERUZBVUxUKhdJR05PUkVfSUZfREVGQVVMVF9WQUxVRSoVSUdOT1JFX0lGX1VOUE9QVUxBVEVEKm4KCktub3duUmVnZXgSGwoXS05PV05fUkVHRVhfVU5TUEVDSUZJRUQQABIgChxLTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9OQU1FEAESIQodS05PV05fUkVHRVhfSFRUUF9IRUFERVJfVkFMVUUQAjpWCgdtZXNzYWdlEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGIcJIAEoCzIaLmJ1Zi52YWxpZGF0ZS5NZXNzYWdlUnVsZXNSB21lc3NhZ2U6TgoFb25lb2YSHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5PbmVvZlJ1bGVzUgVvbmVvZjpOCgVmaWVsZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYhwkgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXNSBWZpZWxkOl0KCnByZWRlZmluZWQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIgJIAEoCzIdLmJ1Zi52YWxpZGF0ZS5QcmVkZWZpbmVkUnVsZXNSCnByZWRlZmluZWRCuwEKEGNvbS5idWYudmFsaWRhdGVCDVZhbGlkYXRlUHJvdG9QAVpHYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9wcm90b3ZhbGlkYXRlL3Byb3RvY29sYnVmZmVycy9nby9idWYvdmFsaWRhdGWiAgNCVliqAgxCdWYuVmFsaWRhdGXKAgxCdWZcVmFsaWRhdGXiAhhCdWZcVmFsaWRhdGVcR1BCTWV0YWRhdGHqAg1CdWY6OlZhbGlkYXRl", [file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_timestamp]); +/** + * Describes the message buf.validate.Rule. + * Use `create(RuleSchema)` to create a new message. + */ +export const RuleSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 0); +/** + * Describes the message buf.validate.MessageRules. + * Use `create(MessageRulesSchema)` to create a new message. + */ +export const MessageRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 1); +/** + * Describes the message buf.validate.MessageOneofRule. + * Use `create(MessageOneofRuleSchema)` to create a new message. + */ +export const MessageOneofRuleSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 2); +/** + * Describes the message buf.validate.OneofRules. + * Use `create(OneofRulesSchema)` to create a new message. + */ +export const OneofRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 3); +/** + * Describes the message buf.validate.FieldRules. + * Use `create(FieldRulesSchema)` to create a new message. + */ +export const FieldRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 4); +/** + * Describes the message buf.validate.PredefinedRules. + * Use `create(PredefinedRulesSchema)` to create a new message. + */ +export const PredefinedRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 5); +/** + * Describes the message buf.validate.FloatRules. + * Use `create(FloatRulesSchema)` to create a new message. + */ +export const FloatRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 6); +/** + * Describes the message buf.validate.DoubleRules. + * Use `create(DoubleRulesSchema)` to create a new message. + */ +export const DoubleRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 7); +/** + * Describes the message buf.validate.Int32Rules. + * Use `create(Int32RulesSchema)` to create a new message. + */ +export const Int32RulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 8); +/** + * Describes the message buf.validate.Int64Rules. + * Use `create(Int64RulesSchema)` to create a new message. + */ +export const Int64RulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 9); +/** + * Describes the message buf.validate.UInt32Rules. + * Use `create(UInt32RulesSchema)` to create a new message. + */ +export const UInt32RulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 10); +/** + * Describes the message buf.validate.UInt64Rules. + * Use `create(UInt64RulesSchema)` to create a new message. + */ +export const UInt64RulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 11); +/** + * Describes the message buf.validate.SInt32Rules. + * Use `create(SInt32RulesSchema)` to create a new message. + */ +export const SInt32RulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 12); +/** + * Describes the message buf.validate.SInt64Rules. + * Use `create(SInt64RulesSchema)` to create a new message. + */ +export const SInt64RulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 13); +/** + * Describes the message buf.validate.Fixed32Rules. + * Use `create(Fixed32RulesSchema)` to create a new message. + */ +export const Fixed32RulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 14); +/** + * Describes the message buf.validate.Fixed64Rules. + * Use `create(Fixed64RulesSchema)` to create a new message. + */ +export const Fixed64RulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 15); +/** + * Describes the message buf.validate.SFixed32Rules. + * Use `create(SFixed32RulesSchema)` to create a new message. + */ +export const SFixed32RulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 16); +/** + * Describes the message buf.validate.SFixed64Rules. + * Use `create(SFixed64RulesSchema)` to create a new message. + */ +export const SFixed64RulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 17); +/** + * Describes the message buf.validate.BoolRules. + * Use `create(BoolRulesSchema)` to create a new message. + */ +export const BoolRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 18); +/** + * Describes the message buf.validate.StringRules. + * Use `create(StringRulesSchema)` to create a new message. + */ +export const StringRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 19); +/** + * Describes the message buf.validate.BytesRules. + * Use `create(BytesRulesSchema)` to create a new message. + */ +export const BytesRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 20); +/** + * Describes the message buf.validate.EnumRules. + * Use `create(EnumRulesSchema)` to create a new message. + */ +export const EnumRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 21); +/** + * Describes the message buf.validate.RepeatedRules. + * Use `create(RepeatedRulesSchema)` to create a new message. + */ +export const RepeatedRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 22); +/** + * Describes the message buf.validate.MapRules. + * Use `create(MapRulesSchema)` to create a new message. + */ +export const MapRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 23); +/** + * Describes the message buf.validate.AnyRules. + * Use `create(AnyRulesSchema)` to create a new message. + */ +export const AnyRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 24); +/** + * Describes the message buf.validate.DurationRules. + * Use `create(DurationRulesSchema)` to create a new message. + */ +export const DurationRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 25); +/** + * Describes the message buf.validate.TimestampRules. + * Use `create(TimestampRulesSchema)` to create a new message. + */ +export const TimestampRulesSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 26); +/** + * Describes the message buf.validate.Violations. + * Use `create(ViolationsSchema)` to create a new message. + */ +export const ViolationsSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 27); +/** + * Describes the message buf.validate.Violation. + * Use `create(ViolationSchema)` to create a new message. + */ +export const ViolationSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 28); +/** + * Describes the message buf.validate.FieldPath. + * Use `create(FieldPathSchema)` to create a new message. + */ +export const FieldPathSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 29); +/** + * Describes the message buf.validate.FieldPathElement. + * Use `create(FieldPathElementSchema)` to create a new message. + */ +export const FieldPathElementSchema = /*@__PURE__*/ messageDesc(file_buf_validate_validate, 30); +/** + * Specifies how `FieldRules.ignore` behaves, depending on the field's value, and + * whether the field tracks presence. + * + * @generated from enum buf.validate.Ignore + */ +export var Ignore; +(function (Ignore) { + /** + * Ignore rules if the field tracks presence and is unset. This is the default + * behavior. + * + * In proto3, only message fields, members of a Protobuf `oneof`, and fields + * with the `optional` label track presence. Consequently, the following fields + * are always validated, whether a value is set or not: + * + * ```proto + * syntax="proto3"; + * + * message RulesApply { + * string email = 1 [ + * (buf.validate.field).string.email = true + * ]; + * int32 age = 2 [ + * (buf.validate.field).int32.gt = 0 + * ]; + * repeated string labels = 3 [ + * (buf.validate.field).repeated.min_items = 1 + * ]; + * } + * ``` + * + * In contrast, the following fields track presence, and are only validated if + * a value is set: + * + * ```proto + * syntax="proto3"; + * + * message RulesApplyIfSet { + * optional string email = 1 [ + * (buf.validate.field).string.email = true + * ]; + * oneof ref { + * string reference = 2 [ + * (buf.validate.field).string.uuid = true + * ]; + * string name = 3 [ + * (buf.validate.field).string.min_len = 4 + * ]; + * } + * SomeMessage msg = 4 [ + * (buf.validate.field).cel = {/* ... *\/} + * ]; + * } + * ``` + * + * To ensure that such a field is set, add the `required` rule. + * + * To learn which fields track presence, see the + * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat). + * + * @generated from enum value: IGNORE_UNSPECIFIED = 0; + */ + Ignore[Ignore["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * Ignore rules if the field is unset, or set to the zero value. + * + * The zero value depends on the field type: + * - For strings, the zero value is the empty string. + * - For bytes, the zero value is empty bytes. + * - For bool, the zero value is false. + * - For numeric types, the zero value is zero. + * - For enums, the zero value is the first defined enum value. + * - For repeated fields, the zero is an empty list. + * - For map fields, the zero is an empty map. + * - For message fields, absence of the message (typically a null-value) is considered zero value. + * + * For fields that track presence (e.g. adding the `optional` label in proto3), + * this a no-op and behavior is the same as the default `IGNORE_UNSPECIFIED`. + * + * @generated from enum value: IGNORE_IF_ZERO_VALUE = 1; + */ + Ignore[Ignore["IF_ZERO_VALUE"] = 1] = "IF_ZERO_VALUE"; + /** + * Always ignore rules, including the `required` rule. + * + * This is useful for ignoring the rules of a referenced message, or to + * temporarily ignore rules during development. + * + * ```proto + * message MyMessage { + * // The field's rules will always be ignored, including any validations + * // on value's fields. + * MyOtherMessage value = 1 [ + * (buf.validate.field).ignore = IGNORE_ALWAYS + * ]; + * } + * ``` + * + * @generated from enum value: IGNORE_ALWAYS = 3; + */ + Ignore[Ignore["ALWAYS"] = 3] = "ALWAYS"; +})(Ignore || (Ignore = {})); +/** + * Describes the enum buf.validate.Ignore. + */ +export const IgnoreSchema = /*@__PURE__*/ enumDesc(file_buf_validate_validate, 0); +/** + * KnownRegex contains some well-known patterns. + * + * @generated from enum buf.validate.KnownRegex + */ +export var KnownRegex; +(function (KnownRegex) { + /** + * @generated from enum value: KNOWN_REGEX_UNSPECIFIED = 0; + */ + KnownRegex[KnownRegex["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2). + * + * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_NAME = 1; + */ + KnownRegex[KnownRegex["HTTP_HEADER_NAME"] = 1] = "HTTP_HEADER_NAME"; + /** + * HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4). + * + * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_VALUE = 2; + */ + KnownRegex[KnownRegex["HTTP_HEADER_VALUE"] = 2] = "HTTP_HEADER_VALUE"; +})(KnownRegex || (KnownRegex = {})); +/** + * Describes the enum buf.validate.KnownRegex. + */ +export const KnownRegexSchema = /*@__PURE__*/ enumDesc(file_buf_validate_validate, 1); +/** + * Rules specify the validations to be performed on this message. By default, + * no validation is performed against a message. + * + * @generated from extension: optional buf.validate.MessageRules message = 1159; + */ +export const message = /*@__PURE__*/ extDesc(file_buf_validate_validate, 0); +/** + * Rules specify the validations to be performed on this oneof. By default, + * no validation is performed against a oneof. + * + * @generated from extension: optional buf.validate.OneofRules oneof = 1159; + */ +export const oneof = /*@__PURE__*/ extDesc(file_buf_validate_validate, 1); +/** + * Rules specify the validations to be performed on this field. By default, + * no validation is performed against a field. + * + * @generated from extension: optional buf.validate.FieldRules field = 1159; + */ +export const field = /*@__PURE__*/ extDesc(file_buf_validate_validate, 2); +/** + * Specifies predefined rules. When extending a standard rule message, + * this adds additional CEL expressions that apply when the extension is used. + * + * ```proto + * extend buf.validate.Int32Rules { + * bool is_zero [(buf.validate.predefined).cel = { + * id: "int32.is_zero", + * message: "value must be zero", + * expression: "!rule || this == 0", + * }]; + * } + * + * message Foo { + * int32 reserved = 1 [(buf.validate.field).int32.(is_zero) = true]; + * } + * ``` + * + * @generated from extension: optional buf.validate.PredefinedRules predefined = 1160; + */ +export const predefined = /*@__PURE__*/ extDesc(file_buf_validate_validate, 3); diff --git a/js/buf/validate/validate_pb.ts b/js/buf/validate/validate_pb.ts new file mode 100644 index 00000000..216f3ed3 --- /dev/null +++ b/js/buf/validate/validate_pb.ts @@ -0,0 +1,4761 @@ +// Copyright 2023-2025 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file buf/validate/validate.proto (package buf.validate, syntax proto2) +/* eslint-disable */ + +import type { GenEnum, GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; +import type { Duration, FieldDescriptorProto_Type, FieldOptions, MessageOptions, OneofOptions, Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file buf/validate/validate.proto. + */ +export const file_buf_validate_validate: GenFile = /*@__PURE__*/ + fileDesc("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSJuCgxNZXNzYWdlUnVsZXMSHwoDY2VsGAMgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSLQoFb25lb2YYBCADKAsyHi5idWYudmFsaWRhdGUuTWVzc2FnZU9uZW9mUnVsZUoECAEQAlIIZGlzYWJsZWQiNAoQTWVzc2FnZU9uZW9mUnVsZRIOCgZmaWVsZHMYASADKAkSEAoIcmVxdWlyZWQYAiABKAgiHgoKT25lb2ZSdWxlcxIQCghyZXF1aXJlZBgBIAEoCCK/CAoKRmllbGRSdWxlcxIfCgNjZWwYFyADKAsyEi5idWYudmFsaWRhdGUuUnVsZRIQCghyZXF1aXJlZBgZIAEoCBIkCgZpZ25vcmUYGyABKA4yFC5idWYudmFsaWRhdGUuSWdub3JlEikKBWZsb2F0GAEgASgLMhguYnVmLnZhbGlkYXRlLkZsb2F0UnVsZXNIABIrCgZkb3VibGUYAiABKAsyGS5idWYudmFsaWRhdGUuRG91YmxlUnVsZXNIABIpCgVpbnQzMhgDIAEoCzIYLmJ1Zi52YWxpZGF0ZS5JbnQzMlJ1bGVzSAASKQoFaW50NjQYBCABKAsyGC5idWYudmFsaWRhdGUuSW50NjRSdWxlc0gAEisKBnVpbnQzMhgFIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50MzJSdWxlc0gAEisKBnVpbnQ2NBgGIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50NjRSdWxlc0gAEisKBnNpbnQzMhgHIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50MzJSdWxlc0gAEisKBnNpbnQ2NBgIIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50NjRSdWxlc0gAEi0KB2ZpeGVkMzIYCSABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQzMlJ1bGVzSAASLQoHZml4ZWQ2NBgKIAEoCzIaLmJ1Zi52YWxpZGF0ZS5GaXhlZDY0UnVsZXNIABIvCghzZml4ZWQzMhgLIAEoCzIbLmJ1Zi52YWxpZGF0ZS5TRml4ZWQzMlJ1bGVzSAASLwoIc2ZpeGVkNjQYDCABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkNjRSdWxlc0gAEicKBGJvb2wYDSABKAsyFy5idWYudmFsaWRhdGUuQm9vbFJ1bGVzSAASKwoGc3RyaW5nGA4gASgLMhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzSAASKQoFYnl0ZXMYDyABKAsyGC5idWYudmFsaWRhdGUuQnl0ZXNSdWxlc0gAEicKBGVudW0YECABKAsyFy5idWYudmFsaWRhdGUuRW51bVJ1bGVzSAASLwoIcmVwZWF0ZWQYEiABKAsyGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlc0gAEiUKA21hcBgTIAEoCzIWLmJ1Zi52YWxpZGF0ZS5NYXBSdWxlc0gAEiUKA2FueRgUIAEoCzIWLmJ1Zi52YWxpZGF0ZS5BbnlSdWxlc0gAEi8KCGR1cmF0aW9uGBUgASgLMhsuYnVmLnZhbGlkYXRlLkR1cmF0aW9uUnVsZXNIABIxCgl0aW1lc3RhbXAYFiABKAsyHC5idWYudmFsaWRhdGUuVGltZXN0YW1wUnVsZXNIAEIGCgR0eXBlSgQIGBAZSgQIGhAbUgdza2lwcGVkUgxpZ25vcmVfZW1wdHkiVQoPUHJlZGVmaW5lZFJ1bGVzEh8KA2NlbBgBIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlSgQIGBAZSgQIGhAbUgdza2lwcGVkUgxpZ25vcmVfZW1wdHki2hcKCkZsb2F0UnVsZXMSgwEKBWNvbnN0GAEgASgCQnTCSHEKbwoLZmxvYXQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKfAQoCbHQYAiABKAJCkAHCSIwBCokBCghmbG9hdC5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKvAQoDbHRlGAMgASgCQp8BwkibAQqYAQoJZmxvYXQubHRlGooBIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS7wcKAmd0GAQgASgCQuAHwkjcBwqNAQoIZmxvYXQuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrDAQoLZmxvYXQuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrNAQoVZmxvYXQuZ3RfbHRfZXhjbHVzaXZlGrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycK0wEKDGZsb2F0Lmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt0BChZmbG9hdC5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK6CAoDZ3RlGAUgASgCQqoIwkimCAqbAQoJZmxvYXQuZ3RlGo0BIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCtIBCgxmbG9hdC5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtwBChZmbG9hdC5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwriAQoNZmxvYXQuZ3RlX2x0ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK7AEKF2Zsb2F0Lmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygCQnPCSHAKbgoIZmxvYXQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoAkJmwkhjCmEKDGZsb2F0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnUKBmZpbml0ZRgIIAEoCEJlwkhiCmAKDGZsb2F0LmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIu0XCgtEb3VibGVSdWxlcxKEAQoFY29uc3QYASABKAFCdcJIcgpwCgxkb3VibGUuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKgAQoCbHQYAiABKAFCkQHCSI0BCooBCglkb3VibGUubHQafSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASsAEKA2x0ZRgDIAEoAUKgAcJInAEKmQEKCmRvdWJsZS5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL0BwoCZ3QYBCABKAFC5QfCSOEHCo4BCglkb3VibGUuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrEAQoMZG91YmxlLmd0X2x0GrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKFmRvdWJsZS5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrUAQoNZG91YmxlLmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt4BChdkb3VibGUuZ3RfbHRlX2V4Y2x1c2l2ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESvwgKA2d0ZRgFIAEoAUKvCMJIqwgKnAEKCmRvdWJsZS5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0wEKDWRvdWJsZS5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BChdkb3VibGUuZ3RlX2x0X2V4Y2x1c2l2ZRrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK4wEKDmRvdWJsZS5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrtAQoYZG91YmxlLmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoAUJ0wkhxCm8KCWRvdWJsZS5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygBQmfCSGQKYgoNZG91YmxlLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnYKBmZpbml0ZRgIIAEoCEJmwkhjCmEKDWRvdWJsZS5maW5pdGUaUHJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ3ZhbHVlIG11c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEiwKB2V4YW1wbGUYCSADKAFCG8JIGAoWCg5kb3VibGUuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDMyUnVsZXMSgwEKBWNvbnN0GAEgASgFQnTCSHEKbwoLaW50MzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKAVCfMJIeQp3CghpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgFQowBwkiIAQqFAQoJaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKAVCiAfCSIQHCnoKCGludDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50MzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoBULTB8JIzwcKiAEKCWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoBUJzwkhwCm4KCGludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKAVCZsJIYwphCgxpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAggAygFQhrCSBcKFQoNaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDY0UnVsZXMSgwEKBWNvbnN0GAEgASgDQnTCSHEKbwoLaW50NjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKANCfMJIeQp3CghpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgDQowBwkiIAQqFAQoJaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKANCiAfCSIQHCnoKCGludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoA0LTB8JIzwcKiAEKCWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoA0JzwkhwCm4KCGludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKANCZsJIYwphCgxpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAkgAygDQhrCSBcKFQoNaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoDUJ1wkhyCnAKDHVpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoDUJ9wkh6CngKCXVpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgNQo0BwkiJAQqGAQoKdWludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgNQo0HwkiJBwp7Cgl1aW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoDULYB8JI1AcKiQEKCnVpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoDUJ0wkhxCm8KCXVpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygNQmfCSGQKYgoNdWludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoBEJ1wkhyCnAKDHVpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoBEJ9wkh6CngKCXVpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgEQo0BwkiJAQqGAQoKdWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgEQo0HwkiJBwp7Cgl1aW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoBELYB8JI1AcKiQEKCnVpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoBEJ0wkhxCm8KCXVpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygEQmfCSGQKYgoNdWludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKARCG8JIGAoWCg51aW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoEUJ1wkhyCnAKDHNpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEUJ9wkh6CngKCXNpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgRQo0BwkiJAQqGAQoKc2ludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgRQo0HwkiJBwp7CglzaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEULYB8JI1AcKiQEKCnNpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEUJ0wkhxCm8KCXNpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygRQmfCSGQKYgoNc2ludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBFCG8JIGAoWCg5zaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoEkJ1wkhyCnAKDHNpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEkJ9wkh6CngKCXNpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgSQo0BwkiJAQqGAQoKc2ludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgSQo0HwkiJBwp7CglzaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEkLYB8JI1AcKiQEKCnNpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEkJ0wkhxCm8KCXNpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygSQmfCSGQKYgoNc2ludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4irxUKDEZpeGVkMzJSdWxlcxKFAQoFY29uc3QYASABKAdCdsJIcwpxCg1maXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjAEKAmx0GAIgASgHQn7CSHsKeQoKZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgHQo4BwkiKAQqHAQoLZml4ZWQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqEHCgJndBgEIAEoB0KSB8JIjgcKfAoKZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtQEKDWZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BChdmaXhlZDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsUBCg5maXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzQEKGGZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES7QcKA2d0ZRgFIAEoB0LdB8JI2QcKigEKC2ZpeGVkMzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxAEKDmZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCswBChhmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtQBCg9maXhlZDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3AEKGWZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgQEKAmluGAYgAygHQnXCSHIKcAoKZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeAoGbm90X2luGAcgAygHQmjCSGUKYwoOZml4ZWQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxItCgdleGFtcGxlGAggAygHQhzCSBkKFwoPZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKvFQoMRml4ZWQ2NFJ1bGVzEoUBCgVjb25zdBgBIAEoBkJ2wkhzCnEKDWZpeGVkNjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKMAQoCbHQYAiABKAZCfsJIewp5CgpmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp4BCgNsdGUYAyABKAZCjgHCSIoBCocBCgtmaXhlZDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASoQcKAmd0GAQgASgGQpIHwkiOBwp8CgpmaXhlZDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkNjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLtBwoDZ3RlGAUgASgGQt0HwkjZBwqKAQoLZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrEAQoOZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1AEKD2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrcAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKAZCdcJIcgpwCgpmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKAZCaMJIZQpjCg5maXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAZCHMJIGQoXCg9maXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsAVCg1TRml4ZWQzMlJ1bGVzEoYBCgVjb25zdBgBIAEoD0J3wkh0CnIKDnNmaXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjQEKAmx0GAIgASgPQn/CSHwKegoLc2ZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoD0KPAcJIiwEKiAEKDHNmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgPQpcHwkiTBwp9CgtzZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKA9C4gfCSN4HCosBCgxzZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygPQnbCSHMKcQoLc2ZpeGVkMzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoD0JpwkhmCmQKD3NmaXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKA9CHcJIGgoYChBzZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLAFQoNU0ZpeGVkNjRSdWxlcxKGAQoFY29uc3QYASABKBBCd8JIdApyCg5zZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEo0BCgJsdBgCIAEoEEJ/wkh8CnoKC3NmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp8BCgNsdGUYAyABKBBCjwHCSIsBCogBCgxzZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqYHCgJndBgEIAEoEEKXB8JIkwcKfQoLc2ZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrYBCg5zZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKGHNmaXhlZDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsYBCg9zZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs4BChlzZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLyBwoDZ3RlGAUgASgQQuIHwkjeBwqLAQoMc2ZpeGVkNjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxQEKD3NmaXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoZc2ZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1QEKEHNmaXhlZDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3QEKGnNmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoIBCgJpbhgGIAMoEEJ2wkhzCnEKC3NmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ5CgZub3RfaW4YByADKBBCacJIZgpkCg9zZml4ZWQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygQQh3CSBoKGAoQc2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ixwEKCUJvb2xSdWxlcxKCAQoFY29uc3QYASABKAhCc8JIcApuCgpib29sLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSKgoHZXhhbXBsZRgCIAMoCEIZwkgWChQKDGJvb2wuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIpA3CgtTdHJpbmdSdWxlcxKGAQoFY29uc3QYASABKAlCd8JIdApyCgxzdHJpbmcuY29uc3QaYnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgYCVzYCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEn4KA2xlbhgTIAEoBEJxwkhuCmwKCnN0cmluZy5sZW4aXnVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSmQEKB21pbl9sZW4YAiABKARChwHCSIMBCoABCg5zdHJpbmcubWluX2xlbhpudWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSlwEKB21heF9sZW4YAyABKARChQHCSIEBCn8KDnN0cmluZy5tYXhfbGVuGm11aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEpsBCglsZW5fYnl0ZXMYFCABKARChwHCSIMBCoABChBzdHJpbmcubGVuX2J5dGVzGmx1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl9ieXRlc10pIDogJycSowEKCW1pbl9ieXRlcxgEIAEoBEKPAcJIiwEKiAEKEHN0cmluZy5taW5fYnl0ZXMadHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fYnl0ZXNdKSA6ICcnEqIBCgltYXhfYnl0ZXMYBSABKARCjgHCSIoBCocBChBzdHJpbmcubWF4X2J5dGVzGnN1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgPiBydWxlcy5tYXhfYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfYnl0ZXNdKSA6ICcnEo0BCgdwYXR0ZXJuGAYgASgJQnzCSHkKdwoOc3RyaW5nLnBhdHRlcm4aZSF0aGlzLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgZG9lcyBub3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnEoQBCgZwcmVmaXgYByABKAlCdMJIcQpvCg1zdHJpbmcucHJlZml4Gl4hdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBwcmVmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEoIBCgZzdWZmaXgYCCABKAlCcsJIbwptCg1zdHJpbmcuc3VmZml4GlwhdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4IGAlc2AnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxKQAQoIY29udGFpbnMYCSABKAlCfsJIewp5Cg9zdHJpbmcuY29udGFpbnMaZiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKYAQoMbm90X2NvbnRhaW5zGBcgASgJQoEBwkh+CnwKE3N0cmluZy5ub3RfY29udGFpbnMaZXRoaXMuY29udGFpbnMocnVsZXMubm90X2NvbnRhaW5zKSA/ICd2YWx1ZSBjb250YWlucyBzdWJzdHJpbmcgYCVzYCcuZm9ybWF0KFtydWxlcy5ub3RfY29udGFpbnNdKSA6ICcnEoABCgJpbhgKIAMoCUJ0wkhxCm8KCXN0cmluZy5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAsgAygJQmfCSGQKYgoNc3RyaW5nLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEt8BCgVlbWFpbBgMIAEoCELNAcJIyQEKYQoMc3RyaW5nLmVtYWlsEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLnAQoIaG9zdG5hbWUYDSABKAhC0gHCSM4BCmUKD3N0cmluZy5ob3N0bmFtZRIedmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLHAQoCaXAYDiABKAhCuAHCSLQBClUKCXN0cmluZy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjQYDyABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY0EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtYBCgRpcHY2GBAgASgIQsUBwkjBAQpcCgtzdHJpbmcuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK/AQoDdXJpGBEgASgIQq8BwkirAQpRCgpzdHJpbmcudXJpEhl2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEnAKB3VyaV9yZWYYEiABKAhCXcJIWgpYCg5zdHJpbmcudXJpX3JlZhIjdmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVSSSBSZWZlcmVuY2UaISFydWxlcy51cmlfcmVmIHx8IHRoaXMuaXNVcmlSZWYoKUgAEpACCgdhZGRyZXNzGBUgASgIQvwBwkj4AQqBAQoOc3RyaW5nLmFkZHJlc3MSLXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0bmFtZSwgb3IgaXAgYWRkcmVzcxpAIXJ1bGVzLmFkZHJlc3MgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKSB8fCB0aGlzLmlzSXAoKQpyChRzdHJpbmcuYWRkcmVzc19lbXB0eRI8dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGhwhcnVsZXMuYWRkcmVzcyB8fCB0aGlzICE9ICcnSAASmAIKBHV1aWQYFiABKAhChwLCSIMCCqUBCgtzdHJpbmcudXVpZBIadmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVVSUQaeiFydWxlcy51dWlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpClkKEXN0cmluZy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBoZIXJ1bGVzLnV1aWQgfHwgdGhpcyAhPSAnJ0gAEvABCgV0dXVpZBghIAEoCELeAcJI2gEKcwoMc3RyaW5nLnR1dWlkEiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgdHJpbW1lZCBVVUlEGj8hcnVsZXMudHV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXszMn0kJykKYwoSc3RyaW5nLnR1dWlkX2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgdHJpbW1lZCBVVUlEGhohcnVsZXMudHV1aWQgfHwgdGhpcyAhPSAnJ0gAEpYCChFpcF93aXRoX3ByZWZpeGxlbhgaIAEoCEL4AcJI9AEKeAoYc3RyaW5nLmlwX3dpdGhfcHJlZml4bGVuEh92YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgcHJlZml4GjshcnVsZXMuaXBfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoKQp4Ch5zdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW5fZW1wdHkSLnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUCBwcmVmaXgaJiFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAASzwIKE2lwdjRfd2l0aF9wcmVmaXhsZW4YGyABKAhCrwLCSKsCCpMBChpzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbhI1dmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaPiFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQpCpIBCiBzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbl9lbXB0eRJEdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaKCFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2Nl93aXRoX3ByZWZpeGxlbhgcIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNikKkgEKIHN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEvIBCglpcF9wcmVmaXgYHSABKAhC3AHCSNgBCmwKEHN0cmluZy5pcF9wcmVmaXgSH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaNyFydWxlcy5pcF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgodHJ1ZSkKaAoWc3RyaW5nLmlwX3ByZWZpeF9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBoeIXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjRfcHJlZml4GB4gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2NF9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IHByZWZpeBo8IXJ1bGVzLmlwdjRfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQsIHRydWUpCm4KGHN0cmluZy5pcHY0X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgcHJlZml4GiAhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEoMCCgtpcHY2X3ByZWZpeBgfIAEoCELrAcJI5wEKdQoSc3RyaW5nLmlwdjZfcHJlZml4EiF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBwcmVmaXgaPCFydWxlcy5pcHY2X3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2LCB0cnVlKQpuChhzdHJpbmcuaXB2Nl9wcmVmaXhfZW1wdHkSMHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IHByZWZpeBogIXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgIT0gJydIABK1AgoNaG9zdF9hbmRfcG9ydBggIAEoCEKbAsJIlwIKmQEKFHN0cmluZy5ob3N0X2FuZF9wb3J0EkF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdCAoaG9zdG5hbWUgb3IgSVAgYWRkcmVzcykgYW5kIHBvcnQgcGFpcho+IXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdEFuZFBvcnQodHJ1ZSkKeQoac3RyaW5nLmhvc3RfYW5kX3BvcnRfZW1wdHkSN3ZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0IGFuZCBwb3J0IHBhaXIaIiFydWxlcy5ob3N0X2FuZF9wb3J0IHx8IHRoaXMgIT0gJydIABKoBQoQd2VsbF9rbm93bl9yZWdleBgYIAEoDjIYLmJ1Zi52YWxpZGF0ZS5Lbm93blJlZ2V4QvEEwkjtBArwAQojc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWUSJnZhbHVlIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGqABcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeOj9bMC05YS16QS1aISMkJSZcJyorLS5eX3x+XHg2MF0rJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKyQnKQqNAQopc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWVfZW1wdHkSNXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGilydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyAhPSAnJwrnAQokc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX3ZhbHVlEid2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgdmFsdWUalQFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDIgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeW15cdTAwMDAtXHUwMDA4XHUwMDBBLVx1MDAxRlx1MDA3Rl0qJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKiQnKUgAEg4KBnN0cmljdBgZIAEoCBIsCgdleGFtcGxlGCIgAygJQhvCSBgKFgoOc3RyaW5nLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIuoQCgpCeXRlc1J1bGVzEoABCgVjb25zdBgBIAEoDEJxwkhuCmwKC2J5dGVzLmNvbnN0Gl10aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGJlICV4Jy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSeAoDbGVuGA0gASgEQmvCSGgKZgoJYnl0ZXMubGVuGll1aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKQAQoHbWluX2xlbhgCIAEoBEJ/wkh8CnoKDWJ5dGVzLm1pbl9sZW4aaXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKIAQoHbWF4X2xlbhgDIAEoBEJ3wkh0CnIKDWJ5dGVzLm1heF9sZW4aYXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSkAEKB3BhdHRlcm4YBCABKAlCf8JIfAp6Cg1ieXRlcy5wYXR0ZXJuGmkhc3RyaW5nKHRoaXMpLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgbXVzdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycSgQEKBnByZWZpeBgFIAEoDEJxwkhuCmwKDGJ5dGVzLnByZWZpeBpcIXRoaXMuc3RhcnRzV2l0aChydWxlcy5wcmVmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgcHJlZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSfwoGc3VmZml4GAYgASgMQm/CSGwKagoMYnl0ZXMuc3VmZml4GlohdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnN1ZmZpeF0pIDogJycSgwEKCGNvbnRhaW5zGAcgASgMQnHCSG4KbAoOYnl0ZXMuY29udGFpbnMaWiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluICV4Jy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKnAQoCaW4YCCADKAxCmgHCSJYBCpMBCghieXRlcy5pbhqGAWdldEZpZWxkKHJ1bGVzLCAnaW4nKS5zaXplKCkgPiAwICYmICEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgJIAMoDEJmwkhjCmEKDGJ5dGVzLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEusBCgJpcBgKIAEoCELcAcJI2AEKdAoIYnl0ZXMuaXASIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBhZGRyZXNzGkYhcnVsZXMuaXAgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0IHx8IHRoaXMuc2l6ZSgpID09IDE2CmAKDmJ5dGVzLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxodIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpICE9IDBIABLkAQoEaXB2NBgLIAEoCELTAcJIzwEKZQoKYnl0ZXMuaXB2NBIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcxozIXJ1bGVzLmlwdjQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0CmYKEGJ5dGVzLmlwdjRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MaHyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpICE9IDBIABLlAQoEaXB2NhgMIAEoCELUAcJI0AEKZgoKYnl0ZXMuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxo0IXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpmChBieXRlcy5pcHY2X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzGh8hcnVsZXMuaXB2NiB8fCB0aGlzLnNpemUoKSAhPSAwSAASKwoHZXhhbXBsZRgOIAMoDEIawkgXChUKDWJ5dGVzLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duItQDCglFbnVtUnVsZXMSggEKBWNvbnN0GAEgASgFQnPCSHAKbgoKZW51bS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ+CgJpbhgDIAMoBUJywkhvCm0KB2VudW0uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnUKBm5vdF9pbhgEIAMoBUJlwkhiCmAKC2VudW0ubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIvsDCg1SZXBlYXRlZFJ1bGVzEp4BCgltaW5faXRlbXMYASABKARCigHCSIYBCoMBChJyZXBlYXRlZC5taW5faXRlbXMabXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBhdCBsZWFzdCAlZCBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1pbl9pdGVtc10pIDogJycSogEKCW1heF9pdGVtcxgCIAEoBEKOAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJycScAoGdW5pcXVlGAMgASgIQmDCSF0KWwoPcmVwZWF0ZWQudW5pcXVlEihyZXBlYXRlZCB2YWx1ZSBtdXN0IGNvbnRhaW4gdW5pcXVlIGl0ZW1zGh4hcnVsZXMudW5pcXVlIHx8IHRoaXMudW5pcXVlKCkSJwoFaXRlbXMYBCABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlcyoJCOgHEICAgIACIooDCghNYXBSdWxlcxKPAQoJbWluX3BhaXJzGAEgASgEQnzCSHkKdwoNbWFwLm1pbl9wYWlycxpmdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbGVhc3QgJWQgZW50cmllcycuZm9ybWF0KFtydWxlcy5taW5fcGFpcnNdKSA6ICcnEo4BCgltYXhfcGFpcnMYAiABKARCe8JIeAp2Cg1tYXAubWF4X3BhaXJzGmV1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBtb3N0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWF4X3BhaXJzXSkgOiAnJxImCgRrZXlzGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMSKAoGdmFsdWVzGAUgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiImCghBbnlSdWxlcxIKCgJpbhgCIAMoCRIOCgZub3RfaW4YAyADKAkimRcKDUR1cmF0aW9uUnVsZXMSoQEKBWNvbnN0GAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnfCSHQKcgoOZHVyYXRpb24uY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKoAQoCbHQYAyABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25Cf8JIfAp6CgtkdXJhdGlvbi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK6AQoDbHRlGAQgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQo8BwkiLAQqIAQoMZHVyYXRpb24ubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLBBwoCZ3QYBSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ClwfCSJMHCn0KC2R1cmF0aW9uLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOZHVyYXRpb24uZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhkdXJhdGlvbi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPZHVyYXRpb24uZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZZHVyYXRpb24uZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESjQgKA2d0ZRgGIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkLiB8JI3gcKiwEKDGR1cmF0aW9uLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9kdXJhdGlvbi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGWR1cmF0aW9uLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBkdXJhdGlvbi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpkdXJhdGlvbi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKdAQoCaW4YByADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CdsJIcwpxCgtkdXJhdGlvbi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSlAEKBm5vdF9pbhgIIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJpwkhmCmQKD2R1cmF0aW9uLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEkkKB2V4YW1wbGUYCSADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CHcJIGgoYChBkdXJhdGlvbi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKSGAoOVGltZXN0YW1wUnVsZXMSowEKBWNvbnN0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEJ4wkh1CnMKD3RpbWVzdGFtcC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqsBCgJsdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCgAHCSH0KewoMdGltZXN0YW1wLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErwBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpABwkiMAQqJAQoNdGltZXN0YW1wLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASbAoGbHRfbm93GAcgASgIQlrCSFcKVQoQdGltZXN0YW1wLmx0X25vdxpBKHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABLHBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpwHwkiYBwp+Cgx0aW1lc3RhbXAuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrcBCg90aW1lc3RhbXAuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr8BChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxwEKEHRpbWVzdGFtcC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs8BChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESkwgKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBC5wfCSOMHCowBCg10aW1lc3RhbXAuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxgEKEHRpbWVzdGFtcC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrWAQoRdGltZXN0YW1wLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3gEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJvCgZndF9ub3cYCCABKAhCXcJIWgpYChB0aW1lc3RhbXAuZ3Rfbm93GkQocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErgBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CjAHCSIgBCoUBChB0aW1lc3RhbXAud2l0aGluGnF0aGlzIDwgbm93LXJ1bGVzLndpdGhpbiB8fCB0aGlzID4gbm93K3J1bGVzLndpdGhpbiA/ICd2YWx1ZSBtdXN0IGJlIHdpdGhpbiAlcyBvZiBub3cnLmZvcm1hdChbcnVsZXMud2l0aGluXSkgOiAnJxJLCgdleGFtcGxlGAogAygLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIewkgbChkKEXRpbWVzdGFtcC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiI5CgpWaW9sYXRpb25zEisKCnZpb2xhdGlvbnMYASADKAsyFy5idWYudmFsaWRhdGUuVmlvbGF0aW9uIp8BCglWaW9sYXRpb24SJgoFZmllbGQYBSABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEiUKBHJ1bGUYBiABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEg8KB3J1bGVfaWQYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIPCgdmb3Jfa2V5GAQgASgISgQIARACUgpmaWVsZF9wYXRoIj0KCUZpZWxkUGF0aBIwCghlbGVtZW50cxgBIAMoCzIeLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGhFbGVtZW50IukCChBGaWVsZFBhdGhFbGVtZW50EhQKDGZpZWxkX251bWJlchgBIAEoBRISCgpmaWVsZF9uYW1lGAIgASgJEj4KCmZpZWxkX3R5cGUYAyABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI8CghrZXlfdHlwZRgEIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEj4KCnZhbHVlX3R5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRIPCgVpbmRleBgGIAEoBEgAEhIKCGJvb2xfa2V5GAcgASgISAASEQoHaW50X2tleRgIIAEoA0gAEhIKCHVpbnRfa2V5GAkgASgESAASFAoKc3RyaW5nX2tleRgKIAEoCUgAQgsKCXN1YnNjcmlwdCqhAQoGSWdub3JlEhYKEklHTk9SRV9VTlNQRUNJRklFRBAAEhgKFElHTk9SRV9JRl9aRVJPX1ZBTFVFEAESEQoNSUdOT1JFX0FMV0FZUxADIgQIAhACKgxJR05PUkVfRU1QVFkqDklHTk9SRV9ERUZBVUxUKhdJR05PUkVfSUZfREVGQVVMVF9WQUxVRSoVSUdOT1JFX0lGX1VOUE9QVUxBVEVEKm4KCktub3duUmVnZXgSGwoXS05PV05fUkVHRVhfVU5TUEVDSUZJRUQQABIgChxLTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9OQU1FEAESIQodS05PV05fUkVHRVhfSFRUUF9IRUFERVJfVkFMVUUQAjpWCgdtZXNzYWdlEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGIcJIAEoCzIaLmJ1Zi52YWxpZGF0ZS5NZXNzYWdlUnVsZXNSB21lc3NhZ2U6TgoFb25lb2YSHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5PbmVvZlJ1bGVzUgVvbmVvZjpOCgVmaWVsZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYhwkgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXNSBWZpZWxkOl0KCnByZWRlZmluZWQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIgJIAEoCzIdLmJ1Zi52YWxpZGF0ZS5QcmVkZWZpbmVkUnVsZXNSCnByZWRlZmluZWRCuwEKEGNvbS5idWYudmFsaWRhdGVCDVZhbGlkYXRlUHJvdG9QAVpHYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9wcm90b3ZhbGlkYXRlL3Byb3RvY29sYnVmZmVycy9nby9idWYvdmFsaWRhdGWiAgNCVliqAgxCdWYuVmFsaWRhdGXKAgxCdWZcVmFsaWRhdGXiAhhCdWZcVmFsaWRhdGVcR1BCTWV0YWRhdGHqAg1CdWY6OlZhbGlkYXRl", [file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_timestamp]); + +/** + * `Rule` represents a validation rule written in the Common Expression + * Language (CEL) syntax. Each Rule includes a unique identifier, an + * optional error message, and the CEL expression to evaluate. For more + * information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/). + * + * ```proto + * message Foo { + * option (buf.validate.message).cel = { + * id: "foo.bar" + * message: "bar must be greater than 0" + * expression: "this.bar > 0" + * }; + * int32 bar = 1; + * } + * ``` + * + * @generated from message buf.validate.Rule + */ +export type Rule = Message<"buf.validate.Rule"> & { + /** + * `id` is a string that serves as a machine-readable name for this Rule. + * It should be unique within its scope, which could be either a message or a field. + * + * @generated from field: optional string id = 1; + */ + id: string; + + /** + * `message` is an optional field that provides a human-readable error message + * for this Rule when the CEL expression evaluates to false. If a + * non-empty message is provided, any strings resulting from the CEL + * expression evaluation are ignored. + * + * @generated from field: optional string message = 2; + */ + message: string; + + /** + * `expression` is the actual CEL expression that will be evaluated for + * validation. This string must resolve to either a boolean or a string + * value. If the expression evaluates to false or a non-empty string, the + * validation is considered failed, and the message is rejected. + * + * @generated from field: optional string expression = 3; + */ + expression: string; +}; + +/** + * Describes the message buf.validate.Rule. + * Use `create(RuleSchema)` to create a new message. + */ +export const RuleSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 0); + +/** + * MessageRules represents validation rules that are applied to the entire message. + * It includes disabling options and a list of Rule messages representing Common Expression Language (CEL) validation rules. + * + * @generated from message buf.validate.MessageRules + */ +export type MessageRules = Message<"buf.validate.MessageRules"> & { + /** + * `cel` is a repeated field of type Rule. Each Rule specifies a validation rule to be applied to this message. + * These rules are written in Common Expression Language (CEL) syntax. For more information, + * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/). + * + * + * ```proto + * message MyMessage { + * // The field `foo` must be greater than 42. + * option (buf.validate.message).cel = { + * id: "my_message.value", + * message: "value must be greater than 42", + * expression: "this.foo > 42", + * }; + * optional int32 foo = 1; + * } + * ``` + * + * @generated from field: repeated buf.validate.Rule cel = 3; + */ + cel: Rule[]; + + /** + * `oneof` is a repeated field of type MessageOneofRule that specifies a list of fields + * of which at most one can be present. If `required` is also specified, then exactly one + * of the specified fields _must_ be present. + * + * This will enforce oneof-like constraints with a few features not provided by + * actual Protobuf oneof declarations: + * 1. Repeated and map fields are allowed in this validation. In a Protobuf oneof, + * only scalar fields are allowed. + * 2. Fields with implicit presence are allowed. In a Protobuf oneof, all member + * fields have explicit presence. This means that, for the purpose of determining + * how many fields are set, explicitly setting such a field to its zero value is + * effectively the same as not setting it at all. + * 3. This will always generate validation errors for a message unmarshalled from + * serialized data that sets more than one field. With a Protobuf oneof, when + * multiple fields are present in the serialized form, earlier values are usually + * silently ignored when unmarshalling, with only the last field being set when + * unmarshalling completes. + * + * Note that adding a field to a `oneof` will also set the IGNORE_IF_ZERO_VALUE on the fields. This means + * only the field that is set will be validated and the unset fields are not validated according to the field rules. + * This behavior can be overridden by setting `ignore` against a field. + * + * ```proto + * message MyMessage { + * // Only one of `field1` or `field2` _can_ be present in this message. + * option (buf.validate.message).oneof = { fields: ["field1", "field2"] }; + * // Exactly one of `field3` or `field4` _must_ be present in this message. + * option (buf.validate.message).oneof = { fields: ["field3", "field4"], required: true }; + * string field1 = 1; + * bytes field2 = 2; + * bool field3 = 3; + * int32 field4 = 4; + * } + * ``` + * + * @generated from field: repeated buf.validate.MessageOneofRule oneof = 4; + */ + oneof: MessageOneofRule[]; +}; + +/** + * Describes the message buf.validate.MessageRules. + * Use `create(MessageRulesSchema)` to create a new message. + */ +export const MessageRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 1); + +/** + * @generated from message buf.validate.MessageOneofRule + */ +export type MessageOneofRule = Message<"buf.validate.MessageOneofRule"> & { + /** + * A list of field names to include in the oneof. All field names must be + * defined in the message. At least one field must be specified, and + * duplicates are not permitted. + * + * @generated from field: repeated string fields = 1; + */ + fields: string[]; + + /** + * If true, one of the fields specified _must_ be set. + * + * @generated from field: optional bool required = 2; + */ + required: boolean; +}; + +/** + * Describes the message buf.validate.MessageOneofRule. + * Use `create(MessageOneofRuleSchema)` to create a new message. + */ +export const MessageOneofRuleSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 2); + +/** + * The `OneofRules` message type enables you to manage rules for + * oneof fields in your protobuf messages. + * + * @generated from message buf.validate.OneofRules + */ +export type OneofRules = Message<"buf.validate.OneofRules"> & { + /** + * If `required` is true, exactly one field of the oneof must be set. A + * validation error is returned if no fields in the oneof are set. Further rules + * should be placed on the fields themselves to ensure they are valid values, + * such as `min_len` or `gt`. + * + * ```proto + * message MyMessage { + * oneof value { + * // Either `a` or `b` must be set. If `a` is set, it must also be + * // non-empty; whereas if `b` is set, it can still be an empty string. + * option (buf.validate.oneof).required = true; + * string a = 1 [(buf.validate.field).string.min_len = 1]; + * string b = 2; + * } + * } + * ``` + * + * @generated from field: optional bool required = 1; + */ + required: boolean; +}; + +/** + * Describes the message buf.validate.OneofRules. + * Use `create(OneofRulesSchema)` to create a new message. + */ +export const OneofRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 3); + +/** + * FieldRules encapsulates the rules for each type of field. Depending on + * the field, the correct set should be used to ensure proper validations. + * + * @generated from message buf.validate.FieldRules + */ +export type FieldRules = Message<"buf.validate.FieldRules"> & { + /** + * `cel` is a repeated field used to represent a textual expression + * in the Common Expression Language (CEL) syntax. For more information, + * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/). + * + * ```proto + * message MyMessage { + * // The field `value` must be greater than 42. + * optional int32 value = 1 [(buf.validate.field).cel = { + * id: "my_message.value", + * message: "value must be greater than 42", + * expression: "this > 42", + * }]; + * } + * ``` + * + * @generated from field: repeated buf.validate.Rule cel = 23; + */ + cel: Rule[]; + + /** + * If `required` is true, the field must be set. A validation error is returned + * if the field is not set. + * + * ```proto + * syntax="proto3"; + * + * message FieldsWithPresence { + * // Requires any string to be set, including the empty string. + * optional string link = 1 [ + * (buf.validate.field).required = true + * ]; + * // Requires true or false to be set. + * optional bool disabled = 2 [ + * (buf.validate.field).required = true + * ]; + * // Requires a message to be set, including the empty message. + * SomeMessage msg = 4 [ + * (buf.validate.field).required = true + * ]; + * } + * ``` + * + * All fields in the example above track presence. By default, Protovalidate + * ignores rules on those fields if no value is set. `required` ensures that + * the fields are set and valid. + * + * Fields that don't track presence are always validated by Protovalidate, + * whether they are set or not. It is not necessary to add `required`. It + * can be added to indicate that the field cannot be the zero value. + * + * ```proto + * syntax="proto3"; + * + * message FieldsWithoutPresence { + * // `string.email` always applies, even to an empty string. + * string link = 1 [ + * (buf.validate.field).string.email = true + * ]; + * // `repeated.min_items` always applies, even to an empty list. + * repeated string labels = 2 [ + * (buf.validate.field).repeated.min_items = 1 + * ]; + * // `required`, for fields that don't track presence, indicates + * // the value of the field can't be the zero value. + * int32 zero_value_not_allowed = 3 [ + * (buf.validate.field).required = true + * ]; + * } + * ``` + * + * To learn which fields track presence, see the + * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat). + * + * Note: While field rules can be applied to repeated items, map keys, and map + * values, the elements are always considered to be set. Consequently, + * specifying `repeated.items.required` is redundant. + * + * @generated from field: optional bool required = 25; + */ + required: boolean; + + /** + * Ignore validation rules on the field if its value matches the specified + * criteria. See the `Ignore` enum for details. + * + * ```proto + * message UpdateRequest { + * // The uri rule only applies if the field is not an empty string. + * string url = 1 [ + * (buf.validate.field).ignore = IGNORE_IF_ZERO_VALUE, + * (buf.validate.field).string.uri = true + * ]; + * } + * ``` + * + * @generated from field: optional buf.validate.Ignore ignore = 27; + */ + ignore: Ignore; + + /** + * @generated from oneof buf.validate.FieldRules.type + */ + type: { + /** + * Scalar Field Types + * + * @generated from field: buf.validate.FloatRules float = 1; + */ + value: FloatRules; + case: "float"; + } | { + /** + * @generated from field: buf.validate.DoubleRules double = 2; + */ + value: DoubleRules; + case: "double"; + } | { + /** + * @generated from field: buf.validate.Int32Rules int32 = 3; + */ + value: Int32Rules; + case: "int32"; + } | { + /** + * @generated from field: buf.validate.Int64Rules int64 = 4; + */ + value: Int64Rules; + case: "int64"; + } | { + /** + * @generated from field: buf.validate.UInt32Rules uint32 = 5; + */ + value: UInt32Rules; + case: "uint32"; + } | { + /** + * @generated from field: buf.validate.UInt64Rules uint64 = 6; + */ + value: UInt64Rules; + case: "uint64"; + } | { + /** + * @generated from field: buf.validate.SInt32Rules sint32 = 7; + */ + value: SInt32Rules; + case: "sint32"; + } | { + /** + * @generated from field: buf.validate.SInt64Rules sint64 = 8; + */ + value: SInt64Rules; + case: "sint64"; + } | { + /** + * @generated from field: buf.validate.Fixed32Rules fixed32 = 9; + */ + value: Fixed32Rules; + case: "fixed32"; + } | { + /** + * @generated from field: buf.validate.Fixed64Rules fixed64 = 10; + */ + value: Fixed64Rules; + case: "fixed64"; + } | { + /** + * @generated from field: buf.validate.SFixed32Rules sfixed32 = 11; + */ + value: SFixed32Rules; + case: "sfixed32"; + } | { + /** + * @generated from field: buf.validate.SFixed64Rules sfixed64 = 12; + */ + value: SFixed64Rules; + case: "sfixed64"; + } | { + /** + * @generated from field: buf.validate.BoolRules bool = 13; + */ + value: BoolRules; + case: "bool"; + } | { + /** + * @generated from field: buf.validate.StringRules string = 14; + */ + value: StringRules; + case: "string"; + } | { + /** + * @generated from field: buf.validate.BytesRules bytes = 15; + */ + value: BytesRules; + case: "bytes"; + } | { + /** + * Complex Field Types + * + * @generated from field: buf.validate.EnumRules enum = 16; + */ + value: EnumRules; + case: "enum"; + } | { + /** + * @generated from field: buf.validate.RepeatedRules repeated = 18; + */ + value: RepeatedRules; + case: "repeated"; + } | { + /** + * @generated from field: buf.validate.MapRules map = 19; + */ + value: MapRules; + case: "map"; + } | { + /** + * Well-Known Field Types + * + * @generated from field: buf.validate.AnyRules any = 20; + */ + value: AnyRules; + case: "any"; + } | { + /** + * @generated from field: buf.validate.DurationRules duration = 21; + */ + value: DurationRules; + case: "duration"; + } | { + /** + * @generated from field: buf.validate.TimestampRules timestamp = 22; + */ + value: TimestampRules; + case: "timestamp"; + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message buf.validate.FieldRules. + * Use `create(FieldRulesSchema)` to create a new message. + */ +export const FieldRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 4); + +/** + * PredefinedRules are custom rules that can be re-used with + * multiple fields. + * + * @generated from message buf.validate.PredefinedRules + */ +export type PredefinedRules = Message<"buf.validate.PredefinedRules"> & { + /** + * `cel` is a repeated field used to represent a textual expression + * in the Common Expression Language (CEL) syntax. For more information, + * [see our documentation](https://buf.build/docs/protovalidate/schemas/predefined-rules/). + * + * ```proto + * message MyMessage { + * // The field `value` must be greater than 42. + * optional int32 value = 1 [(buf.validate.predefined).cel = { + * id: "my_message.value", + * message: "value must be greater than 42", + * expression: "this > 42", + * }]; + * } + * ``` + * + * @generated from field: repeated buf.validate.Rule cel = 1; + */ + cel: Rule[]; +}; + +/** + * Describes the message buf.validate.PredefinedRules. + * Use `create(PredefinedRulesSchema)` to create a new message. + */ +export const PredefinedRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 5); + +/** + * FloatRules describes the rules applied to `float` values. These + * rules may also be applied to the `google.protobuf.FloatValue` Well-Known-Type. + * + * @generated from message buf.validate.FloatRules + */ +export type FloatRules = Message<"buf.validate.FloatRules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyFloat { + * // value must equal 42.0 + * float value = 1 [(buf.validate.field).float.const = 42.0]; + * } + * ``` + * + * @generated from field: optional float const = 1; + */ + const: number; + + /** + * @generated from oneof buf.validate.FloatRules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be less than 10.0 + * float value = 1 [(buf.validate.field).float.lt = 10.0]; + * } + * ``` + * + * @generated from field: float lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be less than or equal to 10.0 + * float value = 1 [(buf.validate.field).float.lte = 10.0]; + * } + * ``` + * + * @generated from field: float lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.FloatRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be greater than 5.0 [float.gt] + * float value = 1 [(buf.validate.field).float.gt = 5.0]; + * + * // value must be greater than 5 and less than 10.0 [float.gt_lt] + * float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }]; + * + * // value must be greater than 10 or less than 5.0 [float.gt_lt_exclusive] + * float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: float gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be greater than or equal to 5.0 [float.gte] + * float value = 1 [(buf.validate.field).float.gte = 5.0]; + * + * // value must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt] + * float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }]; + * + * // value must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive] + * float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: float gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message + * is generated. + * + * ```proto + * message MyFloat { + * // value must be in list [1.0, 2.0, 3.0] + * float value = 1 [(buf.validate.field).float = { in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated float in = 6; + */ + in: number[]; + + /** + * `in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyFloat { + * // value must not be in list [1.0, 2.0, 3.0] + * float value = 1 [(buf.validate.field).float = { not_in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated float not_in = 7; + */ + notIn: number[]; + + /** + * `finite` requires the field value to be finite. If the field value is + * infinite or NaN, an error message is generated. + * + * @generated from field: optional bool finite = 8; + */ + finite: boolean; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyFloat { + * float value = 1 [ + * (buf.validate.field).float.example = 1.0, + * (buf.validate.field).float.example = inf + * ]; + * } + * ``` + * + * @generated from field: repeated float example = 9; + */ + example: number[]; +}; + +/** + * Describes the message buf.validate.FloatRules. + * Use `create(FloatRulesSchema)` to create a new message. + */ +export const FloatRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 6); + +/** + * DoubleRules describes the rules applied to `double` values. These + * rules may also be applied to the `google.protobuf.DoubleValue` Well-Known-Type. + * + * @generated from message buf.validate.DoubleRules + */ +export type DoubleRules = Message<"buf.validate.DoubleRules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyDouble { + * // value must equal 42.0 + * double value = 1 [(buf.validate.field).double.const = 42.0]; + * } + * ``` + * + * @generated from field: optional double const = 1; + */ + const: number; + + /** + * @generated from oneof buf.validate.DoubleRules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyDouble { + * // value must be less than 10.0 + * double value = 1 [(buf.validate.field).double.lt = 10.0]; + * } + * ``` + * + * @generated from field: double lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified value + * (field <= value). If the field value is greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyDouble { + * // value must be less than or equal to 10.0 + * double value = 1 [(buf.validate.field).double.lte = 10.0]; + * } + * ``` + * + * @generated from field: double lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.DoubleRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or `lte`, + * the range is reversed, and the field value must be outside the specified + * range. If the field value doesn't meet the required conditions, an error + * message is generated. + * + * ```proto + * message MyDouble { + * // value must be greater than 5.0 [double.gt] + * double value = 1 [(buf.validate.field).double.gt = 5.0]; + * + * // value must be greater than 5 and less than 10.0 [double.gt_lt] + * double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }]; + * + * // value must be greater than 10 or less than 5.0 [double.gt_lt_exclusive] + * double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: double gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyDouble { + * // value must be greater than or equal to 5.0 [double.gte] + * double value = 1 [(buf.validate.field).double.gte = 5.0]; + * + * // value must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt] + * double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }]; + * + * // value must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive] + * double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: double gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyDouble { + * // value must be in list [1.0, 2.0, 3.0] + * double value = 1 [(buf.validate.field).double = { in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated double in = 6; + */ + in: number[]; + + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyDouble { + * // value must not be in list [1.0, 2.0, 3.0] + * double value = 1 [(buf.validate.field).double = { not_in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated double not_in = 7; + */ + notIn: number[]; + + /** + * `finite` requires the field value to be finite. If the field value is + * infinite or NaN, an error message is generated. + * + * @generated from field: optional bool finite = 8; + */ + finite: boolean; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyDouble { + * double value = 1 [ + * (buf.validate.field).double.example = 1.0, + * (buf.validate.field).double.example = inf + * ]; + * } + * ``` + * + * @generated from field: repeated double example = 9; + */ + example: number[]; +}; + +/** + * Describes the message buf.validate.DoubleRules. + * Use `create(DoubleRulesSchema)` to create a new message. + */ +export const DoubleRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 7); + +/** + * Int32Rules describes the rules applied to `int32` values. These + * rules may also be applied to the `google.protobuf.Int32Value` Well-Known-Type. + * + * @generated from message buf.validate.Int32Rules + */ +export type Int32Rules = Message<"buf.validate.Int32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must equal 42 + * int32 value = 1 [(buf.validate.field).int32.const = 42]; + * } + * ``` + * + * @generated from field: optional int32 const = 1; + */ + const: number; + + /** + * @generated from oneof buf.validate.Int32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field + * < value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be less than 10 + * int32 value = 1 [(buf.validate.field).int32.lt = 10]; + * } + * ``` + * + * @generated from field: int32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be less than or equal to 10 + * int32 value = 1 [(buf.validate.field).int32.lte = 10]; + * } + * ``` + * + * @generated from field: int32 lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.Int32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be greater than 5 [int32.gt] + * int32 value = 1 [(buf.validate.field).int32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [int32.gt_lt] + * int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [int32.gt_lt_exclusive] + * int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified value + * (exclusive). If the value of `gte` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be greater than or equal to 5 [int32.gte] + * int32 value = 1 [(buf.validate.field).int32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [int32.gte_lt] + * int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive] + * int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int32 gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyInt32 { + * // value must be in list [1, 2, 3] + * int32 value = 1 [(buf.validate.field).int32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int32 in = 6; + */ + in: number[]; + + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error message + * is generated. + * + * ```proto + * message MyInt32 { + * // value must not be in list [1, 2, 3] + * int32 value = 1 [(buf.validate.field).int32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int32 not_in = 7; + */ + notIn: number[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyInt32 { + * int32 value = 1 [ + * (buf.validate.field).int32.example = 1, + * (buf.validate.field).int32.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated int32 example = 8; + */ + example: number[]; +}; + +/** + * Describes the message buf.validate.Int32Rules. + * Use `create(Int32RulesSchema)` to create a new message. + */ +export const Int32RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 8); + +/** + * Int64Rules describes the rules applied to `int64` values. These + * rules may also be applied to the `google.protobuf.Int64Value` Well-Known-Type. + * + * @generated from message buf.validate.Int64Rules + */ +export type Int64Rules = Message<"buf.validate.Int64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must equal 42 + * int64 value = 1 [(buf.validate.field).int64.const = 42]; + * } + * ``` + * + * @generated from field: optional int64 const = 1; + */ + const: bigint; + + /** + * @generated from oneof buf.validate.Int64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be less than 10 + * int64 value = 1 [(buf.validate.field).int64.lt = 10]; + * } + * ``` + * + * @generated from field: int64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be less than or equal to 10 + * int64 value = 1 [(buf.validate.field).int64.lte = 10]; + * } + * ``` + * + * @generated from field: int64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.Int64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be greater than 5 [int64.gt] + * int64 value = 1 [(buf.validate.field).int64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [int64.gt_lt] + * int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [int64.gt_lt_exclusive] + * int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be greater than or equal to 5 [int64.gte] + * int64 value = 1 [(buf.validate.field).int64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [int64.gte_lt] + * int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive] + * int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyInt64 { + * // value must be in list [1, 2, 3] + * int64 value = 1 [(buf.validate.field).int64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int64 in = 6; + */ + in: bigint[]; + + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyInt64 { + * // value must not be in list [1, 2, 3] + * int64 value = 1 [(buf.validate.field).int64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int64 not_in = 7; + */ + notIn: bigint[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyInt64 { + * int64 value = 1 [ + * (buf.validate.field).int64.example = 1, + * (buf.validate.field).int64.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated int64 example = 9; + */ + example: bigint[]; +}; + +/** + * Describes the message buf.validate.Int64Rules. + * Use `create(Int64RulesSchema)` to create a new message. + */ +export const Int64RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 9); + +/** + * UInt32Rules describes the rules applied to `uint32` values. These + * rules may also be applied to the `google.protobuf.UInt32Value` Well-Known-Type. + * + * @generated from message buf.validate.UInt32Rules + */ +export type UInt32Rules = Message<"buf.validate.UInt32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must equal 42 + * uint32 value = 1 [(buf.validate.field).uint32.const = 42]; + * } + * ``` + * + * @generated from field: optional uint32 const = 1; + */ + const: number; + + /** + * @generated from oneof buf.validate.UInt32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be less than 10 + * uint32 value = 1 [(buf.validate.field).uint32.lt = 10]; + * } + * ``` + * + * @generated from field: uint32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be less than or equal to 10 + * uint32 value = 1 [(buf.validate.field).uint32.lte = 10]; + * } + * ``` + * + * @generated from field: uint32 lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.UInt32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be greater than 5 [uint32.gt] + * uint32 value = 1 [(buf.validate.field).uint32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [uint32.gt_lt] + * uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [uint32.gt_lt_exclusive] + * uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be greater than or equal to 5 [uint32.gte] + * uint32 value = 1 [(buf.validate.field).uint32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [uint32.gte_lt] + * uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive] + * uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint32 gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyUInt32 { + * // value must be in list [1, 2, 3] + * uint32 value = 1 [(buf.validate.field).uint32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint32 in = 6; + */ + in: number[]; + + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyUInt32 { + * // value must not be in list [1, 2, 3] + * uint32 value = 1 [(buf.validate.field).uint32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint32 not_in = 7; + */ + notIn: number[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyUInt32 { + * uint32 value = 1 [ + * (buf.validate.field).uint32.example = 1, + * (buf.validate.field).uint32.example = 10 + * ]; + * } + * ``` + * + * @generated from field: repeated uint32 example = 8; + */ + example: number[]; +}; + +/** + * Describes the message buf.validate.UInt32Rules. + * Use `create(UInt32RulesSchema)` to create a new message. + */ +export const UInt32RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 10); + +/** + * UInt64Rules describes the rules applied to `uint64` values. These + * rules may also be applied to the `google.protobuf.UInt64Value` Well-Known-Type. + * + * @generated from message buf.validate.UInt64Rules + */ +export type UInt64Rules = Message<"buf.validate.UInt64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must equal 42 + * uint64 value = 1 [(buf.validate.field).uint64.const = 42]; + * } + * ``` + * + * @generated from field: optional uint64 const = 1; + */ + const: bigint; + + /** + * @generated from oneof buf.validate.UInt64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be less than 10 + * uint64 value = 1 [(buf.validate.field).uint64.lt = 10]; + * } + * ``` + * + * @generated from field: uint64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be less than or equal to 10 + * uint64 value = 1 [(buf.validate.field).uint64.lte = 10]; + * } + * ``` + * + * @generated from field: uint64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.UInt64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be greater than 5 [uint64.gt] + * uint64 value = 1 [(buf.validate.field).uint64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [uint64.gt_lt] + * uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [uint64.gt_lt_exclusive] + * uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be greater than or equal to 5 [uint64.gte] + * uint64 value = 1 [(buf.validate.field).uint64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [uint64.gte_lt] + * uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive] + * uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyUInt64 { + * // value must be in list [1, 2, 3] + * uint64 value = 1 [(buf.validate.field).uint64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint64 in = 6; + */ + in: bigint[]; + + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyUInt64 { + * // value must not be in list [1, 2, 3] + * uint64 value = 1 [(buf.validate.field).uint64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint64 not_in = 7; + */ + notIn: bigint[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyUInt64 { + * uint64 value = 1 [ + * (buf.validate.field).uint64.example = 1, + * (buf.validate.field).uint64.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated uint64 example = 8; + */ + example: bigint[]; +}; + +/** + * Describes the message buf.validate.UInt64Rules. + * Use `create(UInt64RulesSchema)` to create a new message. + */ +export const UInt64RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 11); + +/** + * SInt32Rules describes the rules applied to `sint32` values. + * + * @generated from message buf.validate.SInt32Rules + */ +export type SInt32Rules = Message<"buf.validate.SInt32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must equal 42 + * sint32 value = 1 [(buf.validate.field).sint32.const = 42]; + * } + * ``` + * + * @generated from field: optional sint32 const = 1; + */ + const: number; + + /** + * @generated from oneof buf.validate.SInt32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field + * < value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be less than 10 + * sint32 value = 1 [(buf.validate.field).sint32.lt = 10]; + * } + * ``` + * + * @generated from field: sint32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be less than or equal to 10 + * sint32 value = 1 [(buf.validate.field).sint32.lte = 10]; + * } + * ``` + * + * @generated from field: sint32 lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.SInt32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be greater than 5 [sint32.gt] + * sint32 value = 1 [(buf.validate.field).sint32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sint32.gt_lt] + * sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sint32.gt_lt_exclusive] + * sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be greater than or equal to 5 [sint32.gte] + * sint32 value = 1 [(buf.validate.field).sint32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sint32.gte_lt] + * sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive] + * sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint32 gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MySInt32 { + * // value must be in list [1, 2, 3] + * sint32 value = 1 [(buf.validate.field).sint32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint32 in = 6; + */ + in: number[]; + + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySInt32 { + * // value must not be in list [1, 2, 3] + * sint32 value = 1 [(buf.validate.field).sint32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint32 not_in = 7; + */ + notIn: number[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySInt32 { + * sint32 value = 1 [ + * (buf.validate.field).sint32.example = 1, + * (buf.validate.field).sint32.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated sint32 example = 8; + */ + example: number[]; +}; + +/** + * Describes the message buf.validate.SInt32Rules. + * Use `create(SInt32RulesSchema)` to create a new message. + */ +export const SInt32RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 12); + +/** + * SInt64Rules describes the rules applied to `sint64` values. + * + * @generated from message buf.validate.SInt64Rules + */ +export type SInt64Rules = Message<"buf.validate.SInt64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must equal 42 + * sint64 value = 1 [(buf.validate.field).sint64.const = 42]; + * } + * ``` + * + * @generated from field: optional sint64 const = 1; + */ + const: bigint; + + /** + * @generated from oneof buf.validate.SInt64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field + * < value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be less than 10 + * sint64 value = 1 [(buf.validate.field).sint64.lt = 10]; + * } + * ``` + * + * @generated from field: sint64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be less than or equal to 10 + * sint64 value = 1 [(buf.validate.field).sint64.lte = 10]; + * } + * ``` + * + * @generated from field: sint64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.SInt64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be greater than 5 [sint64.gt] + * sint64 value = 1 [(buf.validate.field).sint64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sint64.gt_lt] + * sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sint64.gt_lt_exclusive] + * sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be greater than or equal to 5 [sint64.gte] + * sint64 value = 1 [(buf.validate.field).sint64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sint64.gte_lt] + * sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive] + * sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message + * is generated. + * + * ```proto + * message MySInt64 { + * // value must be in list [1, 2, 3] + * sint64 value = 1 [(buf.validate.field).sint64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint64 in = 6; + */ + in: bigint[]; + + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySInt64 { + * // value must not be in list [1, 2, 3] + * sint64 value = 1 [(buf.validate.field).sint64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint64 not_in = 7; + */ + notIn: bigint[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySInt64 { + * sint64 value = 1 [ + * (buf.validate.field).sint64.example = 1, + * (buf.validate.field).sint64.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated sint64 example = 8; + */ + example: bigint[]; +}; + +/** + * Describes the message buf.validate.SInt64Rules. + * Use `create(SInt64RulesSchema)` to create a new message. + */ +export const SInt64RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 13); + +/** + * Fixed32Rules describes the rules applied to `fixed32` values. + * + * @generated from message buf.validate.Fixed32Rules + */ +export type Fixed32Rules = Message<"buf.validate.Fixed32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must equal 42 + * fixed32 value = 1 [(buf.validate.field).fixed32.const = 42]; + * } + * ``` + * + * @generated from field: optional fixed32 const = 1; + */ + const: number; + + /** + * @generated from oneof buf.validate.Fixed32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be less than 10 + * fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10]; + * } + * ``` + * + * @generated from field: fixed32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be less than or equal to 10 + * fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10]; + * } + * ``` + * + * @generated from field: fixed32 lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.Fixed32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be greater than 5 [fixed32.gt] + * fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [fixed32.gt_lt] + * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive] + * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be greater than or equal to 5 [fixed32.gte] + * fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [fixed32.gte_lt] + * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive] + * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed32 gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message + * is generated. + * + * ```proto + * message MyFixed32 { + * // value must be in list [1, 2, 3] + * fixed32 value = 1 [(buf.validate.field).fixed32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed32 in = 6; + */ + in: number[]; + + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyFixed32 { + * // value must not be in list [1, 2, 3] + * fixed32 value = 1 [(buf.validate.field).fixed32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed32 not_in = 7; + */ + notIn: number[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyFixed32 { + * fixed32 value = 1 [ + * (buf.validate.field).fixed32.example = 1, + * (buf.validate.field).fixed32.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated fixed32 example = 8; + */ + example: number[]; +}; + +/** + * Describes the message buf.validate.Fixed32Rules. + * Use `create(Fixed32RulesSchema)` to create a new message. + */ +export const Fixed32RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 14); + +/** + * Fixed64Rules describes the rules applied to `fixed64` values. + * + * @generated from message buf.validate.Fixed64Rules + */ +export type Fixed64Rules = Message<"buf.validate.Fixed64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must equal 42 + * fixed64 value = 1 [(buf.validate.field).fixed64.const = 42]; + * } + * ``` + * + * @generated from field: optional fixed64 const = 1; + */ + const: bigint; + + /** + * @generated from oneof buf.validate.Fixed64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be less than 10 + * fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10]; + * } + * ``` + * + * @generated from field: fixed64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be less than or equal to 10 + * fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10]; + * } + * ``` + * + * @generated from field: fixed64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.Fixed64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be greater than 5 [fixed64.gt] + * fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [fixed64.gt_lt] + * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive] + * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be greater than or equal to 5 [fixed64.gte] + * fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [fixed64.gte_lt] + * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive] + * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyFixed64 { + * // value must be in list [1, 2, 3] + * fixed64 value = 1 [(buf.validate.field).fixed64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed64 in = 6; + */ + in: bigint[]; + + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyFixed64 { + * // value must not be in list [1, 2, 3] + * fixed64 value = 1 [(buf.validate.field).fixed64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed64 not_in = 7; + */ + notIn: bigint[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyFixed64 { + * fixed64 value = 1 [ + * (buf.validate.field).fixed64.example = 1, + * (buf.validate.field).fixed64.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated fixed64 example = 8; + */ + example: bigint[]; +}; + +/** + * Describes the message buf.validate.Fixed64Rules. + * Use `create(Fixed64RulesSchema)` to create a new message. + */ +export const Fixed64RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 15); + +/** + * SFixed32Rules describes the rules applied to `fixed32` values. + * + * @generated from message buf.validate.SFixed32Rules + */ +export type SFixed32Rules = Message<"buf.validate.SFixed32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must equal 42 + * sfixed32 value = 1 [(buf.validate.field).sfixed32.const = 42]; + * } + * ``` + * + * @generated from field: optional sfixed32 const = 1; + */ + const: number; + + /** + * @generated from oneof buf.validate.SFixed32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be less than 10 + * sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10]; + * } + * ``` + * + * @generated from field: sfixed32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be less than or equal to 10 + * sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10]; + * } + * ``` + * + * @generated from field: sfixed32 lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.SFixed32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be greater than 5 [sfixed32.gt] + * sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sfixed32.gt_lt] + * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive] + * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be greater than or equal to 5 [sfixed32.gte] + * sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt] + * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive] + * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed32 gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MySFixed32 { + * // value must be in list [1, 2, 3] + * sfixed32 value = 1 [(buf.validate.field).sfixed32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed32 in = 6; + */ + in: number[]; + + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySFixed32 { + * // value must not be in list [1, 2, 3] + * sfixed32 value = 1 [(buf.validate.field).sfixed32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed32 not_in = 7; + */ + notIn: number[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySFixed32 { + * sfixed32 value = 1 [ + * (buf.validate.field).sfixed32.example = 1, + * (buf.validate.field).sfixed32.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated sfixed32 example = 8; + */ + example: number[]; +}; + +/** + * Describes the message buf.validate.SFixed32Rules. + * Use `create(SFixed32RulesSchema)` to create a new message. + */ +export const SFixed32RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 16); + +/** + * SFixed64Rules describes the rules applied to `fixed64` values. + * + * @generated from message buf.validate.SFixed64Rules + */ +export type SFixed64Rules = Message<"buf.validate.SFixed64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must equal 42 + * sfixed64 value = 1 [(buf.validate.field).sfixed64.const = 42]; + * } + * ``` + * + * @generated from field: optional sfixed64 const = 1; + */ + const: bigint; + + /** + * @generated from oneof buf.validate.SFixed64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be less than 10 + * sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10]; + * } + * ``` + * + * @generated from field: sfixed64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be less than or equal to 10 + * sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10]; + * } + * ``` + * + * @generated from field: sfixed64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.SFixed64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be greater than 5 [sfixed64.gt] + * sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sfixed64.gt_lt] + * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive] + * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be greater than or equal to 5 [sfixed64.gte] + * sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt] + * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive] + * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MySFixed64 { + * // value must be in list [1, 2, 3] + * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed64 in = 6; + */ + in: bigint[]; + + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySFixed64 { + * // value must not be in list [1, 2, 3] + * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed64 not_in = 7; + */ + notIn: bigint[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySFixed64 { + * sfixed64 value = 1 [ + * (buf.validate.field).sfixed64.example = 1, + * (buf.validate.field).sfixed64.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated sfixed64 example = 8; + */ + example: bigint[]; +}; + +/** + * Describes the message buf.validate.SFixed64Rules. + * Use `create(SFixed64RulesSchema)` to create a new message. + */ +export const SFixed64RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 17); + +/** + * BoolRules describes the rules applied to `bool` values. These rules + * may also be applied to the `google.protobuf.BoolValue` Well-Known-Type. + * + * @generated from message buf.validate.BoolRules + */ +export type BoolRules = Message<"buf.validate.BoolRules"> & { + /** + * `const` requires the field value to exactly match the specified boolean value. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyBool { + * // value must equal true + * bool value = 1 [(buf.validate.field).bool.const = true]; + * } + * ``` + * + * @generated from field: optional bool const = 1; + */ + const: boolean; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyBool { + * bool value = 1 [ + * (buf.validate.field).bool.example = 1, + * (buf.validate.field).bool.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated bool example = 2; + */ + example: boolean[]; +}; + +/** + * Describes the message buf.validate.BoolRules. + * Use `create(BoolRulesSchema)` to create a new message. + */ +export const BoolRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 18); + +/** + * StringRules describes the rules applied to `string` values These + * rules may also be applied to the `google.protobuf.StringValue` Well-Known-Type. + * + * @generated from message buf.validate.StringRules + */ +export type StringRules = Message<"buf.validate.StringRules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyString { + * // value must equal `hello` + * string value = 1 [(buf.validate.field).string.const = "hello"]; + * } + * ``` + * + * @generated from field: optional string const = 1; + */ + const: string; + + /** + * `len` dictates that the field value must have the specified + * number of characters (Unicode code points), which may differ from the number + * of bytes in the string. If the field value does not meet the specified + * length, an error message will be generated. + * + * ```proto + * message MyString { + * // value length must be 5 characters + * string value = 1 [(buf.validate.field).string.len = 5]; + * } + * ``` + * + * @generated from field: optional uint64 len = 19; + */ + len: bigint; + + /** + * `min_len` specifies that the field value must have at least the specified + * number of characters (Unicode code points), which may differ from the number + * of bytes in the string. If the field value contains fewer characters, an error + * message will be generated. + * + * ```proto + * message MyString { + * // value length must be at least 3 characters + * string value = 1 [(buf.validate.field).string.min_len = 3]; + * } + * ``` + * + * @generated from field: optional uint64 min_len = 2; + */ + minLen: bigint; + + /** + * `max_len` specifies that the field value must have no more than the specified + * number of characters (Unicode code points), which may differ from the + * number of bytes in the string. If the field value contains more characters, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value length must be at most 10 characters + * string value = 1 [(buf.validate.field).string.max_len = 10]; + * } + * ``` + * + * @generated from field: optional uint64 max_len = 3; + */ + maxLen: bigint; + + /** + * `len_bytes` dictates that the field value must have the specified number of + * bytes. If the field value does not match the specified length in bytes, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value length must be 6 bytes + * string value = 1 [(buf.validate.field).string.len_bytes = 6]; + * } + * ``` + * + * @generated from field: optional uint64 len_bytes = 20; + */ + lenBytes: bigint; + + /** + * `min_bytes` specifies that the field value must have at least the specified + * number of bytes. If the field value contains fewer bytes, an error message + * will be generated. + * + * ```proto + * message MyString { + * // value length must be at least 4 bytes + * string value = 1 [(buf.validate.field).string.min_bytes = 4]; + * } + * + * ``` + * + * @generated from field: optional uint64 min_bytes = 4; + */ + minBytes: bigint; + + /** + * `max_bytes` specifies that the field value must have no more than the + * specified number of bytes. If the field value contains more bytes, an + * error message will be generated. + * + * ```proto + * message MyString { + * // value length must be at most 8 bytes + * string value = 1 [(buf.validate.field).string.max_bytes = 8]; + * } + * ``` + * + * @generated from field: optional uint64 max_bytes = 5; + */ + maxBytes: bigint; + + /** + * `pattern` specifies that the field value must match the specified + * regular expression (RE2 syntax), with the expression provided without any + * delimiters. If the field value doesn't match the regular expression, an + * error message will be generated. + * + * ```proto + * message MyString { + * // value does not match regex pattern `^[a-zA-Z]//$` + * string value = 1 [(buf.validate.field).string.pattern = "^[a-zA-Z]//$"]; + * } + * ``` + * + * @generated from field: optional string pattern = 6; + */ + pattern: string; + + /** + * `prefix` specifies that the field value must have the + * specified substring at the beginning of the string. If the field value + * doesn't start with the specified prefix, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value does not have prefix `pre` + * string value = 1 [(buf.validate.field).string.prefix = "pre"]; + * } + * ``` + * + * @generated from field: optional string prefix = 7; + */ + prefix: string; + + /** + * `suffix` specifies that the field value must have the + * specified substring at the end of the string. If the field value doesn't + * end with the specified suffix, an error message will be generated. + * + * ```proto + * message MyString { + * // value does not have suffix `post` + * string value = 1 [(buf.validate.field).string.suffix = "post"]; + * } + * ``` + * + * @generated from field: optional string suffix = 8; + */ + suffix: string; + + /** + * `contains` specifies that the field value must have the + * specified substring anywhere in the string. If the field value doesn't + * contain the specified substring, an error message will be generated. + * + * ```proto + * message MyString { + * // value does not contain substring `inside`. + * string value = 1 [(buf.validate.field).string.contains = "inside"]; + * } + * ``` + * + * @generated from field: optional string contains = 9; + */ + contains: string; + + /** + * `not_contains` specifies that the field value must not have the + * specified substring anywhere in the string. If the field value contains + * the specified substring, an error message will be generated. + * + * ```proto + * message MyString { + * // value contains substring `inside`. + * string value = 1 [(buf.validate.field).string.not_contains = "inside"]; + * } + * ``` + * + * @generated from field: optional string not_contains = 23; + */ + notContains: string; + + /** + * `in` specifies that the field value must be equal to one of the specified + * values. If the field value isn't one of the specified values, an error + * message will be generated. + * + * ```proto + * message MyString { + * // value must be in list ["apple", "banana"] + * string value = 1 [(buf.validate.field).string.in = "apple", (buf.validate.field).string.in = "banana"]; + * } + * ``` + * + * @generated from field: repeated string in = 10; + */ + in: string[]; + + /** + * `not_in` specifies that the field value cannot be equal to any + * of the specified values. If the field value is one of the specified values, + * an error message will be generated. + * ```proto + * message MyString { + * // value must not be in list ["orange", "grape"] + * string value = 1 [(buf.validate.field).string.not_in = "orange", (buf.validate.field).string.not_in = "grape"]; + * } + * ``` + * + * @generated from field: repeated string not_in = 11; + */ + notIn: string[]; + + /** + * `WellKnown` rules provide advanced rules against common string + * patterns. + * + * @generated from oneof buf.validate.StringRules.well_known + */ + wellKnown: { + /** + * `email` specifies that the field value must be a valid email address, for + * example "foo@example.com". + * + * Conforms to the definition for a valid email address from the [HTML standard](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address). + * Note that this standard willfully deviates from [RFC 5322](https://datatracker.ietf.org/doc/html/rfc5322), + * which allows many unexpected forms of email addresses and will easily match + * a typographical error. + * + * If the field value isn't a valid email address, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid email address + * string value = 1 [(buf.validate.field).string.email = true]; + * } + * ``` + * + * @generated from field: bool email = 12; + */ + value: boolean; + case: "email"; + } | { + /** + * `hostname` specifies that the field value must be a valid hostname, for + * example "foo.example.com". + * + * A valid hostname follows the rules below: + * - The name consists of one or more labels, separated by a dot ("."). + * - Each label can be 1 to 63 alphanumeric characters. + * - A label can contain hyphens ("-"), but must not start or end with a hyphen. + * - The right-most label must not be digits only. + * - The name can have a trailing dot—for example, "foo.example.com.". + * - The name can be 253 characters at most, excluding the optional trailing dot. + * + * If the field value isn't a valid hostname, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid hostname + * string value = 1 [(buf.validate.field).string.hostname = true]; + * } + * ``` + * + * @generated from field: bool hostname = 13; + */ + value: boolean; + case: "hostname"; + } | { + /** + * `ip` specifies that the field value must be a valid IP (v4 or v6) address. + * + * IPv4 addresses are expected in the dotted decimal format—for example, "192.168.5.21". + * IPv6 addresses are expected in their text representation—for example, "::1", + * or "2001:0DB8:ABCD:0012::0". + * + * Both formats are well-defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). + * Zone identifiers for IPv6 addresses (for example, "fe80::a%en1") are supported. + * + * If the field value isn't a valid IP address, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid IP address + * string value = 1 [(buf.validate.field).string.ip = true]; + * } + * ``` + * + * @generated from field: bool ip = 14; + */ + value: boolean; + case: "ip"; + } | { + /** + * `ipv4` specifies that the field value must be a valid IPv4 address—for + * example "192.168.5.21". If the field value isn't a valid IPv4 address, an + * error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv4 address + * string value = 1 [(buf.validate.field).string.ipv4 = true]; + * } + * ``` + * + * @generated from field: bool ipv4 = 15; + */ + value: boolean; + case: "ipv4"; + } | { + /** + * `ipv6` specifies that the field value must be a valid IPv6 address—for + * example "::1", or "d7a:115c:a1e0:ab12:4843:cd96:626b:430b". If the field + * value is not a valid IPv6 address, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv6 address + * string value = 1 [(buf.validate.field).string.ipv6 = true]; + * } + * ``` + * + * @generated from field: bool ipv6 = 16; + */ + value: boolean; + case: "ipv6"; + } | { + /** + * `uri` specifies that the field value must be a valid URI, for example + * "https://example.com/foo/bar?baz=quux#frag". + * + * URI is defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). + * Zone Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)). + * + * If the field value isn't a valid URI, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid URI + * string value = 1 [(buf.validate.field).string.uri = true]; + * } + * ``` + * + * @generated from field: bool uri = 17; + */ + value: boolean; + case: "uri"; + } | { + /** + * `uri_ref` specifies that the field value must be a valid URI Reference—either + * a URI such as "https://example.com/foo/bar?baz=quux#frag", or a Relative + * Reference such as "./foo/bar?query". + * + * URI, URI Reference, and Relative Reference are defined in the internet + * standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). Zone + * Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)). + * + * If the field value isn't a valid URI Reference, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid URI Reference + * string value = 1 [(buf.validate.field).string.uri_ref = true]; + * } + * ``` + * + * @generated from field: bool uri_ref = 18; + */ + value: boolean; + case: "uriRef"; + } | { + /** + * `address` specifies that the field value must be either a valid hostname + * (for example, "example.com"), or a valid IP (v4 or v6) address (for example, + * "192.168.0.1", or "::1"). If the field value isn't a valid hostname or IP, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid hostname, or ip address + * string value = 1 [(buf.validate.field).string.address = true]; + * } + * ``` + * + * @generated from field: bool address = 21; + */ + value: boolean; + case: "address"; + } | { + /** + * `uuid` specifies that the field value must be a valid UUID as defined by + * [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2). If the + * field value isn't a valid UUID, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid UUID + * string value = 1 [(buf.validate.field).string.uuid = true]; + * } + * ``` + * + * @generated from field: bool uuid = 22; + */ + value: boolean; + case: "uuid"; + } | { + /** + * `tuuid` (trimmed UUID) specifies that the field value must be a valid UUID as + * defined by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2) with all dashes + * omitted. If the field value isn't a valid UUID without dashes, an error message + * will be generated. + * + * ```proto + * message MyString { + * // value must be a valid trimmed UUID + * string value = 1 [(buf.validate.field).string.tuuid = true]; + * } + * ``` + * + * @generated from field: bool tuuid = 33; + */ + value: boolean; + case: "tuuid"; + } | { + /** + * `ip_with_prefixlen` specifies that the field value must be a valid IP + * (v4 or v6) address with prefix length—for example, "192.168.5.21/16" or + * "2001:0DB8:ABCD:0012::F1/64". If the field value isn't a valid IP with + * prefix length, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IP with prefix length + * string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true]; + * } + * ``` + * + * @generated from field: bool ip_with_prefixlen = 26; + */ + value: boolean; + case: "ipWithPrefixlen"; + } | { + /** + * `ipv4_with_prefixlen` specifies that the field value must be a valid + * IPv4 address with prefix length—for example, "192.168.5.21/16". If the + * field value isn't a valid IPv4 address with prefix length, an error + * message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv4 address with prefix length + * string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true]; + * } + * ``` + * + * @generated from field: bool ipv4_with_prefixlen = 27; + */ + value: boolean; + case: "ipv4WithPrefixlen"; + } | { + /** + * `ipv6_with_prefixlen` specifies that the field value must be a valid + * IPv6 address with prefix length—for example, "2001:0DB8:ABCD:0012::F1/64". + * If the field value is not a valid IPv6 address with prefix length, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv6 address prefix length + * string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true]; + * } + * ``` + * + * @generated from field: bool ipv6_with_prefixlen = 28; + */ + value: boolean; + case: "ipv6WithPrefixlen"; + } | { + /** + * `ip_prefix` specifies that the field value must be a valid IP (v4 or v6) + * prefix—for example, "192.168.0.0/16" or "2001:0DB8:ABCD:0012::0/64". + * + * The prefix must have all zeros for the unmasked bits. For example, + * "2001:0DB8:ABCD:0012::0/64" designates the left-most 64 bits for the + * prefix, and the remaining 64 bits must be zero. + * + * If the field value isn't a valid IP prefix, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid IP prefix + * string value = 1 [(buf.validate.field).string.ip_prefix = true]; + * } + * ``` + * + * @generated from field: bool ip_prefix = 29; + */ + value: boolean; + case: "ipPrefix"; + } | { + /** + * `ipv4_prefix` specifies that the field value must be a valid IPv4 + * prefix, for example "192.168.0.0/16". + * + * The prefix must have all zeros for the unmasked bits. For example, + * "192.168.0.0/16" designates the left-most 16 bits for the prefix, + * and the remaining 16 bits must be zero. + * + * If the field value isn't a valid IPv4 prefix, an error message + * will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv4 prefix + * string value = 1 [(buf.validate.field).string.ipv4_prefix = true]; + * } + * ``` + * + * @generated from field: bool ipv4_prefix = 30; + */ + value: boolean; + case: "ipv4Prefix"; + } | { + /** + * `ipv6_prefix` specifies that the field value must be a valid IPv6 prefix—for + * example, "2001:0DB8:ABCD:0012::0/64". + * + * The prefix must have all zeros for the unmasked bits. For example, + * "2001:0DB8:ABCD:0012::0/64" designates the left-most 64 bits for the + * prefix, and the remaining 64 bits must be zero. + * + * If the field value is not a valid IPv6 prefix, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv6 prefix + * string value = 1 [(buf.validate.field).string.ipv6_prefix = true]; + * } + * ``` + * + * @generated from field: bool ipv6_prefix = 31; + */ + value: boolean; + case: "ipv6Prefix"; + } | { + /** + * `host_and_port` specifies that the field value must be valid host/port + * pair—for example, "example.com:8080". + * + * The host can be one of: + * - An IPv4 address in dotted decimal format—for example, "192.168.5.21". + * - An IPv6 address enclosed in square brackets—for example, "[2001:0DB8:ABCD:0012::F1]". + * - A hostname—for example, "example.com". + * + * The port is separated by a colon. It must be non-empty, with a decimal number + * in the range of 0-65535, inclusive. + * + * @generated from field: bool host_and_port = 32; + */ + value: boolean; + case: "hostAndPort"; + } | { + /** + * `well_known_regex` specifies a common well-known pattern + * defined as a regex. If the field value doesn't match the well-known + * regex, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid HTTP header value + * string value = 1 [(buf.validate.field).string.well_known_regex = KNOWN_REGEX_HTTP_HEADER_VALUE]; + * } + * ``` + * + * #### KnownRegex + * + * `well_known_regex` contains some well-known patterns. + * + * | Name | Number | Description | + * |-------------------------------|--------|-------------------------------------------| + * | KNOWN_REGEX_UNSPECIFIED | 0 | | + * | KNOWN_REGEX_HTTP_HEADER_NAME | 1 | HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2) | + * | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4) | + * + * @generated from field: buf.validate.KnownRegex well_known_regex = 24; + */ + value: KnownRegex; + case: "wellKnownRegex"; + } | { case: undefined; value?: undefined }; + + /** + * This applies to regexes `HTTP_HEADER_NAME` and `HTTP_HEADER_VALUE` to + * enable strict header validation. By default, this is true, and HTTP header + * validations are [RFC-compliant](https://datatracker.ietf.org/doc/html/rfc7230#section-3). Setting to false will enable looser + * validations that only disallow `\r\n\0` characters, which can be used to + * bypass header matching rules. + * + * ```proto + * message MyString { + * // The field `value` must have be a valid HTTP headers, but not enforced with strict rules. + * string value = 1 [(buf.validate.field).string.strict = false]; + * } + * ``` + * + * @generated from field: optional bool strict = 25; + */ + strict: boolean; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyString { + * string value = 1 [ + * (buf.validate.field).string.example = "hello", + * (buf.validate.field).string.example = "world" + * ]; + * } + * ``` + * + * @generated from field: repeated string example = 34; + */ + example: string[]; +}; + +/** + * Describes the message buf.validate.StringRules. + * Use `create(StringRulesSchema)` to create a new message. + */ +export const StringRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 19); + +/** + * BytesRules describe the rules applied to `bytes` values. These rules + * may also be applied to the `google.protobuf.BytesValue` Well-Known-Type. + * + * @generated from message buf.validate.BytesRules + */ +export type BytesRules = Message<"buf.validate.BytesRules"> & { + /** + * `const` requires the field value to exactly match the specified bytes + * value. If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be "\x01\x02\x03\x04" + * bytes value = 1 [(buf.validate.field).bytes.const = "\x01\x02\x03\x04"]; + * } + * ``` + * + * @generated from field: optional bytes const = 1; + */ + const: Uint8Array; + + /** + * `len` requires the field value to have the specified length in bytes. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyBytes { + * // value length must be 4 bytes. + * optional bytes value = 1 [(buf.validate.field).bytes.len = 4]; + * } + * ``` + * + * @generated from field: optional uint64 len = 13; + */ + len: bigint; + + /** + * `min_len` requires the field value to have at least the specified minimum + * length in bytes. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value length must be at least 2 bytes. + * optional bytes value = 1 [(buf.validate.field).bytes.min_len = 2]; + * } + * ``` + * + * @generated from field: optional uint64 min_len = 2; + */ + minLen: bigint; + + /** + * `max_len` requires the field value to have at most the specified maximum + * length in bytes. + * If the field value exceeds the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be at most 6 bytes. + * optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6]; + * } + * ``` + * + * @generated from field: optional uint64 max_len = 3; + */ + maxLen: bigint; + + /** + * `pattern` requires the field value to match the specified regular + * expression ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)). + * The value of the field must be valid UTF-8 or validation will fail with a + * runtime error. + * If the field value doesn't match the pattern, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must match regex pattern "^[a-zA-Z0-9]+$". + * optional bytes value = 1 [(buf.validate.field).bytes.pattern = "^[a-zA-Z0-9]+$"]; + * } + * ``` + * + * @generated from field: optional string pattern = 4; + */ + pattern: string; + + /** + * `prefix` requires the field value to have the specified bytes at the + * beginning of the string. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value does not have prefix \x01\x02 + * optional bytes value = 1 [(buf.validate.field).bytes.prefix = "\x01\x02"]; + * } + * ``` + * + * @generated from field: optional bytes prefix = 5; + */ + prefix: Uint8Array; + + /** + * `suffix` requires the field value to have the specified bytes at the end + * of the string. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value does not have suffix \x03\x04 + * optional bytes value = 1 [(buf.validate.field).bytes.suffix = "\x03\x04"]; + * } + * ``` + * + * @generated from field: optional bytes suffix = 6; + */ + suffix: Uint8Array; + + /** + * `contains` requires the field value to have the specified bytes anywhere in + * the string. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```protobuf + * message MyBytes { + * // value does not contain \x02\x03 + * optional bytes value = 1 [(buf.validate.field).bytes.contains = "\x02\x03"]; + * } + * ``` + * + * @generated from field: optional bytes contains = 7; + */ + contains: Uint8Array; + + /** + * `in` requires the field value to be equal to one of the specified + * values. If the field value doesn't match any of the specified values, an + * error message is generated. + * + * ```protobuf + * message MyBytes { + * // value must in ["\x01\x02", "\x02\x03", "\x03\x04"] + * optional bytes value = 1 [(buf.validate.field).bytes.in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; + * } + * ``` + * + * @generated from field: repeated bytes in = 8; + */ + in: Uint8Array[]; + + /** + * `not_in` requires the field value to be not equal to any of the specified + * values. + * If the field value matches any of the specified values, an error message is + * generated. + * + * ```proto + * message MyBytes { + * // value must not in ["\x01\x02", "\x02\x03", "\x03\x04"] + * optional bytes value = 1 [(buf.validate.field).bytes.not_in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; + * } + * ``` + * + * @generated from field: repeated bytes not_in = 9; + */ + notIn: Uint8Array[]; + + /** + * WellKnown rules provide advanced rules against common byte + * patterns + * + * @generated from oneof buf.validate.BytesRules.well_known + */ + wellKnown: { + /** + * `ip` ensures that the field `value` is a valid IP address (v4 or v6) in byte format. + * If the field value doesn't meet this rule, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be a valid IP address + * optional bytes value = 1 [(buf.validate.field).bytes.ip = true]; + * } + * ``` + * + * @generated from field: bool ip = 10; + */ + value: boolean; + case: "ip"; + } | { + /** + * `ipv4` ensures that the field `value` is a valid IPv4 address in byte format. + * If the field value doesn't meet this rule, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be a valid IPv4 address + * optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true]; + * } + * ``` + * + * @generated from field: bool ipv4 = 11; + */ + value: boolean; + case: "ipv4"; + } | { + /** + * `ipv6` ensures that the field `value` is a valid IPv6 address in byte format. + * If the field value doesn't meet this rule, an error message is generated. + * ```proto + * message MyBytes { + * // value must be a valid IPv6 address + * optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true]; + * } + * ``` + * + * @generated from field: bool ipv6 = 12; + */ + value: boolean; + case: "ipv6"; + } | { case: undefined; value?: undefined }; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyBytes { + * bytes value = 1 [ + * (buf.validate.field).bytes.example = "\x01\x02", + * (buf.validate.field).bytes.example = "\x02\x03" + * ]; + * } + * ``` + * + * @generated from field: repeated bytes example = 14; + */ + example: Uint8Array[]; +}; + +/** + * Describes the message buf.validate.BytesRules. + * Use `create(BytesRulesSchema)` to create a new message. + */ +export const BytesRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 20); + +/** + * EnumRules describe the rules applied to `enum` values. + * + * @generated from message buf.validate.EnumRules + */ +export type EnumRules = Message<"buf.validate.EnumRules"> & { + /** + * `const` requires the field value to exactly match the specified enum value. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must be exactly MY_ENUM_VALUE1. + * MyEnum value = 1 [(buf.validate.field).enum.const = 1]; + * } + * ``` + * + * @generated from field: optional int32 const = 1; + */ + const: number; + + /** + * `defined_only` requires the field value to be one of the defined values for + * this enum, failing on any undefined value. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must be a defined value of MyEnum. + * MyEnum value = 1 [(buf.validate.field).enum.defined_only = true]; + * } + * ``` + * + * @generated from field: optional bool defined_only = 2; + */ + definedOnly: boolean; + + /** + * `in` requires the field value to be equal to one of the + * specified enum values. If the field value doesn't match any of the + * specified values, an error message is generated. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must be equal to one of the specified values. + * MyEnum value = 1 [(buf.validate.field).enum = { in: [1, 2]}]; + * } + * ``` + * + * @generated from field: repeated int32 in = 3; + */ + in: number[]; + + /** + * `not_in` requires the field value to be not equal to any of the + * specified enum values. If the field value matches one of the specified + * values, an error message is generated. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must not be equal to any of the specified values. + * MyEnum value = 1 [(buf.validate.field).enum = { not_in: [1, 2]}]; + * } + * ``` + * + * @generated from field: repeated int32 not_in = 4; + */ + notIn: number[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * (buf.validate.field).enum.example = 1, + * (buf.validate.field).enum.example = 2 + * } + * ``` + * + * @generated from field: repeated int32 example = 5; + */ + example: number[]; +}; + +/** + * Describes the message buf.validate.EnumRules. + * Use `create(EnumRulesSchema)` to create a new message. + */ +export const EnumRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 21); + +/** + * RepeatedRules describe the rules applied to `repeated` values. + * + * @generated from message buf.validate.RepeatedRules + */ +export type RepeatedRules = Message<"buf.validate.RepeatedRules"> & { + /** + * `min_items` requires that this field must contain at least the specified + * minimum number of items. + * + * Note that `min_items = 1` is equivalent to setting a field as `required`. + * + * ```proto + * message MyRepeated { + * // value must contain at least 2 items + * repeated string value = 1 [(buf.validate.field).repeated.min_items = 2]; + * } + * ``` + * + * @generated from field: optional uint64 min_items = 1; + */ + minItems: bigint; + + /** + * `max_items` denotes that this field must not exceed a + * certain number of items as the upper limit. If the field contains more + * items than specified, an error message will be generated, requiring the + * field to maintain no more than the specified number of items. + * + * ```proto + * message MyRepeated { + * // value must contain no more than 3 item(s) + * repeated string value = 1 [(buf.validate.field).repeated.max_items = 3]; + * } + * ``` + * + * @generated from field: optional uint64 max_items = 2; + */ + maxItems: bigint; + + /** + * `unique` indicates that all elements in this field must + * be unique. This rule is strictly applicable to scalar and enum + * types, with message types not being supported. + * + * ```proto + * message MyRepeated { + * // repeated value must contain unique items + * repeated string value = 1 [(buf.validate.field).repeated.unique = true]; + * } + * ``` + * + * @generated from field: optional bool unique = 3; + */ + unique: boolean; + + /** + * `items` details the rules to be applied to each item + * in the field. Even for repeated message fields, validation is executed + * against each item unless `ignore` is specified. + * + * ```proto + * message MyRepeated { + * // The items in the field `value` must follow the specified rules. + * repeated string value = 1 [(buf.validate.field).repeated.items = { + * string: { + * min_len: 3 + * max_len: 10 + * } + * }]; + * } + * ``` + * + * Note that the `required` rule does not apply. Repeated items + * cannot be unset. + * + * @generated from field: optional buf.validate.FieldRules items = 4; + */ + items?: FieldRules; +}; + +/** + * Describes the message buf.validate.RepeatedRules. + * Use `create(RepeatedRulesSchema)` to create a new message. + */ +export const RepeatedRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 22); + +/** + * MapRules describe the rules applied to `map` values. + * + * @generated from message buf.validate.MapRules + */ +export type MapRules = Message<"buf.validate.MapRules"> & { + /** + * Specifies the minimum number of key-value pairs allowed. If the field has + * fewer key-value pairs than specified, an error message is generated. + * + * ```proto + * message MyMap { + * // The field `value` must have at least 2 key-value pairs. + * map value = 1 [(buf.validate.field).map.min_pairs = 2]; + * } + * ``` + * + * @generated from field: optional uint64 min_pairs = 1; + */ + minPairs: bigint; + + /** + * Specifies the maximum number of key-value pairs allowed. If the field has + * more key-value pairs than specified, an error message is generated. + * + * ```proto + * message MyMap { + * // The field `value` must have at most 3 key-value pairs. + * map value = 1 [(buf.validate.field).map.max_pairs = 3]; + * } + * ``` + * + * @generated from field: optional uint64 max_pairs = 2; + */ + maxPairs: bigint; + + /** + * Specifies the rules to be applied to each key in the field. + * + * ```proto + * message MyMap { + * // The keys in the field `value` must follow the specified rules. + * map value = 1 [(buf.validate.field).map.keys = { + * string: { + * min_len: 3 + * max_len: 10 + * } + * }]; + * } + * ``` + * + * Note that the `required` rule does not apply. Map keys cannot be unset. + * + * @generated from field: optional buf.validate.FieldRules keys = 4; + */ + keys?: FieldRules; + + /** + * Specifies the rules to be applied to the value of each key in the + * field. Message values will still have their validations evaluated unless + * `ignore` is specified. + * + * ```proto + * message MyMap { + * // The values in the field `value` must follow the specified rules. + * map value = 1 [(buf.validate.field).map.values = { + * string: { + * min_len: 5 + * max_len: 20 + * } + * }]; + * } + * ``` + * Note that the `required` rule does not apply. Map values cannot be unset. + * + * @generated from field: optional buf.validate.FieldRules values = 5; + */ + values?: FieldRules; +}; + +/** + * Describes the message buf.validate.MapRules. + * Use `create(MapRulesSchema)` to create a new message. + */ +export const MapRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 23); + +/** + * AnyRules describe rules applied exclusively to the `google.protobuf.Any` well-known type. + * + * @generated from message buf.validate.AnyRules + */ +export type AnyRules = Message<"buf.validate.AnyRules"> & { + /** + * `in` requires the field's `type_url` to be equal to one of the + * specified values. If it doesn't match any of the specified values, an error + * message is generated. + * + * ```proto + * message MyAny { + * // The `value` field must have a `type_url` equal to one of the specified values. + * google.protobuf.Any value = 1 [(buf.validate.field).any = { + * in: ["type.googleapis.com/MyType1", "type.googleapis.com/MyType2"] + * }]; + * } + * ``` + * + * @generated from field: repeated string in = 2; + */ + in: string[]; + + /** + * requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated. + * + * ```proto + * message MyAny { + * // The `value` field must not have a `type_url` equal to any of the specified values. + * google.protobuf.Any value = 1 [(buf.validate.field).any = { + * not_in: ["type.googleapis.com/ForbiddenType1", "type.googleapis.com/ForbiddenType2"] + * }]; + * } + * ``` + * + * @generated from field: repeated string not_in = 3; + */ + notIn: string[]; +}; + +/** + * Describes the message buf.validate.AnyRules. + * Use `create(AnyRulesSchema)` to create a new message. + */ +export const AnyRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 24); + +/** + * DurationRules describe the rules applied exclusively to the `google.protobuf.Duration` well-known type. + * + * @generated from message buf.validate.DurationRules + */ +export type DurationRules = Message<"buf.validate.DurationRules"> & { + /** + * `const` dictates that the field must match the specified value of the `google.protobuf.Duration` type exactly. + * If the field's value deviates from the specified value, an error message + * will be generated. + * + * ```proto + * message MyDuration { + * // value must equal 5s + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = "5s"]; + * } + * ``` + * + * @generated from field: optional google.protobuf.Duration const = 2; + */ + const?: Duration; + + /** + * @generated from oneof buf.validate.DurationRules.less_than + */ + lessThan: { + /** + * `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type, + * exclusive. If the field's value is greater than or equal to the specified + * value, an error message will be generated. + * + * ```proto + * message MyDuration { + * // value must be less than 5s + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = "5s"]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration lt = 3; + */ + value: Duration; + case: "lt"; + } | { + /** + * `lte` indicates that the field must be less than or equal to the specified + * value of the `google.protobuf.Duration` type, inclusive. If the field's value is greater than the specified value, + * an error message will be generated. + * + * ```proto + * message MyDuration { + * // value must be less than or equal to 10s + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = "10s"]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration lte = 4; + */ + value: Duration; + case: "lte"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.DurationRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the duration field value to be greater than the specified + * value (exclusive). If the value of `gt` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyDuration { + * // duration must be greater than 5s [duration.gt] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gt = { seconds: 5 }]; + * + * // duration must be greater than 5s and less than 10s [duration.gt_lt] + * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gt: { seconds: 5 }, lt: { seconds: 10 } }]; + * + * // duration must be greater than 10s or less than 5s [duration.gt_lt_exclusive] + * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gt: { seconds: 10 }, lt: { seconds: 5 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration gt = 5; + */ + value: Duration; + case: "gt"; + } | { + /** + * `gte` requires the duration field value to be greater than or equal to the + * specified value (exclusive). If the value of `gte` is larger than a + * specified `lt` or `lte`, the range is reversed, and the field value must + * be outside the specified range. If the field value doesn't meet the + * required conditions, an error message is generated. + * + * ```proto + * message MyDuration { + * // duration must be greater than or equal to 5s [duration.gte] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gte = { seconds: 5 }]; + * + * // duration must be greater than or equal to 5s and less than 10s [duration.gte_lt] + * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gte: { seconds: 5 }, lt: { seconds: 10 } }]; + * + * // duration must be greater than or equal to 10s or less than 5s [duration.gte_lt_exclusive] + * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gte: { seconds: 10 }, lt: { seconds: 5 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration gte = 6; + */ + value: Duration; + case: "gte"; + } | { case: undefined; value?: undefined }; + + /** + * `in` asserts that the field must be equal to one of the specified values of the `google.protobuf.Duration` type. + * If the field's value doesn't correspond to any of the specified values, + * an error message will be generated. + * + * ```proto + * message MyDuration { + * // value must be in list [1s, 2s, 3s] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.in = ["1s", "2s", "3s"]]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Duration in = 7; + */ + in: Duration[]; + + /** + * `not_in` denotes that the field must not be equal to + * any of the specified values of the `google.protobuf.Duration` type. + * If the field's value matches any of these values, an error message will be + * generated. + * + * ```proto + * message MyDuration { + * // value must not be in list [1s, 2s, 3s] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.not_in = ["1s", "2s", "3s"]]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Duration not_in = 8; + */ + notIn: Duration[]; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyDuration { + * google.protobuf.Duration value = 1 [ + * (buf.validate.field).duration.example = { seconds: 1 }, + * (buf.validate.field).duration.example = { seconds: 2 }, + * ]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Duration example = 9; + */ + example: Duration[]; +}; + +/** + * Describes the message buf.validate.DurationRules. + * Use `create(DurationRulesSchema)` to create a new message. + */ +export const DurationRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 25); + +/** + * TimestampRules describe the rules applied exclusively to the `google.protobuf.Timestamp` well-known type. + * + * @generated from message buf.validate.TimestampRules + */ +export type TimestampRules = Message<"buf.validate.TimestampRules"> & { + /** + * `const` dictates that this field, of the `google.protobuf.Timestamp` type, must exactly match the specified value. If the field value doesn't correspond to the specified timestamp, an error message will be generated. + * + * ```proto + * message MyTimestamp { + * // value must equal 2023-05-03T10:00:00Z + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.const = {seconds: 1727998800}]; + * } + * ``` + * + * @generated from field: optional google.protobuf.Timestamp const = 2; + */ + const?: Timestamp; + + /** + * @generated from oneof buf.validate.TimestampRules.less_than + */ + lessThan: { + /** + * requires the duration field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated. + * + * ```proto + * message MyDuration { + * // duration must be less than 'P3D' [duration.lt] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 259200 }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp lt = 3; + */ + value: Timestamp; + case: "lt"; + } | { + /** + * requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated. + * + * ```proto + * message MyTimestamp { + * // timestamp must be less than or equal to '2023-05-14T00:00:00Z' [timestamp.lte] + * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lte = { seconds: 1678867200 }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp lte = 4; + */ + value: Timestamp; + case: "lte"; + } | { + /** + * `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule. + * + * ```proto + * message MyTimestamp { + * // value must be less than now + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true]; + * } + * ``` + * + * @generated from field: bool lt_now = 7; + */ + value: boolean; + case: "ltNow"; + } | { case: undefined; value?: undefined }; + + /** + * @generated from oneof buf.validate.TimestampRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the timestamp field value to be greater than the specified + * value (exclusive). If the value of `gt` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyTimestamp { + * // timestamp must be greater than '2023-01-01T00:00:00Z' [timestamp.gt] + * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gt = { seconds: 1672444800 }]; + * + * // timestamp must be greater than '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gt_lt] + * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gt: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; + * + * // timestamp must be greater than '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gt_lt_exclusive] + * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gt: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp gt = 5; + */ + value: Timestamp; + case: "gt"; + } | { + /** + * `gte` requires the timestamp field value to be greater than or equal to the + * specified value (exclusive). If the value of `gte` is larger than a + * specified `lt` or `lte`, the range is reversed, and the field value + * must be outside the specified range. If the field value doesn't meet + * the required conditions, an error message is generated. + * + * ```proto + * message MyTimestamp { + * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' [timestamp.gte] + * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gte = { seconds: 1672444800 }]; + * + * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gte_lt] + * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gte: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; + * + * // timestamp must be greater than or equal to '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gte_lt_exclusive] + * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gte: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp gte = 6; + */ + value: Timestamp; + case: "gte"; + } | { + /** + * `gt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be greater than the current time. `gt_now` can only be used with the `within` rule. + * + * ```proto + * message MyTimestamp { + * // value must be greater than now + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true]; + * } + * ``` + * + * @generated from field: bool gt_now = 8; + */ + value: boolean; + case: "gtNow"; + } | { case: undefined; value?: undefined }; + + /** + * `within` specifies that this field, of the `google.protobuf.Timestamp` type, must be within the specified duration of the current time. If the field value isn't within the duration, an error message is generated. + * + * ```proto + * message MyTimestamp { + * // value must be within 1 hour of now + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}]; + * } + * ``` + * + * @generated from field: optional google.protobuf.Duration within = 9; + */ + within?: Duration; + + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyTimestamp { + * google.protobuf.Timestamp value = 1 [ + * (buf.validate.field).timestamp.example = { seconds: 1672444800 }, + * (buf.validate.field).timestamp.example = { seconds: 1672531200 }, + * ]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Timestamp example = 10; + */ + example: Timestamp[]; +}; + +/** + * Describes the message buf.validate.TimestampRules. + * Use `create(TimestampRulesSchema)` to create a new message. + */ +export const TimestampRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 26); + +/** + * `Violations` is a collection of `Violation` messages. This message type is returned by + * Protovalidate when a proto message fails to meet the requirements set by the `Rule` validation rules. + * Each individual violation is represented by a `Violation` message. + * + * @generated from message buf.validate.Violations + */ +export type Violations = Message<"buf.validate.Violations"> & { + /** + * `violations` is a repeated field that contains all the `Violation` messages corresponding to the violations detected. + * + * @generated from field: repeated buf.validate.Violation violations = 1; + */ + violations: Violation[]; +}; + +/** + * Describes the message buf.validate.Violations. + * Use `create(ViolationsSchema)` to create a new message. + */ +export const ViolationsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 27); + +/** + * `Violation` represents a single instance where a validation rule, expressed + * as a `Rule`, was not met. It provides information about the field that + * caused the violation, the specific rule that wasn't fulfilled, and a + * human-readable error message. + * + * For example, consider the following message: + * + * ```proto + * message User { + * int32 age = 1 [(buf.validate.field).cel = { + * id: "user.age", + * expression: "this < 18 ? 'User must be at least 18 years old' : ''", + * }]; + * } + * ``` + * + * It could produce the following violation: + * + * ```json + * { + * "ruleId": "user.age", + * "message": "User must be at least 18 years old", + * "field": { + * "elements": [ + * { + * "fieldNumber": 1, + * "fieldName": "age", + * "fieldType": "TYPE_INT32" + * } + * ] + * }, + * "rule": { + * "elements": [ + * { + * "fieldNumber": 23, + * "fieldName": "cel", + * "fieldType": "TYPE_MESSAGE", + * "index": "0" + * } + * ] + * } + * } + * ``` + * + * @generated from message buf.validate.Violation + */ +export type Violation = Message<"buf.validate.Violation"> & { + /** + * `field` is a machine-readable path to the field that failed validation. + * This could be a nested field, in which case the path will include all the parent fields leading to the actual field that caused the violation. + * + * For example, consider the following message: + * + * ```proto + * message Message { + * bool a = 1 [(buf.validate.field).required = true]; + * } + * ``` + * + * It could produce the following violation: + * + * ```textproto + * violation { + * field { element { field_number: 1, field_name: "a", field_type: 8 } } + * ... + * } + * ``` + * + * @generated from field: optional buf.validate.FieldPath field = 5; + */ + field?: FieldPath; + + /** + * `rule` is a machine-readable path that points to the specific rule that failed validation. + * This will be a nested field starting from the FieldRules of the field that failed validation. + * For custom rules, this will provide the path of the rule, e.g. `cel[0]`. + * + * For example, consider the following message: + * + * ```proto + * message Message { + * bool a = 1 [(buf.validate.field).required = true]; + * bool b = 2 [(buf.validate.field).cel = { + * id: "custom_rule", + * expression: "!this ? 'b must be true': ''" + * }] + * } + * ``` + * + * It could produce the following violations: + * + * ```textproto + * violation { + * rule { element { field_number: 25, field_name: "required", field_type: 8 } } + * ... + * } + * violation { + * rule { element { field_number: 23, field_name: "cel", field_type: 11, index: 0 } } + * ... + * } + * ``` + * + * @generated from field: optional buf.validate.FieldPath rule = 6; + */ + rule?: FieldPath; + + /** + * `rule_id` is the unique identifier of the `Rule` that was not fulfilled. + * This is the same `id` that was specified in the `Rule` message, allowing easy tracing of which rule was violated. + * + * @generated from field: optional string rule_id = 2; + */ + ruleId: string; + + /** + * `message` is a human-readable error message that describes the nature of the violation. + * This can be the default error message from the violated `Rule`, or it can be a custom message that gives more context about the violation. + * + * @generated from field: optional string message = 3; + */ + message: string; + + /** + * `for_key` indicates whether the violation was caused by a map key, rather than a value. + * + * @generated from field: optional bool for_key = 4; + */ + forKey: boolean; +}; + +/** + * Describes the message buf.validate.Violation. + * Use `create(ViolationSchema)` to create a new message. + */ +export const ViolationSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 28); + +/** + * `FieldPath` provides a path to a nested protobuf field. + * + * This message provides enough information to render a dotted field path even without protobuf descriptors. + * It also provides enough information to resolve a nested field through unknown wire data. + * + * @generated from message buf.validate.FieldPath + */ +export type FieldPath = Message<"buf.validate.FieldPath"> & { + /** + * `elements` contains each element of the path, starting from the root and recursing downward. + * + * @generated from field: repeated buf.validate.FieldPathElement elements = 1; + */ + elements: FieldPathElement[]; +}; + +/** + * Describes the message buf.validate.FieldPath. + * Use `create(FieldPathSchema)` to create a new message. + */ +export const FieldPathSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 29); + +/** + * `FieldPathElement` provides enough information to nest through a single protobuf field. + * + * If the selected field is a map or repeated field, the `subscript` value selects a specific element from it. + * A path that refers to a value nested under a map key or repeated field index will have a `subscript` value. + * The `field_type` field allows unambiguous resolution of a field even if descriptors are not available. + * + * @generated from message buf.validate.FieldPathElement + */ +export type FieldPathElement = Message<"buf.validate.FieldPathElement"> & { + /** + * `field_number` is the field number this path element refers to. + * + * @generated from field: optional int32 field_number = 1; + */ + fieldNumber: number; + + /** + * `field_name` contains the field name this path element refers to. + * This can be used to display a human-readable path even if the field number is unknown. + * + * @generated from field: optional string field_name = 2; + */ + fieldName: string; + + /** + * `field_type` specifies the type of this field. When using reflection, this value is not needed. + * + * This value is provided to make it possible to traverse unknown fields through wire data. + * When traversing wire data, be mindful of both packed[1] and delimited[2] encoding schemes. + * + * [1]: https://protobuf.dev/programming-guides/encoding/#packed + * [2]: https://protobuf.dev/programming-guides/encoding/#groups + * + * N.B.: Although groups are deprecated, the corresponding delimited encoding scheme is not, and + * can be explicitly used in Protocol Buffers 2023 Edition. + * + * @generated from field: optional google.protobuf.FieldDescriptorProto.Type field_type = 3; + */ + fieldType: FieldDescriptorProto_Type; + + /** + * `key_type` specifies the map key type of this field. This value is useful when traversing + * unknown fields through wire data: specifically, it allows handling the differences between + * different integer encodings. + * + * @generated from field: optional google.protobuf.FieldDescriptorProto.Type key_type = 4; + */ + keyType: FieldDescriptorProto_Type; + + /** + * `value_type` specifies map value type of this field. This is useful if you want to display a + * value inside unknown fields through wire data. + * + * @generated from field: optional google.protobuf.FieldDescriptorProto.Type value_type = 5; + */ + valueType: FieldDescriptorProto_Type; + + /** + * `subscript` contains a repeated index or map key, if this path element nests into a repeated or map field. + * + * @generated from oneof buf.validate.FieldPathElement.subscript + */ + subscript: { + /** + * `index` specifies a 0-based index into a repeated field. + * + * @generated from field: uint64 index = 6; + */ + value: bigint; + case: "index"; + } | { + /** + * `bool_key` specifies a map key of type bool. + * + * @generated from field: bool bool_key = 7; + */ + value: boolean; + case: "boolKey"; + } | { + /** + * `int_key` specifies a map key of type int32, int64, sint32, sint64, sfixed32 or sfixed64. + * + * @generated from field: int64 int_key = 8; + */ + value: bigint; + case: "intKey"; + } | { + /** + * `uint_key` specifies a map key of type uint32, uint64, fixed32 or fixed64. + * + * @generated from field: uint64 uint_key = 9; + */ + value: bigint; + case: "uintKey"; + } | { + /** + * `string_key` specifies a map key of type string. + * + * @generated from field: string string_key = 10; + */ + value: string; + case: "stringKey"; + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message buf.validate.FieldPathElement. + * Use `create(FieldPathElementSchema)` to create a new message. + */ +export const FieldPathElementSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 30); + +/** + * Specifies how `FieldRules.ignore` behaves, depending on the field's value, and + * whether the field tracks presence. + * + * @generated from enum buf.validate.Ignore + */ +export enum Ignore { + /** + * Ignore rules if the field tracks presence and is unset. This is the default + * behavior. + * + * In proto3, only message fields, members of a Protobuf `oneof`, and fields + * with the `optional` label track presence. Consequently, the following fields + * are always validated, whether a value is set or not: + * + * ```proto + * syntax="proto3"; + * + * message RulesApply { + * string email = 1 [ + * (buf.validate.field).string.email = true + * ]; + * int32 age = 2 [ + * (buf.validate.field).int32.gt = 0 + * ]; + * repeated string labels = 3 [ + * (buf.validate.field).repeated.min_items = 1 + * ]; + * } + * ``` + * + * In contrast, the following fields track presence, and are only validated if + * a value is set: + * + * ```proto + * syntax="proto3"; + * + * message RulesApplyIfSet { + * optional string email = 1 [ + * (buf.validate.field).string.email = true + * ]; + * oneof ref { + * string reference = 2 [ + * (buf.validate.field).string.uuid = true + * ]; + * string name = 3 [ + * (buf.validate.field).string.min_len = 4 + * ]; + * } + * SomeMessage msg = 4 [ + * (buf.validate.field).cel = {/* ... *\/} + * ]; + * } + * ``` + * + * To ensure that such a field is set, add the `required` rule. + * + * To learn which fields track presence, see the + * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat). + * + * @generated from enum value: IGNORE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * Ignore rules if the field is unset, or set to the zero value. + * + * The zero value depends on the field type: + * - For strings, the zero value is the empty string. + * - For bytes, the zero value is empty bytes. + * - For bool, the zero value is false. + * - For numeric types, the zero value is zero. + * - For enums, the zero value is the first defined enum value. + * - For repeated fields, the zero is an empty list. + * - For map fields, the zero is an empty map. + * - For message fields, absence of the message (typically a null-value) is considered zero value. + * + * For fields that track presence (e.g. adding the `optional` label in proto3), + * this a no-op and behavior is the same as the default `IGNORE_UNSPECIFIED`. + * + * @generated from enum value: IGNORE_IF_ZERO_VALUE = 1; + */ + IF_ZERO_VALUE = 1, + + /** + * Always ignore rules, including the `required` rule. + * + * This is useful for ignoring the rules of a referenced message, or to + * temporarily ignore rules during development. + * + * ```proto + * message MyMessage { + * // The field's rules will always be ignored, including any validations + * // on value's fields. + * MyOtherMessage value = 1 [ + * (buf.validate.field).ignore = IGNORE_ALWAYS + * ]; + * } + * ``` + * + * @generated from enum value: IGNORE_ALWAYS = 3; + */ + ALWAYS = 3, +} + +/** + * Describes the enum buf.validate.Ignore. + */ +export const IgnoreSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_buf_validate_validate, 0); + +/** + * KnownRegex contains some well-known patterns. + * + * @generated from enum buf.validate.KnownRegex + */ +export enum KnownRegex { + /** + * @generated from enum value: KNOWN_REGEX_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2). + * + * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_NAME = 1; + */ + HTTP_HEADER_NAME = 1, + + /** + * HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4). + * + * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_VALUE = 2; + */ + HTTP_HEADER_VALUE = 2, +} + +/** + * Describes the enum buf.validate.KnownRegex. + */ +export const KnownRegexSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_buf_validate_validate, 1); + +/** + * Rules specify the validations to be performed on this message. By default, + * no validation is performed against a message. + * + * @generated from extension: optional buf.validate.MessageRules message = 1159; + */ +export const message: GenExtension = /*@__PURE__*/ + extDesc(file_buf_validate_validate, 0); + +/** + * Rules specify the validations to be performed on this oneof. By default, + * no validation is performed against a oneof. + * + * @generated from extension: optional buf.validate.OneofRules oneof = 1159; + */ +export const oneof: GenExtension = /*@__PURE__*/ + extDesc(file_buf_validate_validate, 1); + +/** + * Rules specify the validations to be performed on this field. By default, + * no validation is performed against a field. + * + * @generated from extension: optional buf.validate.FieldRules field = 1159; + */ +export const field: GenExtension = /*@__PURE__*/ + extDesc(file_buf_validate_validate, 2); + +/** + * Specifies predefined rules. When extending a standard rule message, + * this adds additional CEL expressions that apply when the extension is used. + * + * ```proto + * extend buf.validate.Int32Rules { + * bool is_zero [(buf.validate.predefined).cel = { + * id: "int32.is_zero", + * message: "value must be zero", + * expression: "!rule || this == 0", + * }]; + * } + * + * message Foo { + * int32 reserved = 1 [(buf.validate.field).int32.(is_zero) = true]; + * } + * ``` + * + * @generated from extension: optional buf.validate.PredefinedRules predefined = 1160; + */ +export const predefined: GenExtension = /*@__PURE__*/ + extDesc(file_buf_validate_validate, 3); + diff --git a/js/metalstack/admin/v2/filesystem_pb.d.ts b/js/metalstack/admin/v2/filesystem_pb.d.ts new file mode 100644 index 00000000..96d57a39 --- /dev/null +++ b/js/metalstack/admin/v2/filesystem_pb.d.ts @@ -0,0 +1,207 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { UpdateMeta } from "../../api/v2/common_pb"; +import type { Disk, Filesystem, FilesystemLayout, FilesystemLayoutConstraints, LogicalVolume, Raid, VolumeGroup } from "../../api/v2/filesystem_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/filesystem.proto. + */ +export declare const file_metalstack_admin_v2_filesystem: GenFile; +/** + * FilesystemServiceCreateRequest + * + * @generated from message metalstack.admin.v2.FilesystemServiceCreateRequest + */ +export type FilesystemServiceCreateRequest = Message<"metalstack.admin.v2.FilesystemServiceCreateRequest"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; +/** + * Describes the message metalstack.admin.v2.FilesystemServiceCreateRequest. + * Use `create(FilesystemServiceCreateRequestSchema)` to create a new message. + */ +export declare const FilesystemServiceCreateRequestSchema: GenMessage; +/** + * FilesystemServiceCreateResponse + * + * @generated from message metalstack.admin.v2.FilesystemServiceCreateResponse + */ +export type FilesystemServiceCreateResponse = Message<"metalstack.admin.v2.FilesystemServiceCreateResponse"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; +/** + * Describes the message metalstack.admin.v2.FilesystemServiceCreateResponse. + * Use `create(FilesystemServiceCreateResponseSchema)` to create a new message. + */ +export declare const FilesystemServiceCreateResponseSchema: GenMessage; +/** + * FilesystemServiceUpdateRequest + * + * @generated from message metalstack.admin.v2.FilesystemServiceUpdateRequest + */ +export type FilesystemServiceUpdateRequest = Message<"metalstack.admin.v2.FilesystemServiceUpdateRequest"> & { + /** + * Id of this filesystemLayout + * + * @generated from field: string id = 1; + */ + id: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * Name of this filesystemLayout + * + * @generated from field: optional string name = 3; + */ + name?: string; + /** + * Description of this filesystemLayout + * + * @generated from field: optional string description = 4; + */ + description?: string; + /** + * Filesystems is a list of filesystems to create on a machine + * + * @generated from field: repeated metalstack.api.v2.Filesystem filesystems = 5; + */ + filesystems: Filesystem[]; + /** + * Disks list of disks that belong to this layout + * + * @generated from field: repeated metalstack.api.v2.Disk disks = 6; + */ + disks: Disk[]; + /** + * raid arrays to create + * + * @generated from field: repeated metalstack.api.v2.Raid raid = 7; + */ + raid: Raid[]; + /** + * VolumeGroups list of volumegroups to create + * + * @generated from field: repeated metalstack.api.v2.VolumeGroup volume_groups = 8; + */ + volumeGroups: VolumeGroup[]; + /** + * LogicalVolumes list of logicalvolumes to create + * + * @generated from field: repeated metalstack.api.v2.LogicalVolume logical_volumes = 9; + */ + logicalVolumes: LogicalVolume[]; + /** + * Constraints which must match that this layout is taken, if sizes and images are empty these are develop layouts + * + * @generated from field: metalstack.api.v2.FilesystemLayoutConstraints constraints = 10; + */ + constraints?: FilesystemLayoutConstraints; +}; +/** + * Describes the message metalstack.admin.v2.FilesystemServiceUpdateRequest. + * Use `create(FilesystemServiceUpdateRequestSchema)` to create a new message. + */ +export declare const FilesystemServiceUpdateRequestSchema: GenMessage; +/** + * FilesystemServiceUpdateResponse + * + * @generated from message metalstack.admin.v2.FilesystemServiceUpdateResponse + */ +export type FilesystemServiceUpdateResponse = Message<"metalstack.admin.v2.FilesystemServiceUpdateResponse"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; +/** + * Describes the message metalstack.admin.v2.FilesystemServiceUpdateResponse. + * Use `create(FilesystemServiceUpdateResponseSchema)` to create a new message. + */ +export declare const FilesystemServiceUpdateResponseSchema: GenMessage; +/** + * FilesystemServiceDeleteRequest + * + * @generated from message metalstack.admin.v2.FilesystemServiceDeleteRequest + */ +export type FilesystemServiceDeleteRequest = Message<"metalstack.admin.v2.FilesystemServiceDeleteRequest"> & { + /** + * ID of the filesystem to delete + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.admin.v2.FilesystemServiceDeleteRequest. + * Use `create(FilesystemServiceDeleteRequestSchema)` to create a new message. + */ +export declare const FilesystemServiceDeleteRequestSchema: GenMessage; +/** + * message FilesystemServiceDeleteResponse { + * + * @generated from message metalstack.admin.v2.FilesystemServiceDeleteResponse + */ +export type FilesystemServiceDeleteResponse = Message<"metalstack.admin.v2.FilesystemServiceDeleteResponse"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; +/** + * Describes the message metalstack.admin.v2.FilesystemServiceDeleteResponse. + * Use `create(FilesystemServiceDeleteResponseSchema)` to create a new message. + */ +export declare const FilesystemServiceDeleteResponseSchema: GenMessage; +/** + * FilesystemService serves filesystem related functions + * + * @generated from service metalstack.admin.v2.FilesystemService + */ +export declare const FilesystemService: GenService<{ + /** + * Create a filesystem + * + * @generated from rpc metalstack.admin.v2.FilesystemService.Create + */ + create: { + methodKind: "unary"; + input: typeof FilesystemServiceCreateRequestSchema; + output: typeof FilesystemServiceCreateResponseSchema; + }; + /** + * Update a filesystem + * + * @generated from rpc metalstack.admin.v2.FilesystemService.Update + */ + update: { + methodKind: "unary"; + input: typeof FilesystemServiceUpdateRequestSchema; + output: typeof FilesystemServiceUpdateResponseSchema; + }; + /** + * Delete a filesystem + * + * @generated from rpc metalstack.admin.v2.FilesystemService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof FilesystemServiceDeleteRequestSchema; + output: typeof FilesystemServiceDeleteResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/filesystem_pb.js b/js/metalstack/admin/v2/filesystem_pb.js new file mode 100644 index 00000000..4958f493 --- /dev/null +++ b/js/metalstack/admin/v2/filesystem_pb.js @@ -0,0 +1,48 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/filesystem.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_filesystem } from "../../api/v2/filesystem_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +/** + * Describes the file metalstack/admin/v2/filesystem.proto. + */ +export const file_metalstack_admin_v2_filesystem = /*@__PURE__*/ fileDesc("CiRtZXRhbHN0YWNrL2FkbWluL3YyL2ZpbGVzeXN0ZW0ucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiYAoeRmlsZXN5c3RlbVNlcnZpY2VDcmVhdGVSZXF1ZXN0Ej4KEWZpbGVzeXN0ZW1fbGF5b3V0GAEgASgLMiMubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dCJhCh9GaWxlc3lzdGVtU2VydmljZUNyZWF0ZVJlc3BvbnNlEj4KEWZpbGVzeXN0ZW1fbGF5b3V0GAEgASgLMiMubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dCKOBAoeRmlsZXN5c3RlbVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESMgoLZmlsZXN5c3RlbXMYBSADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtEiYKBWRpc2tzGAYgAygLMhcubWV0YWxzdGFjay5hcGkudjIuRGlzaxIlCgRyYWlkGAcgAygLMhcubWV0YWxzdGFjay5hcGkudjIuUmFpZBI1Cg12b2x1bWVfZ3JvdXBzGAggAygLMh4ubWV0YWxzdGFjay5hcGkudjIuVm9sdW1lR3JvdXASOQoPbG9naWNhbF92b2x1bWVzGAkgAygLMiAubWV0YWxzdGFjay5hcGkudjIuTG9naWNhbFZvbHVtZRJDCgtjb25zdHJhaW50cxgKIAEoCzIuLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXRDb25zdHJhaW50c0IHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24iYQofRmlsZXN5c3RlbVNlcnZpY2VVcGRhdGVSZXNwb25zZRI+ChFmaWxlc3lzdGVtX2xheW91dBgBIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQiOAoeRmlsZXN5c3RlbVNlcnZpY2VEZWxldGVSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABImEKH0ZpbGVzeXN0ZW1TZXJ2aWNlRGVsZXRlUmVzcG9uc2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0MpMDChFGaWxlc3lzdGVtU2VydmljZRJ+CgZDcmVhdGUSMy5tZXRhbHN0YWNrLmFkbWluLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlQ3JlYXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYWRtaW4udjIuRmlsZXN5c3RlbVNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEn4KBlVwZGF0ZRIzLm1ldGFsc3RhY2suYWRtaW4udjIuRmlsZXN5c3RlbVNlcnZpY2VVcGRhdGVSZXF1ZXN0GjQubWV0YWxzdGFjay5hZG1pbi52Mi5GaWxlc3lzdGVtU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESfgoGRGVsZXRlEjMubWV0YWxzdGFjay5hZG1pbi52Mi5GaWxlc3lzdGVtU2VydmljZURlbGV0ZVJlcXVlc3QaNC5tZXRhbHN0YWNrLmFkbWluLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYAULTAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCD0ZpbGVzeXN0ZW1Qcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.admin.v2.FilesystemServiceCreateRequest. + * Use `create(FilesystemServiceCreateRequestSchema)` to create a new message. + */ +export const FilesystemServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_filesystem, 0); +/** + * Describes the message metalstack.admin.v2.FilesystemServiceCreateResponse. + * Use `create(FilesystemServiceCreateResponseSchema)` to create a new message. + */ +export const FilesystemServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_filesystem, 1); +/** + * Describes the message metalstack.admin.v2.FilesystemServiceUpdateRequest. + * Use `create(FilesystemServiceUpdateRequestSchema)` to create a new message. + */ +export const FilesystemServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_filesystem, 2); +/** + * Describes the message metalstack.admin.v2.FilesystemServiceUpdateResponse. + * Use `create(FilesystemServiceUpdateResponseSchema)` to create a new message. + */ +export const FilesystemServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_filesystem, 3); +/** + * Describes the message metalstack.admin.v2.FilesystemServiceDeleteRequest. + * Use `create(FilesystemServiceDeleteRequestSchema)` to create a new message. + */ +export const FilesystemServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_filesystem, 4); +/** + * Describes the message metalstack.admin.v2.FilesystemServiceDeleteResponse. + * Use `create(FilesystemServiceDeleteResponseSchema)` to create a new message. + */ +export const FilesystemServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_filesystem, 5); +/** + * FilesystemService serves filesystem related functions + * + * @generated from service metalstack.admin.v2.FilesystemService + */ +export const FilesystemService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_filesystem, 0); diff --git a/js/metalstack/admin/v2/filesystem_pb.ts b/js/metalstack/admin/v2/filesystem_pb.ts new file mode 100644 index 00000000..15692e23 --- /dev/null +++ b/js/metalstack/admin/v2/filesystem_pb.ts @@ -0,0 +1,248 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/filesystem.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { UpdateMeta } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import type { Disk, Filesystem, FilesystemLayout, FilesystemLayoutConstraints, LogicalVolume, Raid, VolumeGroup } from "../../api/v2/filesystem_pb"; +import { file_metalstack_api_v2_filesystem } from "../../api/v2/filesystem_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/filesystem.proto. + */ +export const file_metalstack_admin_v2_filesystem: GenFile = /*@__PURE__*/ + fileDesc("CiRtZXRhbHN0YWNrL2FkbWluL3YyL2ZpbGVzeXN0ZW0ucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiYAoeRmlsZXN5c3RlbVNlcnZpY2VDcmVhdGVSZXF1ZXN0Ej4KEWZpbGVzeXN0ZW1fbGF5b3V0GAEgASgLMiMubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dCJhCh9GaWxlc3lzdGVtU2VydmljZUNyZWF0ZVJlc3BvbnNlEj4KEWZpbGVzeXN0ZW1fbGF5b3V0GAEgASgLMiMubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dCKOBAoeRmlsZXN5c3RlbVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESMgoLZmlsZXN5c3RlbXMYBSADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtEiYKBWRpc2tzGAYgAygLMhcubWV0YWxzdGFjay5hcGkudjIuRGlzaxIlCgRyYWlkGAcgAygLMhcubWV0YWxzdGFjay5hcGkudjIuUmFpZBI1Cg12b2x1bWVfZ3JvdXBzGAggAygLMh4ubWV0YWxzdGFjay5hcGkudjIuVm9sdW1lR3JvdXASOQoPbG9naWNhbF92b2x1bWVzGAkgAygLMiAubWV0YWxzdGFjay5hcGkudjIuTG9naWNhbFZvbHVtZRJDCgtjb25zdHJhaW50cxgKIAEoCzIuLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXRDb25zdHJhaW50c0IHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24iYQofRmlsZXN5c3RlbVNlcnZpY2VVcGRhdGVSZXNwb25zZRI+ChFmaWxlc3lzdGVtX2xheW91dBgBIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQiOAoeRmlsZXN5c3RlbVNlcnZpY2VEZWxldGVSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABImEKH0ZpbGVzeXN0ZW1TZXJ2aWNlRGVsZXRlUmVzcG9uc2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0MpMDChFGaWxlc3lzdGVtU2VydmljZRJ+CgZDcmVhdGUSMy5tZXRhbHN0YWNrLmFkbWluLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlQ3JlYXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYWRtaW4udjIuRmlsZXN5c3RlbVNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEn4KBlVwZGF0ZRIzLm1ldGFsc3RhY2suYWRtaW4udjIuRmlsZXN5c3RlbVNlcnZpY2VVcGRhdGVSZXF1ZXN0GjQubWV0YWxzdGFjay5hZG1pbi52Mi5GaWxlc3lzdGVtU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESfgoGRGVsZXRlEjMubWV0YWxzdGFjay5hZG1pbi52Mi5GaWxlc3lzdGVtU2VydmljZURlbGV0ZVJlcXVlc3QaNC5tZXRhbHN0YWNrLmFkbWluLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYAULTAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCD0ZpbGVzeXN0ZW1Qcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_predefined_rules]); + +/** + * FilesystemServiceCreateRequest + * + * @generated from message metalstack.admin.v2.FilesystemServiceCreateRequest + */ +export type FilesystemServiceCreateRequest = Message<"metalstack.admin.v2.FilesystemServiceCreateRequest"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; + +/** + * Describes the message metalstack.admin.v2.FilesystemServiceCreateRequest. + * Use `create(FilesystemServiceCreateRequestSchema)` to create a new message. + */ +export const FilesystemServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_filesystem, 0); + +/** + * FilesystemServiceCreateResponse + * + * @generated from message metalstack.admin.v2.FilesystemServiceCreateResponse + */ +export type FilesystemServiceCreateResponse = Message<"metalstack.admin.v2.FilesystemServiceCreateResponse"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; + +/** + * Describes the message metalstack.admin.v2.FilesystemServiceCreateResponse. + * Use `create(FilesystemServiceCreateResponseSchema)` to create a new message. + */ +export const FilesystemServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_filesystem, 1); + +/** + * FilesystemServiceUpdateRequest + * + * @generated from message metalstack.admin.v2.FilesystemServiceUpdateRequest + */ +export type FilesystemServiceUpdateRequest = Message<"metalstack.admin.v2.FilesystemServiceUpdateRequest"> & { + /** + * Id of this filesystemLayout + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * Name of this filesystemLayout + * + * @generated from field: optional string name = 3; + */ + name?: string; + + /** + * Description of this filesystemLayout + * + * @generated from field: optional string description = 4; + */ + description?: string; + + /** + * Filesystems is a list of filesystems to create on a machine + * + * @generated from field: repeated metalstack.api.v2.Filesystem filesystems = 5; + */ + filesystems: Filesystem[]; + + /** + * Disks list of disks that belong to this layout + * + * @generated from field: repeated metalstack.api.v2.Disk disks = 6; + */ + disks: Disk[]; + + /** + * raid arrays to create + * + * @generated from field: repeated metalstack.api.v2.Raid raid = 7; + */ + raid: Raid[]; + + /** + * VolumeGroups list of volumegroups to create + * + * @generated from field: repeated metalstack.api.v2.VolumeGroup volume_groups = 8; + */ + volumeGroups: VolumeGroup[]; + + /** + * LogicalVolumes list of logicalvolumes to create + * + * @generated from field: repeated metalstack.api.v2.LogicalVolume logical_volumes = 9; + */ + logicalVolumes: LogicalVolume[]; + + /** + * Constraints which must match that this layout is taken, if sizes and images are empty these are develop layouts + * + * @generated from field: metalstack.api.v2.FilesystemLayoutConstraints constraints = 10; + */ + constraints?: FilesystemLayoutConstraints; +}; + +/** + * Describes the message metalstack.admin.v2.FilesystemServiceUpdateRequest. + * Use `create(FilesystemServiceUpdateRequestSchema)` to create a new message. + */ +export const FilesystemServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_filesystem, 2); + +/** + * FilesystemServiceUpdateResponse + * + * @generated from message metalstack.admin.v2.FilesystemServiceUpdateResponse + */ +export type FilesystemServiceUpdateResponse = Message<"metalstack.admin.v2.FilesystemServiceUpdateResponse"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; + +/** + * Describes the message metalstack.admin.v2.FilesystemServiceUpdateResponse. + * Use `create(FilesystemServiceUpdateResponseSchema)` to create a new message. + */ +export const FilesystemServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_filesystem, 3); + +/** + * FilesystemServiceDeleteRequest + * + * @generated from message metalstack.admin.v2.FilesystemServiceDeleteRequest + */ +export type FilesystemServiceDeleteRequest = Message<"metalstack.admin.v2.FilesystemServiceDeleteRequest"> & { + /** + * ID of the filesystem to delete + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.admin.v2.FilesystemServiceDeleteRequest. + * Use `create(FilesystemServiceDeleteRequestSchema)` to create a new message. + */ +export const FilesystemServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_filesystem, 4); + +/** + * message FilesystemServiceDeleteResponse { + * + * @generated from message metalstack.admin.v2.FilesystemServiceDeleteResponse + */ +export type FilesystemServiceDeleteResponse = Message<"metalstack.admin.v2.FilesystemServiceDeleteResponse"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; + +/** + * Describes the message metalstack.admin.v2.FilesystemServiceDeleteResponse. + * Use `create(FilesystemServiceDeleteResponseSchema)` to create a new message. + */ +export const FilesystemServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_filesystem, 5); + +/** + * FilesystemService serves filesystem related functions + * + * @generated from service metalstack.admin.v2.FilesystemService + */ +export const FilesystemService: GenService<{ + /** + * Create a filesystem + * + * @generated from rpc metalstack.admin.v2.FilesystemService.Create + */ + create: { + methodKind: "unary"; + input: typeof FilesystemServiceCreateRequestSchema; + output: typeof FilesystemServiceCreateResponseSchema; + }, + /** + * Update a filesystem + * + * @generated from rpc metalstack.admin.v2.FilesystemService.Update + */ + update: { + methodKind: "unary"; + input: typeof FilesystemServiceUpdateRequestSchema; + output: typeof FilesystemServiceUpdateResponseSchema; + }, + /** + * Delete a filesystem + * + * @generated from rpc metalstack.admin.v2.FilesystemService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof FilesystemServiceDeleteRequestSchema; + output: typeof FilesystemServiceDeleteResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_filesystem, 0); + diff --git a/js/metalstack/admin/v2/image_pb.d.ts b/js/metalstack/admin/v2/image_pb.d.ts new file mode 100644 index 00000000..68497726 --- /dev/null +++ b/js/metalstack/admin/v2/image_pb.d.ts @@ -0,0 +1,242 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import type { UpdateMeta } from "../../api/v2/common_pb"; +import type { Image, ImageClassification, ImageFeature, ImageQuery, ImageUsage } from "../../api/v2/image_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/image.proto. + */ +export declare const file_metalstack_admin_v2_image: GenFile; +/** + * ImageServiceCreateRequest + * + * @generated from message metalstack.admin.v2.ImageServiceCreateRequest + */ +export type ImageServiceCreateRequest = Message<"metalstack.admin.v2.ImageServiceCreateRequest"> & { + /** + * Image is the image + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; +/** + * Describes the message metalstack.admin.v2.ImageServiceCreateRequest. + * Use `create(ImageServiceCreateRequestSchema)` to create a new message. + */ +export declare const ImageServiceCreateRequestSchema: GenMessage; +/** + * ImageServiceCreateResponse + * + * @generated from message metalstack.admin.v2.ImageServiceCreateResponse + */ +export type ImageServiceCreateResponse = Message<"metalstack.admin.v2.ImageServiceCreateResponse"> & { + /** + * Image is the image + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; +/** + * Describes the message metalstack.admin.v2.ImageServiceCreateResponse. + * Use `create(ImageServiceCreateResponseSchema)` to create a new message. + */ +export declare const ImageServiceCreateResponseSchema: GenMessage; +/** + * ImageServiceUpdateRequest + * + * @generated from message metalstack.admin.v2.ImageServiceUpdateRequest + */ +export type ImageServiceUpdateRequest = Message<"metalstack.admin.v2.ImageServiceUpdateRequest"> & { + /** + * Id of this image + * + * @generated from field: string id = 1; + */ + id: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * URL where this image is located + * + * @generated from field: optional string url = 3; + */ + url?: string; + /** + * Name of this imageLayout + * + * @generated from field: optional string name = 4; + */ + name?: string; + /** + * Description of this imageLayout + * + * @generated from field: optional string description = 5; + */ + description?: string; + /** + * Features of this image + * + * @generated from field: repeated metalstack.api.v2.ImageFeature features = 6; + */ + features: ImageFeature[]; + /** + * Classification of this image + * + * @generated from field: metalstack.api.v2.ImageClassification classification = 7; + */ + classification: ImageClassification; + /** + * ExpiresAt usage is not possible after this date + * + * @generated from field: google.protobuf.Timestamp expires_at = 8; + */ + expiresAt?: Timestamp; +}; +/** + * Describes the message metalstack.admin.v2.ImageServiceUpdateRequest. + * Use `create(ImageServiceUpdateRequestSchema)` to create a new message. + */ +export declare const ImageServiceUpdateRequestSchema: GenMessage; +/** + * ImageServiceUpdateResponse + * + * @generated from message metalstack.admin.v2.ImageServiceUpdateResponse + */ +export type ImageServiceUpdateResponse = Message<"metalstack.admin.v2.ImageServiceUpdateResponse"> & { + /** + * Image is the image + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; +/** + * Describes the message metalstack.admin.v2.ImageServiceUpdateResponse. + * Use `create(ImageServiceUpdateResponseSchema)` to create a new message. + */ +export declare const ImageServiceUpdateResponseSchema: GenMessage; +/** + * ImageServiceDeleteRequest + * + * @generated from message metalstack.admin.v2.ImageServiceDeleteRequest + */ +export type ImageServiceDeleteRequest = Message<"metalstack.admin.v2.ImageServiceDeleteRequest"> & { + /** + * ID of the image to delete + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.admin.v2.ImageServiceDeleteRequest. + * Use `create(ImageServiceDeleteRequestSchema)` to create a new message. + */ +export declare const ImageServiceDeleteRequestSchema: GenMessage; +/** + * message ImageServiceDeleteResponse { + * + * @generated from message metalstack.admin.v2.ImageServiceDeleteResponse + */ +export type ImageServiceDeleteResponse = Message<"metalstack.admin.v2.ImageServiceDeleteResponse"> & { + /** + * ImageLayout the imagelayout + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; +/** + * Describes the message metalstack.admin.v2.ImageServiceDeleteResponse. + * Use `create(ImageServiceDeleteResponseSchema)` to create a new message. + */ +export declare const ImageServiceDeleteResponseSchema: GenMessage; +/** + * ImageServiceUsageRequest + * + * @generated from message metalstack.admin.v2.ImageServiceUsageRequest + */ +export type ImageServiceUsageRequest = Message<"metalstack.admin.v2.ImageServiceUsageRequest"> & { + /** + * Query for which images the usage should be reported + * + * @generated from field: metalstack.api.v2.ImageQuery query = 1; + */ + query?: ImageQuery; +}; +/** + * Describes the message metalstack.admin.v2.ImageServiceUsageRequest. + * Use `create(ImageServiceUsageRequestSchema)` to create a new message. + */ +export declare const ImageServiceUsageRequestSchema: GenMessage; +/** + * ImageServiceUsageResponse + * + * @generated from message metalstack.admin.v2.ImageServiceUsageResponse + */ +export type ImageServiceUsageResponse = Message<"metalstack.admin.v2.ImageServiceUsageResponse"> & { + /** + * Images with usage + * + * @generated from field: repeated metalstack.api.v2.ImageUsage image_usage = 1; + */ + imageUsage: ImageUsage[]; +}; +/** + * Describes the message metalstack.admin.v2.ImageServiceUsageResponse. + * Use `create(ImageServiceUsageResponseSchema)` to create a new message. + */ +export declare const ImageServiceUsageResponseSchema: GenMessage; +/** + * ImageService serves image related functions + * + * @generated from service metalstack.admin.v2.ImageService + */ +export declare const ImageService: GenService<{ + /** + * Create a image + * + * @generated from rpc metalstack.admin.v2.ImageService.Create + */ + create: { + methodKind: "unary"; + input: typeof ImageServiceCreateRequestSchema; + output: typeof ImageServiceCreateResponseSchema; + }; + /** + * Update a image + * + * @generated from rpc metalstack.admin.v2.ImageService.Update + */ + update: { + methodKind: "unary"; + input: typeof ImageServiceUpdateRequestSchema; + output: typeof ImageServiceUpdateResponseSchema; + }; + /** + * Delete a image + * + * @generated from rpc metalstack.admin.v2.ImageService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof ImageServiceDeleteRequestSchema; + output: typeof ImageServiceDeleteResponseSchema; + }; + /** + * Usage of images + * + * @generated from rpc metalstack.admin.v2.ImageService.Usage + */ + usage: { + methodKind: "unary"; + input: typeof ImageServiceUsageRequestSchema; + output: typeof ImageServiceUsageResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/image_pb.js b/js/metalstack/admin/v2/image_pb.js new file mode 100644 index 00000000..8fbec43c --- /dev/null +++ b/js/metalstack/admin/v2/image_pb.js @@ -0,0 +1,59 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/image.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_image } from "../../api/v2/image_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +/** + * Describes the file metalstack/admin/v2/image.proto. + */ +export const file_metalstack_admin_v2_image = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FkbWluL3YyL2ltYWdlLnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIkQKGUltYWdlU2VydmljZUNyZWF0ZVJlcXVlc3QSJwoFaW1hZ2UYASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZSJFChpJbWFnZVNlcnZpY2VDcmVhdGVSZXNwb25zZRInCgVpbWFnZRgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlIrQDChlJbWFnZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEh0KA3VybBgDIAEoCUILukgIcgbgs66xAgFIAIgBARIeCgRuYW1lGAQgASgJQgu6SAhyBsCzrrECAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEkIKCGZlYXR1cmVzGAYgAygOMh8ubWV0YWxzdGFjay5hcGkudjIuSW1hZ2VGZWF0dXJlQg+6SAySAQkYASIFggECEAESSAoOY2xhc3NpZmljYXRpb24YByABKA4yJi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNsYXNzaWZpY2F0aW9uQgi6SAWCAQIQARIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGCgRfdXJsQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbiJFChpJbWFnZVNlcnZpY2VVcGRhdGVSZXNwb25zZRInCgVpbWFnZRgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlIjMKGUltYWdlU2VydmljZURlbGV0ZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiRQoaSW1hZ2VTZXJ2aWNlRGVsZXRlUmVzcG9uc2USJwoFaW1hZ2UYASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZSJIChhJbWFnZVNlcnZpY2VVc2FnZVJlcXVlc3QSLAoFcXVlcnkYASABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZVF1ZXJ5Ik8KGUltYWdlU2VydmljZVVzYWdlUmVzcG9uc2USMgoLaW1hZ2VfdXNhZ2UYASADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZVVzYWdlMuADCgxJbWFnZVNlcnZpY2USdAoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hZG1pbi52Mi5JbWFnZVNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5JbWFnZVNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnQKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYWRtaW4udjIuSW1hZ2VTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYWRtaW4udjIuSW1hZ2VTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJ0CgZEZWxldGUSLi5tZXRhbHN0YWNrLmFkbWluLnYyLkltYWdlU2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLkltYWdlU2VydmljZURlbGV0ZVJlc3BvbnNlIgnS8xgBAeDzGAESbgoFVXNhZ2USLS5tZXRhbHN0YWNrLmFkbWluLnYyLkltYWdlU2VydmljZVVzYWdlUmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuSW1hZ2VTZXJ2aWNlVXNhZ2VSZXNwb25zZSIG0vMYAgECQs4BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIKSW1hZ2VQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_image, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.admin.v2.ImageServiceCreateRequest. + * Use `create(ImageServiceCreateRequestSchema)` to create a new message. + */ +export const ImageServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_image, 0); +/** + * Describes the message metalstack.admin.v2.ImageServiceCreateResponse. + * Use `create(ImageServiceCreateResponseSchema)` to create a new message. + */ +export const ImageServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_image, 1); +/** + * Describes the message metalstack.admin.v2.ImageServiceUpdateRequest. + * Use `create(ImageServiceUpdateRequestSchema)` to create a new message. + */ +export const ImageServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_image, 2); +/** + * Describes the message metalstack.admin.v2.ImageServiceUpdateResponse. + * Use `create(ImageServiceUpdateResponseSchema)` to create a new message. + */ +export const ImageServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_image, 3); +/** + * Describes the message metalstack.admin.v2.ImageServiceDeleteRequest. + * Use `create(ImageServiceDeleteRequestSchema)` to create a new message. + */ +export const ImageServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_image, 4); +/** + * Describes the message metalstack.admin.v2.ImageServiceDeleteResponse. + * Use `create(ImageServiceDeleteResponseSchema)` to create a new message. + */ +export const ImageServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_image, 5); +/** + * Describes the message metalstack.admin.v2.ImageServiceUsageRequest. + * Use `create(ImageServiceUsageRequestSchema)` to create a new message. + */ +export const ImageServiceUsageRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_image, 6); +/** + * Describes the message metalstack.admin.v2.ImageServiceUsageResponse. + * Use `create(ImageServiceUsageResponseSchema)` to create a new message. + */ +export const ImageServiceUsageResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_image, 7); +/** + * ImageService serves image related functions + * + * @generated from service metalstack.admin.v2.ImageService + */ +export const ImageService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_image, 0); diff --git a/js/metalstack/admin/v2/image_pb.ts b/js/metalstack/admin/v2/image_pb.ts new file mode 100644 index 00000000..ca53dfde --- /dev/null +++ b/js/metalstack/admin/v2/image_pb.ts @@ -0,0 +1,288 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/image.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { UpdateMeta } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import type { Image, ImageClassification, ImageFeature, ImageQuery, ImageUsage } from "../../api/v2/image_pb"; +import { file_metalstack_api_v2_image } from "../../api/v2/image_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/image.proto. + */ +export const file_metalstack_admin_v2_image: GenFile = /*@__PURE__*/ + fileDesc("Ch9tZXRhbHN0YWNrL2FkbWluL3YyL2ltYWdlLnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIkQKGUltYWdlU2VydmljZUNyZWF0ZVJlcXVlc3QSJwoFaW1hZ2UYASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZSJFChpJbWFnZVNlcnZpY2VDcmVhdGVSZXNwb25zZRInCgVpbWFnZRgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlIrQDChlJbWFnZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEh0KA3VybBgDIAEoCUILukgIcgbgs66xAgFIAIgBARIeCgRuYW1lGAQgASgJQgu6SAhyBsCzrrECAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEkIKCGZlYXR1cmVzGAYgAygOMh8ubWV0YWxzdGFjay5hcGkudjIuSW1hZ2VGZWF0dXJlQg+6SAySAQkYASIFggECEAESSAoOY2xhc3NpZmljYXRpb24YByABKA4yJi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNsYXNzaWZpY2F0aW9uQgi6SAWCAQIQARIuCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGCgRfdXJsQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbiJFChpJbWFnZVNlcnZpY2VVcGRhdGVSZXNwb25zZRInCgVpbWFnZRgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlIjMKGUltYWdlU2VydmljZURlbGV0ZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiRQoaSW1hZ2VTZXJ2aWNlRGVsZXRlUmVzcG9uc2USJwoFaW1hZ2UYASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZSJIChhJbWFnZVNlcnZpY2VVc2FnZVJlcXVlc3QSLAoFcXVlcnkYASABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZVF1ZXJ5Ik8KGUltYWdlU2VydmljZVVzYWdlUmVzcG9uc2USMgoLaW1hZ2VfdXNhZ2UYASADKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZVVzYWdlMuADCgxJbWFnZVNlcnZpY2USdAoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hZG1pbi52Mi5JbWFnZVNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5JbWFnZVNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnQKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYWRtaW4udjIuSW1hZ2VTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYWRtaW4udjIuSW1hZ2VTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJ0CgZEZWxldGUSLi5tZXRhbHN0YWNrLmFkbWluLnYyLkltYWdlU2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLkltYWdlU2VydmljZURlbGV0ZVJlc3BvbnNlIgnS8xgBAeDzGAESbgoFVXNhZ2USLS5tZXRhbHN0YWNrLmFkbWluLnYyLkltYWdlU2VydmljZVVzYWdlUmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuSW1hZ2VTZXJ2aWNlVXNhZ2VSZXNwb25zZSIG0vMYAgECQs4BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIKSW1hZ2VQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_image, file_metalstack_api_v2_predefined_rules]); + +/** + * ImageServiceCreateRequest + * + * @generated from message metalstack.admin.v2.ImageServiceCreateRequest + */ +export type ImageServiceCreateRequest = Message<"metalstack.admin.v2.ImageServiceCreateRequest"> & { + /** + * Image is the image + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; + +/** + * Describes the message metalstack.admin.v2.ImageServiceCreateRequest. + * Use `create(ImageServiceCreateRequestSchema)` to create a new message. + */ +export const ImageServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_image, 0); + +/** + * ImageServiceCreateResponse + * + * @generated from message metalstack.admin.v2.ImageServiceCreateResponse + */ +export type ImageServiceCreateResponse = Message<"metalstack.admin.v2.ImageServiceCreateResponse"> & { + /** + * Image is the image + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; + +/** + * Describes the message metalstack.admin.v2.ImageServiceCreateResponse. + * Use `create(ImageServiceCreateResponseSchema)` to create a new message. + */ +export const ImageServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_image, 1); + +/** + * ImageServiceUpdateRequest + * + * @generated from message metalstack.admin.v2.ImageServiceUpdateRequest + */ +export type ImageServiceUpdateRequest = Message<"metalstack.admin.v2.ImageServiceUpdateRequest"> & { + /** + * Id of this image + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * URL where this image is located + * + * @generated from field: optional string url = 3; + */ + url?: string; + + /** + * Name of this imageLayout + * + * @generated from field: optional string name = 4; + */ + name?: string; + + /** + * Description of this imageLayout + * + * @generated from field: optional string description = 5; + */ + description?: string; + + /** + * Features of this image + * + * @generated from field: repeated metalstack.api.v2.ImageFeature features = 6; + */ + features: ImageFeature[]; + + /** + * Classification of this image + * + * @generated from field: metalstack.api.v2.ImageClassification classification = 7; + */ + classification: ImageClassification; + + /** + * ExpiresAt usage is not possible after this date + * + * @generated from field: google.protobuf.Timestamp expires_at = 8; + */ + expiresAt?: Timestamp; +}; + +/** + * Describes the message metalstack.admin.v2.ImageServiceUpdateRequest. + * Use `create(ImageServiceUpdateRequestSchema)` to create a new message. + */ +export const ImageServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_image, 2); + +/** + * ImageServiceUpdateResponse + * + * @generated from message metalstack.admin.v2.ImageServiceUpdateResponse + */ +export type ImageServiceUpdateResponse = Message<"metalstack.admin.v2.ImageServiceUpdateResponse"> & { + /** + * Image is the image + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; + +/** + * Describes the message metalstack.admin.v2.ImageServiceUpdateResponse. + * Use `create(ImageServiceUpdateResponseSchema)` to create a new message. + */ +export const ImageServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_image, 3); + +/** + * ImageServiceDeleteRequest + * + * @generated from message metalstack.admin.v2.ImageServiceDeleteRequest + */ +export type ImageServiceDeleteRequest = Message<"metalstack.admin.v2.ImageServiceDeleteRequest"> & { + /** + * ID of the image to delete + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.admin.v2.ImageServiceDeleteRequest. + * Use `create(ImageServiceDeleteRequestSchema)` to create a new message. + */ +export const ImageServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_image, 4); + +/** + * message ImageServiceDeleteResponse { + * + * @generated from message metalstack.admin.v2.ImageServiceDeleteResponse + */ +export type ImageServiceDeleteResponse = Message<"metalstack.admin.v2.ImageServiceDeleteResponse"> & { + /** + * ImageLayout the imagelayout + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; + +/** + * Describes the message metalstack.admin.v2.ImageServiceDeleteResponse. + * Use `create(ImageServiceDeleteResponseSchema)` to create a new message. + */ +export const ImageServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_image, 5); + +/** + * ImageServiceUsageRequest + * + * @generated from message metalstack.admin.v2.ImageServiceUsageRequest + */ +export type ImageServiceUsageRequest = Message<"metalstack.admin.v2.ImageServiceUsageRequest"> & { + /** + * Query for which images the usage should be reported + * + * @generated from field: metalstack.api.v2.ImageQuery query = 1; + */ + query?: ImageQuery; +}; + +/** + * Describes the message metalstack.admin.v2.ImageServiceUsageRequest. + * Use `create(ImageServiceUsageRequestSchema)` to create a new message. + */ +export const ImageServiceUsageRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_image, 6); + +/** + * ImageServiceUsageResponse + * + * @generated from message metalstack.admin.v2.ImageServiceUsageResponse + */ +export type ImageServiceUsageResponse = Message<"metalstack.admin.v2.ImageServiceUsageResponse"> & { + /** + * Images with usage + * + * @generated from field: repeated metalstack.api.v2.ImageUsage image_usage = 1; + */ + imageUsage: ImageUsage[]; +}; + +/** + * Describes the message metalstack.admin.v2.ImageServiceUsageResponse. + * Use `create(ImageServiceUsageResponseSchema)` to create a new message. + */ +export const ImageServiceUsageResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_image, 7); + +/** + * ImageService serves image related functions + * + * @generated from service metalstack.admin.v2.ImageService + */ +export const ImageService: GenService<{ + /** + * Create a image + * + * @generated from rpc metalstack.admin.v2.ImageService.Create + */ + create: { + methodKind: "unary"; + input: typeof ImageServiceCreateRequestSchema; + output: typeof ImageServiceCreateResponseSchema; + }, + /** + * Update a image + * + * @generated from rpc metalstack.admin.v2.ImageService.Update + */ + update: { + methodKind: "unary"; + input: typeof ImageServiceUpdateRequestSchema; + output: typeof ImageServiceUpdateResponseSchema; + }, + /** + * Delete a image + * + * @generated from rpc metalstack.admin.v2.ImageService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof ImageServiceDeleteRequestSchema; + output: typeof ImageServiceDeleteResponseSchema; + }, + /** + * Usage of images + * + * @generated from rpc metalstack.admin.v2.ImageService.Usage + */ + usage: { + methodKind: "unary"; + input: typeof ImageServiceUsageRequestSchema; + output: typeof ImageServiceUsageResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_image, 0); + diff --git a/js/metalstack/admin/v2/ip_pb.d.ts b/js/metalstack/admin/v2/ip_pb.d.ts new file mode 100644 index 00000000..b89a5f81 --- /dev/null +++ b/js/metalstack/admin/v2/ip_pb.d.ts @@ -0,0 +1,60 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { IP, IPQuery } from "../../api/v2/ip_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/ip.proto. + */ +export declare const file_metalstack_admin_v2_ip: GenFile; +/** + * IPServiceListRequest + * + * @generated from message metalstack.admin.v2.IPServiceListRequest + */ +export type IPServiceListRequest = Message<"metalstack.admin.v2.IPServiceListRequest"> & { + /** + * Query to search for one or more ips + * + * @generated from field: metalstack.api.v2.IPQuery query = 1; + */ + query?: IPQuery; +}; +/** + * Describes the message metalstack.admin.v2.IPServiceListRequest. + * Use `create(IPServiceListRequestSchema)` to create a new message. + */ +export declare const IPServiceListRequestSchema: GenMessage; +/** + * IPServiceListResponse + * + * @generated from message metalstack.admin.v2.IPServiceListResponse + */ +export type IPServiceListResponse = Message<"metalstack.admin.v2.IPServiceListResponse"> & { + /** + * IPs are the list of ips + * + * @generated from field: repeated metalstack.api.v2.IP ips = 1; + */ + ips: IP[]; +}; +/** + * Describes the message metalstack.admin.v2.IPServiceListResponse. + * Use `create(IPServiceListResponseSchema)` to create a new message. + */ +export declare const IPServiceListResponseSchema: GenMessage; +/** + * IPService serves ip address related functions + * + * @generated from service metalstack.admin.v2.IPService + */ +export declare const IPService: GenService<{ + /** + * List all ips + * + * @generated from rpc metalstack.admin.v2.IPService.List + */ + list: { + methodKind: "unary"; + input: typeof IPServiceListRequestSchema; + output: typeof IPServiceListResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/ip_pb.js b/js/metalstack/admin/v2/ip_pb.js new file mode 100644 index 00000000..974084f3 --- /dev/null +++ b/js/metalstack/admin/v2/ip_pb.js @@ -0,0 +1,26 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/ip.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_ip } from "../../api/v2/ip_pb"; +/** + * Describes the file metalstack/admin/v2/ip.proto. + */ +export const file_metalstack_admin_v2_ip = /*@__PURE__*/ fileDesc("ChxtZXRhbHN0YWNrL2FkbWluL3YyL2lwLnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIkEKFElQU2VydmljZUxpc3RSZXF1ZXN0EikKBXF1ZXJ5GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuSVBRdWVyeSI7ChVJUFNlcnZpY2VMaXN0UmVzcG9uc2USIgoDaXBzGAEgAygLMhUubWV0YWxzdGFjay5hcGkudjIuSVAydgoJSVBTZXJ2aWNlEmkKBExpc3QSKS5tZXRhbHN0YWNrLmFkbWluLnYyLklQU2VydmljZUxpc3RSZXF1ZXN0GioubWV0YWxzdGFjay5hZG1pbi52Mi5JUFNlcnZpY2VMaXN0UmVzcG9uc2UiCtLzGAIBAuDzGAJCywEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgdJcFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_metalstack_api_v2_common, file_metalstack_api_v2_ip]); +/** + * Describes the message metalstack.admin.v2.IPServiceListRequest. + * Use `create(IPServiceListRequestSchema)` to create a new message. + */ +export const IPServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_ip, 0); +/** + * Describes the message metalstack.admin.v2.IPServiceListResponse. + * Use `create(IPServiceListResponseSchema)` to create a new message. + */ +export const IPServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_ip, 1); +/** + * IPService serves ip address related functions + * + * @generated from service metalstack.admin.v2.IPService + */ +export const IPService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_ip, 0); diff --git a/js/metalstack/admin/v2/ip_pb.ts b/js/metalstack/admin/v2/ip_pb.ts new file mode 100644 index 00000000..c5fba6f2 --- /dev/null +++ b/js/metalstack/admin/v2/ip_pb.ts @@ -0,0 +1,78 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/ip.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import type { IP, IPQuery } from "../../api/v2/ip_pb"; +import { file_metalstack_api_v2_ip } from "../../api/v2/ip_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/ip.proto. + */ +export const file_metalstack_admin_v2_ip: GenFile = /*@__PURE__*/ + fileDesc("ChxtZXRhbHN0YWNrL2FkbWluL3YyL2lwLnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIkEKFElQU2VydmljZUxpc3RSZXF1ZXN0EikKBXF1ZXJ5GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuSVBRdWVyeSI7ChVJUFNlcnZpY2VMaXN0UmVzcG9uc2USIgoDaXBzGAEgAygLMhUubWV0YWxzdGFjay5hcGkudjIuSVAydgoJSVBTZXJ2aWNlEmkKBExpc3QSKS5tZXRhbHN0YWNrLmFkbWluLnYyLklQU2VydmljZUxpc3RSZXF1ZXN0GioubWV0YWxzdGFjay5hZG1pbi52Mi5JUFNlcnZpY2VMaXN0UmVzcG9uc2UiCtLzGAIBAuDzGAJCywEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgdJcFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_metalstack_api_v2_common, file_metalstack_api_v2_ip]); + +/** + * IPServiceListRequest + * + * @generated from message metalstack.admin.v2.IPServiceListRequest + */ +export type IPServiceListRequest = Message<"metalstack.admin.v2.IPServiceListRequest"> & { + /** + * Query to search for one or more ips + * + * @generated from field: metalstack.api.v2.IPQuery query = 1; + */ + query?: IPQuery; +}; + +/** + * Describes the message metalstack.admin.v2.IPServiceListRequest. + * Use `create(IPServiceListRequestSchema)` to create a new message. + */ +export const IPServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_ip, 0); + +/** + * IPServiceListResponse + * + * @generated from message metalstack.admin.v2.IPServiceListResponse + */ +export type IPServiceListResponse = Message<"metalstack.admin.v2.IPServiceListResponse"> & { + /** + * IPs are the list of ips + * + * @generated from field: repeated metalstack.api.v2.IP ips = 1; + */ + ips: IP[]; +}; + +/** + * Describes the message metalstack.admin.v2.IPServiceListResponse. + * Use `create(IPServiceListResponseSchema)` to create a new message. + */ +export const IPServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_ip, 1); + +/** + * IPService serves ip address related functions + * + * @generated from service metalstack.admin.v2.IPService + */ +export const IPService: GenService<{ + /** + * List all ips + * + * @generated from rpc metalstack.admin.v2.IPService.List + */ + list: { + methodKind: "unary"; + input: typeof IPServiceListRequestSchema; + output: typeof IPServiceListResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_ip, 0); + diff --git a/js/metalstack/admin/v2/machine_pb.d.ts b/js/metalstack/admin/v2/machine_pb.d.ts new file mode 100644 index 00000000..e64f768e --- /dev/null +++ b/js/metalstack/admin/v2/machine_pb.d.ts @@ -0,0 +1,113 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Machine, MachineQuery } from "../../api/v2/machine_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/machine.proto. + */ +export declare const file_metalstack_admin_v2_machine: GenFile; +/** + * MachineServiceGetRequest is the request payload for a machine get request + * + * @generated from message metalstack.admin.v2.MachineServiceGetRequest + */ +export type MachineServiceGetRequest = Message<"metalstack.admin.v2.MachineServiceGetRequest"> & { + /** + * UUID of the machine to get + * + * @generated from field: string uuid = 1; + */ + uuid: string; +}; +/** + * Describes the message metalstack.admin.v2.MachineServiceGetRequest. + * Use `create(MachineServiceGetRequestSchema)` to create a new message. + */ +export declare const MachineServiceGetRequestSchema: GenMessage; +/** + * MachineServiceGetResponse is the request payload for a machine get response + * + * @generated from message metalstack.admin.v2.MachineServiceGetResponse + */ +export type MachineServiceGetResponse = Message<"metalstack.admin.v2.MachineServiceGetResponse"> & { + /** + * Machine is the machine requested + * + * @generated from field: metalstack.api.v2.Machine machine = 1; + */ + machine?: Machine; +}; +/** + * Describes the message metalstack.admin.v2.MachineServiceGetResponse. + * Use `create(MachineServiceGetResponseSchema)` to create a new message. + */ +export declare const MachineServiceGetResponseSchema: GenMessage; +/** + * MachineServiceListRequest is the request payload for a machine list request + * + * @generated from message metalstack.admin.v2.MachineServiceListRequest + */ +export type MachineServiceListRequest = Message<"metalstack.admin.v2.MachineServiceListRequest"> & { + /** + * Query to list one ore more machines + * + * @generated from field: metalstack.api.v2.MachineQuery query = 1; + */ + query?: MachineQuery; + /** + * Partition for which machines should be listed, could be left empty if only one partition is present + * otherwise an error is thrown that the partition must be specified + * + * @generated from field: optional string partition = 2; + */ + partition?: string; +}; +/** + * Describes the message metalstack.admin.v2.MachineServiceListRequest. + * Use `create(MachineServiceListRequestSchema)` to create a new message. + */ +export declare const MachineServiceListRequestSchema: GenMessage; +/** + * MachineServiceListResponse is the request payload for a machine list response + * + * @generated from message metalstack.admin.v2.MachineServiceListResponse + */ +export type MachineServiceListResponse = Message<"metalstack.admin.v2.MachineServiceListResponse"> & { + /** + * Machines are the machines requested by a list request + * + * @generated from field: repeated metalstack.api.v2.Machine machines = 1; + */ + machines: Machine[]; +}; +/** + * Describes the message metalstack.admin.v2.MachineServiceListResponse. + * Use `create(MachineServiceListResponseSchema)` to create a new message. + */ +export declare const MachineServiceListResponseSchema: GenMessage; +/** + * MachineService serves machine related functions + * + * @generated from service metalstack.admin.v2.MachineService + */ +export declare const MachineService: GenService<{ + /** + * Get a machine + * + * @generated from rpc metalstack.admin.v2.MachineService.Get + */ + get: { + methodKind: "unary"; + input: typeof MachineServiceGetRequestSchema; + output: typeof MachineServiceGetResponseSchema; + }; + /** + * List all machines + * + * @generated from rpc metalstack.admin.v2.MachineService.List + */ + list: { + methodKind: "unary"; + input: typeof MachineServiceListRequestSchema; + output: typeof MachineServiceListResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/machine_pb.js b/js/metalstack/admin/v2/machine_pb.js new file mode 100644 index 00000000..3673fbcd --- /dev/null +++ b/js/metalstack/admin/v2/machine_pb.js @@ -0,0 +1,38 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/machine.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_machine } from "../../api/v2/machine_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +/** + * Describes the file metalstack/admin/v2/machine.proto. + */ +export const file_metalstack_admin_v2_machine = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL21hY2hpbmUucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMgoYTWFjaGluZVNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIkgKGU1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbWFjaGluZRgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmUifgoZTWFjaGluZVNlcnZpY2VMaXN0UmVxdWVzdBIuCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVRdWVyeRIjCglwYXJ0aXRpb24YAiABKAlCC7pICHIG0LOusQIBSACIAQFCDAoKX3BhcnRpdGlvbiJKChpNYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZRIsCghtYWNoaW5lcxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmUy9wEKDk1hY2hpbmVTZXJ2aWNlEnAKA0dldBItLm1ldGFsc3RhY2suYWRtaW4udjIuTWFjaGluZVNlcnZpY2VHZXRSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5NYWNoaW5lU2VydmljZUdldFJlc3BvbnNlIgrS8xgCAQLg8xgCEnMKBExpc3QSLi5tZXRhbHN0YWNrLmFkbWluLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCQtABChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIMTWFjaGluZVByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.admin.v2.MachineServiceGetRequest. + * Use `create(MachineServiceGetRequestSchema)` to create a new message. + */ +export const MachineServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 0); +/** + * Describes the message metalstack.admin.v2.MachineServiceGetResponse. + * Use `create(MachineServiceGetResponseSchema)` to create a new message. + */ +export const MachineServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 1); +/** + * Describes the message metalstack.admin.v2.MachineServiceListRequest. + * Use `create(MachineServiceListRequestSchema)` to create a new message. + */ +export const MachineServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 2); +/** + * Describes the message metalstack.admin.v2.MachineServiceListResponse. + * Use `create(MachineServiceListResponseSchema)` to create a new message. + */ +export const MachineServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 3); +/** + * MachineService serves machine related functions + * + * @generated from service metalstack.admin.v2.MachineService + */ +export const MachineService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_machine, 0); diff --git a/js/metalstack/admin/v2/machine_pb.ts b/js/metalstack/admin/v2/machine_pb.ts new file mode 100644 index 00000000..335481af --- /dev/null +++ b/js/metalstack/admin/v2/machine_pb.ts @@ -0,0 +1,140 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/machine.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import type { Machine, MachineQuery } from "../../api/v2/machine_pb"; +import { file_metalstack_api_v2_machine } from "../../api/v2/machine_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/machine.proto. + */ +export const file_metalstack_admin_v2_machine: GenFile = /*@__PURE__*/ + fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL21hY2hpbmUucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMgoYTWFjaGluZVNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIkgKGU1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbWFjaGluZRgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmUifgoZTWFjaGluZVNlcnZpY2VMaXN0UmVxdWVzdBIuCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVRdWVyeRIjCglwYXJ0aXRpb24YAiABKAlCC7pICHIG0LOusQIBSACIAQFCDAoKX3BhcnRpdGlvbiJKChpNYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZRIsCghtYWNoaW5lcxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmUy9wEKDk1hY2hpbmVTZXJ2aWNlEnAKA0dldBItLm1ldGFsc3RhY2suYWRtaW4udjIuTWFjaGluZVNlcnZpY2VHZXRSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5NYWNoaW5lU2VydmljZUdldFJlc3BvbnNlIgrS8xgCAQLg8xgCEnMKBExpc3QSLi5tZXRhbHN0YWNrLmFkbWluLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCQtABChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIMTWFjaGluZVByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules]); + +/** + * MachineServiceGetRequest is the request payload for a machine get request + * + * @generated from message metalstack.admin.v2.MachineServiceGetRequest + */ +export type MachineServiceGetRequest = Message<"metalstack.admin.v2.MachineServiceGetRequest"> & { + /** + * UUID of the machine to get + * + * @generated from field: string uuid = 1; + */ + uuid: string; +}; + +/** + * Describes the message metalstack.admin.v2.MachineServiceGetRequest. + * Use `create(MachineServiceGetRequestSchema)` to create a new message. + */ +export const MachineServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_machine, 0); + +/** + * MachineServiceGetResponse is the request payload for a machine get response + * + * @generated from message metalstack.admin.v2.MachineServiceGetResponse + */ +export type MachineServiceGetResponse = Message<"metalstack.admin.v2.MachineServiceGetResponse"> & { + /** + * Machine is the machine requested + * + * @generated from field: metalstack.api.v2.Machine machine = 1; + */ + machine?: Machine; +}; + +/** + * Describes the message metalstack.admin.v2.MachineServiceGetResponse. + * Use `create(MachineServiceGetResponseSchema)` to create a new message. + */ +export const MachineServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_machine, 1); + +/** + * MachineServiceListRequest is the request payload for a machine list request + * + * @generated from message metalstack.admin.v2.MachineServiceListRequest + */ +export type MachineServiceListRequest = Message<"metalstack.admin.v2.MachineServiceListRequest"> & { + /** + * Query to list one ore more machines + * + * @generated from field: metalstack.api.v2.MachineQuery query = 1; + */ + query?: MachineQuery; + + /** + * Partition for which machines should be listed, could be left empty if only one partition is present + * otherwise an error is thrown that the partition must be specified + * + * @generated from field: optional string partition = 2; + */ + partition?: string; +}; + +/** + * Describes the message metalstack.admin.v2.MachineServiceListRequest. + * Use `create(MachineServiceListRequestSchema)` to create a new message. + */ +export const MachineServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_machine, 2); + +/** + * MachineServiceListResponse is the request payload for a machine list response + * + * @generated from message metalstack.admin.v2.MachineServiceListResponse + */ +export type MachineServiceListResponse = Message<"metalstack.admin.v2.MachineServiceListResponse"> & { + /** + * Machines are the machines requested by a list request + * + * @generated from field: repeated metalstack.api.v2.Machine machines = 1; + */ + machines: Machine[]; +}; + +/** + * Describes the message metalstack.admin.v2.MachineServiceListResponse. + * Use `create(MachineServiceListResponseSchema)` to create a new message. + */ +export const MachineServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_machine, 3); + +/** + * MachineService serves machine related functions + * + * @generated from service metalstack.admin.v2.MachineService + */ +export const MachineService: GenService<{ + /** + * Get a machine + * + * @generated from rpc metalstack.admin.v2.MachineService.Get + */ + get: { + methodKind: "unary"; + input: typeof MachineServiceGetRequestSchema; + output: typeof MachineServiceGetResponseSchema; + }, + /** + * List all machines + * + * @generated from rpc metalstack.admin.v2.MachineService.List + */ + list: { + methodKind: "unary"; + input: typeof MachineServiceListRequestSchema; + output: typeof MachineServiceListResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_machine, 0); + diff --git a/js/metalstack/admin/v2/network_pb.d.ts b/js/metalstack/admin/v2/network_pb.d.ts new file mode 100644 index 00000000..643a92df --- /dev/null +++ b/js/metalstack/admin/v2/network_pb.d.ts @@ -0,0 +1,407 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Labels, UpdateLabels, UpdateMeta } from "../../api/v2/common_pb"; +import type { ChildPrefixLength, NATType, Network, NetworkAddressFamily, NetworkQuery, NetworkType } from "../../api/v2/network_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/network.proto. + */ +export declare const file_metalstack_admin_v2_network: GenFile; +/** + * NetworkServiceGetRequest + * + * @generated from message metalstack.admin.v2.NetworkServiceGetRequest + */ +export type NetworkServiceGetRequest = Message<"metalstack.admin.v2.NetworkServiceGetRequest"> & { + /** + * ID of the network to get + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.admin.v2.NetworkServiceGetRequest. + * Use `create(NetworkServiceGetRequestSchema)` to create a new message. + */ +export declare const NetworkServiceGetRequestSchema: GenMessage; +/** + * NetworkServiceGetResponse + * + * @generated from message metalstack.admin.v2.NetworkServiceGetResponse + */ +export type NetworkServiceGetResponse = Message<"metalstack.admin.v2.NetworkServiceGetResponse"> & { + /** + * Network which was requested to get + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; +/** + * Describes the message metalstack.admin.v2.NetworkServiceGetResponse. + * Use `create(NetworkServiceGetResponseSchema)` to create a new message. + */ +export declare const NetworkServiceGetResponseSchema: GenMessage; +/** + * NetworkServiceCreateRequest + * + * @generated from message metalstack.admin.v2.NetworkServiceCreateRequest + */ +export type NetworkServiceCreateRequest = Message<"metalstack.admin.v2.NetworkServiceCreateRequest"> & { + /** + * Id of this network + * + * @generated from field: optional string id = 1; + */ + id?: string; + /** + * Name of this network + * + * @generated from field: optional string name = 2; + */ + name?: string; + /** + * Description of this network + * + * @generated from field: optional string description = 3; + */ + description?: string; + /** + * Partition where this network will be created + * + * @generated from field: optional string partition = 4; + */ + partition?: string; + /** + * Project where this network belongs to + * + * @generated from field: optional string project = 5; + */ + project?: string; + /** + * Type of the network to create + * + * @generated from field: metalstack.api.v2.NetworkType type = 6; + */ + type: NetworkType; + /** + * Labels on this network + * + * @generated from field: optional metalstack.api.v2.Labels labels = 7; + */ + labels?: Labels; + /** + * Prefixes in this network + * + * @generated from field: repeated string prefixes = 8; + */ + prefixes: string[]; + /** + * Destination Prefixes in this network + * + * @generated from field: repeated string destination_prefixes = 9; + */ + destinationPrefixes: string[]; + /** + * Default Child Prefix length defines the bitlength of a child network created per addressfamily, if not specified during the allocate request + * + * @generated from field: metalstack.api.v2.ChildPrefixLength default_child_prefix_length = 10; + */ + defaultChildPrefixLength?: ChildPrefixLength; + /** + * Min Child Prefix length asserts that during child network creation the requested bit length is greater or equal the min child prefix length + * + * @generated from field: metalstack.api.v2.ChildPrefixLength min_child_prefix_length = 11; + */ + minChildPrefixLength?: ChildPrefixLength; + /** + * NATType of this network + * + * @generated from field: optional metalstack.api.v2.NATType nat_type = 12; + */ + natType?: NATType; + /** + * VRF of this network has this VNI. + * + * @generated from field: optional uint32 vrf = 13; + */ + vrf?: number; + /** + * Parent Network points to the id of the parent network if any + * + * @generated from field: optional string parent_network = 14; + */ + parentNetwork?: string; + /** + * AdditionalAnnouncableCidrs will be added to the allow list on the switch which prefixes might be announced + * + * @generated from field: repeated string additional_announcable_cidrs = 15; + */ + additionalAnnouncableCidrs: string[]; + /** + * Length per addressfamily + * + * @generated from field: optional metalstack.api.v2.ChildPrefixLength length = 16; + */ + length?: ChildPrefixLength; + /** + * AddressFamily to create, defaults to the same as the parent + * + * @generated from field: optional metalstack.api.v2.NetworkAddressFamily address_family = 17; + */ + addressFamily?: NetworkAddressFamily; +}; +/** + * Describes the message metalstack.admin.v2.NetworkServiceCreateRequest. + * Use `create(NetworkServiceCreateRequestSchema)` to create a new message. + */ +export declare const NetworkServiceCreateRequestSchema: GenMessage; +/** + * NetworkServiceUpdateRequest is the request payload for a network update request + * + * @generated from message metalstack.admin.v2.NetworkServiceUpdateRequest + */ +export type NetworkServiceUpdateRequest = Message<"metalstack.admin.v2.NetworkServiceUpdateRequest"> & { + /** + * Id of this network + * + * @generated from field: string id = 1; + */ + id: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * Name of this network + * + * @generated from field: optional string name = 3; + */ + name?: string; + /** + * Description of this network + * + * @generated from field: optional string description = 4; + */ + description?: string; + /** + * Labels to update on this network + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 5; + */ + labels?: UpdateLabels; + /** + * Prefixes in this network + * + * @generated from field: repeated string prefixes = 6; + */ + prefixes: string[]; + /** + * Destination Prefixes in this network + * + * @generated from field: repeated string destination_prefixes = 7; + */ + destinationPrefixes: string[]; + /** + * Default Child Prefix length defines the bit length of a child network created per addressfamily, of not specified during the allocate request + * + * @generated from field: optional metalstack.api.v2.ChildPrefixLength default_child_prefix_length = 10; + */ + defaultChildPrefixLength?: ChildPrefixLength; + /** + * Min Child Prefix length asserts that during child network creation the requested bit length is greater or equal the min child prefix length + * + * @generated from field: optional metalstack.api.v2.ChildPrefixLength min_child_prefix_length = 11; + */ + minChildPrefixLength?: ChildPrefixLength; + /** + * NATType of this network + * + * @generated from field: optional metalstack.api.v2.NATType nat_type = 13; + */ + natType?: NATType; + /** + * AdditionalAnnouncableCidrs will be added to the allow list on the switch which prefixes might be announced + * + * @generated from field: repeated string additional_announcable_cidrs = 16; + */ + additionalAnnouncableCidrs: string[]; + /** + * Force update, actually only prevents accidental removal of additional_announcable_cidrs which will destroy your dataplane in fact. + * + * @generated from field: bool force = 20; + */ + force: boolean; +}; +/** + * Describes the message metalstack.admin.v2.NetworkServiceUpdateRequest. + * Use `create(NetworkServiceUpdateRequestSchema)` to create a new message. + */ +export declare const NetworkServiceUpdateRequestSchema: GenMessage; +/** + * NetworkServiceDeleteRequest is the request payload for a network delete request + * + * @generated from message metalstack.admin.v2.NetworkServiceDeleteRequest + */ +export type NetworkServiceDeleteRequest = Message<"metalstack.admin.v2.NetworkServiceDeleteRequest"> & { + /** + * ID of the network to get + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.admin.v2.NetworkServiceDeleteRequest. + * Use `create(NetworkServiceDeleteRequestSchema)` to create a new message. + */ +export declare const NetworkServiceDeleteRequestSchema: GenMessage; +/** + * NetworkServiceListRequest + * + * @generated from message metalstack.admin.v2.NetworkServiceListRequest + */ +export type NetworkServiceListRequest = Message<"metalstack.admin.v2.NetworkServiceListRequest"> & { + /** + * Query which specifies which networks to return + * + * @generated from field: metalstack.api.v2.NetworkQuery query = 2; + */ + query?: NetworkQuery; +}; +/** + * Describes the message metalstack.admin.v2.NetworkServiceListRequest. + * Use `create(NetworkServiceListRequestSchema)` to create a new message. + */ +export declare const NetworkServiceListRequestSchema: GenMessage; +/** + * NetworkServiceCreateResponse is the response payload for a network create request + * + * @generated from message metalstack.admin.v2.NetworkServiceCreateResponse + */ +export type NetworkServiceCreateResponse = Message<"metalstack.admin.v2.NetworkServiceCreateResponse"> & { + /** + * Network the network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; +/** + * Describes the message metalstack.admin.v2.NetworkServiceCreateResponse. + * Use `create(NetworkServiceCreateResponseSchema)` to create a new message. + */ +export declare const NetworkServiceCreateResponseSchema: GenMessage; +/** + * NetworkServiceUpdateResponse is the response payload for a network update request + * + * @generated from message metalstack.admin.v2.NetworkServiceUpdateResponse + */ +export type NetworkServiceUpdateResponse = Message<"metalstack.admin.v2.NetworkServiceUpdateResponse"> & { + /** + * Network the network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; +/** + * Describes the message metalstack.admin.v2.NetworkServiceUpdateResponse. + * Use `create(NetworkServiceUpdateResponseSchema)` to create a new message. + */ +export declare const NetworkServiceUpdateResponseSchema: GenMessage; +/** + * NetworkServiceCapacityResponse is the response payload for a network delete request + * + * @generated from message metalstack.admin.v2.NetworkServiceDeleteResponse + */ +export type NetworkServiceDeleteResponse = Message<"metalstack.admin.v2.NetworkServiceDeleteResponse"> & { + /** + * Network the network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; +/** + * Describes the message metalstack.admin.v2.NetworkServiceDeleteResponse. + * Use `create(NetworkServiceDeleteResponseSchema)` to create a new message. + */ +export declare const NetworkServiceDeleteResponseSchema: GenMessage; +/** + * NetworkServiceListResponse + * + * @generated from message metalstack.admin.v2.NetworkServiceListResponse + */ +export type NetworkServiceListResponse = Message<"metalstack.admin.v2.NetworkServiceListResponse"> & { + /** + * Networks are the requested networks + * + * @generated from field: repeated metalstack.api.v2.Network networks = 1; + */ + networks: Network[]; +}; +/** + * Describes the message metalstack.admin.v2.NetworkServiceListResponse. + * Use `create(NetworkServiceListResponseSchema)` to create a new message. + */ +export declare const NetworkServiceListResponseSchema: GenMessage; +/** + * NetworkService serves network address related functions + * + * @generated from service metalstack.admin.v2.NetworkService + */ +export declare const NetworkService: GenService<{ + /** + * Get a network + * + * @generated from rpc metalstack.admin.v2.NetworkService.Get + */ + get: { + methodKind: "unary"; + input: typeof NetworkServiceGetRequestSchema; + output: typeof NetworkServiceGetResponseSchema; + }; + /** + * Create a network + * + * @generated from rpc metalstack.admin.v2.NetworkService.Create + */ + create: { + methodKind: "unary"; + input: typeof NetworkServiceCreateRequestSchema; + output: typeof NetworkServiceCreateResponseSchema; + }; + /** + * Update a network + * + * @generated from rpc metalstack.admin.v2.NetworkService.Update + */ + update: { + methodKind: "unary"; + input: typeof NetworkServiceUpdateRequestSchema; + output: typeof NetworkServiceUpdateResponseSchema; + }; + /** + * Delete a network + * + * @generated from rpc metalstack.admin.v2.NetworkService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof NetworkServiceDeleteRequestSchema; + output: typeof NetworkServiceDeleteResponseSchema; + }; + /** + * List all networks + * + * @generated from rpc metalstack.admin.v2.NetworkService.List + */ + list: { + methodKind: "unary"; + input: typeof NetworkServiceListRequestSchema; + output: typeof NetworkServiceListResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/network_pb.js b/js/metalstack/admin/v2/network_pb.js new file mode 100644 index 00000000..ec490382 --- /dev/null +++ b/js/metalstack/admin/v2/network_pb.js @@ -0,0 +1,68 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/network.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_network } from "../../api/v2/network_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +/** + * Describes the file metalstack/admin/v2/network.proto. + */ +export const file_metalstack_admin_v2_network = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL25ldHdvcmsucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMgoYTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABIkgKGU5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsizwcKG05ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIbCgJpZBgBIAEoCUIKukgHcgUQAhiAAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgDiAEBEh4KB3Byb2plY3QYBSABKAlCCLpIBXIDsAEBSASIAQESNgoEdHlwZRgGIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARIuCgZsYWJlbHMYByABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARIeCghwcmVmaXhlcxgIIAMoCUIMukgJkgEG4LOusQIBEioKFGRlc3RpbmF0aW9uX3ByZWZpeGVzGAkgAygJQgy6SAmSAQbgs66xAgESSQobZGVmYXVsdF9jaGlsZF9wcmVmaXhfbGVuZ3RoGAogASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGgSRQoXbWluX2NoaWxkX3ByZWZpeF9sZW5ndGgYCyABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBI7CghuYXRfdHlwZRgMIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAaIAQESEAoDdnJmGA0gASgNSAeIAQESKAoOcGFyZW50X25ldHdvcmsYDiABKAlCC7pICHIGwLOusQIBSAiIAQESMgocYWRkaXRpb25hbF9hbm5vdW5jYWJsZV9jaWRycxgPIAMoCUIMukgJkgEG4LOusQIBEjkKBmxlbmd0aBgQIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoSAmIAQESTgoOYWRkcmVzc19mYW1pbHkYESABKA4yJy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrQWRkcmVzc0ZhbWlseUIIukgFggECEAFICogBAUIFCgNfaWRCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCCQoHX2xhYmVsc0ILCglfbmF0X3R5cGVCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmtCCQoHX2xlbmd0aEIRCg9fYWRkcmVzc19mYW1pbHkixAUKG05ldHdvcmtTZXJ2aWNlVXBkYXRlUmVxdWVzdBIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARI0CgZsYWJlbHMYBSABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIAogBARIeCghwcmVmaXhlcxgGIAMoCUIMukgJkgEG4LOusQIBEioKFGRlc3RpbmF0aW9uX3ByZWZpeGVzGAcgAygJQgy6SAmSAQbgs66xAgESTgobZGVmYXVsdF9jaGlsZF9wcmVmaXhfbGVuZ3RoGAogASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIA4gBARJKChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoSASIAQESOwoIbmF0X3R5cGUYDSABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5OQVRUeXBlQgi6SAWCAQIQAUgFiAEBEjIKHGFkZGl0aW9uYWxfYW5ub3VuY2FibGVfY2lkcnMYECADKAlCDLpICZIBBuCzrrECARINCgVmb3JjZRgUIAEoCEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVsc0IeChxfZGVmYXVsdF9jaGlsZF9wcmVmaXhfbGVuZ3RoQhoKGF9taW5fY2hpbGRfcHJlZml4X2xlbmd0aEILCglfbmF0X3R5cGUiNQobTmV0d29ya1NlcnZpY2VEZWxldGVSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABIksKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkiSwocTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJLChxOZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsiSgoaTmV0d29ya1NlcnZpY2VMaXN0UmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrMuUECg5OZXR3b3JrU2VydmljZRJwCgNHZXQSLS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VHZXRSZXNwb25zZSIK0vMYAgEC4PMYAhJ4CgZDcmVhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEngKBlVwZGF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESeAoGRGVsZXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARJzCgRMaXN0Ei4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAkLQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDE5ldHdvcmtQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_network, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.admin.v2.NetworkServiceGetRequest. + * Use `create(NetworkServiceGetRequestSchema)` to create a new message. + */ +export const NetworkServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 0); +/** + * Describes the message metalstack.admin.v2.NetworkServiceGetResponse. + * Use `create(NetworkServiceGetResponseSchema)` to create a new message. + */ +export const NetworkServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 1); +/** + * Describes the message metalstack.admin.v2.NetworkServiceCreateRequest. + * Use `create(NetworkServiceCreateRequestSchema)` to create a new message. + */ +export const NetworkServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 2); +/** + * Describes the message metalstack.admin.v2.NetworkServiceUpdateRequest. + * Use `create(NetworkServiceUpdateRequestSchema)` to create a new message. + */ +export const NetworkServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 3); +/** + * Describes the message metalstack.admin.v2.NetworkServiceDeleteRequest. + * Use `create(NetworkServiceDeleteRequestSchema)` to create a new message. + */ +export const NetworkServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 4); +/** + * Describes the message metalstack.admin.v2.NetworkServiceListRequest. + * Use `create(NetworkServiceListRequestSchema)` to create a new message. + */ +export const NetworkServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 5); +/** + * Describes the message metalstack.admin.v2.NetworkServiceCreateResponse. + * Use `create(NetworkServiceCreateResponseSchema)` to create a new message. + */ +export const NetworkServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 6); +/** + * Describes the message metalstack.admin.v2.NetworkServiceUpdateResponse. + * Use `create(NetworkServiceUpdateResponseSchema)` to create a new message. + */ +export const NetworkServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 7); +/** + * Describes the message metalstack.admin.v2.NetworkServiceDeleteResponse. + * Use `create(NetworkServiceDeleteResponseSchema)` to create a new message. + */ +export const NetworkServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 8); +/** + * Describes the message metalstack.admin.v2.NetworkServiceListResponse. + * Use `create(NetworkServiceListResponseSchema)` to create a new message. + */ +export const NetworkServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 9); +/** + * NetworkService serves network address related functions + * + * @generated from service metalstack.admin.v2.NetworkService + */ +export const NetworkService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_network, 0); diff --git a/js/metalstack/admin/v2/network_pb.ts b/js/metalstack/admin/v2/network_pb.ts new file mode 100644 index 00000000..a9f612ed --- /dev/null +++ b/js/metalstack/admin/v2/network_pb.ts @@ -0,0 +1,478 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/network.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Labels, UpdateLabels, UpdateMeta } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import type { ChildPrefixLength, NATType, Network, NetworkAddressFamily, NetworkQuery, NetworkType } from "../../api/v2/network_pb"; +import { file_metalstack_api_v2_network } from "../../api/v2/network_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/network.proto. + */ +export const file_metalstack_admin_v2_network: GenFile = /*@__PURE__*/ + fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL25ldHdvcmsucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMgoYTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABIkgKGU5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsizwcKG05ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIbCgJpZBgBIAEoCUIKukgHcgUQAhiAAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgDiAEBEh4KB3Byb2plY3QYBSABKAlCCLpIBXIDsAEBSASIAQESNgoEdHlwZRgGIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARIuCgZsYWJlbHMYByABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARIeCghwcmVmaXhlcxgIIAMoCUIMukgJkgEG4LOusQIBEioKFGRlc3RpbmF0aW9uX3ByZWZpeGVzGAkgAygJQgy6SAmSAQbgs66xAgESSQobZGVmYXVsdF9jaGlsZF9wcmVmaXhfbGVuZ3RoGAogASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGgSRQoXbWluX2NoaWxkX3ByZWZpeF9sZW5ndGgYCyABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBI7CghuYXRfdHlwZRgMIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAaIAQESEAoDdnJmGA0gASgNSAeIAQESKAoOcGFyZW50X25ldHdvcmsYDiABKAlCC7pICHIGwLOusQIBSAiIAQESMgocYWRkaXRpb25hbF9hbm5vdW5jYWJsZV9jaWRycxgPIAMoCUIMukgJkgEG4LOusQIBEjkKBmxlbmd0aBgQIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoSAmIAQESTgoOYWRkcmVzc19mYW1pbHkYESABKA4yJy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrQWRkcmVzc0ZhbWlseUIIukgFggECEAFICogBAUIFCgNfaWRCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCCQoHX2xhYmVsc0ILCglfbmF0X3R5cGVCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmtCCQoHX2xlbmd0aEIRCg9fYWRkcmVzc19mYW1pbHkixAUKG05ldHdvcmtTZXJ2aWNlVXBkYXRlUmVxdWVzdBIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARI0CgZsYWJlbHMYBSABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIAogBARIeCghwcmVmaXhlcxgGIAMoCUIMukgJkgEG4LOusQIBEioKFGRlc3RpbmF0aW9uX3ByZWZpeGVzGAcgAygJQgy6SAmSAQbgs66xAgESTgobZGVmYXVsdF9jaGlsZF9wcmVmaXhfbGVuZ3RoGAogASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIA4gBARJKChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoSASIAQESOwoIbmF0X3R5cGUYDSABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5OQVRUeXBlQgi6SAWCAQIQAUgFiAEBEjIKHGFkZGl0aW9uYWxfYW5ub3VuY2FibGVfY2lkcnMYECADKAlCDLpICZIBBuCzrrECARINCgVmb3JjZRgUIAEoCEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVsc0IeChxfZGVmYXVsdF9jaGlsZF9wcmVmaXhfbGVuZ3RoQhoKGF9taW5fY2hpbGRfcHJlZml4X2xlbmd0aEILCglfbmF0X3R5cGUiNQobTmV0d29ya1NlcnZpY2VEZWxldGVSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABIksKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkiSwocTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJLChxOZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsiSgoaTmV0d29ya1NlcnZpY2VMaXN0UmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrMuUECg5OZXR3b3JrU2VydmljZRJwCgNHZXQSLS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VHZXRSZXNwb25zZSIK0vMYAgEC4PMYAhJ4CgZDcmVhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEngKBlVwZGF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESeAoGRGVsZXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARJzCgRMaXN0Ei4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAkLQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDE5ldHdvcmtQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_network, file_metalstack_api_v2_predefined_rules]); + +/** + * NetworkServiceGetRequest + * + * @generated from message metalstack.admin.v2.NetworkServiceGetRequest + */ +export type NetworkServiceGetRequest = Message<"metalstack.admin.v2.NetworkServiceGetRequest"> & { + /** + * ID of the network to get + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.admin.v2.NetworkServiceGetRequest. + * Use `create(NetworkServiceGetRequestSchema)` to create a new message. + */ +export const NetworkServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_network, 0); + +/** + * NetworkServiceGetResponse + * + * @generated from message metalstack.admin.v2.NetworkServiceGetResponse + */ +export type NetworkServiceGetResponse = Message<"metalstack.admin.v2.NetworkServiceGetResponse"> & { + /** + * Network which was requested to get + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; + +/** + * Describes the message metalstack.admin.v2.NetworkServiceGetResponse. + * Use `create(NetworkServiceGetResponseSchema)` to create a new message. + */ +export const NetworkServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_network, 1); + +/** + * NetworkServiceCreateRequest + * + * @generated from message metalstack.admin.v2.NetworkServiceCreateRequest + */ +export type NetworkServiceCreateRequest = Message<"metalstack.admin.v2.NetworkServiceCreateRequest"> & { + /** + * Id of this network + * + * @generated from field: optional string id = 1; + */ + id?: string; + + /** + * Name of this network + * + * @generated from field: optional string name = 2; + */ + name?: string; + + /** + * Description of this network + * + * @generated from field: optional string description = 3; + */ + description?: string; + + /** + * Partition where this network will be created + * + * @generated from field: optional string partition = 4; + */ + partition?: string; + + /** + * Project where this network belongs to + * + * @generated from field: optional string project = 5; + */ + project?: string; + + /** + * Type of the network to create + * + * @generated from field: metalstack.api.v2.NetworkType type = 6; + */ + type: NetworkType; + + /** + * Labels on this network + * + * @generated from field: optional metalstack.api.v2.Labels labels = 7; + */ + labels?: Labels; + + /** + * Prefixes in this network + * + * @generated from field: repeated string prefixes = 8; + */ + prefixes: string[]; + + /** + * Destination Prefixes in this network + * + * @generated from field: repeated string destination_prefixes = 9; + */ + destinationPrefixes: string[]; + + /** + * Default Child Prefix length defines the bitlength of a child network created per addressfamily, if not specified during the allocate request + * + * @generated from field: metalstack.api.v2.ChildPrefixLength default_child_prefix_length = 10; + */ + defaultChildPrefixLength?: ChildPrefixLength; + + /** + * Min Child Prefix length asserts that during child network creation the requested bit length is greater or equal the min child prefix length + * + * @generated from field: metalstack.api.v2.ChildPrefixLength min_child_prefix_length = 11; + */ + minChildPrefixLength?: ChildPrefixLength; + + /** + * NATType of this network + * + * @generated from field: optional metalstack.api.v2.NATType nat_type = 12; + */ + natType?: NATType; + + /** + * VRF of this network has this VNI. + * + * @generated from field: optional uint32 vrf = 13; + */ + vrf?: number; + + /** + * Parent Network points to the id of the parent network if any + * + * @generated from field: optional string parent_network = 14; + */ + parentNetwork?: string; + + /** + * AdditionalAnnouncableCidrs will be added to the allow list on the switch which prefixes might be announced + * + * @generated from field: repeated string additional_announcable_cidrs = 15; + */ + additionalAnnouncableCidrs: string[]; + + /** + * Length per addressfamily + * + * @generated from field: optional metalstack.api.v2.ChildPrefixLength length = 16; + */ + length?: ChildPrefixLength; + + /** + * AddressFamily to create, defaults to the same as the parent + * + * @generated from field: optional metalstack.api.v2.NetworkAddressFamily address_family = 17; + */ + addressFamily?: NetworkAddressFamily; +}; + +/** + * Describes the message metalstack.admin.v2.NetworkServiceCreateRequest. + * Use `create(NetworkServiceCreateRequestSchema)` to create a new message. + */ +export const NetworkServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_network, 2); + +/** + * NetworkServiceUpdateRequest is the request payload for a network update request + * + * @generated from message metalstack.admin.v2.NetworkServiceUpdateRequest + */ +export type NetworkServiceUpdateRequest = Message<"metalstack.admin.v2.NetworkServiceUpdateRequest"> & { + /** + * Id of this network + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * Name of this network + * + * @generated from field: optional string name = 3; + */ + name?: string; + + /** + * Description of this network + * + * @generated from field: optional string description = 4; + */ + description?: string; + + /** + * Labels to update on this network + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 5; + */ + labels?: UpdateLabels; + + /** + * Prefixes in this network + * + * @generated from field: repeated string prefixes = 6; + */ + prefixes: string[]; + + /** + * Destination Prefixes in this network + * + * @generated from field: repeated string destination_prefixes = 7; + */ + destinationPrefixes: string[]; + + /** + * Default Child Prefix length defines the bit length of a child network created per addressfamily, of not specified during the allocate request + * + * @generated from field: optional metalstack.api.v2.ChildPrefixLength default_child_prefix_length = 10; + */ + defaultChildPrefixLength?: ChildPrefixLength; + + /** + * Min Child Prefix length asserts that during child network creation the requested bit length is greater or equal the min child prefix length + * + * @generated from field: optional metalstack.api.v2.ChildPrefixLength min_child_prefix_length = 11; + */ + minChildPrefixLength?: ChildPrefixLength; + + /** + * NATType of this network + * + * @generated from field: optional metalstack.api.v2.NATType nat_type = 13; + */ + natType?: NATType; + + /** + * AdditionalAnnouncableCidrs will be added to the allow list on the switch which prefixes might be announced + * + * @generated from field: repeated string additional_announcable_cidrs = 16; + */ + additionalAnnouncableCidrs: string[]; + + /** + * Force update, actually only prevents accidental removal of additional_announcable_cidrs which will destroy your dataplane in fact. + * + * @generated from field: bool force = 20; + */ + force: boolean; +}; + +/** + * Describes the message metalstack.admin.v2.NetworkServiceUpdateRequest. + * Use `create(NetworkServiceUpdateRequestSchema)` to create a new message. + */ +export const NetworkServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_network, 3); + +/** + * NetworkServiceDeleteRequest is the request payload for a network delete request + * + * @generated from message metalstack.admin.v2.NetworkServiceDeleteRequest + */ +export type NetworkServiceDeleteRequest = Message<"metalstack.admin.v2.NetworkServiceDeleteRequest"> & { + /** + * ID of the network to get + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.admin.v2.NetworkServiceDeleteRequest. + * Use `create(NetworkServiceDeleteRequestSchema)` to create a new message. + */ +export const NetworkServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_network, 4); + +/** + * NetworkServiceListRequest + * + * @generated from message metalstack.admin.v2.NetworkServiceListRequest + */ +export type NetworkServiceListRequest = Message<"metalstack.admin.v2.NetworkServiceListRequest"> & { + /** + * Query which specifies which networks to return + * + * @generated from field: metalstack.api.v2.NetworkQuery query = 2; + */ + query?: NetworkQuery; +}; + +/** + * Describes the message metalstack.admin.v2.NetworkServiceListRequest. + * Use `create(NetworkServiceListRequestSchema)` to create a new message. + */ +export const NetworkServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_network, 5); + +/** + * NetworkServiceCreateResponse is the response payload for a network create request + * + * @generated from message metalstack.admin.v2.NetworkServiceCreateResponse + */ +export type NetworkServiceCreateResponse = Message<"metalstack.admin.v2.NetworkServiceCreateResponse"> & { + /** + * Network the network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; + +/** + * Describes the message metalstack.admin.v2.NetworkServiceCreateResponse. + * Use `create(NetworkServiceCreateResponseSchema)` to create a new message. + */ +export const NetworkServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_network, 6); + +/** + * NetworkServiceUpdateResponse is the response payload for a network update request + * + * @generated from message metalstack.admin.v2.NetworkServiceUpdateResponse + */ +export type NetworkServiceUpdateResponse = Message<"metalstack.admin.v2.NetworkServiceUpdateResponse"> & { + /** + * Network the network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; + +/** + * Describes the message metalstack.admin.v2.NetworkServiceUpdateResponse. + * Use `create(NetworkServiceUpdateResponseSchema)` to create a new message. + */ +export const NetworkServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_network, 7); + +/** + * NetworkServiceCapacityResponse is the response payload for a network delete request + * + * @generated from message metalstack.admin.v2.NetworkServiceDeleteResponse + */ +export type NetworkServiceDeleteResponse = Message<"metalstack.admin.v2.NetworkServiceDeleteResponse"> & { + /** + * Network the network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; + +/** + * Describes the message metalstack.admin.v2.NetworkServiceDeleteResponse. + * Use `create(NetworkServiceDeleteResponseSchema)` to create a new message. + */ +export const NetworkServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_network, 8); + +/** + * NetworkServiceListResponse + * + * @generated from message metalstack.admin.v2.NetworkServiceListResponse + */ +export type NetworkServiceListResponse = Message<"metalstack.admin.v2.NetworkServiceListResponse"> & { + /** + * Networks are the requested networks + * + * @generated from field: repeated metalstack.api.v2.Network networks = 1; + */ + networks: Network[]; +}; + +/** + * Describes the message metalstack.admin.v2.NetworkServiceListResponse. + * Use `create(NetworkServiceListResponseSchema)` to create a new message. + */ +export const NetworkServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_network, 9); + +/** + * NetworkService serves network address related functions + * + * @generated from service metalstack.admin.v2.NetworkService + */ +export const NetworkService: GenService<{ + /** + * Get a network + * + * @generated from rpc metalstack.admin.v2.NetworkService.Get + */ + get: { + methodKind: "unary"; + input: typeof NetworkServiceGetRequestSchema; + output: typeof NetworkServiceGetResponseSchema; + }, + /** + * Create a network + * + * @generated from rpc metalstack.admin.v2.NetworkService.Create + */ + create: { + methodKind: "unary"; + input: typeof NetworkServiceCreateRequestSchema; + output: typeof NetworkServiceCreateResponseSchema; + }, + /** + * Update a network + * + * @generated from rpc metalstack.admin.v2.NetworkService.Update + */ + update: { + methodKind: "unary"; + input: typeof NetworkServiceUpdateRequestSchema; + output: typeof NetworkServiceUpdateResponseSchema; + }, + /** + * Delete a network + * + * @generated from rpc metalstack.admin.v2.NetworkService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof NetworkServiceDeleteRequestSchema; + output: typeof NetworkServiceDeleteResponseSchema; + }, + /** + * List all networks + * + * @generated from rpc metalstack.admin.v2.NetworkService.List + */ + list: { + methodKind: "unary"; + input: typeof NetworkServiceListRequestSchema; + output: typeof NetworkServiceListResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_network, 0); + diff --git a/js/metalstack/admin/v2/partition_pb.d.ts b/js/metalstack/admin/v2/partition_pb.d.ts new file mode 100644 index 00000000..183c109d --- /dev/null +++ b/js/metalstack/admin/v2/partition_pb.d.ts @@ -0,0 +1,341 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { UpdateLabels, UpdateMeta } from "../../api/v2/common_pb"; +import type { DNSServer, NTPServer, Partition, PartitionBootConfiguration } from "../../api/v2/partition_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/partition.proto. + */ +export declare const file_metalstack_admin_v2_partition: GenFile; +/** + * PartitionServiceCreateRequest is the request payload for a partition create request + * + * @generated from message metalstack.admin.v2.PartitionServiceCreateRequest + */ +export type PartitionServiceCreateRequest = Message<"metalstack.admin.v2.PartitionServiceCreateRequest"> & { + /** + * Partition the partition + * + * @generated from field: metalstack.api.v2.Partition partition = 1; + */ + partition?: Partition; +}; +/** + * Describes the message metalstack.admin.v2.PartitionServiceCreateRequest. + * Use `create(PartitionServiceCreateRequestSchema)` to create a new message. + */ +export declare const PartitionServiceCreateRequestSchema: GenMessage; +/** + * PartitionServiceUpdateRequest is the request payload for a partition update request + * + * @generated from message metalstack.admin.v2.PartitionServiceUpdateRequest + */ +export type PartitionServiceUpdateRequest = Message<"metalstack.admin.v2.PartitionServiceUpdateRequest"> & { + /** + * ID of this partition + * + * @generated from field: string id = 1; + */ + id: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * Description of this partition + * + * @generated from field: optional string description = 3; + */ + description?: string; + /** + * PartitionBootConfiguration defines how metal-hammer boots + * + * @generated from field: metalstack.api.v2.PartitionBootConfiguration boot_configuration = 4; + */ + bootConfiguration?: PartitionBootConfiguration; + /** + * DNSServers for this partition + * + * @generated from field: repeated metalstack.api.v2.DNSServer dns_server = 5; + */ + dnsServer: DNSServer[]; + /** + * NTPServers for this partition + * + * @generated from field: repeated metalstack.api.v2.NTPServer ntp_server = 6; + */ + ntpServer: NTPServer[]; + /** + * ManagementServiceAddresses defines where the management is reachable + * should be in the form : + * + * @generated from field: repeated string mgmt_service_addresses = 7; + */ + mgmtServiceAddresses: string[]; + /** + * Labels to update on this network + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 8; + */ + labels?: UpdateLabels; +}; +/** + * Describes the message metalstack.admin.v2.PartitionServiceUpdateRequest. + * Use `create(PartitionServiceUpdateRequestSchema)` to create a new message. + */ +export declare const PartitionServiceUpdateRequestSchema: GenMessage; +/** + * PartitionServiceDeleteRequest is the request payload for a partition delete request + * + * @generated from message metalstack.admin.v2.PartitionServiceDeleteRequest + */ +export type PartitionServiceDeleteRequest = Message<"metalstack.admin.v2.PartitionServiceDeleteRequest"> & { + /** + * ID of the partition to get + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.admin.v2.PartitionServiceDeleteRequest. + * Use `create(PartitionServiceDeleteRequestSchema)` to create a new message. + */ +export declare const PartitionServiceDeleteRequestSchema: GenMessage; +/** + * PartitionServiceCreateResponse is the response payload for a partition create request + * + * @generated from message metalstack.admin.v2.PartitionServiceCreateResponse + */ +export type PartitionServiceCreateResponse = Message<"metalstack.admin.v2.PartitionServiceCreateResponse"> & { + /** + * Partition the partition + * + * @generated from field: metalstack.api.v2.Partition partition = 1; + */ + partition?: Partition; +}; +/** + * Describes the message metalstack.admin.v2.PartitionServiceCreateResponse. + * Use `create(PartitionServiceCreateResponseSchema)` to create a new message. + */ +export declare const PartitionServiceCreateResponseSchema: GenMessage; +/** + * PartitionServiceUpdateResponse is the response payload for a partition update request + * + * @generated from message metalstack.admin.v2.PartitionServiceUpdateResponse + */ +export type PartitionServiceUpdateResponse = Message<"metalstack.admin.v2.PartitionServiceUpdateResponse"> & { + /** + * Partition the partition + * + * @generated from field: metalstack.api.v2.Partition partition = 1; + */ + partition?: Partition; +}; +/** + * Describes the message metalstack.admin.v2.PartitionServiceUpdateResponse. + * Use `create(PartitionServiceUpdateResponseSchema)` to create a new message. + */ +export declare const PartitionServiceUpdateResponseSchema: GenMessage; +/** + * PartitionServiceCapacityResponse is the response payload for a partition delete request + * + * @generated from message metalstack.admin.v2.PartitionServiceDeleteResponse + */ +export type PartitionServiceDeleteResponse = Message<"metalstack.admin.v2.PartitionServiceDeleteResponse"> & { + /** + * Partition the partition + * + * @generated from field: metalstack.api.v2.Partition partition = 1; + */ + partition?: Partition; +}; +/** + * Describes the message metalstack.admin.v2.PartitionServiceDeleteResponse. + * Use `create(PartitionServiceDeleteResponseSchema)` to create a new message. + */ +export declare const PartitionServiceDeleteResponseSchema: GenMessage; +/** + * PartitionServiceListRequest is the request payload for a partition capacity request + * + * @generated from message metalstack.admin.v2.PartitionServiceCapacityRequest + */ +export type PartitionServiceCapacityRequest = Message<"metalstack.admin.v2.PartitionServiceCapacityRequest"> & { + /** + * ID of the partition to get + * + * @generated from field: optional string id = 1; + */ + id?: string; + /** + * Size of machines to show the capacity + * + * @generated from field: optional string size = 2; + */ + size?: string; + /** + * Project of machines to show the capacity + * + * @generated from field: optional string project = 3; + */ + project?: string; +}; +/** + * Describes the message metalstack.admin.v2.PartitionServiceCapacityRequest. + * Use `create(PartitionServiceCapacityRequestSchema)` to create a new message. + */ +export declare const PartitionServiceCapacityRequestSchema: GenMessage; +/** + * PartitionServiceCapacityResponse is the response payload for a partition capacity request + * + * @generated from message metalstack.admin.v2.PartitionServiceCapacityResponse + */ +export type PartitionServiceCapacityResponse = Message<"metalstack.admin.v2.PartitionServiceCapacityResponse"> & { + /** + * Size is the size id correlating to all counts in this server capacity. + * + * @generated from field: string size = 1; + */ + size: string; + /** + * Total is the total amount of machines for this size. + * + * @generated from field: int64 total = 2; + */ + total: bigint; + /** + * PhonedHome is the amount of machines that are currently in the provisioning state "phoned home". + * + * @generated from field: int64 phoned_home = 3; + */ + phonedHome: bigint; + /** + * Waiting is the amount of machines that are currently in the provisioning state "waiting". + * + * @generated from field: int64 waiting = 4; + */ + waiting: bigint; + /** + * Other is the amount of machines that are neither in the provisioning state waiting nor in phoned home but in another provisioning state. + * + * @generated from field: int64 other = 5; + */ + other: bigint; + /** + * OtherMachines contains the machine IDs for machines that were classified into "Other". + * + * @generated from field: repeated string other_machines = 6; + */ + otherMachines: string[]; + /** + * Allocated is the amount of machines that are currently allocated. + * + * @generated from field: int64 allocated = 7; + */ + allocated: bigint; + /** + * Allocatable is the amount of machines in a partition is the amount of machines that can be allocated. + * Effectively this is the amount of waiting machines minus the machines that are unavailable due to machine state or un-allocatable. Size reservations are not considered in this count. + * + * @generated from field: int64 allocatable = 8; + */ + allocatable: bigint; + /** + * Free is the amount of machines in a partition that can be freely allocated at any given moment by a project. + * Effectively this is the amount of waiting machines minus the machines that are unavailable due to machine state or un-allocatable due to size reservations. + * + * @generated from field: int64 free = 9; + */ + free: bigint; + /** + * Unavailable is the amount of machine in a partition that are currently not allocatable because they are not waiting or + * not in the machine state "available", e.g. locked or reserved. + * + * @generated from field: int64 unavailable = 10; + */ + unavailable: bigint; + /** + * Faulty is the amount of machines that are neither allocated nor in the pool of available machines because they report an error. + * + * @generated from field: int64 faulty = 11; + */ + faulty: bigint; + /** + * FaultyMachines contains the machine IDs for machines that were classified into "Faulty". + * + * @generated from field: repeated string faulty_machines = 12; + */ + faultyMachines: string[]; + /** + * Reservations is the amount of reservations made for this size. + * + * @generated from field: int64 reservations = 13; + */ + reservations: bigint; + /** + * UsedReservations is the amount of reservations already used up for this size. + * + * @generated from field: int64 used_reservations = 14; + */ + usedReservations: bigint; + /** + * RemainingReservations is the amount of reservations remaining for this size. + * + * @generated from field: int64 remaining_reservations = 15; + */ + remainingReservations: bigint; +}; +/** + * Describes the message metalstack.admin.v2.PartitionServiceCapacityResponse. + * Use `create(PartitionServiceCapacityResponseSchema)` to create a new message. + */ +export declare const PartitionServiceCapacityResponseSchema: GenMessage; +/** + * PartitionService serves partition address related functions + * + * @generated from service metalstack.admin.v2.PartitionService + */ +export declare const PartitionService: GenService<{ + /** + * Create a partition + * + * @generated from rpc metalstack.admin.v2.PartitionService.Create + */ + create: { + methodKind: "unary"; + input: typeof PartitionServiceCreateRequestSchema; + output: typeof PartitionServiceCreateResponseSchema; + }; + /** + * Update a partition + * + * @generated from rpc metalstack.admin.v2.PartitionService.Update + */ + update: { + methodKind: "unary"; + input: typeof PartitionServiceUpdateRequestSchema; + output: typeof PartitionServiceUpdateResponseSchema; + }; + /** + * Delete a partition + * + * @generated from rpc metalstack.admin.v2.PartitionService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof PartitionServiceDeleteRequestSchema; + output: typeof PartitionServiceDeleteResponseSchema; + }; + /** + * Capacity of a partitions + * + * @generated from rpc metalstack.admin.v2.PartitionService.Capacity + */ + capacity: { + methodKind: "unary"; + input: typeof PartitionServiceCapacityRequestSchema; + output: typeof PartitionServiceCapacityResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/partition_pb.js b/js/metalstack/admin/v2/partition_pb.js new file mode 100644 index 00000000..3609cd75 --- /dev/null +++ b/js/metalstack/admin/v2/partition_pb.js @@ -0,0 +1,58 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/partition.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_partition } from "../../api/v2/partition_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +/** + * Describes the file metalstack/admin/v2/partition.proto. + */ +export const file_metalstack_admin_v2_partition = /*@__PURE__*/ fileDesc("CiNtZXRhbHN0YWNrL2FkbWluL3YyL3BhcnRpdGlvbi5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiJQCh1QYXJ0aXRpb25TZXJ2aWNlQ3JlYXRlUmVxdWVzdBIvCglwYXJ0aXRpb24YASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24izgMKHVBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgAiAEBEkkKEmJvb3RfY29uZmlndXJhdGlvbhgEIAEoCzItLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbkJvb3RDb25maWd1cmF0aW9uEjoKCmRuc19zZXJ2ZXIYBSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYBiADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEh4KFm1nbXRfc2VydmljZV9hZGRyZXNzZXMYByADKAkSNAoGbGFiZWxzGAggASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAGIAQFCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiNwodUGFydGl0aW9uU2VydmljZURlbGV0ZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiUQoeUGFydGl0aW9uU2VydmljZUNyZWF0ZVJlc3BvbnNlEi8KCXBhcnRpdGlvbhgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbiJRCh5QYXJ0aXRpb25TZXJ2aWNlVXBkYXRlUmVzcG9uc2USLwoJcGFydGl0aW9uGAEgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uIlEKHlBhcnRpdGlvblNlcnZpY2VEZWxldGVSZXNwb25zZRIvCglwYXJ0aXRpb24YASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24imQEKH1BhcnRpdGlvblNlcnZpY2VDYXBhY2l0eVJlcXVlc3QSGwoCaWQYASABKAlCCrpIB3IFEAIYgAFIAIgBARIdCgRzaXplGAIgASgJQgq6SAdyBRACGIABSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBAUIFCgNfaWRCBwoFX3NpemVCCgoIX3Byb2plY3Qi0QIKIFBhcnRpdGlvblNlcnZpY2VDYXBhY2l0eVJlc3BvbnNlEgwKBHNpemUYASABKAkSDQoFdG90YWwYAiABKAMSEwoLcGhvbmVkX2hvbWUYAyABKAMSDwoHd2FpdGluZxgEIAEoAxINCgVvdGhlchgFIAEoAxIWCg5vdGhlcl9tYWNoaW5lcxgGIAMoCRIRCglhbGxvY2F0ZWQYByABKAMSEwoLYWxsb2NhdGFibGUYCCABKAMSDAoEZnJlZRgJIAEoAxITCgt1bmF2YWlsYWJsZRgKIAEoAxIOCgZmYXVsdHkYCyABKAMSFwoPZmF1bHR5X21hY2hpbmVzGAwgAygJEhQKDHJlc2VydmF0aW9ucxgNIAEoAxIZChF1c2VkX3Jlc2VydmF0aW9ucxgOIAEoAxIeChZyZW1haW5pbmdfcmVzZXJ2YXRpb25zGA8gASgDMpIEChBQYXJ0aXRpb25TZXJ2aWNlEnwKBkNyZWF0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNyZWF0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnwKBlVwZGF0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZVVwZGF0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnwKBkRlbGV0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZURlbGV0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VEZWxldGVSZXNwb25zZSIJ0vMYAQHg8xgBEoMBCghDYXBhY2l0eRI0Lm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNhcGFjaXR5UmVxdWVzdBo1Lm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNhcGFjaXR5UmVzcG9uc2UiCtLzGAICAeDzGAJC0gEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQg5QYXJ0aXRpb25Qcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.admin.v2.PartitionServiceCreateRequest. + * Use `create(PartitionServiceCreateRequestSchema)` to create a new message. + */ +export const PartitionServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_partition, 0); +/** + * Describes the message metalstack.admin.v2.PartitionServiceUpdateRequest. + * Use `create(PartitionServiceUpdateRequestSchema)` to create a new message. + */ +export const PartitionServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_partition, 1); +/** + * Describes the message metalstack.admin.v2.PartitionServiceDeleteRequest. + * Use `create(PartitionServiceDeleteRequestSchema)` to create a new message. + */ +export const PartitionServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_partition, 2); +/** + * Describes the message metalstack.admin.v2.PartitionServiceCreateResponse. + * Use `create(PartitionServiceCreateResponseSchema)` to create a new message. + */ +export const PartitionServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_partition, 3); +/** + * Describes the message metalstack.admin.v2.PartitionServiceUpdateResponse. + * Use `create(PartitionServiceUpdateResponseSchema)` to create a new message. + */ +export const PartitionServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_partition, 4); +/** + * Describes the message metalstack.admin.v2.PartitionServiceDeleteResponse. + * Use `create(PartitionServiceDeleteResponseSchema)` to create a new message. + */ +export const PartitionServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_partition, 5); +/** + * Describes the message metalstack.admin.v2.PartitionServiceCapacityRequest. + * Use `create(PartitionServiceCapacityRequestSchema)` to create a new message. + */ +export const PartitionServiceCapacityRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_partition, 6); +/** + * Describes the message metalstack.admin.v2.PartitionServiceCapacityResponse. + * Use `create(PartitionServiceCapacityResponseSchema)` to create a new message. + */ +export const PartitionServiceCapacityResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_partition, 7); +/** + * PartitionService serves partition address related functions + * + * @generated from service metalstack.admin.v2.PartitionService + */ +export const PartitionService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_partition, 0); diff --git a/js/metalstack/admin/v2/partition_pb.ts b/js/metalstack/admin/v2/partition_pb.ts new file mode 100644 index 00000000..9f4545e9 --- /dev/null +++ b/js/metalstack/admin/v2/partition_pb.ts @@ -0,0 +1,402 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/partition.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { UpdateLabels, UpdateMeta } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import type { DNSServer, NTPServer, Partition, PartitionBootConfiguration } from "../../api/v2/partition_pb"; +import { file_metalstack_api_v2_partition } from "../../api/v2/partition_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/partition.proto. + */ +export const file_metalstack_admin_v2_partition: GenFile = /*@__PURE__*/ + fileDesc("CiNtZXRhbHN0YWNrL2FkbWluL3YyL3BhcnRpdGlvbi5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiJQCh1QYXJ0aXRpb25TZXJ2aWNlQ3JlYXRlUmVxdWVzdBIvCglwYXJ0aXRpb24YASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24izgMKHVBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRACGIABEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgAiAEBEkkKEmJvb3RfY29uZmlndXJhdGlvbhgEIAEoCzItLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbkJvb3RDb25maWd1cmF0aW9uEjoKCmRuc19zZXJ2ZXIYBSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYBiADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEh4KFm1nbXRfc2VydmljZV9hZGRyZXNzZXMYByADKAkSNAoGbGFiZWxzGAggASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAGIAQFCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiNwodUGFydGl0aW9uU2VydmljZURlbGV0ZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiUQoeUGFydGl0aW9uU2VydmljZUNyZWF0ZVJlc3BvbnNlEi8KCXBhcnRpdGlvbhgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbiJRCh5QYXJ0aXRpb25TZXJ2aWNlVXBkYXRlUmVzcG9uc2USLwoJcGFydGl0aW9uGAEgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uIlEKHlBhcnRpdGlvblNlcnZpY2VEZWxldGVSZXNwb25zZRIvCglwYXJ0aXRpb24YASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24imQEKH1BhcnRpdGlvblNlcnZpY2VDYXBhY2l0eVJlcXVlc3QSGwoCaWQYASABKAlCCrpIB3IFEAIYgAFIAIgBARIdCgRzaXplGAIgASgJQgq6SAdyBRACGIABSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBAUIFCgNfaWRCBwoFX3NpemVCCgoIX3Byb2plY3Qi0QIKIFBhcnRpdGlvblNlcnZpY2VDYXBhY2l0eVJlc3BvbnNlEgwKBHNpemUYASABKAkSDQoFdG90YWwYAiABKAMSEwoLcGhvbmVkX2hvbWUYAyABKAMSDwoHd2FpdGluZxgEIAEoAxINCgVvdGhlchgFIAEoAxIWCg5vdGhlcl9tYWNoaW5lcxgGIAMoCRIRCglhbGxvY2F0ZWQYByABKAMSEwoLYWxsb2NhdGFibGUYCCABKAMSDAoEZnJlZRgJIAEoAxITCgt1bmF2YWlsYWJsZRgKIAEoAxIOCgZmYXVsdHkYCyABKAMSFwoPZmF1bHR5X21hY2hpbmVzGAwgAygJEhQKDHJlc2VydmF0aW9ucxgNIAEoAxIZChF1c2VkX3Jlc2VydmF0aW9ucxgOIAEoAxIeChZyZW1haW5pbmdfcmVzZXJ2YXRpb25zGA8gASgDMpIEChBQYXJ0aXRpb25TZXJ2aWNlEnwKBkNyZWF0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNyZWF0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnwKBlVwZGF0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZVVwZGF0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnwKBkRlbGV0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZURlbGV0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VEZWxldGVSZXNwb25zZSIJ0vMYAQHg8xgBEoMBCghDYXBhY2l0eRI0Lm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNhcGFjaXR5UmVxdWVzdBo1Lm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNhcGFjaXR5UmVzcG9uc2UiCtLzGAICAeDzGAJC0gEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQg5QYXJ0aXRpb25Qcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules]); + +/** + * PartitionServiceCreateRequest is the request payload for a partition create request + * + * @generated from message metalstack.admin.v2.PartitionServiceCreateRequest + */ +export type PartitionServiceCreateRequest = Message<"metalstack.admin.v2.PartitionServiceCreateRequest"> & { + /** + * Partition the partition + * + * @generated from field: metalstack.api.v2.Partition partition = 1; + */ + partition?: Partition; +}; + +/** + * Describes the message metalstack.admin.v2.PartitionServiceCreateRequest. + * Use `create(PartitionServiceCreateRequestSchema)` to create a new message. + */ +export const PartitionServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_partition, 0); + +/** + * PartitionServiceUpdateRequest is the request payload for a partition update request + * + * @generated from message metalstack.admin.v2.PartitionServiceUpdateRequest + */ +export type PartitionServiceUpdateRequest = Message<"metalstack.admin.v2.PartitionServiceUpdateRequest"> & { + /** + * ID of this partition + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * Description of this partition + * + * @generated from field: optional string description = 3; + */ + description?: string; + + /** + * PartitionBootConfiguration defines how metal-hammer boots + * + * @generated from field: metalstack.api.v2.PartitionBootConfiguration boot_configuration = 4; + */ + bootConfiguration?: PartitionBootConfiguration; + + /** + * DNSServers for this partition + * + * @generated from field: repeated metalstack.api.v2.DNSServer dns_server = 5; + */ + dnsServer: DNSServer[]; + + /** + * NTPServers for this partition + * + * @generated from field: repeated metalstack.api.v2.NTPServer ntp_server = 6; + */ + ntpServer: NTPServer[]; + + /** + * ManagementServiceAddresses defines where the management is reachable + * should be in the form : + * + * @generated from field: repeated string mgmt_service_addresses = 7; + */ + mgmtServiceAddresses: string[]; + + /** + * Labels to update on this network + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 8; + */ + labels?: UpdateLabels; +}; + +/** + * Describes the message metalstack.admin.v2.PartitionServiceUpdateRequest. + * Use `create(PartitionServiceUpdateRequestSchema)` to create a new message. + */ +export const PartitionServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_partition, 1); + +/** + * PartitionServiceDeleteRequest is the request payload for a partition delete request + * + * @generated from message metalstack.admin.v2.PartitionServiceDeleteRequest + */ +export type PartitionServiceDeleteRequest = Message<"metalstack.admin.v2.PartitionServiceDeleteRequest"> & { + /** + * ID of the partition to get + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.admin.v2.PartitionServiceDeleteRequest. + * Use `create(PartitionServiceDeleteRequestSchema)` to create a new message. + */ +export const PartitionServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_partition, 2); + +/** + * PartitionServiceCreateResponse is the response payload for a partition create request + * + * @generated from message metalstack.admin.v2.PartitionServiceCreateResponse + */ +export type PartitionServiceCreateResponse = Message<"metalstack.admin.v2.PartitionServiceCreateResponse"> & { + /** + * Partition the partition + * + * @generated from field: metalstack.api.v2.Partition partition = 1; + */ + partition?: Partition; +}; + +/** + * Describes the message metalstack.admin.v2.PartitionServiceCreateResponse. + * Use `create(PartitionServiceCreateResponseSchema)` to create a new message. + */ +export const PartitionServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_partition, 3); + +/** + * PartitionServiceUpdateResponse is the response payload for a partition update request + * + * @generated from message metalstack.admin.v2.PartitionServiceUpdateResponse + */ +export type PartitionServiceUpdateResponse = Message<"metalstack.admin.v2.PartitionServiceUpdateResponse"> & { + /** + * Partition the partition + * + * @generated from field: metalstack.api.v2.Partition partition = 1; + */ + partition?: Partition; +}; + +/** + * Describes the message metalstack.admin.v2.PartitionServiceUpdateResponse. + * Use `create(PartitionServiceUpdateResponseSchema)` to create a new message. + */ +export const PartitionServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_partition, 4); + +/** + * PartitionServiceCapacityResponse is the response payload for a partition delete request + * + * @generated from message metalstack.admin.v2.PartitionServiceDeleteResponse + */ +export type PartitionServiceDeleteResponse = Message<"metalstack.admin.v2.PartitionServiceDeleteResponse"> & { + /** + * Partition the partition + * + * @generated from field: metalstack.api.v2.Partition partition = 1; + */ + partition?: Partition; +}; + +/** + * Describes the message metalstack.admin.v2.PartitionServiceDeleteResponse. + * Use `create(PartitionServiceDeleteResponseSchema)` to create a new message. + */ +export const PartitionServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_partition, 5); + +/** + * PartitionServiceListRequest is the request payload for a partition capacity request + * + * @generated from message metalstack.admin.v2.PartitionServiceCapacityRequest + */ +export type PartitionServiceCapacityRequest = Message<"metalstack.admin.v2.PartitionServiceCapacityRequest"> & { + /** + * ID of the partition to get + * + * @generated from field: optional string id = 1; + */ + id?: string; + + /** + * Size of machines to show the capacity + * + * @generated from field: optional string size = 2; + */ + size?: string; + + /** + * Project of machines to show the capacity + * + * @generated from field: optional string project = 3; + */ + project?: string; +}; + +/** + * Describes the message metalstack.admin.v2.PartitionServiceCapacityRequest. + * Use `create(PartitionServiceCapacityRequestSchema)` to create a new message. + */ +export const PartitionServiceCapacityRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_partition, 6); + +/** + * PartitionServiceCapacityResponse is the response payload for a partition capacity request + * + * @generated from message metalstack.admin.v2.PartitionServiceCapacityResponse + */ +export type PartitionServiceCapacityResponse = Message<"metalstack.admin.v2.PartitionServiceCapacityResponse"> & { + /** + * Size is the size id correlating to all counts in this server capacity. + * + * @generated from field: string size = 1; + */ + size: string; + + /** + * Total is the total amount of machines for this size. + * + * @generated from field: int64 total = 2; + */ + total: bigint; + + /** + * PhonedHome is the amount of machines that are currently in the provisioning state "phoned home". + * + * @generated from field: int64 phoned_home = 3; + */ + phonedHome: bigint; + + /** + * Waiting is the amount of machines that are currently in the provisioning state "waiting". + * + * @generated from field: int64 waiting = 4; + */ + waiting: bigint; + + /** + * Other is the amount of machines that are neither in the provisioning state waiting nor in phoned home but in another provisioning state. + * + * @generated from field: int64 other = 5; + */ + other: bigint; + + /** + * OtherMachines contains the machine IDs for machines that were classified into "Other". + * + * @generated from field: repeated string other_machines = 6; + */ + otherMachines: string[]; + + /** + * Allocated is the amount of machines that are currently allocated. + * + * @generated from field: int64 allocated = 7; + */ + allocated: bigint; + + /** + * Allocatable is the amount of machines in a partition is the amount of machines that can be allocated. + * Effectively this is the amount of waiting machines minus the machines that are unavailable due to machine state or un-allocatable. Size reservations are not considered in this count. + * + * @generated from field: int64 allocatable = 8; + */ + allocatable: bigint; + + /** + * Free is the amount of machines in a partition that can be freely allocated at any given moment by a project. + * Effectively this is the amount of waiting machines minus the machines that are unavailable due to machine state or un-allocatable due to size reservations. + * + * @generated from field: int64 free = 9; + */ + free: bigint; + + /** + * Unavailable is the amount of machine in a partition that are currently not allocatable because they are not waiting or + * not in the machine state "available", e.g. locked or reserved. + * + * @generated from field: int64 unavailable = 10; + */ + unavailable: bigint; + + /** + * Faulty is the amount of machines that are neither allocated nor in the pool of available machines because they report an error. + * + * @generated from field: int64 faulty = 11; + */ + faulty: bigint; + + /** + * FaultyMachines contains the machine IDs for machines that were classified into "Faulty". + * + * @generated from field: repeated string faulty_machines = 12; + */ + faultyMachines: string[]; + + /** + * Reservations is the amount of reservations made for this size. + * + * @generated from field: int64 reservations = 13; + */ + reservations: bigint; + + /** + * UsedReservations is the amount of reservations already used up for this size. + * + * @generated from field: int64 used_reservations = 14; + */ + usedReservations: bigint; + + /** + * RemainingReservations is the amount of reservations remaining for this size. + * + * @generated from field: int64 remaining_reservations = 15; + */ + remainingReservations: bigint; +}; + +/** + * Describes the message metalstack.admin.v2.PartitionServiceCapacityResponse. + * Use `create(PartitionServiceCapacityResponseSchema)` to create a new message. + */ +export const PartitionServiceCapacityResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_partition, 7); + +/** + * PartitionService serves partition address related functions + * + * @generated from service metalstack.admin.v2.PartitionService + */ +export const PartitionService: GenService<{ + /** + * Create a partition + * + * @generated from rpc metalstack.admin.v2.PartitionService.Create + */ + create: { + methodKind: "unary"; + input: typeof PartitionServiceCreateRequestSchema; + output: typeof PartitionServiceCreateResponseSchema; + }, + /** + * Update a partition + * + * @generated from rpc metalstack.admin.v2.PartitionService.Update + */ + update: { + methodKind: "unary"; + input: typeof PartitionServiceUpdateRequestSchema; + output: typeof PartitionServiceUpdateResponseSchema; + }, + /** + * Delete a partition + * + * @generated from rpc metalstack.admin.v2.PartitionService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof PartitionServiceDeleteRequestSchema; + output: typeof PartitionServiceDeleteResponseSchema; + }, + /** + * Capacity of a partitions + * + * @generated from rpc metalstack.admin.v2.PartitionService.Capacity + */ + capacity: { + methodKind: "unary"; + input: typeof PartitionServiceCapacityRequestSchema; + output: typeof PartitionServiceCapacityResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_partition, 0); + diff --git a/js/metalstack/admin/v2/project_pb.d.ts b/js/metalstack/admin/v2/project_pb.d.ts new file mode 100644 index 00000000..763eba47 --- /dev/null +++ b/js/metalstack/admin/v2/project_pb.d.ts @@ -0,0 +1,67 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Labels } from "../../api/v2/common_pb"; +import type { Project } from "../../api/v2/project_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/project.proto. + */ +export declare const file_metalstack_admin_v2_project: GenFile; +/** + * ProjectServiceListRequest is the request payload for the project list request + * + * @generated from message metalstack.admin.v2.ProjectServiceListRequest + */ +export type ProjectServiceListRequest = Message<"metalstack.admin.v2.ProjectServiceListRequest"> & { + /** + * Tenant lists only projects of this tenant + * + * @generated from field: optional string tenant = 1; + */ + tenant?: string; + /** + * Labels lists only projects containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 2; + */ + labels?: Labels; +}; +/** + * Describes the message metalstack.admin.v2.ProjectServiceListRequest. + * Use `create(ProjectServiceListRequestSchema)` to create a new message. + */ +export declare const ProjectServiceListRequestSchema: GenMessage; +/** + * ProjectServiceListResponse is the response payload for the project list request + * + * @generated from message metalstack.admin.v2.ProjectServiceListResponse + */ +export type ProjectServiceListResponse = Message<"metalstack.admin.v2.ProjectServiceListResponse"> & { + /** + * Projects is a list of all projects + * + * @generated from field: repeated metalstack.api.v2.Project projects = 1; + */ + projects: Project[]; +}; +/** + * Describes the message metalstack.admin.v2.ProjectServiceListResponse. + * Use `create(ProjectServiceListResponseSchema)` to create a new message. + */ +export declare const ProjectServiceListResponseSchema: GenMessage; +/** + * ProjectService serves project related functions + * + * @generated from service metalstack.admin.v2.ProjectService + */ +export declare const ProjectService: GenService<{ + /** + * List projects based on various filter criteria + * + * @generated from rpc metalstack.admin.v2.ProjectService.List + */ + list: { + methodKind: "unary"; + input: typeof ProjectServiceListRequestSchema; + output: typeof ProjectServiceListResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/project_pb.js b/js/metalstack/admin/v2/project_pb.js new file mode 100644 index 00000000..84dd3d14 --- /dev/null +++ b/js/metalstack/admin/v2/project_pb.js @@ -0,0 +1,27 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/project.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_project } from "../../api/v2/project_pb"; +/** + * Describes the file metalstack/admin/v2/project.proto. + */ +export const file_metalstack_admin_v2_project = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL3Byb2plY3QucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiggEKGVByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QSHwoGdGVuYW50GAEgASgJQgq6SAdyBRACGIABSACIAQESLgoGbGFiZWxzGAIgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAGIAQFCCQoHX3RlbmFudEIJCgdfbGFiZWxzIkoKGlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCHByb2plY3RzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdDKFAQoOUHJvamVjdFNlcnZpY2UScwoETGlzdBIuLm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBovLm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCtLzGAIBAuDzGAJC0AEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgxQcm9qZWN0UHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_project]); +/** + * Describes the message metalstack.admin.v2.ProjectServiceListRequest. + * Use `create(ProjectServiceListRequestSchema)` to create a new message. + */ +export const ProjectServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_project, 0); +/** + * Describes the message metalstack.admin.v2.ProjectServiceListResponse. + * Use `create(ProjectServiceListResponseSchema)` to create a new message. + */ +export const ProjectServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_project, 1); +/** + * ProjectService serves project related functions + * + * @generated from service metalstack.admin.v2.ProjectService + */ +export const ProjectService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_project, 0); diff --git a/js/metalstack/admin/v2/project_pb.ts b/js/metalstack/admin/v2/project_pb.ts new file mode 100644 index 00000000..961a760f --- /dev/null +++ b/js/metalstack/admin/v2/project_pb.ts @@ -0,0 +1,87 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/project.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Labels } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import type { Project } from "../../api/v2/project_pb"; +import { file_metalstack_api_v2_project } from "../../api/v2/project_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/project.proto. + */ +export const file_metalstack_admin_v2_project: GenFile = /*@__PURE__*/ + fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL3Byb2plY3QucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiggEKGVByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QSHwoGdGVuYW50GAEgASgJQgq6SAdyBRACGIABSACIAQESLgoGbGFiZWxzGAIgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAGIAQFCCQoHX3RlbmFudEIJCgdfbGFiZWxzIkoKGlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCHByb2plY3RzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdDKFAQoOUHJvamVjdFNlcnZpY2UScwoETGlzdBIuLm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VMaXN0UmVxdWVzdBovLm1ldGFsc3RhY2suYWRtaW4udjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCtLzGAIBAuDzGAJC0AEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgxQcm9qZWN0UHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_project]); + +/** + * ProjectServiceListRequest is the request payload for the project list request + * + * @generated from message metalstack.admin.v2.ProjectServiceListRequest + */ +export type ProjectServiceListRequest = Message<"metalstack.admin.v2.ProjectServiceListRequest"> & { + /** + * Tenant lists only projects of this tenant + * + * @generated from field: optional string tenant = 1; + */ + tenant?: string; + + /** + * Labels lists only projects containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 2; + */ + labels?: Labels; +}; + +/** + * Describes the message metalstack.admin.v2.ProjectServiceListRequest. + * Use `create(ProjectServiceListRequestSchema)` to create a new message. + */ +export const ProjectServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_project, 0); + +/** + * ProjectServiceListResponse is the response payload for the project list request + * + * @generated from message metalstack.admin.v2.ProjectServiceListResponse + */ +export type ProjectServiceListResponse = Message<"metalstack.admin.v2.ProjectServiceListResponse"> & { + /** + * Projects is a list of all projects + * + * @generated from field: repeated metalstack.api.v2.Project projects = 1; + */ + projects: Project[]; +}; + +/** + * Describes the message metalstack.admin.v2.ProjectServiceListResponse. + * Use `create(ProjectServiceListResponseSchema)` to create a new message. + */ +export const ProjectServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_project, 1); + +/** + * ProjectService serves project related functions + * + * @generated from service metalstack.admin.v2.ProjectService + */ +export const ProjectService: GenService<{ + /** + * List projects based on various filter criteria + * + * @generated from rpc metalstack.admin.v2.ProjectService.List + */ + list: { + methodKind: "unary"; + input: typeof ProjectServiceListRequestSchema; + output: typeof ProjectServiceListResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_project, 0); + diff --git a/js/metalstack/admin/v2/size_pb.d.ts b/js/metalstack/admin/v2/size_pb.d.ts new file mode 100644 index 00000000..4c16f516 --- /dev/null +++ b/js/metalstack/admin/v2/size_pb.d.ts @@ -0,0 +1,183 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { UpdateLabels, UpdateMeta } from "../../api/v2/common_pb"; +import type { Size, SizeConstraint } from "../../api/v2/size_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/size.proto. + */ +export declare const file_metalstack_admin_v2_size: GenFile; +/** + * SizeServiceCreateRequest is the request payload for a size create request + * + * @generated from message metalstack.admin.v2.SizeServiceCreateRequest + */ +export type SizeServiceCreateRequest = Message<"metalstack.admin.v2.SizeServiceCreateRequest"> & { + /** + * Size is the size to create + * + * @generated from field: metalstack.api.v2.Size size = 1; + */ + size?: Size; +}; +/** + * Describes the message metalstack.admin.v2.SizeServiceCreateRequest. + * Use `create(SizeServiceCreateRequestSchema)` to create a new message. + */ +export declare const SizeServiceCreateRequestSchema: GenMessage; +/** + * SizeServiceGetResponse is the response payload for a size create request + * + * @generated from message metalstack.admin.v2.SizeServiceCreateResponse + */ +export type SizeServiceCreateResponse = Message<"metalstack.admin.v2.SizeServiceCreateResponse"> & { + /** + * Size the size + * + * @generated from field: metalstack.api.v2.Size size = 1; + */ + size?: Size; +}; +/** + * Describes the message metalstack.admin.v2.SizeServiceCreateResponse. + * Use `create(SizeServiceCreateResponseSchema)` to create a new message. + */ +export declare const SizeServiceCreateResponseSchema: GenMessage; +/** + * SizeServiceUpdateRequest is the request payload for a size update request + * + * @generated from message metalstack.admin.v2.SizeServiceUpdateRequest + */ +export type SizeServiceUpdateRequest = Message<"metalstack.admin.v2.SizeServiceUpdateRequest"> & { + /** + * Id of this size + * + * @generated from field: string id = 1; + */ + id: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * Name of this size + * + * @generated from field: optional string name = 3; + */ + name?: string; + /** + * Description of this size + * + * @generated from field: optional string description = 4; + */ + description?: string; + /** + * Constraints which must match that a specific machine is considered of this size + * + * @generated from field: repeated metalstack.api.v2.SizeConstraint constraints = 5; + */ + constraints: SizeConstraint[]; + /** + * Labels to update on this size + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 6; + */ + labels?: UpdateLabels; +}; +/** + * Describes the message metalstack.admin.v2.SizeServiceUpdateRequest. + * Use `create(SizeServiceUpdateRequestSchema)` to create a new message. + */ +export declare const SizeServiceUpdateRequestSchema: GenMessage; +/** + * SizeServiceUpdateResponse is the response payload for a size update request + * + * @generated from message metalstack.admin.v2.SizeServiceUpdateResponse + */ +export type SizeServiceUpdateResponse = Message<"metalstack.admin.v2.SizeServiceUpdateResponse"> & { + /** + * Size the size + * + * @generated from field: metalstack.api.v2.Size size = 1; + */ + size?: Size; +}; +/** + * Describes the message metalstack.admin.v2.SizeServiceUpdateResponse. + * Use `create(SizeServiceUpdateResponseSchema)` to create a new message. + */ +export declare const SizeServiceUpdateResponseSchema: GenMessage; +/** + * SizeServiceDeleteRequest is the request payload for a size delete request + * + * @generated from message metalstack.admin.v2.SizeServiceDeleteRequest + */ +export type SizeServiceDeleteRequest = Message<"metalstack.admin.v2.SizeServiceDeleteRequest"> & { + /** + * ID of the size to delete + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.admin.v2.SizeServiceDeleteRequest. + * Use `create(SizeServiceDeleteRequestSchema)` to create a new message. + */ +export declare const SizeServiceDeleteRequestSchema: GenMessage; +/** + * SizeServiceDeleteResponse is the response payload for a size delete request + * + * @generated from message metalstack.admin.v2.SizeServiceDeleteResponse + */ +export type SizeServiceDeleteResponse = Message<"metalstack.admin.v2.SizeServiceDeleteResponse"> & { + /** + * Size the size + * + * @generated from field: metalstack.api.v2.Size size = 1; + */ + size?: Size; +}; +/** + * Describes the message metalstack.admin.v2.SizeServiceDeleteResponse. + * Use `create(SizeServiceDeleteResponseSchema)` to create a new message. + */ +export declare const SizeServiceDeleteResponseSchema: GenMessage; +/** + * SizeService serves size related functions + * + * @generated from service metalstack.admin.v2.SizeService + */ +export declare const SizeService: GenService<{ + /** + * Create a size + * + * @generated from rpc metalstack.admin.v2.SizeService.Create + */ + create: { + methodKind: "unary"; + input: typeof SizeServiceCreateRequestSchema; + output: typeof SizeServiceCreateResponseSchema; + }; + /** + * Update a size + * + * @generated from rpc metalstack.admin.v2.SizeService.Update + */ + update: { + methodKind: "unary"; + input: typeof SizeServiceUpdateRequestSchema; + output: typeof SizeServiceUpdateResponseSchema; + }; + /** + * Delete a size + * + * @generated from rpc metalstack.admin.v2.SizeService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof SizeServiceDeleteRequestSchema; + output: typeof SizeServiceDeleteResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/size_pb.js b/js/metalstack/admin/v2/size_pb.js new file mode 100644 index 00000000..8e26f446 --- /dev/null +++ b/js/metalstack/admin/v2/size_pb.js @@ -0,0 +1,48 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/size.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import { file_metalstack_api_v2_size } from "../../api/v2/size_pb"; +/** + * Describes the file metalstack/admin/v2/size.proto. + */ +export const file_metalstack_admin_v2_size = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FkbWluL3YyL3NpemUucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiQQoYU2l6ZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EiUKBHNpemUYASABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplIkIKGVNpemVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USJQoEc2l6ZRgBIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUixwIKGFNpemVTZXJ2aWNlVXBkYXRlUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQAhiAARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEjYKC2NvbnN0cmFpbnRzGAUgAygLMiEubWV0YWxzdGFjay5hcGkudjIuU2l6ZUNvbnN0cmFpbnQSNAoGbGFiZWxzGAYgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAKIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiQgoZU2l6ZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIlCgRzaXplGAEgASgLMhcubWV0YWxzdGFjay5hcGkudjIuU2l6ZSIyChhTaXplU2VydmljZURlbGV0ZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiQgoZU2l6ZVNlcnZpY2VEZWxldGVSZXNwb25zZRIlCgRzaXplGAEgASgLMhcubWV0YWxzdGFjay5hcGkudjIuU2l6ZTLdAgoLU2l6ZVNlcnZpY2USbgoGQ3JlYXRlEi0ubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplU2VydmljZUNyZWF0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBdLzGAEBEm4KBlVwZGF0ZRItLm1ldGFsc3RhY2suYWRtaW4udjIuU2l6ZVNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplU2VydmljZVVwZGF0ZVJlc3BvbnNlIgXS8xgBARJuCgZEZWxldGUSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVTZXJ2aWNlRGVsZXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuU2l6ZVNlcnZpY2VEZWxldGVSZXNwb25zZSIF0vMYAQFCzQEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQglTaXplUHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); +/** + * Describes the message metalstack.admin.v2.SizeServiceCreateRequest. + * Use `create(SizeServiceCreateRequestSchema)` to create a new message. + */ +export const SizeServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size, 0); +/** + * Describes the message metalstack.admin.v2.SizeServiceCreateResponse. + * Use `create(SizeServiceCreateResponseSchema)` to create a new message. + */ +export const SizeServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size, 1); +/** + * Describes the message metalstack.admin.v2.SizeServiceUpdateRequest. + * Use `create(SizeServiceUpdateRequestSchema)` to create a new message. + */ +export const SizeServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size, 2); +/** + * Describes the message metalstack.admin.v2.SizeServiceUpdateResponse. + * Use `create(SizeServiceUpdateResponseSchema)` to create a new message. + */ +export const SizeServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size, 3); +/** + * Describes the message metalstack.admin.v2.SizeServiceDeleteRequest. + * Use `create(SizeServiceDeleteRequestSchema)` to create a new message. + */ +export const SizeServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size, 4); +/** + * Describes the message metalstack.admin.v2.SizeServiceDeleteResponse. + * Use `create(SizeServiceDeleteResponseSchema)` to create a new message. + */ +export const SizeServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size, 5); +/** + * SizeService serves size related functions + * + * @generated from service metalstack.admin.v2.SizeService + */ +export const SizeService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_size, 0); diff --git a/js/metalstack/admin/v2/size_pb.ts b/js/metalstack/admin/v2/size_pb.ts new file mode 100644 index 00000000..3b637b44 --- /dev/null +++ b/js/metalstack/admin/v2/size_pb.ts @@ -0,0 +1,220 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/size.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { UpdateLabels, UpdateMeta } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import type { Size, SizeConstraint } from "../../api/v2/size_pb"; +import { file_metalstack_api_v2_size } from "../../api/v2/size_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/size.proto. + */ +export const file_metalstack_admin_v2_size: GenFile = /*@__PURE__*/ + fileDesc("Ch5tZXRhbHN0YWNrL2FkbWluL3YyL3NpemUucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiQQoYU2l6ZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EiUKBHNpemUYASABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplIkIKGVNpemVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USJQoEc2l6ZRgBIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUixwIKGFNpemVTZXJ2aWNlVXBkYXRlUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQAhiAARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEjYKC2NvbnN0cmFpbnRzGAUgAygLMiEubWV0YWxzdGFjay5hcGkudjIuU2l6ZUNvbnN0cmFpbnQSNAoGbGFiZWxzGAYgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAKIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiQgoZU2l6ZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIlCgRzaXplGAEgASgLMhcubWV0YWxzdGFjay5hcGkudjIuU2l6ZSIyChhTaXplU2VydmljZURlbGV0ZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiQgoZU2l6ZVNlcnZpY2VEZWxldGVSZXNwb25zZRIlCgRzaXplGAEgASgLMhcubWV0YWxzdGFjay5hcGkudjIuU2l6ZTLdAgoLU2l6ZVNlcnZpY2USbgoGQ3JlYXRlEi0ubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplU2VydmljZUNyZWF0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBdLzGAEBEm4KBlVwZGF0ZRItLm1ldGFsc3RhY2suYWRtaW4udjIuU2l6ZVNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplU2VydmljZVVwZGF0ZVJlc3BvbnNlIgXS8xgBARJuCgZEZWxldGUSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVTZXJ2aWNlRGVsZXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuU2l6ZVNlcnZpY2VEZWxldGVSZXNwb25zZSIF0vMYAQFCzQEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQglTaXplUHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); + +/** + * SizeServiceCreateRequest is the request payload for a size create request + * + * @generated from message metalstack.admin.v2.SizeServiceCreateRequest + */ +export type SizeServiceCreateRequest = Message<"metalstack.admin.v2.SizeServiceCreateRequest"> & { + /** + * Size is the size to create + * + * @generated from field: metalstack.api.v2.Size size = 1; + */ + size?: Size; +}; + +/** + * Describes the message metalstack.admin.v2.SizeServiceCreateRequest. + * Use `create(SizeServiceCreateRequestSchema)` to create a new message. + */ +export const SizeServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size, 0); + +/** + * SizeServiceGetResponse is the response payload for a size create request + * + * @generated from message metalstack.admin.v2.SizeServiceCreateResponse + */ +export type SizeServiceCreateResponse = Message<"metalstack.admin.v2.SizeServiceCreateResponse"> & { + /** + * Size the size + * + * @generated from field: metalstack.api.v2.Size size = 1; + */ + size?: Size; +}; + +/** + * Describes the message metalstack.admin.v2.SizeServiceCreateResponse. + * Use `create(SizeServiceCreateResponseSchema)` to create a new message. + */ +export const SizeServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size, 1); + +/** + * SizeServiceUpdateRequest is the request payload for a size update request + * + * @generated from message metalstack.admin.v2.SizeServiceUpdateRequest + */ +export type SizeServiceUpdateRequest = Message<"metalstack.admin.v2.SizeServiceUpdateRequest"> & { + /** + * Id of this size + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * Name of this size + * + * @generated from field: optional string name = 3; + */ + name?: string; + + /** + * Description of this size + * + * @generated from field: optional string description = 4; + */ + description?: string; + + /** + * Constraints which must match that a specific machine is considered of this size + * + * @generated from field: repeated metalstack.api.v2.SizeConstraint constraints = 5; + */ + constraints: SizeConstraint[]; + + /** + * Labels to update on this size + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 6; + */ + labels?: UpdateLabels; +}; + +/** + * Describes the message metalstack.admin.v2.SizeServiceUpdateRequest. + * Use `create(SizeServiceUpdateRequestSchema)` to create a new message. + */ +export const SizeServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size, 2); + +/** + * SizeServiceUpdateResponse is the response payload for a size update request + * + * @generated from message metalstack.admin.v2.SizeServiceUpdateResponse + */ +export type SizeServiceUpdateResponse = Message<"metalstack.admin.v2.SizeServiceUpdateResponse"> & { + /** + * Size the size + * + * @generated from field: metalstack.api.v2.Size size = 1; + */ + size?: Size; +}; + +/** + * Describes the message metalstack.admin.v2.SizeServiceUpdateResponse. + * Use `create(SizeServiceUpdateResponseSchema)` to create a new message. + */ +export const SizeServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size, 3); + +/** + * SizeServiceDeleteRequest is the request payload for a size delete request + * + * @generated from message metalstack.admin.v2.SizeServiceDeleteRequest + */ +export type SizeServiceDeleteRequest = Message<"metalstack.admin.v2.SizeServiceDeleteRequest"> & { + /** + * ID of the size to delete + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.admin.v2.SizeServiceDeleteRequest. + * Use `create(SizeServiceDeleteRequestSchema)` to create a new message. + */ +export const SizeServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size, 4); + +/** + * SizeServiceDeleteResponse is the response payload for a size delete request + * + * @generated from message metalstack.admin.v2.SizeServiceDeleteResponse + */ +export type SizeServiceDeleteResponse = Message<"metalstack.admin.v2.SizeServiceDeleteResponse"> & { + /** + * Size the size + * + * @generated from field: metalstack.api.v2.Size size = 1; + */ + size?: Size; +}; + +/** + * Describes the message metalstack.admin.v2.SizeServiceDeleteResponse. + * Use `create(SizeServiceDeleteResponseSchema)` to create a new message. + */ +export const SizeServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_size, 5); + +/** + * SizeService serves size related functions + * + * @generated from service metalstack.admin.v2.SizeService + */ +export const SizeService: GenService<{ + /** + * Create a size + * + * @generated from rpc metalstack.admin.v2.SizeService.Create + */ + create: { + methodKind: "unary"; + input: typeof SizeServiceCreateRequestSchema; + output: typeof SizeServiceCreateResponseSchema; + }, + /** + * Update a size + * + * @generated from rpc metalstack.admin.v2.SizeService.Update + */ + update: { + methodKind: "unary"; + input: typeof SizeServiceUpdateRequestSchema; + output: typeof SizeServiceUpdateResponseSchema; + }, + /** + * Delete a size + * + * @generated from rpc metalstack.admin.v2.SizeService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof SizeServiceDeleteRequestSchema; + output: typeof SizeServiceDeleteResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_size, 0); + diff --git a/js/metalstack/admin/v2/switch_pb.d.ts b/js/metalstack/admin/v2/switch_pb.d.ts new file mode 100644 index 00000000..0b7bee90 --- /dev/null +++ b/js/metalstack/admin/v2/switch_pb.d.ts @@ -0,0 +1,371 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import type { UpdateMeta } from "../../api/v2/common_pb"; +import type { Switch, SwitchNic, SwitchOS, SwitchPortStatus, SwitchQuery, SwitchReplaceMode } from "../../api/v2/switch_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/switch.proto. + */ +export declare const file_metalstack_admin_v2_switch: GenFile; +/** + * SwitchServiceGetRequest. + * + * @generated from message metalstack.admin.v2.SwitchServiceGetRequest + */ +export type SwitchServiceGetRequest = Message<"metalstack.admin.v2.SwitchServiceGetRequest"> & { + /** + * Id of the switch to get. + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServiceGetRequest. + * Use `create(SwitchServiceGetRequestSchema)` to create a new message. + */ +export declare const SwitchServiceGetRequestSchema: GenMessage; +/** + * SwitchServiceGetResponse. + * + * @generated from message metalstack.admin.v2.SwitchServiceGetResponse + */ +export type SwitchServiceGetResponse = Message<"metalstack.admin.v2.SwitchServiceGetResponse"> & { + /** + * Switch that was requested. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServiceGetResponse. + * Use `create(SwitchServiceGetResponseSchema)` to create a new message. + */ +export declare const SwitchServiceGetResponseSchema: GenMessage; +/** + * SwitchServiceListRequest. + * + * @generated from message metalstack.admin.v2.SwitchServiceListRequest + */ +export type SwitchServiceListRequest = Message<"metalstack.admin.v2.SwitchServiceListRequest"> & { + /** + * Query to filter the results. + * + * @generated from field: metalstack.api.v2.SwitchQuery query = 1; + */ + query?: SwitchQuery; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServiceListRequest. + * Use `create(SwitchServiceListRequestSchema)` to create a new message. + */ +export declare const SwitchServiceListRequestSchema: GenMessage; +/** + * SwitchServiceListResponse. + * + * @generated from message metalstack.admin.v2.SwitchServiceListResponse + */ +export type SwitchServiceListResponse = Message<"metalstack.admin.v2.SwitchServiceListResponse"> & { + /** + * Switches that match the request query. + * + * @generated from field: repeated metalstack.api.v2.Switch switches = 1; + */ + switches: Switch[]; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServiceListResponse. + * Use `create(SwitchServiceListResponseSchema)` to create a new message. + */ +export declare const SwitchServiceListResponseSchema: GenMessage; +/** + * SwitchServiceUpdateRequest. + * + * @generated from message metalstack.admin.v2.SwitchServiceUpdateRequest + */ +export type SwitchServiceUpdateRequest = Message<"metalstack.admin.v2.SwitchServiceUpdateRequest"> & { + /** + * ID of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request. + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * UpdatedAt is the date when this entity was updated. + * must be part of the update request to ensure optimistic locking. + * + * @generated from field: google.protobuf.Timestamp updated_at = 3; + */ + updatedAt?: Timestamp; + /** + * Description of the switch. + * + * @generated from field: optional string description = 4; + */ + description?: string; + /** + * Replace mode is used to mark a switch ready for replacement. + * + * @generated from field: optional metalstack.api.v2.SwitchReplaceMode replace_mode = 5; + */ + replaceMode?: SwitchReplaceMode; + /** + * Management IP is the switch's IP for management access. + * + * @generated from field: optional string management_ip = 6; + */ + managementIp?: string; + /** + * Management user is the user name to use for management access. + * + * @generated from field: optional string management_user = 7; + */ + managementUser?: string; + /** + * Console command is the command for accessing the switch's console. + * + * @generated from field: optional string console_command = 8; + */ + consoleCommand?: string; + /** + * Nics are the front panel ports of the switch. + * + * @generated from field: repeated metalstack.api.v2.SwitchNic nics = 9; + */ + nics: SwitchNic[]; + /** + * SwitchOs is the OS running on the switch. + * + * @generated from field: optional metalstack.api.v2.SwitchOS os = 10; + */ + os?: SwitchOS; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServiceUpdateRequest. + * Use `create(SwitchServiceUpdateRequestSchema)` to create a new message. + */ +export declare const SwitchServiceUpdateRequestSchema: GenMessage; +/** + * SwitchServiceUpdateResponse. + * + * @generated from message metalstack.admin.v2.SwitchServiceUpdateResponse + */ +export type SwitchServiceUpdateResponse = Message<"metalstack.admin.v2.SwitchServiceUpdateResponse"> & { + /** + * Switch that was updated. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServiceUpdateResponse. + * Use `create(SwitchServiceUpdateResponseSchema)` to create a new message. + */ +export declare const SwitchServiceUpdateResponseSchema: GenMessage; +/** + * SwitchServiceDeleteRequest. + * + * @generated from message metalstack.admin.v2.SwitchServiceDeleteRequest + */ +export type SwitchServiceDeleteRequest = Message<"metalstack.admin.v2.SwitchServiceDeleteRequest"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Force will allow switch deletion despite existing machine connections. + * + * @generated from field: bool force = 2; + */ + force: boolean; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServiceDeleteRequest. + * Use `create(SwitchServiceDeleteRequestSchema)` to create a new message. + */ +export declare const SwitchServiceDeleteRequestSchema: GenMessage; +/** + * SwitchServiceDeleteResponse. + * + * @generated from message metalstack.admin.v2.SwitchServiceDeleteResponse + */ +export type SwitchServiceDeleteResponse = Message<"metalstack.admin.v2.SwitchServiceDeleteResponse"> & { + /** + * Switch that has been deleted. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServiceDeleteResponse. + * Use `create(SwitchServiceDeleteResponseSchema)` to create a new message. + */ +export declare const SwitchServiceDeleteResponseSchema: GenMessage; +/** + * SwitchServiceMigrateRequest. + * + * @generated from message metalstack.admin.v2.SwitchServiceMigrateRequest + */ +export type SwitchServiceMigrateRequest = Message<"metalstack.admin.v2.SwitchServiceMigrateRequest"> & { + /** + * OldSwitch which to migrate away from. + * + * @generated from field: string old_switch = 1; + */ + oldSwitch: string; + /** + * NewSwitch which to migrate to. + * + * @generated from field: string new_switch = 2; + */ + newSwitch: string; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServiceMigrateRequest. + * Use `create(SwitchServiceMigrateRequestSchema)` to create a new message. + */ +export declare const SwitchServiceMigrateRequestSchema: GenMessage; +/** + * SwitchServiceMigrateResponse. + * + * @generated from message metalstack.admin.v2.SwitchServiceMigrateResponse + */ +export type SwitchServiceMigrateResponse = Message<"metalstack.admin.v2.SwitchServiceMigrateResponse"> & { + /** + * Switch that was migrated to. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServiceMigrateResponse. + * Use `create(SwitchServiceMigrateResponseSchema)` to create a new message. + */ +export declare const SwitchServiceMigrateResponseSchema: GenMessage; +/** + * SwitchServicePortRequest. + * + * @generated from message metalstack.admin.v2.SwitchServicePortRequest + */ +export type SwitchServicePortRequest = Message<"metalstack.admin.v2.SwitchServicePortRequest"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + /** + * NicName of the port whose status should be changed. + * + * @generated from field: string nic_name = 2; + */ + nicName: string; + /** + * Status that the port should have. + * + * @generated from field: metalstack.api.v2.SwitchPortStatus status = 3; + */ + status: SwitchPortStatus; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServicePortRequest. + * Use `create(SwitchServicePortRequestSchema)` to create a new message. + */ +export declare const SwitchServicePortRequestSchema: GenMessage; +/** + * SwitchServicePortResponse. + * + * @generated from message metalstack.admin.v2.SwitchServicePortResponse + */ +export type SwitchServicePortResponse = Message<"metalstack.admin.v2.SwitchServicePortResponse"> & { + /** + * Switch after the port status toggle.. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; +/** + * Describes the message metalstack.admin.v2.SwitchServicePortResponse. + * Use `create(SwitchServicePortResponseSchema)` to create a new message. + */ +export declare const SwitchServicePortResponseSchema: GenMessage; +/** + * SwitchService serves switch related functions. + * + * @generated from service metalstack.admin.v2.SwitchService + */ +export declare const SwitchService: GenService<{ + /** + * Get a switch by ID. + * + * @generated from rpc metalstack.admin.v2.SwitchService.Get + */ + get: { + methodKind: "unary"; + input: typeof SwitchServiceGetRequestSchema; + output: typeof SwitchServiceGetResponseSchema; + }; + /** + * List switches. + * + * @generated from rpc metalstack.admin.v2.SwitchService.List + */ + list: { + methodKind: "unary"; + input: typeof SwitchServiceListRequestSchema; + output: typeof SwitchServiceListResponseSchema; + }; + /** + * Update a switch. + * + * @generated from rpc metalstack.admin.v2.SwitchService.Update + */ + update: { + methodKind: "unary"; + input: typeof SwitchServiceUpdateRequestSchema; + output: typeof SwitchServiceUpdateResponseSchema; + }; + /** + * Delete a switch. + * + * @generated from rpc metalstack.admin.v2.SwitchService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof SwitchServiceDeleteRequestSchema; + output: typeof SwitchServiceDeleteResponseSchema; + }; + /** + * Migrate a switch. + * + * @generated from rpc metalstack.admin.v2.SwitchService.Migrate + */ + migrate: { + methodKind: "unary"; + input: typeof SwitchServiceMigrateRequestSchema; + output: typeof SwitchServiceMigrateResponseSchema; + }; + /** + * Port set the port status of a switch port. + * + * @generated from rpc metalstack.admin.v2.SwitchService.Port + */ + port: { + methodKind: "unary"; + input: typeof SwitchServicePortRequestSchema; + output: typeof SwitchServicePortResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/switch_pb.js b/js/metalstack/admin/v2/switch_pb.js new file mode 100644 index 00000000..c34b1a5b --- /dev/null +++ b/js/metalstack/admin/v2/switch_pb.js @@ -0,0 +1,79 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/switch.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import { file_metalstack_api_v2_switch } from "../../api/v2/switch_pb"; +/** + * Describes the file metalstack/admin/v2/switch.proto. + */ +export const file_metalstack_admin_v2_switch = /*@__PURE__*/ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3N3aXRjaC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiI0ChdTd2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoASJFChhTd2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkkKGFN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFF1ZXJ5IkgKGVN3aXRjaFNlcnZpY2VMaXN0UmVzcG9uc2USKwoIc3dpdGNoZXMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gizAQKGlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKAmlkGAEgASgJQg26SApyCMCzrrECAWgBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEkkKDHJlcGxhY2VfbW9kZRgFIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQAUgBiAEBEiMKDW1hbmFnZW1lbnRfaXAYBiABKAlCB7pIBHICcAFIAogBARIpCg9tYW5hZ2VtZW50X3VzZXIYByABKAlCC7pICHIGwLOusQIBSAOIAQESKQoPY29uc29sZV9jb21tYW5kGAggASgJQgu6SAhyBsizrrECAUgEiAEBEioKBG5pY3MYCSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSLAoCb3MYCiABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU0gFiAEBQg4KDF9kZXNjcmlwdGlvbkIPCg1fcmVwbGFjZV9tb2RlQhAKDl9tYW5hZ2VtZW50X2lwQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZEIFCgNfb3MiSAobU3dpdGNoU2VydmljZVVwZGF0ZVJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCJGChpTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARINCgVmb3JjZRgCIAEoCCJIChtTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoImMKG1N3aXRjaFNlcnZpY2VNaWdyYXRlUmVxdWVzdBIhCgpvbGRfc3dpdGNoGAEgASgJQg26SApyCMCzrrECAWgBEiEKCm5ld19zd2l0Y2gYAiABKAlCDbpICnIIwLOusQIBaAEiSQocU3dpdGNoU2VydmljZU1pZ3JhdGVSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gikwEKGFN3aXRjaFNlcnZpY2VQb3J0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARIdCghuaWNfbmFtZRgCIAEoCUILukgIcgbAs66xAgESPQoGc3RhdHVzGAMgASgOMiMubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydFN0YXR1c0IIukgFggECEAEiRgoZU3dpdGNoU2VydmljZVBvcnRSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gyvwUKDVN3aXRjaFNlcnZpY2USbgoDR2V0EiwubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBotLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUdldFJlc3BvbnNlIgrS8xgCAQLg8xgCEnEKBExpc3QSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAhJyCgZVcGRhdGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiBdLzGAEBEnIKBkRlbGV0ZRIvLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZURlbGV0ZVJlcXVlc3QaMC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VEZWxldGVSZXNwb25zZSIF0vMYAQESdQoHTWlncmF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZU1pZ3JhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlTWlncmF0ZVJlc3BvbnNlIgXS8xgBARJsCgRQb3J0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlUG9ydFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VQb3J0UmVzcG9uc2UiBdLzGAEBQs8BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkILU3dpdGNoUHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]); +/** + * Describes the message metalstack.admin.v2.SwitchServiceGetRequest. + * Use `create(SwitchServiceGetRequestSchema)` to create a new message. + */ +export const SwitchServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 0); +/** + * Describes the message metalstack.admin.v2.SwitchServiceGetResponse. + * Use `create(SwitchServiceGetResponseSchema)` to create a new message. + */ +export const SwitchServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 1); +/** + * Describes the message metalstack.admin.v2.SwitchServiceListRequest. + * Use `create(SwitchServiceListRequestSchema)` to create a new message. + */ +export const SwitchServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 2); +/** + * Describes the message metalstack.admin.v2.SwitchServiceListResponse. + * Use `create(SwitchServiceListResponseSchema)` to create a new message. + */ +export const SwitchServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 3); +/** + * Describes the message metalstack.admin.v2.SwitchServiceUpdateRequest. + * Use `create(SwitchServiceUpdateRequestSchema)` to create a new message. + */ +export const SwitchServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 4); +/** + * Describes the message metalstack.admin.v2.SwitchServiceUpdateResponse. + * Use `create(SwitchServiceUpdateResponseSchema)` to create a new message. + */ +export const SwitchServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 5); +/** + * Describes the message metalstack.admin.v2.SwitchServiceDeleteRequest. + * Use `create(SwitchServiceDeleteRequestSchema)` to create a new message. + */ +export const SwitchServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 6); +/** + * Describes the message metalstack.admin.v2.SwitchServiceDeleteResponse. + * Use `create(SwitchServiceDeleteResponseSchema)` to create a new message. + */ +export const SwitchServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 7); +/** + * Describes the message metalstack.admin.v2.SwitchServiceMigrateRequest. + * Use `create(SwitchServiceMigrateRequestSchema)` to create a new message. + */ +export const SwitchServiceMigrateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 8); +/** + * Describes the message metalstack.admin.v2.SwitchServiceMigrateResponse. + * Use `create(SwitchServiceMigrateResponseSchema)` to create a new message. + */ +export const SwitchServiceMigrateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 9); +/** + * Describes the message metalstack.admin.v2.SwitchServicePortRequest. + * Use `create(SwitchServicePortRequestSchema)` to create a new message. + */ +export const SwitchServicePortRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 10); +/** + * Describes the message metalstack.admin.v2.SwitchServicePortResponse. + * Use `create(SwitchServicePortResponseSchema)` to create a new message. + */ +export const SwitchServicePortResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_switch, 11); +/** + * SwitchService serves switch related functions. + * + * @generated from service metalstack.admin.v2.SwitchService + */ +export const SwitchService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_switch, 0); diff --git a/js/metalstack/admin/v2/switch_pb.ts b/js/metalstack/admin/v2/switch_pb.ts new file mode 100644 index 00000000..7179400f --- /dev/null +++ b/js/metalstack/admin/v2/switch_pb.ts @@ -0,0 +1,435 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/switch.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { UpdateMeta } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import type { Switch, SwitchNic, SwitchOS, SwitchPortStatus, SwitchQuery, SwitchReplaceMode } from "../../api/v2/switch_pb"; +import { file_metalstack_api_v2_switch } from "../../api/v2/switch_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/switch.proto. + */ +export const file_metalstack_admin_v2_switch: GenFile = /*@__PURE__*/ + fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3N3aXRjaC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiI0ChdTd2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoASJFChhTd2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkkKGFN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFF1ZXJ5IkgKGVN3aXRjaFNlcnZpY2VMaXN0UmVzcG9uc2USKwoIc3dpdGNoZXMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gizAQKGlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKAmlkGAEgASgJQg26SApyCMCzrrECAWgBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEkkKDHJlcGxhY2VfbW9kZRgFIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQAUgBiAEBEiMKDW1hbmFnZW1lbnRfaXAYBiABKAlCB7pIBHICcAFIAogBARIpCg9tYW5hZ2VtZW50X3VzZXIYByABKAlCC7pICHIGwLOusQIBSAOIAQESKQoPY29uc29sZV9jb21tYW5kGAggASgJQgu6SAhyBsizrrECAUgEiAEBEioKBG5pY3MYCSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSLAoCb3MYCiABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU0gFiAEBQg4KDF9kZXNjcmlwdGlvbkIPCg1fcmVwbGFjZV9tb2RlQhAKDl9tYW5hZ2VtZW50X2lwQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZEIFCgNfb3MiSAobU3dpdGNoU2VydmljZVVwZGF0ZVJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCJGChpTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARINCgVmb3JjZRgCIAEoCCJIChtTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoImMKG1N3aXRjaFNlcnZpY2VNaWdyYXRlUmVxdWVzdBIhCgpvbGRfc3dpdGNoGAEgASgJQg26SApyCMCzrrECAWgBEiEKCm5ld19zd2l0Y2gYAiABKAlCDbpICnIIwLOusQIBaAEiSQocU3dpdGNoU2VydmljZU1pZ3JhdGVSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gikwEKGFN3aXRjaFNlcnZpY2VQb3J0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARIdCghuaWNfbmFtZRgCIAEoCUILukgIcgbAs66xAgESPQoGc3RhdHVzGAMgASgOMiMubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydFN0YXR1c0IIukgFggECEAEiRgoZU3dpdGNoU2VydmljZVBvcnRSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gyvwUKDVN3aXRjaFNlcnZpY2USbgoDR2V0EiwubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBotLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUdldFJlc3BvbnNlIgrS8xgCAQLg8xgCEnEKBExpc3QSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAhJyCgZVcGRhdGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiBdLzGAEBEnIKBkRlbGV0ZRIvLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZURlbGV0ZVJlcXVlc3QaMC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VEZWxldGVSZXNwb25zZSIF0vMYAQESdQoHTWlncmF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZU1pZ3JhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlTWlncmF0ZVJlc3BvbnNlIgXS8xgBARJsCgRQb3J0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlUG9ydFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VQb3J0UmVzcG9uc2UiBdLzGAEBQs8BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkILU3dpdGNoUHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]); + +/** + * SwitchServiceGetRequest. + * + * @generated from message metalstack.admin.v2.SwitchServiceGetRequest + */ +export type SwitchServiceGetRequest = Message<"metalstack.admin.v2.SwitchServiceGetRequest"> & { + /** + * Id of the switch to get. + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServiceGetRequest. + * Use `create(SwitchServiceGetRequestSchema)` to create a new message. + */ +export const SwitchServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 0); + +/** + * SwitchServiceGetResponse. + * + * @generated from message metalstack.admin.v2.SwitchServiceGetResponse + */ +export type SwitchServiceGetResponse = Message<"metalstack.admin.v2.SwitchServiceGetResponse"> & { + /** + * Switch that was requested. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServiceGetResponse. + * Use `create(SwitchServiceGetResponseSchema)` to create a new message. + */ +export const SwitchServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 1); + +/** + * SwitchServiceListRequest. + * + * @generated from message metalstack.admin.v2.SwitchServiceListRequest + */ +export type SwitchServiceListRequest = Message<"metalstack.admin.v2.SwitchServiceListRequest"> & { + /** + * Query to filter the results. + * + * @generated from field: metalstack.api.v2.SwitchQuery query = 1; + */ + query?: SwitchQuery; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServiceListRequest. + * Use `create(SwitchServiceListRequestSchema)` to create a new message. + */ +export const SwitchServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 2); + +/** + * SwitchServiceListResponse. + * + * @generated from message metalstack.admin.v2.SwitchServiceListResponse + */ +export type SwitchServiceListResponse = Message<"metalstack.admin.v2.SwitchServiceListResponse"> & { + /** + * Switches that match the request query. + * + * @generated from field: repeated metalstack.api.v2.Switch switches = 1; + */ + switches: Switch[]; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServiceListResponse. + * Use `create(SwitchServiceListResponseSchema)` to create a new message. + */ +export const SwitchServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 3); + +/** + * SwitchServiceUpdateRequest. + * + * @generated from message metalstack.admin.v2.SwitchServiceUpdateRequest + */ +export type SwitchServiceUpdateRequest = Message<"metalstack.admin.v2.SwitchServiceUpdateRequest"> & { + /** + * ID of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request. + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * UpdatedAt is the date when this entity was updated. + * must be part of the update request to ensure optimistic locking. + * + * @generated from field: google.protobuf.Timestamp updated_at = 3; + */ + updatedAt?: Timestamp; + + /** + * Description of the switch. + * + * @generated from field: optional string description = 4; + */ + description?: string; + + /** + * Replace mode is used to mark a switch ready for replacement. + * + * @generated from field: optional metalstack.api.v2.SwitchReplaceMode replace_mode = 5; + */ + replaceMode?: SwitchReplaceMode; + + /** + * Management IP is the switch's IP for management access. + * + * @generated from field: optional string management_ip = 6; + */ + managementIp?: string; + + /** + * Management user is the user name to use for management access. + * + * @generated from field: optional string management_user = 7; + */ + managementUser?: string; + + /** + * Console command is the command for accessing the switch's console. + * + * @generated from field: optional string console_command = 8; + */ + consoleCommand?: string; + + /** + * Nics are the front panel ports of the switch. + * + * @generated from field: repeated metalstack.api.v2.SwitchNic nics = 9; + */ + nics: SwitchNic[]; + + /** + * SwitchOs is the OS running on the switch. + * + * @generated from field: optional metalstack.api.v2.SwitchOS os = 10; + */ + os?: SwitchOS; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServiceUpdateRequest. + * Use `create(SwitchServiceUpdateRequestSchema)` to create a new message. + */ +export const SwitchServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 4); + +/** + * SwitchServiceUpdateResponse. + * + * @generated from message metalstack.admin.v2.SwitchServiceUpdateResponse + */ +export type SwitchServiceUpdateResponse = Message<"metalstack.admin.v2.SwitchServiceUpdateResponse"> & { + /** + * Switch that was updated. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServiceUpdateResponse. + * Use `create(SwitchServiceUpdateResponseSchema)` to create a new message. + */ +export const SwitchServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 5); + +/** + * SwitchServiceDeleteRequest. + * + * @generated from message metalstack.admin.v2.SwitchServiceDeleteRequest + */ +export type SwitchServiceDeleteRequest = Message<"metalstack.admin.v2.SwitchServiceDeleteRequest"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Force will allow switch deletion despite existing machine connections. + * + * @generated from field: bool force = 2; + */ + force: boolean; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServiceDeleteRequest. + * Use `create(SwitchServiceDeleteRequestSchema)` to create a new message. + */ +export const SwitchServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 6); + +/** + * SwitchServiceDeleteResponse. + * + * @generated from message metalstack.admin.v2.SwitchServiceDeleteResponse + */ +export type SwitchServiceDeleteResponse = Message<"metalstack.admin.v2.SwitchServiceDeleteResponse"> & { + /** + * Switch that has been deleted. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServiceDeleteResponse. + * Use `create(SwitchServiceDeleteResponseSchema)` to create a new message. + */ +export const SwitchServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 7); + +/** + * SwitchServiceMigrateRequest. + * + * @generated from message metalstack.admin.v2.SwitchServiceMigrateRequest + */ +export type SwitchServiceMigrateRequest = Message<"metalstack.admin.v2.SwitchServiceMigrateRequest"> & { + /** + * OldSwitch which to migrate away from. + * + * @generated from field: string old_switch = 1; + */ + oldSwitch: string; + + /** + * NewSwitch which to migrate to. + * + * @generated from field: string new_switch = 2; + */ + newSwitch: string; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServiceMigrateRequest. + * Use `create(SwitchServiceMigrateRequestSchema)` to create a new message. + */ +export const SwitchServiceMigrateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 8); + +/** + * SwitchServiceMigrateResponse. + * + * @generated from message metalstack.admin.v2.SwitchServiceMigrateResponse + */ +export type SwitchServiceMigrateResponse = Message<"metalstack.admin.v2.SwitchServiceMigrateResponse"> & { + /** + * Switch that was migrated to. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServiceMigrateResponse. + * Use `create(SwitchServiceMigrateResponseSchema)` to create a new message. + */ +export const SwitchServiceMigrateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 9); + +/** + * SwitchServicePortRequest. + * + * @generated from message metalstack.admin.v2.SwitchServicePortRequest + */ +export type SwitchServicePortRequest = Message<"metalstack.admin.v2.SwitchServicePortRequest"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * NicName of the port whose status should be changed. + * + * @generated from field: string nic_name = 2; + */ + nicName: string; + + /** + * Status that the port should have. + * + * @generated from field: metalstack.api.v2.SwitchPortStatus status = 3; + */ + status: SwitchPortStatus; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServicePortRequest. + * Use `create(SwitchServicePortRequestSchema)` to create a new message. + */ +export const SwitchServicePortRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 10); + +/** + * SwitchServicePortResponse. + * + * @generated from message metalstack.admin.v2.SwitchServicePortResponse + */ +export type SwitchServicePortResponse = Message<"metalstack.admin.v2.SwitchServicePortResponse"> & { + /** + * Switch after the port status toggle.. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; + +/** + * Describes the message metalstack.admin.v2.SwitchServicePortResponse. + * Use `create(SwitchServicePortResponseSchema)` to create a new message. + */ +export const SwitchServicePortResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_switch, 11); + +/** + * SwitchService serves switch related functions. + * + * @generated from service metalstack.admin.v2.SwitchService + */ +export const SwitchService: GenService<{ + /** + * Get a switch by ID. + * + * @generated from rpc metalstack.admin.v2.SwitchService.Get + */ + get: { + methodKind: "unary"; + input: typeof SwitchServiceGetRequestSchema; + output: typeof SwitchServiceGetResponseSchema; + }, + /** + * List switches. + * + * @generated from rpc metalstack.admin.v2.SwitchService.List + */ + list: { + methodKind: "unary"; + input: typeof SwitchServiceListRequestSchema; + output: typeof SwitchServiceListResponseSchema; + }, + /** + * Update a switch. + * + * @generated from rpc metalstack.admin.v2.SwitchService.Update + */ + update: { + methodKind: "unary"; + input: typeof SwitchServiceUpdateRequestSchema; + output: typeof SwitchServiceUpdateResponseSchema; + }, + /** + * Delete a switch. + * + * @generated from rpc metalstack.admin.v2.SwitchService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof SwitchServiceDeleteRequestSchema; + output: typeof SwitchServiceDeleteResponseSchema; + }, + /** + * Migrate a switch. + * + * @generated from rpc metalstack.admin.v2.SwitchService.Migrate + */ + migrate: { + methodKind: "unary"; + input: typeof SwitchServiceMigrateRequestSchema; + output: typeof SwitchServiceMigrateResponseSchema; + }, + /** + * Port set the port status of a switch port. + * + * @generated from rpc metalstack.admin.v2.SwitchService.Port + */ + port: { + methodKind: "unary"; + input: typeof SwitchServicePortRequestSchema; + output: typeof SwitchServicePortResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_switch, 0); + diff --git a/js/metalstack/admin/v2/tenant_pb.d.ts b/js/metalstack/admin/v2/tenant_pb.d.ts new file mode 100644 index 00000000..647af8ca --- /dev/null +++ b/js/metalstack/admin/v2/tenant_pb.d.ts @@ -0,0 +1,149 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Paging } from "../../api/v2/common_pb"; +import type { Tenant } from "../../api/v2/tenant_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/tenant.proto. + */ +export declare const file_metalstack_admin_v2_tenant: GenFile; +/** + * TenantServiceCreateRequest is the request payload of the tenant create request + * + * @generated from message metalstack.admin.v2.TenantServiceCreateRequest + */ +export type TenantServiceCreateRequest = Message<"metalstack.admin.v2.TenantServiceCreateRequest"> & { + /** + * Name of this tenant + * + * @generated from field: string name = 1; + */ + name: string; + /** + * Description of this tenant + * + * @generated from field: optional string description = 2; + */ + description?: string; + /** + * Email of the tenant, if not set will be inherited from the creator + * + * @generated from field: optional string email = 3; + */ + email?: string; + /** + * AvatarUrl of the tenant + * + * @generated from field: optional string avatar_url = 4; + */ + avatarUrl?: string; +}; +/** + * Describes the message metalstack.admin.v2.TenantServiceCreateRequest. + * Use `create(TenantServiceCreateRequestSchema)` to create a new message. + */ +export declare const TenantServiceCreateRequestSchema: GenMessage; +/** + * TenantServiceCreateResponse is the response payload of the tenant create request + * + * @generated from message metalstack.admin.v2.TenantServiceCreateResponse + */ +export type TenantServiceCreateResponse = Message<"metalstack.admin.v2.TenantServiceCreateResponse"> & { + /** + * Tenant is the tenant + * + * @generated from field: metalstack.api.v2.Tenant tenant = 1; + */ + tenant?: Tenant; +}; +/** + * Describes the message metalstack.admin.v2.TenantServiceCreateResponse. + * Use `create(TenantServiceCreateResponseSchema)` to create a new message. + */ +export declare const TenantServiceCreateResponseSchema: GenMessage; +/** + * TenantServiceListRequest is the request payload for a tenant list request + * + * @generated from message metalstack.admin.v2.TenantServiceListRequest + */ +export type TenantServiceListRequest = Message<"metalstack.admin.v2.TenantServiceListRequest"> & { + /** + * Login of the tenant to list + * + * @generated from field: optional string login = 1; + */ + login?: string; + /** + * Name of the tenant to list + * + * @generated from field: optional string name = 2; + */ + name?: string; + /** + * Email of the tenant to list + * + * @generated from field: optional string email = 3; + */ + email?: string; + /** + * Paging details for the list request + * + * @generated from field: metalstack.api.v2.Paging paging = 7; + */ + paging?: Paging; +}; +/** + * Describes the message metalstack.admin.v2.TenantServiceListRequest. + * Use `create(TenantServiceListRequestSchema)` to create a new message. + */ +export declare const TenantServiceListRequestSchema: GenMessage; +/** + * TenantServiceListResponse is the response payload for a tenant list request + * + * @generated from message metalstack.admin.v2.TenantServiceListResponse + */ +export type TenantServiceListResponse = Message<"metalstack.admin.v2.TenantServiceListResponse"> & { + /** + * Tenants are the list of tenants + * + * @generated from field: repeated metalstack.api.v2.Tenant tenants = 1; + */ + tenants: Tenant[]; + /** + * NextPage is used for pagination, returns the next page to be fetched and must then be provided in the list request. + * + * @generated from field: optional uint64 next_page = 2; + */ + nextPage?: bigint; +}; +/** + * Describes the message metalstack.admin.v2.TenantServiceListResponse. + * Use `create(TenantServiceListResponseSchema)` to create a new message. + */ +export declare const TenantServiceListResponseSchema: GenMessage; +/** + * TenantService serves tenant related functions + * + * @generated from service metalstack.admin.v2.TenantService + */ +export declare const TenantService: GenService<{ + /** + * Create a tenant + * + * @generated from rpc metalstack.admin.v2.TenantService.Create + */ + create: { + methodKind: "unary"; + input: typeof TenantServiceCreateRequestSchema; + output: typeof TenantServiceCreateResponseSchema; + }; + /** + * List all tenants + * + * @generated from rpc metalstack.admin.v2.TenantService.List + */ + list: { + methodKind: "unary"; + input: typeof TenantServiceListRequestSchema; + output: typeof TenantServiceListResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/tenant_pb.js b/js/metalstack/admin/v2/tenant_pb.js new file mode 100644 index 00000000..4d99f3ef --- /dev/null +++ b/js/metalstack/admin/v2/tenant_pb.js @@ -0,0 +1,38 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/tenant.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import { file_metalstack_api_v2_tenant } from "../../api/v2/tenant_pb"; +/** + * Describes the file metalstack/admin/v2/tenant.proto. + */ +export const file_metalstack_admin_v2_tenant = /*@__PURE__*/ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiK9AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIXCgphdmF0YXJfdXJsGAQgASgJSAKIAQFCDgoMX2Rlc2NyaXB0aW9uQggKBl9lbWFpbEINCgtfYXZhdGFyX3VybCJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IqoBChhUZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QSEgoFbG9naW4YASABKAlIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEhIKBWVtYWlsGAMgASgJSAKIAQESKQoGcGFnaW5nGAcgASgLMhkubWV0YWxzdGFjay5hcGkudjIuUGFnaW5nQggKBl9sb2dpbkIHCgVfbmFtZUIICgZfZW1haWwibQoZVGVuYW50U2VydmljZUxpc3RSZXNwb25zZRIqCgd0ZW5hbnRzGAEgAygLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EhYKCW5leHRfcGFnZRgCIAEoBEgAiAEBQgwKCl9uZXh0X3BhZ2Uy8gEKDVRlbmFudFNlcnZpY2UScgoGQ3JlYXRlEi8ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBowLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlIgXS8xgBARJtCgRMaXN0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2UiBtLzGAIBAkLPAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCC1RlbmFudFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]); +/** + * Describes the message metalstack.admin.v2.TenantServiceCreateRequest. + * Use `create(TenantServiceCreateRequestSchema)` to create a new message. + */ +export const TenantServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_tenant, 0); +/** + * Describes the message metalstack.admin.v2.TenantServiceCreateResponse. + * Use `create(TenantServiceCreateResponseSchema)` to create a new message. + */ +export const TenantServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_tenant, 1); +/** + * Describes the message metalstack.admin.v2.TenantServiceListRequest. + * Use `create(TenantServiceListRequestSchema)` to create a new message. + */ +export const TenantServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_tenant, 2); +/** + * Describes the message metalstack.admin.v2.TenantServiceListResponse. + * Use `create(TenantServiceListResponseSchema)` to create a new message. + */ +export const TenantServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_tenant, 3); +/** + * TenantService serves tenant related functions + * + * @generated from service metalstack.admin.v2.TenantService + */ +export const TenantService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_tenant, 0); diff --git a/js/metalstack/admin/v2/tenant_pb.ts b/js/metalstack/admin/v2/tenant_pb.ts new file mode 100644 index 00000000..f483476e --- /dev/null +++ b/js/metalstack/admin/v2/tenant_pb.ts @@ -0,0 +1,182 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/tenant.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Paging } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import type { Tenant } from "../../api/v2/tenant_pb"; +import { file_metalstack_api_v2_tenant } from "../../api/v2/tenant_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/tenant.proto. + */ +export const file_metalstack_admin_v2_tenant: GenFile = /*@__PURE__*/ + fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3RlbmFudC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiK9AQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIXCgphdmF0YXJfdXJsGAQgASgJSAKIAQFCDgoMX2Rlc2NyaXB0aW9uQggKBl9lbWFpbEINCgtfYXZhdGFyX3VybCJIChtUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IqoBChhUZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QSEgoFbG9naW4YASABKAlIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEhIKBWVtYWlsGAMgASgJSAKIAQESKQoGcGFnaW5nGAcgASgLMhkubWV0YWxzdGFjay5hcGkudjIuUGFnaW5nQggKBl9sb2dpbkIHCgVfbmFtZUIICgZfZW1haWwibQoZVGVuYW50U2VydmljZUxpc3RSZXNwb25zZRIqCgd0ZW5hbnRzGAEgAygLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50EhYKCW5leHRfcGFnZRgCIAEoBEgAiAEBQgwKCl9uZXh0X3BhZ2Uy8gEKDVRlbmFudFNlcnZpY2UScgoGQ3JlYXRlEi8ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBowLm1ldGFsc3RhY2suYWRtaW4udjIuVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlIgXS8xgBARJtCgRMaXN0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlRlbmFudFNlcnZpY2VMaXN0UmVzcG9uc2UiBtLzGAIBAkLPAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCC1RlbmFudFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_tenant]); + +/** + * TenantServiceCreateRequest is the request payload of the tenant create request + * + * @generated from message metalstack.admin.v2.TenantServiceCreateRequest + */ +export type TenantServiceCreateRequest = Message<"metalstack.admin.v2.TenantServiceCreateRequest"> & { + /** + * Name of this tenant + * + * @generated from field: string name = 1; + */ + name: string; + + /** + * Description of this tenant + * + * @generated from field: optional string description = 2; + */ + description?: string; + + /** + * Email of the tenant, if not set will be inherited from the creator + * + * @generated from field: optional string email = 3; + */ + email?: string; + + /** + * AvatarUrl of the tenant + * + * @generated from field: optional string avatar_url = 4; + */ + avatarUrl?: string; +}; + +/** + * Describes the message metalstack.admin.v2.TenantServiceCreateRequest. + * Use `create(TenantServiceCreateRequestSchema)` to create a new message. + */ +export const TenantServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_tenant, 0); + +/** + * TenantServiceCreateResponse is the response payload of the tenant create request + * + * @generated from message metalstack.admin.v2.TenantServiceCreateResponse + */ +export type TenantServiceCreateResponse = Message<"metalstack.admin.v2.TenantServiceCreateResponse"> & { + /** + * Tenant is the tenant + * + * @generated from field: metalstack.api.v2.Tenant tenant = 1; + */ + tenant?: Tenant; +}; + +/** + * Describes the message metalstack.admin.v2.TenantServiceCreateResponse. + * Use `create(TenantServiceCreateResponseSchema)` to create a new message. + */ +export const TenantServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_tenant, 1); + +/** + * TenantServiceListRequest is the request payload for a tenant list request + * + * @generated from message metalstack.admin.v2.TenantServiceListRequest + */ +export type TenantServiceListRequest = Message<"metalstack.admin.v2.TenantServiceListRequest"> & { + /** + * Login of the tenant to list + * + * @generated from field: optional string login = 1; + */ + login?: string; + + /** + * Name of the tenant to list + * + * @generated from field: optional string name = 2; + */ + name?: string; + + /** + * Email of the tenant to list + * + * @generated from field: optional string email = 3; + */ + email?: string; + + /** + * Paging details for the list request + * + * @generated from field: metalstack.api.v2.Paging paging = 7; + */ + paging?: Paging; +}; + +/** + * Describes the message metalstack.admin.v2.TenantServiceListRequest. + * Use `create(TenantServiceListRequestSchema)` to create a new message. + */ +export const TenantServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_tenant, 2); + +/** + * TenantServiceListResponse is the response payload for a tenant list request + * + * @generated from message metalstack.admin.v2.TenantServiceListResponse + */ +export type TenantServiceListResponse = Message<"metalstack.admin.v2.TenantServiceListResponse"> & { + /** + * Tenants are the list of tenants + * + * @generated from field: repeated metalstack.api.v2.Tenant tenants = 1; + */ + tenants: Tenant[]; + + /** + * NextPage is used for pagination, returns the next page to be fetched and must then be provided in the list request. + * + * @generated from field: optional uint64 next_page = 2; + */ + nextPage?: bigint; +}; + +/** + * Describes the message metalstack.admin.v2.TenantServiceListResponse. + * Use `create(TenantServiceListResponseSchema)` to create a new message. + */ +export const TenantServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_tenant, 3); + +/** + * TenantService serves tenant related functions + * + * @generated from service metalstack.admin.v2.TenantService + */ +export const TenantService: GenService<{ + /** + * Create a tenant + * + * @generated from rpc metalstack.admin.v2.TenantService.Create + */ + create: { + methodKind: "unary"; + input: typeof TenantServiceCreateRequestSchema; + output: typeof TenantServiceCreateResponseSchema; + }, + /** + * List all tenants + * + * @generated from rpc metalstack.admin.v2.TenantService.List + */ + list: { + methodKind: "unary"; + input: typeof TenantServiceListRequestSchema; + output: typeof TenantServiceListResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_tenant, 0); + diff --git a/js/metalstack/admin/v2/token_pb.d.ts b/js/metalstack/admin/v2/token_pb.d.ts new file mode 100644 index 00000000..3afa905a --- /dev/null +++ b/js/metalstack/admin/v2/token_pb.d.ts @@ -0,0 +1,164 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Token, TokenServiceCreateRequest as TokenServiceCreateRequest$1 } from "../../api/v2/token_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/admin/v2/token.proto. + */ +export declare const file_metalstack_admin_v2_token: GenFile; +/** + * TokenServiceListRequest is the request payload for the token list request + * + * @generated from message metalstack.admin.v2.TokenServiceListRequest + */ +export type TokenServiceListRequest = Message<"metalstack.admin.v2.TokenServiceListRequest"> & { + /** + * User is the id of the user for which the tokens should be listed + * + * @generated from field: optional string user = 1; + */ + user?: string; +}; +/** + * Describes the message metalstack.admin.v2.TokenServiceListRequest. + * Use `create(TokenServiceListRequestSchema)` to create a new message. + */ +export declare const TokenServiceListRequestSchema: GenMessage; +/** + * TokenServiceListResponse is the response payload for the token list request + * + * @generated from message metalstack.admin.v2.TokenServiceListResponse + */ +export type TokenServiceListResponse = Message<"metalstack.admin.v2.TokenServiceListResponse"> & { + /** + * Tokens is the list of tokens + * + * @generated from field: repeated metalstack.api.v2.Token tokens = 1; + */ + tokens: Token[]; +}; +/** + * Describes the message metalstack.admin.v2.TokenServiceListResponse. + * Use `create(TokenServiceListResponseSchema)` to create a new message. + */ +export declare const TokenServiceListResponseSchema: GenMessage; +/** + * TokenServiceRevokeRequest is the request payload for the token revoke request + * + * @generated from message metalstack.admin.v2.TokenServiceRevokeRequest + */ +export type TokenServiceRevokeRequest = Message<"metalstack.admin.v2.TokenServiceRevokeRequest"> & { + /** + * Uuid is the uuid of the token which should be revoked + * + * @generated from field: string uuid = 1; + */ + uuid: string; + /** + * User is the id of the user for which the token should be revoked + * + * @generated from field: string user = 2; + */ + user: string; +}; +/** + * Describes the message metalstack.admin.v2.TokenServiceRevokeRequest. + * Use `create(TokenServiceRevokeRequestSchema)` to create a new message. + */ +export declare const TokenServiceRevokeRequestSchema: GenMessage; +/** + * TokenServiceRevokeResponse is the response payload for the token revoke request + * + * @generated from message metalstack.admin.v2.TokenServiceRevokeResponse + */ +export type TokenServiceRevokeResponse = Message<"metalstack.admin.v2.TokenServiceRevokeResponse"> & {}; +/** + * Describes the message metalstack.admin.v2.TokenServiceRevokeResponse. + * Use `create(TokenServiceRevokeResponseSchema)` to create a new message. + */ +export declare const TokenServiceRevokeResponseSchema: GenMessage; +/** + * TokenServiceCreateRequest is the request payload to create a token + * + * @generated from message metalstack.admin.v2.TokenServiceCreateRequest + */ +export type TokenServiceCreateRequest = Message<"metalstack.admin.v2.TokenServiceCreateRequest"> & { + /** + * User this token should be created for, if omitted, user is derived from caller + * + * @generated from field: optional string user = 1; + */ + user?: string; + /** + * TokenCreateRequest which should be created + * + * @generated from field: metalstack.api.v2.TokenServiceCreateRequest token_create_request = 2; + */ + tokenCreateRequest?: TokenServiceCreateRequest$1; +}; +/** + * Describes the message metalstack.admin.v2.TokenServiceCreateRequest. + * Use `create(TokenServiceCreateRequestSchema)` to create a new message. + */ +export declare const TokenServiceCreateRequestSchema: GenMessage; +/** + * TokenServiceCreateResponse is the response payload of a token create request + * + * @generated from message metalstack.admin.v2.TokenServiceCreateResponse + */ +export type TokenServiceCreateResponse = Message<"metalstack.admin.v2.TokenServiceCreateResponse"> & { + /** + * Token which was created + * + * @generated from field: metalstack.api.v2.Token token = 1; + */ + token?: Token; + /** + * Secret is the body if the jwt token, should be used in api requests as bearer token + * + * @generated from field: string secret = 2; + */ + secret: string; +}; +/** + * Describes the message metalstack.admin.v2.TokenServiceCreateResponse. + * Use `create(TokenServiceCreateResponseSchema)` to create a new message. + */ +export declare const TokenServiceCreateResponseSchema: GenMessage; +/** + * TokenService serves token related functions + * + * @generated from service metalstack.admin.v2.TokenService + */ +export declare const TokenService: GenService<{ + /** + * List tokens + * + * @generated from rpc metalstack.admin.v2.TokenService.List + */ + list: { + methodKind: "unary"; + input: typeof TokenServiceListRequestSchema; + output: typeof TokenServiceListResponseSchema; + }; + /** + * Revoke a token + * + * @generated from rpc metalstack.admin.v2.TokenService.Revoke + */ + revoke: { + methodKind: "unary"; + input: typeof TokenServiceRevokeRequestSchema; + output: typeof TokenServiceRevokeResponseSchema; + }; + /** + * Create a token to authenticate against the platform, the secret will be only visible in the response. + * This service is suitable to create tokens for other users instead of deriving users from tokens directly. + * + * @generated from rpc metalstack.admin.v2.TokenService.Create + */ + create: { + methodKind: "unary"; + input: typeof TokenServiceCreateRequestSchema; + output: typeof TokenServiceCreateResponseSchema; + }; +}>; diff --git a/js/metalstack/admin/v2/token_pb.js b/js/metalstack/admin/v2/token_pb.js new file mode 100644 index 00000000..11dd6bd3 --- /dev/null +++ b/js/metalstack/admin/v2/token_pb.js @@ -0,0 +1,47 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/token.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_token } from "../../api/v2/token_pb"; +/** + * Describes the file metalstack/admin/v2/token.proto. + */ +export const file_metalstack_admin_v2_token = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FkbWluL3YyL3Rva2VuLnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIjUKF1Rva2VuU2VydmljZUxpc3RSZXF1ZXN0EhEKBHVzZXIYASABKAlIAIgBAUIHCgVfdXNlciJEChhUb2tlblNlcnZpY2VMaXN0UmVzcG9uc2USKAoGdG9rZW5zGAEgAygLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4iTQoZVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIYCgR1c2VyGAIgASgJQgq6SAdyBRACGIAEIhwKGlRva2VuU2VydmljZVJldm9rZVJlc3BvbnNlIo8BChlUb2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0Eh0KBHVzZXIYASABKAlCCrpIB3IFEAIYgARIAIgBARJKChR0b2tlbl9jcmVhdGVfcmVxdWVzdBgCIAEoCzIsLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3RCBwoFX3VzZXIiVQoaVG9rZW5TZXJ2aWNlQ3JlYXRlUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbhIOCgZzZWNyZXQYAiABKAky3wIKDFRva2VuU2VydmljZRJrCgRMaXN0EiwubWV0YWxzdGFjay5hZG1pbi52Mi5Ub2tlblNlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYWRtaW4udjIuVG9rZW5TZXJ2aWNlTGlzdFJlc3BvbnNlIgbS8xgCAQIScAoGUmV2b2tlEi4ubWV0YWxzdGFjay5hZG1pbi52Mi5Ub2tlblNlcnZpY2VSZXZva2VSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5Ub2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSIF0vMYAQEScAoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hZG1pbi52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXNwb25zZSIF0vMYAQFCzgEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgpUb2tlblByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_token]); +/** + * Describes the message metalstack.admin.v2.TokenServiceListRequest. + * Use `create(TokenServiceListRequestSchema)` to create a new message. + */ +export const TokenServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_token, 0); +/** + * Describes the message metalstack.admin.v2.TokenServiceListResponse. + * Use `create(TokenServiceListResponseSchema)` to create a new message. + */ +export const TokenServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_token, 1); +/** + * Describes the message metalstack.admin.v2.TokenServiceRevokeRequest. + * Use `create(TokenServiceRevokeRequestSchema)` to create a new message. + */ +export const TokenServiceRevokeRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_token, 2); +/** + * Describes the message metalstack.admin.v2.TokenServiceRevokeResponse. + * Use `create(TokenServiceRevokeResponseSchema)` to create a new message. + */ +export const TokenServiceRevokeResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_token, 3); +/** + * Describes the message metalstack.admin.v2.TokenServiceCreateRequest. + * Use `create(TokenServiceCreateRequestSchema)` to create a new message. + */ +export const TokenServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_token, 4); +/** + * Describes the message metalstack.admin.v2.TokenServiceCreateResponse. + * Use `create(TokenServiceCreateResponseSchema)` to create a new message. + */ +export const TokenServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_token, 5); +/** + * TokenService serves token related functions + * + * @generated from service metalstack.admin.v2.TokenService + */ +export const TokenService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_token, 0); diff --git a/js/metalstack/admin/v2/token_pb.ts b/js/metalstack/admin/v2/token_pb.ts new file mode 100644 index 00000000..286a653a --- /dev/null +++ b/js/metalstack/admin/v2/token_pb.ts @@ -0,0 +1,199 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/admin/v2/token.proto (package metalstack.admin.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import type { Token, TokenServiceCreateRequest as TokenServiceCreateRequest$1 } from "../../api/v2/token_pb"; +import { file_metalstack_api_v2_token } from "../../api/v2/token_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/admin/v2/token.proto. + */ +export const file_metalstack_admin_v2_token: GenFile = /*@__PURE__*/ + fileDesc("Ch9tZXRhbHN0YWNrL2FkbWluL3YyL3Rva2VuLnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIjUKF1Rva2VuU2VydmljZUxpc3RSZXF1ZXN0EhEKBHVzZXIYASABKAlIAIgBAUIHCgVfdXNlciJEChhUb2tlblNlcnZpY2VMaXN0UmVzcG9uc2USKAoGdG9rZW5zGAEgAygLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4iTQoZVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIYCgR1c2VyGAIgASgJQgq6SAdyBRACGIAEIhwKGlRva2VuU2VydmljZVJldm9rZVJlc3BvbnNlIo8BChlUb2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0Eh0KBHVzZXIYASABKAlCCrpIB3IFEAIYgARIAIgBARJKChR0b2tlbl9jcmVhdGVfcmVxdWVzdBgCIAEoCzIsLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3RCBwoFX3VzZXIiVQoaVG9rZW5TZXJ2aWNlQ3JlYXRlUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbhIOCgZzZWNyZXQYAiABKAky3wIKDFRva2VuU2VydmljZRJrCgRMaXN0EiwubWV0YWxzdGFjay5hZG1pbi52Mi5Ub2tlblNlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYWRtaW4udjIuVG9rZW5TZXJ2aWNlTGlzdFJlc3BvbnNlIgbS8xgCAQIScAoGUmV2b2tlEi4ubWV0YWxzdGFjay5hZG1pbi52Mi5Ub2tlblNlcnZpY2VSZXZva2VSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5Ub2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSIF0vMYAQEScAoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hZG1pbi52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXNwb25zZSIF0vMYAQFCzgEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgpUb2tlblByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_token]); + +/** + * TokenServiceListRequest is the request payload for the token list request + * + * @generated from message metalstack.admin.v2.TokenServiceListRequest + */ +export type TokenServiceListRequest = Message<"metalstack.admin.v2.TokenServiceListRequest"> & { + /** + * User is the id of the user for which the tokens should be listed + * + * @generated from field: optional string user = 1; + */ + user?: string; +}; + +/** + * Describes the message metalstack.admin.v2.TokenServiceListRequest. + * Use `create(TokenServiceListRequestSchema)` to create a new message. + */ +export const TokenServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_token, 0); + +/** + * TokenServiceListResponse is the response payload for the token list request + * + * @generated from message metalstack.admin.v2.TokenServiceListResponse + */ +export type TokenServiceListResponse = Message<"metalstack.admin.v2.TokenServiceListResponse"> & { + /** + * Tokens is the list of tokens + * + * @generated from field: repeated metalstack.api.v2.Token tokens = 1; + */ + tokens: Token[]; +}; + +/** + * Describes the message metalstack.admin.v2.TokenServiceListResponse. + * Use `create(TokenServiceListResponseSchema)` to create a new message. + */ +export const TokenServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_token, 1); + +/** + * TokenServiceRevokeRequest is the request payload for the token revoke request + * + * @generated from message metalstack.admin.v2.TokenServiceRevokeRequest + */ +export type TokenServiceRevokeRequest = Message<"metalstack.admin.v2.TokenServiceRevokeRequest"> & { + /** + * Uuid is the uuid of the token which should be revoked + * + * @generated from field: string uuid = 1; + */ + uuid: string; + + /** + * User is the id of the user for which the token should be revoked + * + * @generated from field: string user = 2; + */ + user: string; +}; + +/** + * Describes the message metalstack.admin.v2.TokenServiceRevokeRequest. + * Use `create(TokenServiceRevokeRequestSchema)` to create a new message. + */ +export const TokenServiceRevokeRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_token, 2); + +/** + * TokenServiceRevokeResponse is the response payload for the token revoke request + * + * @generated from message metalstack.admin.v2.TokenServiceRevokeResponse + */ +export type TokenServiceRevokeResponse = Message<"metalstack.admin.v2.TokenServiceRevokeResponse"> & { +}; + +/** + * Describes the message metalstack.admin.v2.TokenServiceRevokeResponse. + * Use `create(TokenServiceRevokeResponseSchema)` to create a new message. + */ +export const TokenServiceRevokeResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_token, 3); + +/** + * TokenServiceCreateRequest is the request payload to create a token + * + * @generated from message metalstack.admin.v2.TokenServiceCreateRequest + */ +export type TokenServiceCreateRequest = Message<"metalstack.admin.v2.TokenServiceCreateRequest"> & { + /** + * User this token should be created for, if omitted, user is derived from caller + * + * @generated from field: optional string user = 1; + */ + user?: string; + + /** + * TokenCreateRequest which should be created + * + * @generated from field: metalstack.api.v2.TokenServiceCreateRequest token_create_request = 2; + */ + tokenCreateRequest?: TokenServiceCreateRequest$1; +}; + +/** + * Describes the message metalstack.admin.v2.TokenServiceCreateRequest. + * Use `create(TokenServiceCreateRequestSchema)` to create a new message. + */ +export const TokenServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_token, 4); + +/** + * TokenServiceCreateResponse is the response payload of a token create request + * + * @generated from message metalstack.admin.v2.TokenServiceCreateResponse + */ +export type TokenServiceCreateResponse = Message<"metalstack.admin.v2.TokenServiceCreateResponse"> & { + /** + * Token which was created + * + * @generated from field: metalstack.api.v2.Token token = 1; + */ + token?: Token; + + /** + * Secret is the body if the jwt token, should be used in api requests as bearer token + * + * @generated from field: string secret = 2; + */ + secret: string; +}; + +/** + * Describes the message metalstack.admin.v2.TokenServiceCreateResponse. + * Use `create(TokenServiceCreateResponseSchema)` to create a new message. + */ +export const TokenServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_admin_v2_token, 5); + +/** + * TokenService serves token related functions + * + * @generated from service metalstack.admin.v2.TokenService + */ +export const TokenService: GenService<{ + /** + * List tokens + * + * @generated from rpc metalstack.admin.v2.TokenService.List + */ + list: { + methodKind: "unary"; + input: typeof TokenServiceListRequestSchema; + output: typeof TokenServiceListResponseSchema; + }, + /** + * Revoke a token + * + * @generated from rpc metalstack.admin.v2.TokenService.Revoke + */ + revoke: { + methodKind: "unary"; + input: typeof TokenServiceRevokeRequestSchema; + output: typeof TokenServiceRevokeResponseSchema; + }, + /** + * Create a token to authenticate against the platform, the secret will be only visible in the response. + * This service is suitable to create tokens for other users instead of deriving users from tokens directly. + * + * @generated from rpc metalstack.admin.v2.TokenService.Create + */ + create: { + methodKind: "unary"; + input: typeof TokenServiceCreateRequestSchema; + output: typeof TokenServiceCreateResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_admin_v2_token, 0); + diff --git a/js/metalstack/api/v2/common_pb.d.ts b/js/metalstack/api/v2/common_pb.d.ts new file mode 100644 index 00000000..3342f944 --- /dev/null +++ b/js/metalstack/api/v2/common_pb.d.ts @@ -0,0 +1,407 @@ +import type { GenEnum, GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { EnumValueOptions, MethodOptions, Timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/common.proto. + */ +export declare const file_metalstack_api_v2_common: GenFile; +/** + * Paging defines paging for methods with a lot of results + * + * @generated from message metalstack.api.v2.Paging + */ +export type Paging = Message<"metalstack.api.v2.Paging"> & { + /** + * Page is used for pagination, if unset only the first page is returned, + * the list response contains then the page number for the next page. + * + * @generated from field: optional uint64 page = 1; + */ + page?: bigint; + /** + * Count is the number of results returned per page, if not given server side defaults apply + * + * @generated from field: optional uint64 count = 2; + */ + count?: bigint; +}; +/** + * Describes the message metalstack.api.v2.Paging. + * Use `create(PagingSchema)` to create a new message. + */ +export declare const PagingSchema: GenMessage; +/** + * Labels define additional information to a entity + * + * @generated from message metalstack.api.v2.Labels + */ +export type Labels = Message<"metalstack.api.v2.Labels"> & { + /** + * Labels consists labels + * + * @generated from field: map labels = 1; + */ + labels: { + [key: string]: string; + }; +}; +/** + * Describes the message metalstack.api.v2.Labels. + * Use `create(LabelsSchema)` to create a new message. + */ +export declare const LabelsSchema: GenMessage; +/** + * Meta of a message + * + * @generated from message metalstack.api.v2.Meta + */ +export type Meta = Message<"metalstack.api.v2.Meta"> & { + /** + * Tags on this entity + * + * @generated from field: optional metalstack.api.v2.Labels labels = 1; + */ + labels?: Labels; + /** + * CreatedAt is the date when this entity was created + * + * @generated from field: google.protobuf.Timestamp created_at = 2; + */ + createdAt?: Timestamp; + /** + * UpdatedAt is the date when this entity was updated + * must be part of the update request to ensure optimistic locking + * + * @generated from field: google.protobuf.Timestamp updated_at = 3; + */ + updatedAt?: Timestamp; + /** + * Generation identifies how often this entity was modified since creation. + * + * @generated from field: uint64 generation = 4; + */ + generation: bigint; +}; +/** + * Describes the message metalstack.api.v2.Meta. + * Use `create(MetaSchema)` to create a new message. + */ +export declare const MetaSchema: GenMessage; +/** + * UpdateLabels is a message to update labels + * + * @generated from message metalstack.api.v2.UpdateLabels + */ +export type UpdateLabels = Message<"metalstack.api.v2.UpdateLabels"> & { + /** + * Update labels. New ones will be added, existing ones overwritten + * + * @generated from field: metalstack.api.v2.Labels update = 1; + */ + update?: Labels; + /** + * Remove labels by key + * + * @generated from field: repeated string remove = 2; + */ + remove: string[]; +}; +/** + * Describes the message metalstack.api.v2.UpdateLabels. + * Use `create(UpdateLabelsSchema)` to create a new message. + */ +export declare const UpdateLabelsSchema: GenMessage; +/** + * UpdateMeta must be provided with every UpdateRequest to define how optimistic locking should be handled + * + * @generated from message metalstack.api.v2.UpdateMeta + */ +export type UpdateMeta = Message<"metalstack.api.v2.UpdateMeta"> & { + /** + * UpdatedAt is the date when this entity was updated + * must be part of the update request to ensure optimistic locking + * + * @generated from field: google.protobuf.Timestamp updated_at = 1; + */ + updatedAt?: Timestamp; + /** + * LockingStrategy to be used for this update request + * + * @generated from field: metalstack.api.v2.OptimisticLockingStrategy locking_strategy = 2; + */ + lockingStrategy: OptimisticLockingStrategy; +}; +/** + * Describes the message metalstack.api.v2.UpdateMeta. + * Use `create(UpdateMetaSchema)` to create a new message. + */ +export declare const UpdateMetaSchema: GenMessage; +/** + * TenantRole specifies what role a logged in user needs to call this tenant scoped service + * + * @generated from enum metalstack.api.v2.TenantRole + */ +export declare enum TenantRole { + /** + * TENANT_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: TENANT_ROLE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * TENANT_ROLE_OWNER the logged in user needs at least owner role to call this method + * + * @generated from enum value: TENANT_ROLE_OWNER = 1; + */ + OWNER = 1, + /** + * TENANT_ROLE_EDITOR the logged in user needs at least editor role to call this method + * + * @generated from enum value: TENANT_ROLE_EDITOR = 2; + */ + EDITOR = 2, + /** + * TENANT_ROLE_VIEWER the logged in user needs at least viewer role to call this method + * + * @generated from enum value: TENANT_ROLE_VIEWER = 3; + */ + VIEWER = 3, + /** + * TENANT_ROLE_GUEST the logged in user needs at least guest role to call this method + * The guest role is assumed by users who are invited to a tenant's project without them + * having a direct membership within the tenant. + * + * @generated from enum value: TENANT_ROLE_GUEST = 4; + */ + GUEST = 4 +} +/** + * Describes the enum metalstack.api.v2.TenantRole. + */ +export declare const TenantRoleSchema: GenEnum; +/** + * ProjectRole specifies what role a logged in user needs to call this project scoped service + * + * @generated from enum metalstack.api.v2.ProjectRole + */ +export declare enum ProjectRole { + /** + * PROJECT_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: PROJECT_ROLE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * PROJECT_ROLE_OWNER the logged in user needs at least owner role to call this method + * + * @generated from enum value: PROJECT_ROLE_OWNER = 1; + */ + OWNER = 1, + /** + * PROJECT_ROLE_EDITOR the logged in user needs at least editor role to call this method + * + * @generated from enum value: PROJECT_ROLE_EDITOR = 2; + */ + EDITOR = 2, + /** + * PROJECT_ROLE_VIEWER the logged in user needs at least viewer role to call this method + * + * @generated from enum value: PROJECT_ROLE_VIEWER = 3; + */ + VIEWER = 3 +} +/** + * Describes the enum metalstack.api.v2.ProjectRole. + */ +export declare const ProjectRoleSchema: GenEnum; +/** + * AdminRole specifies what role a logged in user needs to call this admin service + * + * @generated from enum metalstack.api.v2.AdminRole + */ +export declare enum AdminRole { + /** + * ADMIN_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: ADMIN_ROLE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * ADMIN_ROLE_EDITOR the logged in user needs at least editor role to call this method + * + * @generated from enum value: ADMIN_ROLE_EDITOR = 1; + */ + EDITOR = 1, + /** + * ADMIN_ROLE_VIEWER the logged in user needs at least viewer role to call this method + * + * @generated from enum value: ADMIN_ROLE_VIEWER = 2; + */ + VIEWER = 2 +} +/** + * Describes the enum metalstack.api.v2.AdminRole. + */ +export declare const AdminRoleSchema: GenEnum; +/** + * InfraRole specifies what role a microservice needs to call this infra service + * + * @generated from enum metalstack.api.v2.InfraRole + */ +export declare enum InfraRole { + /** + * INFRA_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: INFRA_ROLE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * INFRA_ROLE_EDITOR a microservice needs at least editor role to call this method + * + * @generated from enum value: INFRA_ROLE_EDITOR = 1; + */ + EDITOR = 1, + /** + * INFRA_ROLE_VIEWER a microservice needs at least viewer role to call this method + * + * @generated from enum value: INFRA_ROLE_VIEWER = 2; + */ + VIEWER = 2 +} +/** + * Describes the enum metalstack.api.v2.InfraRole. + */ +export declare const InfraRoleSchema: GenEnum; +/** + * Visibility of a method + * + * @generated from enum metalstack.api.v2.Visibility + */ +export declare enum Visibility { + /** + * VISIBILITY_UNSPECIFIED is not defined + * + * @generated from enum value: VISIBILITY_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * VISIBILITY_PUBLIC specifies that this service is accessible without authentication + * + * @generated from enum value: VISIBILITY_PUBLIC = 1; + */ + PUBLIC = 1, + /** + * VISIBILITY_SELF enable call this endpoint from the authenticated user only + * + * @generated from enum value: VISIBILITY_SELF = 3; + */ + SELF = 3 +} +/** + * Describes the enum metalstack.api.v2.Visibility. + */ +export declare const VisibilitySchema: GenEnum; +/** + * Auditing option specified per service method + * by default all service methods are included + * add the auditing option if you want to exclude a method in auditing + * + * @generated from enum metalstack.api.v2.Auditing + */ +export declare enum Auditing { + /** + * AUDITING_UNSPECIFIED is not specified + * + * @generated from enum value: AUDITING_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * AUDITING_INCLUDED if a method is annotated with this, all calls are audited + * + * @generated from enum value: AUDITING_INCLUDED = 1; + */ + INCLUDED = 1, + /** + * AUDITING_EXCLUDED if a method is annotated with this, no calls are audited + * + * @generated from enum value: AUDITING_EXCLUDED = 2; + */ + EXCLUDED = 2 +} +/** + * Describes the enum metalstack.api.v2.Auditing. + */ +export declare const AuditingSchema: GenEnum; +/** + * OptimisticLockingStrategy defines how optimistic locking should be handled. + * It defaults to client side, which requires the UpdatedAt timestamp to be provided + * + * @generated from enum metalstack.api.v2.OptimisticLockingStrategy + */ +export declare enum OptimisticLockingStrategy { + /** + * OPTIMISTIC_LOCKING_STRATEGY_UNSPECIFIED same as client side + * + * @generated from enum value: OPTIMISTIC_LOCKING_STRATEGY_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * OPTIMISTIC_LOCKING_STRATEGY_CLIENT requires UpdatedAt to be specified + * + * @generated from enum value: OPTIMISTIC_LOCKING_STRATEGY_CLIENT = 1; + */ + CLIENT = 1, + /** + * OPTIMISTIC_LOCKING_STRATEGY_SERVER allows to omit UpdatedAt + * and fetches the most recent entity before updating with the given values with the update request + * + * @generated from enum value: OPTIMISTIC_LOCKING_STRATEGY_SERVER = 2; + */ + SERVER = 2 +} +/** + * Describes the enum metalstack.api.v2.OptimisticLockingStrategy. + */ +export declare const OptimisticLockingStrategySchema: GenEnum; +/** + * TenantRoles are used to define which tenant role a logged in user must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.TenantRole tenant_roles = 51000; + */ +export declare const tenant_roles: GenExtension; +/** + * ProjectRoles are used to define which project role a logged in user must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.ProjectRole project_roles = 51001; + */ +export declare const project_roles: GenExtension; +/** + * AdminRoles are used to define which admin role a logged in user must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.AdminRole admin_roles = 51002; + */ +export declare const admin_roles: GenExtension; +/** + * Visibility defines the visibility of this method, this is used to have public or self visible methods + * + * @generated from extension: metalstack.api.v2.Visibility visibility = 51003; + */ +export declare const visibility: GenExtension; +/** + * Auditing defines if calls to this method should be audited or not + * + * @generated from extension: metalstack.api.v2.Auditing auditing = 51004; + */ +export declare const auditing: GenExtension; +/** + * InfraRoles are used to define which infra role a microservice must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.InfraRole infra_roles = 51005; + */ +export declare const infra_roles: GenExtension; +/** + * StringValue which can be set to a enum + * + * @generated from extension: string enum_string_value = 52000; + */ +export declare const enum_string_value: GenExtension; diff --git a/js/metalstack/api/v2/common_pb.js b/js/metalstack/api/v2/common_pb.js new file mode 100644 index 00000000..4a1f2e10 --- /dev/null +++ b/js/metalstack/api/v2/common_pb.js @@ -0,0 +1,311 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/common.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { enumDesc, extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_google_protobuf_descriptor, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +/** + * Describes the file metalstack/api/v2/common.proto. + */ +export const file_metalstack_api_v2_common = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9jb21tb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIkIKBlBhZ2luZxIRCgRwYWdlGAEgASgESACIAQESEgoFY291bnQYAiABKARIAYgBAUIHCgVfcGFnZUIICgZfY291bnQiiAEKBkxhYmVscxJPCgZsYWJlbHMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMuTGFiZWxzRW50cnlCGLpIFZoBEiIHcgUQARiAAioHcgUQABiAAhotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIrUBCgRNZXRhEi4KBmxhYmVscxgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gAiAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdlbmVyYXRpb24YBCABKARCCQoHX2xhYmVscyJJCgxVcGRhdGVMYWJlbHMSKQoGdXBkYXRlGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEg4KBnJlbW92ZRgCIAMoCSKOAQoKVXBkYXRlTWV0YRIuCgp1cGRhdGVkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJQChBsb2NraW5nX3N0cmF0ZWd5GAIgASgOMiwubWV0YWxzdGFjay5hcGkudjIuT3B0aW1pc3RpY0xvY2tpbmdTdHJhdGVneUIIukgFggECEAEqhwEKClRlbmFudFJvbGUSGwoXVEVOQU5UX1JPTEVfVU5TUEVDSUZJRUQQABIVChFURU5BTlRfUk9MRV9PV05FUhABEhYKElRFTkFOVF9ST0xFX0VESVRPUhACEhYKElRFTkFOVF9ST0xFX1ZJRVdFUhADEhUKEVRFTkFOVF9ST0xFX0dVRVNUEAQqdQoLUHJvamVjdFJvbGUSHAoYUFJPSkVDVF9ST0xFX1VOU1BFQ0lGSUVEEAASFgoSUFJPSkVDVF9ST0xFX09XTkVSEAESFwoTUFJPSkVDVF9ST0xFX0VESVRPUhACEhcKE1BST0pFQ1RfUk9MRV9WSUVXRVIQAypVCglBZG1pblJvbGUSGgoWQURNSU5fUk9MRV9VTlNQRUNJRklFRBAAEhUKEUFETUlOX1JPTEVfRURJVE9SEAESFQoRQURNSU5fUk9MRV9WSUVXRVIQAipVCglJbmZyYVJvbGUSGgoWSU5GUkFfUk9MRV9VTlNQRUNJRklFRBAAEhUKEUlORlJBX1JPTEVfRURJVE9SEAESFQoRSU5GUkFfUk9MRV9WSUVXRVIQAipUCgpWaXNpYmlsaXR5EhoKFlZJU0lCSUxJVFlfVU5TUEVDSUZJRUQQABIVChFWSVNJQklMSVRZX1BVQkxJQxABEhMKD1ZJU0lCSUxJVFlfU0VMRhADKlIKCEF1ZGl0aW5nEhgKFEFVRElUSU5HX1VOU1BFQ0lGSUVEEAASFQoRQVVESVRJTkdfSU5DTFVERUQQARIVChFBVURJVElOR19FWENMVURFRBACKpgBChlPcHRpbWlzdGljTG9ja2luZ1N0cmF0ZWd5EisKJ09QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9VTlNQRUNJRklFRBAAEiYKIk9QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9DTElFTlQQARImCiJPUFRJTUlTVElDX0xPQ0tJTkdfU1RSQVRFR1lfU0VSVkVSEAI6YgoMdGVuYW50X3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuI4DIAMoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVSC3RlbmFudFJvbGVzOmUKDXByb2plY3Rfcm9sZXMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi5jgMgAygOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVSDHByb2plY3RSb2xlczpfCgthZG1pbl9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLqOAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVSCmFkbWluUm9sZXM6XwoKdmlzaWJpbGl0eRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLuOAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5WaXNpYmlsaXR5Ugp2aXNpYmlsaXR5OlkKCGF1ZGl0aW5nEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvI4DIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0aW5nUghhdWRpdGluZzpfCgtpbmZyYV9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGL2OAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVJvbGVSCmluZnJhUm9sZXM6TwoRZW51bV9zdHJpbmdfdmFsdWUSIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9ucxiglgMgASgJUg9lbnVtU3RyaW5nVmFsdWVCwQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkILQ29tbW9uUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_descriptor, file_google_protobuf_timestamp]); +/** + * Describes the message metalstack.api.v2.Paging. + * Use `create(PagingSchema)` to create a new message. + */ +export const PagingSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_common, 0); +/** + * Describes the message metalstack.api.v2.Labels. + * Use `create(LabelsSchema)` to create a new message. + */ +export const LabelsSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_common, 1); +/** + * Describes the message metalstack.api.v2.Meta. + * Use `create(MetaSchema)` to create a new message. + */ +export const MetaSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_common, 2); +/** + * Describes the message metalstack.api.v2.UpdateLabels. + * Use `create(UpdateLabelsSchema)` to create a new message. + */ +export const UpdateLabelsSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_common, 3); +/** + * Describes the message metalstack.api.v2.UpdateMeta. + * Use `create(UpdateMetaSchema)` to create a new message. + */ +export const UpdateMetaSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_common, 4); +/** + * TenantRole specifies what role a logged in user needs to call this tenant scoped service + * + * @generated from enum metalstack.api.v2.TenantRole + */ +export var TenantRole; +(function (TenantRole) { + /** + * TENANT_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: TENANT_ROLE_UNSPECIFIED = 0; + */ + TenantRole[TenantRole["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * TENANT_ROLE_OWNER the logged in user needs at least owner role to call this method + * + * @generated from enum value: TENANT_ROLE_OWNER = 1; + */ + TenantRole[TenantRole["OWNER"] = 1] = "OWNER"; + /** + * TENANT_ROLE_EDITOR the logged in user needs at least editor role to call this method + * + * @generated from enum value: TENANT_ROLE_EDITOR = 2; + */ + TenantRole[TenantRole["EDITOR"] = 2] = "EDITOR"; + /** + * TENANT_ROLE_VIEWER the logged in user needs at least viewer role to call this method + * + * @generated from enum value: TENANT_ROLE_VIEWER = 3; + */ + TenantRole[TenantRole["VIEWER"] = 3] = "VIEWER"; + /** + * TENANT_ROLE_GUEST the logged in user needs at least guest role to call this method + * The guest role is assumed by users who are invited to a tenant's project without them + * having a direct membership within the tenant. + * + * @generated from enum value: TENANT_ROLE_GUEST = 4; + */ + TenantRole[TenantRole["GUEST"] = 4] = "GUEST"; +})(TenantRole || (TenantRole = {})); +/** + * Describes the enum metalstack.api.v2.TenantRole. + */ +export const TenantRoleSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 0); +/** + * ProjectRole specifies what role a logged in user needs to call this project scoped service + * + * @generated from enum metalstack.api.v2.ProjectRole + */ +export var ProjectRole; +(function (ProjectRole) { + /** + * PROJECT_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: PROJECT_ROLE_UNSPECIFIED = 0; + */ + ProjectRole[ProjectRole["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * PROJECT_ROLE_OWNER the logged in user needs at least owner role to call this method + * + * @generated from enum value: PROJECT_ROLE_OWNER = 1; + */ + ProjectRole[ProjectRole["OWNER"] = 1] = "OWNER"; + /** + * PROJECT_ROLE_EDITOR the logged in user needs at least editor role to call this method + * + * @generated from enum value: PROJECT_ROLE_EDITOR = 2; + */ + ProjectRole[ProjectRole["EDITOR"] = 2] = "EDITOR"; + /** + * PROJECT_ROLE_VIEWER the logged in user needs at least viewer role to call this method + * + * @generated from enum value: PROJECT_ROLE_VIEWER = 3; + */ + ProjectRole[ProjectRole["VIEWER"] = 3] = "VIEWER"; +})(ProjectRole || (ProjectRole = {})); +/** + * Describes the enum metalstack.api.v2.ProjectRole. + */ +export const ProjectRoleSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 1); +/** + * AdminRole specifies what role a logged in user needs to call this admin service + * + * @generated from enum metalstack.api.v2.AdminRole + */ +export var AdminRole; +(function (AdminRole) { + /** + * ADMIN_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: ADMIN_ROLE_UNSPECIFIED = 0; + */ + AdminRole[AdminRole["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * ADMIN_ROLE_EDITOR the logged in user needs at least editor role to call this method + * + * @generated from enum value: ADMIN_ROLE_EDITOR = 1; + */ + AdminRole[AdminRole["EDITOR"] = 1] = "EDITOR"; + /** + * ADMIN_ROLE_VIEWER the logged in user needs at least viewer role to call this method + * + * @generated from enum value: ADMIN_ROLE_VIEWER = 2; + */ + AdminRole[AdminRole["VIEWER"] = 2] = "VIEWER"; +})(AdminRole || (AdminRole = {})); +/** + * Describes the enum metalstack.api.v2.AdminRole. + */ +export const AdminRoleSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 2); +/** + * InfraRole specifies what role a microservice needs to call this infra service + * + * @generated from enum metalstack.api.v2.InfraRole + */ +export var InfraRole; +(function (InfraRole) { + /** + * INFRA_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: INFRA_ROLE_UNSPECIFIED = 0; + */ + InfraRole[InfraRole["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * INFRA_ROLE_EDITOR a microservice needs at least editor role to call this method + * + * @generated from enum value: INFRA_ROLE_EDITOR = 1; + */ + InfraRole[InfraRole["EDITOR"] = 1] = "EDITOR"; + /** + * INFRA_ROLE_VIEWER a microservice needs at least viewer role to call this method + * + * @generated from enum value: INFRA_ROLE_VIEWER = 2; + */ + InfraRole[InfraRole["VIEWER"] = 2] = "VIEWER"; +})(InfraRole || (InfraRole = {})); +/** + * Describes the enum metalstack.api.v2.InfraRole. + */ +export const InfraRoleSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 3); +/** + * Visibility of a method + * + * @generated from enum metalstack.api.v2.Visibility + */ +export var Visibility; +(function (Visibility) { + /** + * VISIBILITY_UNSPECIFIED is not defined + * + * @generated from enum value: VISIBILITY_UNSPECIFIED = 0; + */ + Visibility[Visibility["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * VISIBILITY_PUBLIC specifies that this service is accessible without authentication + * + * @generated from enum value: VISIBILITY_PUBLIC = 1; + */ + Visibility[Visibility["PUBLIC"] = 1] = "PUBLIC"; + /** + * VISIBILITY_SELF enable call this endpoint from the authenticated user only + * + * @generated from enum value: VISIBILITY_SELF = 3; + */ + Visibility[Visibility["SELF"] = 3] = "SELF"; +})(Visibility || (Visibility = {})); +/** + * Describes the enum metalstack.api.v2.Visibility. + */ +export const VisibilitySchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 4); +/** + * Auditing option specified per service method + * by default all service methods are included + * add the auditing option if you want to exclude a method in auditing + * + * @generated from enum metalstack.api.v2.Auditing + */ +export var Auditing; +(function (Auditing) { + /** + * AUDITING_UNSPECIFIED is not specified + * + * @generated from enum value: AUDITING_UNSPECIFIED = 0; + */ + Auditing[Auditing["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * AUDITING_INCLUDED if a method is annotated with this, all calls are audited + * + * @generated from enum value: AUDITING_INCLUDED = 1; + */ + Auditing[Auditing["INCLUDED"] = 1] = "INCLUDED"; + /** + * AUDITING_EXCLUDED if a method is annotated with this, no calls are audited + * + * @generated from enum value: AUDITING_EXCLUDED = 2; + */ + Auditing[Auditing["EXCLUDED"] = 2] = "EXCLUDED"; +})(Auditing || (Auditing = {})); +/** + * Describes the enum metalstack.api.v2.Auditing. + */ +export const AuditingSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 5); +/** + * OptimisticLockingStrategy defines how optimistic locking should be handled. + * It defaults to client side, which requires the UpdatedAt timestamp to be provided + * + * @generated from enum metalstack.api.v2.OptimisticLockingStrategy + */ +export var OptimisticLockingStrategy; +(function (OptimisticLockingStrategy) { + /** + * OPTIMISTIC_LOCKING_STRATEGY_UNSPECIFIED same as client side + * + * @generated from enum value: OPTIMISTIC_LOCKING_STRATEGY_UNSPECIFIED = 0; + */ + OptimisticLockingStrategy[OptimisticLockingStrategy["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * OPTIMISTIC_LOCKING_STRATEGY_CLIENT requires UpdatedAt to be specified + * + * @generated from enum value: OPTIMISTIC_LOCKING_STRATEGY_CLIENT = 1; + */ + OptimisticLockingStrategy[OptimisticLockingStrategy["CLIENT"] = 1] = "CLIENT"; + /** + * OPTIMISTIC_LOCKING_STRATEGY_SERVER allows to omit UpdatedAt + * and fetches the most recent entity before updating with the given values with the update request + * + * @generated from enum value: OPTIMISTIC_LOCKING_STRATEGY_SERVER = 2; + */ + OptimisticLockingStrategy[OptimisticLockingStrategy["SERVER"] = 2] = "SERVER"; +})(OptimisticLockingStrategy || (OptimisticLockingStrategy = {})); +/** + * Describes the enum metalstack.api.v2.OptimisticLockingStrategy. + */ +export const OptimisticLockingStrategySchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 6); +/** + * TenantRoles are used to define which tenant role a logged in user must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.TenantRole tenant_roles = 51000; + */ +export const tenant_roles = /*@__PURE__*/ extDesc(file_metalstack_api_v2_common, 0); +/** + * ProjectRoles are used to define which project role a logged in user must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.ProjectRole project_roles = 51001; + */ +export const project_roles = /*@__PURE__*/ extDesc(file_metalstack_api_v2_common, 1); +/** + * AdminRoles are used to define which admin role a logged in user must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.AdminRole admin_roles = 51002; + */ +export const admin_roles = /*@__PURE__*/ extDesc(file_metalstack_api_v2_common, 2); +/** + * Visibility defines the visibility of this method, this is used to have public or self visible methods + * + * @generated from extension: metalstack.api.v2.Visibility visibility = 51003; + */ +export const visibility = /*@__PURE__*/ extDesc(file_metalstack_api_v2_common, 3); +/** + * Auditing defines if calls to this method should be audited or not + * + * @generated from extension: metalstack.api.v2.Auditing auditing = 51004; + */ +export const auditing = /*@__PURE__*/ extDesc(file_metalstack_api_v2_common, 4); +/** + * InfraRoles are used to define which infra role a microservice must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.InfraRole infra_roles = 51005; + */ +export const infra_roles = /*@__PURE__*/ extDesc(file_metalstack_api_v2_common, 5); +/** + * StringValue which can be set to a enum + * + * @generated from extension: string enum_string_value = 52000; + */ +export const enum_string_value = /*@__PURE__*/ extDesc(file_metalstack_api_v2_common, 6); diff --git a/js/metalstack/api/v2/common_pb.ts b/js/metalstack/api/v2/common_pb.ts new file mode 100644 index 00000000..18bfebe3 --- /dev/null +++ b/js/metalstack/api/v2/common_pb.ts @@ -0,0 +1,488 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/common.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { EnumValueOptions, MethodOptions, Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_descriptor, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/common.proto. + */ +export const file_metalstack_api_v2_common: GenFile = /*@__PURE__*/ + fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9jb21tb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIkIKBlBhZ2luZxIRCgRwYWdlGAEgASgESACIAQESEgoFY291bnQYAiABKARIAYgBAUIHCgVfcGFnZUIICgZfY291bnQiiAEKBkxhYmVscxJPCgZsYWJlbHMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMuTGFiZWxzRW50cnlCGLpIFZoBEiIHcgUQARiAAioHcgUQABiAAhotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIrUBCgRNZXRhEi4KBmxhYmVscxgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gAiAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdlbmVyYXRpb24YBCABKARCCQoHX2xhYmVscyJJCgxVcGRhdGVMYWJlbHMSKQoGdXBkYXRlGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEg4KBnJlbW92ZRgCIAMoCSKOAQoKVXBkYXRlTWV0YRIuCgp1cGRhdGVkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJQChBsb2NraW5nX3N0cmF0ZWd5GAIgASgOMiwubWV0YWxzdGFjay5hcGkudjIuT3B0aW1pc3RpY0xvY2tpbmdTdHJhdGVneUIIukgFggECEAEqhwEKClRlbmFudFJvbGUSGwoXVEVOQU5UX1JPTEVfVU5TUEVDSUZJRUQQABIVChFURU5BTlRfUk9MRV9PV05FUhABEhYKElRFTkFOVF9ST0xFX0VESVRPUhACEhYKElRFTkFOVF9ST0xFX1ZJRVdFUhADEhUKEVRFTkFOVF9ST0xFX0dVRVNUEAQqdQoLUHJvamVjdFJvbGUSHAoYUFJPSkVDVF9ST0xFX1VOU1BFQ0lGSUVEEAASFgoSUFJPSkVDVF9ST0xFX09XTkVSEAESFwoTUFJPSkVDVF9ST0xFX0VESVRPUhACEhcKE1BST0pFQ1RfUk9MRV9WSUVXRVIQAypVCglBZG1pblJvbGUSGgoWQURNSU5fUk9MRV9VTlNQRUNJRklFRBAAEhUKEUFETUlOX1JPTEVfRURJVE9SEAESFQoRQURNSU5fUk9MRV9WSUVXRVIQAipVCglJbmZyYVJvbGUSGgoWSU5GUkFfUk9MRV9VTlNQRUNJRklFRBAAEhUKEUlORlJBX1JPTEVfRURJVE9SEAESFQoRSU5GUkFfUk9MRV9WSUVXRVIQAipUCgpWaXNpYmlsaXR5EhoKFlZJU0lCSUxJVFlfVU5TUEVDSUZJRUQQABIVChFWSVNJQklMSVRZX1BVQkxJQxABEhMKD1ZJU0lCSUxJVFlfU0VMRhADKlIKCEF1ZGl0aW5nEhgKFEFVRElUSU5HX1VOU1BFQ0lGSUVEEAASFQoRQVVESVRJTkdfSU5DTFVERUQQARIVChFBVURJVElOR19FWENMVURFRBACKpgBChlPcHRpbWlzdGljTG9ja2luZ1N0cmF0ZWd5EisKJ09QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9VTlNQRUNJRklFRBAAEiYKIk9QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9DTElFTlQQARImCiJPUFRJTUlTVElDX0xPQ0tJTkdfU1RSQVRFR1lfU0VSVkVSEAI6YgoMdGVuYW50X3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuI4DIAMoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVSC3RlbmFudFJvbGVzOmUKDXByb2plY3Rfcm9sZXMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi5jgMgAygOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVSDHByb2plY3RSb2xlczpfCgthZG1pbl9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLqOAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVSCmFkbWluUm9sZXM6XwoKdmlzaWJpbGl0eRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLuOAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5WaXNpYmlsaXR5Ugp2aXNpYmlsaXR5OlkKCGF1ZGl0aW5nEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvI4DIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0aW5nUghhdWRpdGluZzpfCgtpbmZyYV9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGL2OAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVJvbGVSCmluZnJhUm9sZXM6TwoRZW51bV9zdHJpbmdfdmFsdWUSIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9ucxiglgMgASgJUg9lbnVtU3RyaW5nVmFsdWVCwQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkILQ29tbW9uUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_descriptor, file_google_protobuf_timestamp]); + +/** + * Paging defines paging for methods with a lot of results + * + * @generated from message metalstack.api.v2.Paging + */ +export type Paging = Message<"metalstack.api.v2.Paging"> & { + /** + * Page is used for pagination, if unset only the first page is returned, + * the list response contains then the page number for the next page. + * + * @generated from field: optional uint64 page = 1; + */ + page?: bigint; + + /** + * Count is the number of results returned per page, if not given server side defaults apply + * + * @generated from field: optional uint64 count = 2; + */ + count?: bigint; +}; + +/** + * Describes the message metalstack.api.v2.Paging. + * Use `create(PagingSchema)` to create a new message. + */ +export const PagingSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_common, 0); + +/** + * Labels define additional information to a entity + * + * @generated from message metalstack.api.v2.Labels + */ +export type Labels = Message<"metalstack.api.v2.Labels"> & { + /** + * Labels consists labels + * + * @generated from field: map labels = 1; + */ + labels: { [key: string]: string }; +}; + +/** + * Describes the message metalstack.api.v2.Labels. + * Use `create(LabelsSchema)` to create a new message. + */ +export const LabelsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_common, 1); + +/** + * Meta of a message + * + * @generated from message metalstack.api.v2.Meta + */ +export type Meta = Message<"metalstack.api.v2.Meta"> & { + /** + * Tags on this entity + * + * @generated from field: optional metalstack.api.v2.Labels labels = 1; + */ + labels?: Labels; + + /** + * CreatedAt is the date when this entity was created + * + * @generated from field: google.protobuf.Timestamp created_at = 2; + */ + createdAt?: Timestamp; + + /** + * UpdatedAt is the date when this entity was updated + * must be part of the update request to ensure optimistic locking + * + * @generated from field: google.protobuf.Timestamp updated_at = 3; + */ + updatedAt?: Timestamp; + + /** + * Generation identifies how often this entity was modified since creation. + * + * @generated from field: uint64 generation = 4; + */ + generation: bigint; +}; + +/** + * Describes the message metalstack.api.v2.Meta. + * Use `create(MetaSchema)` to create a new message. + */ +export const MetaSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_common, 2); + +/** + * UpdateLabels is a message to update labels + * + * @generated from message metalstack.api.v2.UpdateLabels + */ +export type UpdateLabels = Message<"metalstack.api.v2.UpdateLabels"> & { + /** + * Update labels. New ones will be added, existing ones overwritten + * + * @generated from field: metalstack.api.v2.Labels update = 1; + */ + update?: Labels; + + /** + * Remove labels by key + * + * @generated from field: repeated string remove = 2; + */ + remove: string[]; +}; + +/** + * Describes the message metalstack.api.v2.UpdateLabels. + * Use `create(UpdateLabelsSchema)` to create a new message. + */ +export const UpdateLabelsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_common, 3); + +/** + * UpdateMeta must be provided with every UpdateRequest to define how optimistic locking should be handled + * + * @generated from message metalstack.api.v2.UpdateMeta + */ +export type UpdateMeta = Message<"metalstack.api.v2.UpdateMeta"> & { + /** + * UpdatedAt is the date when this entity was updated + * must be part of the update request to ensure optimistic locking + * + * @generated from field: google.protobuf.Timestamp updated_at = 1; + */ + updatedAt?: Timestamp; + + /** + * LockingStrategy to be used for this update request + * + * @generated from field: metalstack.api.v2.OptimisticLockingStrategy locking_strategy = 2; + */ + lockingStrategy: OptimisticLockingStrategy; +}; + +/** + * Describes the message metalstack.api.v2.UpdateMeta. + * Use `create(UpdateMetaSchema)` to create a new message. + */ +export const UpdateMetaSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_common, 4); + +/** + * TenantRole specifies what role a logged in user needs to call this tenant scoped service + * + * @generated from enum metalstack.api.v2.TenantRole + */ +export enum TenantRole { + /** + * TENANT_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: TENANT_ROLE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * TENANT_ROLE_OWNER the logged in user needs at least owner role to call this method + * + * @generated from enum value: TENANT_ROLE_OWNER = 1; + */ + OWNER = 1, + + /** + * TENANT_ROLE_EDITOR the logged in user needs at least editor role to call this method + * + * @generated from enum value: TENANT_ROLE_EDITOR = 2; + */ + EDITOR = 2, + + /** + * TENANT_ROLE_VIEWER the logged in user needs at least viewer role to call this method + * + * @generated from enum value: TENANT_ROLE_VIEWER = 3; + */ + VIEWER = 3, + + /** + * TENANT_ROLE_GUEST the logged in user needs at least guest role to call this method + * The guest role is assumed by users who are invited to a tenant's project without them + * having a direct membership within the tenant. + * + * @generated from enum value: TENANT_ROLE_GUEST = 4; + */ + GUEST = 4, +} + +/** + * Describes the enum metalstack.api.v2.TenantRole. + */ +export const TenantRoleSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_common, 0); + +/** + * ProjectRole specifies what role a logged in user needs to call this project scoped service + * + * @generated from enum metalstack.api.v2.ProjectRole + */ +export enum ProjectRole { + /** + * PROJECT_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: PROJECT_ROLE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * PROJECT_ROLE_OWNER the logged in user needs at least owner role to call this method + * + * @generated from enum value: PROJECT_ROLE_OWNER = 1; + */ + OWNER = 1, + + /** + * PROJECT_ROLE_EDITOR the logged in user needs at least editor role to call this method + * + * @generated from enum value: PROJECT_ROLE_EDITOR = 2; + */ + EDITOR = 2, + + /** + * PROJECT_ROLE_VIEWER the logged in user needs at least viewer role to call this method + * + * @generated from enum value: PROJECT_ROLE_VIEWER = 3; + */ + VIEWER = 3, +} + +/** + * Describes the enum metalstack.api.v2.ProjectRole. + */ +export const ProjectRoleSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_common, 1); + +/** + * AdminRole specifies what role a logged in user needs to call this admin service + * + * @generated from enum metalstack.api.v2.AdminRole + */ +export enum AdminRole { + /** + * ADMIN_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: ADMIN_ROLE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * ADMIN_ROLE_EDITOR the logged in user needs at least editor role to call this method + * + * @generated from enum value: ADMIN_ROLE_EDITOR = 1; + */ + EDITOR = 1, + + /** + * ADMIN_ROLE_VIEWER the logged in user needs at least viewer role to call this method + * + * @generated from enum value: ADMIN_ROLE_VIEWER = 2; + */ + VIEWER = 2, +} + +/** + * Describes the enum metalstack.api.v2.AdminRole. + */ +export const AdminRoleSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_common, 2); + +/** + * InfraRole specifies what role a microservice needs to call this infra service + * + * @generated from enum metalstack.api.v2.InfraRole + */ +export enum InfraRole { + /** + * INFRA_ROLE_UNSPECIFIED is not specified + * + * @generated from enum value: INFRA_ROLE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * INFRA_ROLE_EDITOR a microservice needs at least editor role to call this method + * + * @generated from enum value: INFRA_ROLE_EDITOR = 1; + */ + EDITOR = 1, + + /** + * INFRA_ROLE_VIEWER a microservice needs at least viewer role to call this method + * + * @generated from enum value: INFRA_ROLE_VIEWER = 2; + */ + VIEWER = 2, +} + +/** + * Describes the enum metalstack.api.v2.InfraRole. + */ +export const InfraRoleSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_common, 3); + +/** + * Visibility of a method + * + * @generated from enum metalstack.api.v2.Visibility + */ +export enum Visibility { + /** + * VISIBILITY_UNSPECIFIED is not defined + * + * @generated from enum value: VISIBILITY_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * VISIBILITY_PUBLIC specifies that this service is accessible without authentication + * + * @generated from enum value: VISIBILITY_PUBLIC = 1; + */ + PUBLIC = 1, + + /** + * VISIBILITY_SELF enable call this endpoint from the authenticated user only + * + * @generated from enum value: VISIBILITY_SELF = 3; + */ + SELF = 3, +} + +/** + * Describes the enum metalstack.api.v2.Visibility. + */ +export const VisibilitySchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_common, 4); + +/** + * Auditing option specified per service method + * by default all service methods are included + * add the auditing option if you want to exclude a method in auditing + * + * @generated from enum metalstack.api.v2.Auditing + */ +export enum Auditing { + /** + * AUDITING_UNSPECIFIED is not specified + * + * @generated from enum value: AUDITING_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * AUDITING_INCLUDED if a method is annotated with this, all calls are audited + * + * @generated from enum value: AUDITING_INCLUDED = 1; + */ + INCLUDED = 1, + + /** + * AUDITING_EXCLUDED if a method is annotated with this, no calls are audited + * + * @generated from enum value: AUDITING_EXCLUDED = 2; + */ + EXCLUDED = 2, +} + +/** + * Describes the enum metalstack.api.v2.Auditing. + */ +export const AuditingSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_common, 5); + +/** + * OptimisticLockingStrategy defines how optimistic locking should be handled. + * It defaults to client side, which requires the UpdatedAt timestamp to be provided + * + * @generated from enum metalstack.api.v2.OptimisticLockingStrategy + */ +export enum OptimisticLockingStrategy { + /** + * OPTIMISTIC_LOCKING_STRATEGY_UNSPECIFIED same as client side + * + * @generated from enum value: OPTIMISTIC_LOCKING_STRATEGY_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * OPTIMISTIC_LOCKING_STRATEGY_CLIENT requires UpdatedAt to be specified + * + * @generated from enum value: OPTIMISTIC_LOCKING_STRATEGY_CLIENT = 1; + */ + CLIENT = 1, + + /** + * OPTIMISTIC_LOCKING_STRATEGY_SERVER allows to omit UpdatedAt + * and fetches the most recent entity before updating with the given values with the update request + * + * @generated from enum value: OPTIMISTIC_LOCKING_STRATEGY_SERVER = 2; + */ + SERVER = 2, +} + +/** + * Describes the enum metalstack.api.v2.OptimisticLockingStrategy. + */ +export const OptimisticLockingStrategySchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_common, 6); + +/** + * TenantRoles are used to define which tenant role a logged in user must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.TenantRole tenant_roles = 51000; + */ +export const tenant_roles: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_common, 0); + +/** + * ProjectRoles are used to define which project role a logged in user must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.ProjectRole project_roles = 51001; + */ +export const project_roles: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_common, 1); + +/** + * AdminRoles are used to define which admin role a logged in user must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.AdminRole admin_roles = 51002; + */ +export const admin_roles: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_common, 2); + +/** + * Visibility defines the visibility of this method, this is used to have public or self visible methods + * + * @generated from extension: metalstack.api.v2.Visibility visibility = 51003; + */ +export const visibility: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_common, 3); + +/** + * Auditing defines if calls to this method should be audited or not + * + * @generated from extension: metalstack.api.v2.Auditing auditing = 51004; + */ +export const auditing: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_common, 4); + +/** + * InfraRoles are used to define which infra role a microservice must provide to call this method + * + * @generated from extension: repeated metalstack.api.v2.InfraRole infra_roles = 51005; + */ +export const infra_roles: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_common, 5); + +/** + * StringValue which can be set to a enum + * + * @generated from extension: string enum_string_value = 52000; + */ +export const enum_string_value: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_common, 6); + diff --git a/js/metalstack/api/v2/filesystem_pb.d.ts b/js/metalstack/api/v2/filesystem_pb.d.ts new file mode 100644 index 00000000..4e880c6d --- /dev/null +++ b/js/metalstack/api/v2/filesystem_pb.d.ts @@ -0,0 +1,704 @@ +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Meta } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/filesystem.proto. + */ +export declare const file_metalstack_api_v2_filesystem: GenFile; +/** + * FilesystemServiceGetRequest is the request payload for a filesystem get request + * + * @generated from message metalstack.api.v2.FilesystemServiceGetRequest + */ +export type FilesystemServiceGetRequest = Message<"metalstack.api.v2.FilesystemServiceGetRequest"> & { + /** + * ID of the filesystem to get + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.api.v2.FilesystemServiceGetRequest. + * Use `create(FilesystemServiceGetRequestSchema)` to create a new message. + */ +export declare const FilesystemServiceGetRequestSchema: GenMessage; +/** + * FilesystemServiceListRequest is the request payload for a filesystem list request + * + * @generated from message metalstack.api.v2.FilesystemServiceListRequest + */ +export type FilesystemServiceListRequest = Message<"metalstack.api.v2.FilesystemServiceListRequest"> & { + /** + * ID of the filesystem to get + * + * @generated from field: optional string id = 1; + */ + id?: string; +}; +/** + * Describes the message metalstack.api.v2.FilesystemServiceListRequest. + * Use `create(FilesystemServiceListRequestSchema)` to create a new message. + */ +export declare const FilesystemServiceListRequestSchema: GenMessage; +/** + * FilesystemServiceGetResponse is the response payload for a filesystem get request + * + * @generated from message metalstack.api.v2.FilesystemServiceGetResponse + */ +export type FilesystemServiceGetResponse = Message<"metalstack.api.v2.FilesystemServiceGetResponse"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; +/** + * Describes the message metalstack.api.v2.FilesystemServiceGetResponse. + * Use `create(FilesystemServiceGetResponseSchema)` to create a new message. + */ +export declare const FilesystemServiceGetResponseSchema: GenMessage; +/** + * FilesystemServiceListResponse is the response payload for a filesystem list request + * + * @generated from message metalstack.api.v2.FilesystemServiceListResponse + */ +export type FilesystemServiceListResponse = Message<"metalstack.api.v2.FilesystemServiceListResponse"> & { + /** + * FilesystemLayouts the filesystemlayouts + * + * @generated from field: repeated metalstack.api.v2.FilesystemLayout filesystem_layouts = 1; + */ + filesystemLayouts: FilesystemLayout[]; +}; +/** + * Describes the message metalstack.api.v2.FilesystemServiceListResponse. + * Use `create(FilesystemServiceListResponseSchema)` to create a new message. + */ +export declare const FilesystemServiceListResponseSchema: GenMessage; +/** + * FilesystemServiceMatchRequest + * + * @generated from message metalstack.api.v2.FilesystemServiceMatchRequest + */ +export type FilesystemServiceMatchRequest = Message<"metalstack.api.v2.FilesystemServiceMatchRequest"> & { + /** + * Match either size and image to a filesystemlayout + * or if a machine matches to a filesystemlayout + * + * @generated from oneof metalstack.api.v2.FilesystemServiceMatchRequest.match + */ + match: { + /** + * SizeAndImage + * + * @generated from field: metalstack.api.v2.MatchImageAndSize size_and_image = 1; + */ + value: MatchImageAndSize; + case: "sizeAndImage"; + } | { + /** + * MachineAndFilesystemlayout + * + * @generated from field: metalstack.api.v2.MatchMachine machine_and_filesystemlayout = 2; + */ + value: MatchMachine; + case: "machineAndFilesystemlayout"; + } | { + case: undefined; + value?: undefined; + }; +}; +/** + * Describes the message metalstack.api.v2.FilesystemServiceMatchRequest. + * Use `create(FilesystemServiceMatchRequestSchema)` to create a new message. + */ +export declare const FilesystemServiceMatchRequestSchema: GenMessage; +/** + * MatchImageAndSize + * + * @generated from message metalstack.api.v2.MatchImageAndSize + */ +export type MatchImageAndSize = Message<"metalstack.api.v2.MatchImageAndSize"> & { + /** + * Size, machine size to try + * + * @generated from field: string size = 1; + */ + size: string; + /** + * Image machine image to try + * + * @generated from field: string image = 2; + */ + image: string; +}; +/** + * Describes the message metalstack.api.v2.MatchImageAndSize. + * Use `create(MatchImageAndSizeSchema)` to create a new message. + */ +export declare const MatchImageAndSizeSchema: GenMessage; +/** + * MatchMachine + * + * @generated from message metalstack.api.v2.MatchMachine + */ +export type MatchMachine = Message<"metalstack.api.v2.MatchMachine"> & { + /** + * Machine to check + * + * @generated from field: string machine = 1; + */ + machine: string; + /** + * FilesystemLayout to check + * + * @generated from field: string filesystem_layout = 2; + */ + filesystemLayout: string; +}; +/** + * Describes the message metalstack.api.v2.MatchMachine. + * Use `create(MatchMachineSchema)` to create a new message. + */ +export declare const MatchMachineSchema: GenMessage; +/** + * FilesystemServiceMatchResponse + * + * @generated from message metalstack.api.v2.FilesystemServiceMatchResponse + */ +export type FilesystemServiceMatchResponse = Message<"metalstack.api.v2.FilesystemServiceMatchResponse"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; +/** + * Describes the message metalstack.api.v2.FilesystemServiceMatchResponse. + * Use `create(FilesystemServiceMatchResponseSchema)` to create a new message. + */ +export declare const FilesystemServiceMatchResponseSchema: GenMessage; +/** + * FilesystemLayout + * + * @generated from message metalstack.api.v2.FilesystemLayout + */ +export type FilesystemLayout = Message<"metalstack.api.v2.FilesystemLayout"> & { + /** + * Id of this filesystemLayout + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Meta for this filesystemLayout + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + /** + * Name of this filesystemLayout + * + * @generated from field: optional string name = 3; + */ + name?: string; + /** + * Description of this filesystemLayout + * + * @generated from field: optional string description = 4; + */ + description?: string; + /** + * Filesystems is a list of filesystems to create on a machine + * + * @generated from field: repeated metalstack.api.v2.Filesystem filesystems = 5; + */ + filesystems: Filesystem[]; + /** + * Disks list of disks that belong to this layout + * + * @generated from field: repeated metalstack.api.v2.Disk disks = 6; + */ + disks: Disk[]; + /** + * raid arrays to create + * + * @generated from field: repeated metalstack.api.v2.Raid raid = 7; + */ + raid: Raid[]; + /** + * VolumeGroups list of volumegroups to create + * + * @generated from field: repeated metalstack.api.v2.VolumeGroup volume_groups = 8; + */ + volumeGroups: VolumeGroup[]; + /** + * LogicalVolumes list of logicalvolumes to create + * + * @generated from field: repeated metalstack.api.v2.LogicalVolume logical_volumes = 9; + */ + logicalVolumes: LogicalVolume[]; + /** + * Constraints which must match that this layout is taken, if sizes and images are empty these are develop layouts + * + * @generated from field: metalstack.api.v2.FilesystemLayoutConstraints constraints = 10; + */ + constraints?: FilesystemLayoutConstraints; +}; +/** + * Describes the message metalstack.api.v2.FilesystemLayout. + * Use `create(FilesystemLayoutSchema)` to create a new message. + */ +export declare const FilesystemLayoutSchema: GenMessage; +/** + * FilesystemLayoutConstraints + * + * @generated from message metalstack.api.v2.FilesystemLayoutConstraints + */ +export type FilesystemLayoutConstraints = Message<"metalstack.api.v2.FilesystemLayoutConstraints"> & { + /** + * Sizes list of sizes this layout applies to + * + * @generated from field: repeated string sizes = 1; + */ + sizes: string[]; + /** + * Images list of images this layout applies to + * + * @generated from field: map images = 2; + */ + images: { + [key: string]: string; + }; +}; +/** + * Describes the message metalstack.api.v2.FilesystemLayoutConstraints. + * Use `create(FilesystemLayoutConstraintsSchema)` to create a new message. + */ +export declare const FilesystemLayoutConstraintsSchema: GenMessage; +/** + * Filesystem + * + * @generated from message metalstack.api.v2.Filesystem + */ +export type Filesystem = Message<"metalstack.api.v2.Filesystem"> & { + /** + * Device the underlying device where this filesystem should be created + * + * @generated from field: string device = 1; + */ + device: string; + /** + * Format of the filesystem format + * + * @generated from field: metalstack.api.v2.Format format = 2; + */ + format: Format; + /** + * Name of this filesystem + * + * @generated from field: optional string name = 3; + */ + name?: string; + /** + * Description of this filesystem + * + * @generated from field: optional string description = 4; + */ + description?: string; + /** + * Path the mountpoint where this filesystem should be mounted on + * + * @generated from field: optional string path = 5; + */ + path?: string; + /** + * Label optional label for this this filesystem + * + * @generated from field: optional string label = 6; + */ + label?: string; + /** + * MountOptions the options to use to mount this filesystem + * + * @generated from field: repeated string mount_options = 7; + */ + mountOptions: string[]; + /** + * CreateOptions the options to use to create (mkfs) this filesystem + * + * @generated from field: repeated string create_options = 8; + */ + createOptions: string[]; +}; +/** + * Describes the message metalstack.api.v2.Filesystem. + * Use `create(FilesystemSchema)` to create a new message. + */ +export declare const FilesystemSchema: GenMessage; +/** + * Disk + * + * @generated from message metalstack.api.v2.Disk + */ +export type Disk = Message<"metalstack.api.v2.Disk"> & { + /** + * Device the device to create the partitions + * + * @generated from field: string device = 1; + */ + device: string; + /** + * Partitions list of partitions to create on this disk + * + * @generated from field: repeated metalstack.api.v2.DiskPartition partitions = 2; + */ + partitions: DiskPartition[]; +}; +/** + * Describes the message metalstack.api.v2.Disk. + * Use `create(DiskSchema)` to create a new message. + */ +export declare const DiskSchema: GenMessage; +/** + * Raid + * + * @generated from message metalstack.api.v2.Raid + */ +export type Raid = Message<"metalstack.api.v2.Raid"> & { + /** + * ArrayName the name of the resulting array device + * + * @generated from field: string array_name = 1; + */ + arrayName: string; + /** + * Devices list of devices to form the raid array from + * + * @generated from field: repeated string devices = 2; + */ + devices: string[]; + /** + * Level raid level to create, should be 0 or 1 + * + * @generated from field: metalstack.api.v2.RaidLevel level = 3; + */ + level: RaidLevel; + /** + * CreateOptions the options to use to create the raid array + * + * @generated from field: repeated string create_options = 4; + */ + createOptions: string[]; + /** + * Spares number of spares for the raid array + * + * @generated from field: int32 spares = 5; + */ + spares: number; +}; +/** + * Describes the message metalstack.api.v2.Raid. + * Use `create(RaidSchema)` to create a new message. + */ +export declare const RaidSchema: GenMessage; +/** + * DiskPartition + * + * @generated from message metalstack.api.v2.DiskPartition + */ +export type DiskPartition = Message<"metalstack.api.v2.DiskPartition"> & { + /** + * Number partition number, will be appended to partitionprefix to create the final devicename + * + * @generated from field: uint32 number = 1; + */ + number: number; + /** + * optional label for this this partition + * + * @generated from field: optional string label = 2; + */ + label?: string; + /** + * Size size in mebibytes (MiB) of this partition" + * + * @generated from field: uint64 size = 3; + */ + size: bigint; + /** + * GPTType the gpt partition table type of this partition + * + * @generated from field: optional metalstack.api.v2.GPTType gpt_type = 4; + */ + gptType?: GPTType; +}; +/** + * Describes the message metalstack.api.v2.DiskPartition. + * Use `create(DiskPartitionSchema)` to create a new message. + */ +export declare const DiskPartitionSchema: GenMessage; +/** + * VolumeGroup + * + * @generated from message metalstack.api.v2.VolumeGroup + */ +export type VolumeGroup = Message<"metalstack.api.v2.VolumeGroup"> & { + /** + * Name the name of the resulting volume group + * + * @generated from field: string name = 1; + */ + name: string; + /** + * Devices list of devices to form the volume group from + * + * @generated from field: repeated string devices = 2; + */ + devices: string[]; + /** + * Tags list of tags to add to the volume group + * + * @generated from field: repeated string tags = 3; + */ + tags: string[]; +}; +/** + * Describes the message metalstack.api.v2.VolumeGroup. + * Use `create(VolumeGroupSchema)` to create a new message. + */ +export declare const VolumeGroupSchema: GenMessage; +/** + * LogicalVolume + * + * @generated from message metalstack.api.v2.LogicalVolume + */ +export type LogicalVolume = Message<"metalstack.api.v2.LogicalVolume"> & { + /** + * Name the name of the logical volume + * + * @generated from field: string name = 1; + */ + name: string; + /** + * VolumeGroup the name of the volume group where to create the logical volume onto + * + * @generated from field: string volume_group = 2; + */ + volumeGroup: string; + /** + * Size size in mebibytes (MiB) of this volume + * + * @generated from field: uint64 size = 3; + */ + size: bigint; + /** + * LVMType the type of this logical volume can be either linear|striped|raid1 + * + * @generated from field: metalstack.api.v2.LVMType lvm_type = 4; + */ + lvmType: LVMType; +}; +/** + * Describes the message metalstack.api.v2.LogicalVolume. + * Use `create(LogicalVolumeSchema)` to create a new message. + */ +export declare const LogicalVolumeSchema: GenMessage; +/** + * LVMType + * + * @generated from enum metalstack.api.v2.LVMType + */ +export declare enum LVMType { + /** + * LVM_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: LVM_TYPE_UNSPECIFIED = 0; + */ + LVM_TYPE_UNSPECIFIED = 0, + /** + * LVM_TYPE_LINEAR append across all physical volumes + * + * @generated from enum value: LVM_TYPE_LINEAR = 1; + */ + LVM_TYPE_LINEAR = 1, + /** + * LVM_TYPE_STRIPED stripe across all physical volumes + * + * @generated from enum value: LVM_TYPE_STRIPED = 2; + */ + LVM_TYPE_STRIPED = 2, + /** + * LVM_TYPE_RAID1 mirror with raid across all physical volumes + * + * @generated from enum value: LVM_TYPE_RAID1 = 3; + */ + LVM_TYPE_RAID1 = 3 +} +/** + * Describes the enum metalstack.api.v2.LVMType. + */ +export declare const LVMTypeSchema: GenEnum; +/** + * Format specifies the filesystem to use on a volume + * + * @generated from enum metalstack.api.v2.Format + */ +export declare enum Format { + /** + * FORMAT_UNSPECIFIED + * + * @generated from enum value: FORMAT_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * FORMAT_VFAT is used for the UEFI boot partition + * + * @generated from enum value: FORMAT_VFAT = 1; + */ + VFAT = 1, + /** + * FORMAT_EXT3 is usually only used for /boot + * + * @generated from enum value: FORMAT_EXT3 = 2; + */ + EXT3 = 2, + /** + * FORMAT_EXT4 is the default fs + * + * @generated from enum value: FORMAT_EXT4 = 3; + */ + EXT4 = 3, + /** + * FORMAT_SWAP is for the swap partition + * + * @generated from enum value: FORMAT_SWAP = 4; + */ + SWAP = 4, + /** + * FORMAT_TMPFS is used for a memory filesystem typically /tmp + * + * @generated from enum value: FORMAT_TMPFS = 5; + */ + TMPFS = 5, + /** + * FORMAT_NONE + * + * @generated from enum value: FORMAT_NONE = 6; + */ + NONE = 6 +} +/** + * Describes the enum metalstack.api.v2.Format. + */ +export declare const FormatSchema: GenEnum; +/** + * GPTType specifies the partition type in uefi systems + * + * @generated from enum metalstack.api.v2.GPTType + */ +export declare enum GPTType { + /** + * GPT_TYPE_UNSPECIFIED is no specified + * + * @generated from enum value: GPT_TYPE_UNSPECIFIED = 0; + */ + GPT_TYPE_UNSPECIFIED = 0, + /** + * GPT_TYPE_BOOT EFI Boot Partition + * + * @generated from enum value: GPT_TYPE_BOOT = 1; + */ + GPT_TYPE_BOOT = 1, + /** + * GPT_TYPE_LINUX Linux Partition + * + * @generated from enum value: GPT_TYPE_LINUX = 2; + */ + GPT_TYPE_LINUX = 2, + /** + * GPT_TYPE_LINUX_RAID Linux Raid Partition + * + * @generated from enum value: GPT_TYPE_LINUX_RAID = 3; + */ + GPT_TYPE_LINUX_RAID = 3, + /** + * GPT_TYPE_LINUX_LVM Linux LVM Partition + * + * @generated from enum value: GPT_TYPE_LINUX_LVM = 4; + */ + GPT_TYPE_LINUX_LVM = 4 +} +/** + * Describes the enum metalstack.api.v2.GPTType. + */ +export declare const GPTTypeSchema: GenEnum; +/** + * RaidLevel defines howto mirror two or more block devices + * + * @generated from enum metalstack.api.v2.RaidLevel + */ +export declare enum RaidLevel { + /** + * RAID_LEVEL_UNSPECIFIED is not specified + * + * @generated from enum value: RAID_LEVEL_UNSPECIFIED = 0; + */ + RAID_LEVEL_UNSPECIFIED = 0, + /** + * RAID_LEVEL_0 is a stripe of two or more disks + * + * @generated from enum value: RAID_LEVEL_0 = 1; + */ + RAID_LEVEL_0 = 1, + /** + * RAID_LEVEL_1 is a mirror of two disks + * + * @generated from enum value: RAID_LEVEL_1 = 2; + */ + RAID_LEVEL_1 = 2 +} +/** + * Describes the enum metalstack.api.v2.RaidLevel. + */ +export declare const RaidLevelSchema: GenEnum; +/** + * FilesystemService serves filesystem related functions + * + * @generated from service metalstack.api.v2.FilesystemService + */ +export declare const FilesystemService: GenService<{ + /** + * Get a filesystem + * + * @generated from rpc metalstack.api.v2.FilesystemService.Get + */ + get: { + methodKind: "unary"; + input: typeof FilesystemServiceGetRequestSchema; + output: typeof FilesystemServiceGetResponseSchema; + }; + /** + * List all filesystems + * + * @generated from rpc metalstack.api.v2.FilesystemService.List + */ + list: { + methodKind: "unary"; + input: typeof FilesystemServiceListRequestSchema; + output: typeof FilesystemServiceListResponseSchema; + }; + /** + * Match a filesystems + * + * @generated from rpc metalstack.api.v2.FilesystemService.Match + */ + match: { + methodKind: "unary"; + input: typeof FilesystemServiceMatchRequestSchema; + output: typeof FilesystemServiceMatchResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/filesystem_pb.js b/js/metalstack/api/v2/filesystem_pb.js new file mode 100644 index 00000000..85e4b848 --- /dev/null +++ b/js/metalstack/api/v2/filesystem_pb.js @@ -0,0 +1,259 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/filesystem.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +/** + * Describes the file metalstack/api/v2/filesystem.proto. + */ +export const file_metalstack_api_v2_filesystem = /*@__PURE__*/ fileDesc("CiJtZXRhbHN0YWNrL2FwaS92Mi9maWxlc3lzdGVtLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiI1ChtGaWxlc3lzdGVtU2VydmljZUdldFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiQgocRmlsZXN5c3RlbVNlcnZpY2VMaXN0UmVxdWVzdBIbCgJpZBgBIAEoCUIKukgHcgUQAhiAAUgAiAEBQgUKA19pZCJeChxGaWxlc3lzdGVtU2VydmljZUdldFJlc3BvbnNlEj4KEWZpbGVzeXN0ZW1fbGF5b3V0GAEgASgLMiMubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dCJgCh1GaWxlc3lzdGVtU2VydmljZUxpc3RSZXNwb25zZRI/ChJmaWxlc3lzdGVtX2xheW91dHMYASADKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0IrEBCh1GaWxlc3lzdGVtU2VydmljZU1hdGNoUmVxdWVzdBI+Cg5zaXplX2FuZF9pbWFnZRgBIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hdGNoSW1hZ2VBbmRTaXplSAASRwocbWFjaGluZV9hbmRfZmlsZXN5c3RlbWxheW91dBgCIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk1hdGNoTWFjaGluZUgAQgcKBW1hdGNoIkgKEU1hdGNoSW1hZ2VBbmRTaXplEhgKBHNpemUYASABKAlCCrpIB3IFEAIYgAESGQoFaW1hZ2UYAiABKAlCCrpIB3IFEAIYgAEiUAoMTWF0Y2hNYWNoaW5lEhkKB21hY2hpbmUYASABKAlCCLpIBXIDsAEBEiUKEWZpbGVzeXN0ZW1fbGF5b3V0GAIgASgJQgq6SAdyBRACGIABImAKHkZpbGVzeXN0ZW1TZXJ2aWNlTWF0Y2hSZXNwb25zZRI+ChFmaWxlc3lzdGVtX2xheW91dBgBIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQi6wMKEEZpbGVzeXN0ZW1MYXlvdXQSFgoCaWQYASABKAlCCrpIB3IFEAIYgAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIyCgtmaWxlc3lzdGVtcxgFIAMoCzIdLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW0SJgoFZGlza3MYBiADKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5EaXNrEiUKBHJhaWQYByADKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5SYWlkEjUKDXZvbHVtZV9ncm91cHMYCCADKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5Wb2x1bWVHcm91cBI5Cg9sb2dpY2FsX3ZvbHVtZXMYCSADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Mb2dpY2FsVm9sdW1lEkMKC2NvbnN0cmFpbnRzGAogASgLMi4ubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dENvbnN0cmFpbnRzQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbiKnAQobRmlsZXN5c3RlbUxheW91dENvbnN0cmFpbnRzEg0KBXNpemVzGAEgAygJEkoKBmltYWdlcxgCIAMoCzI6Lm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXRDb25zdHJhaW50cy5JbWFnZXNFbnRyeRotCgtJbWFnZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIusCCgpGaWxlc3lzdGVtEhoKBmRldmljZRgBIAEoCUIKukgHcgUQAhiAARI2CgZmb3JtYXQYAiABKA4yGS5tZXRhbHN0YWNrLmFwaS52Mi5Gb3JtYXRCC7pICMgBAYIBAhABEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHQoEcGF0aBgFIAEoCUIKukgHcgUQARiAIEgCiAEBEh4KBWxhYmVsGAYgASgJQgq6SAdyBRACGIABSAOIAQESKgoNbW91bnRfb3B0aW9ucxgHIAMoCUITukgQkgENECAYASIHcgUQARiAARIrCg5jcmVhdGVfb3B0aW9ucxgIIAMoCUITukgQkgENECAYASIHcgUQARiAAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CBwoFX3BhdGhCCAoGX2xhYmVsIlgKBERpc2sSGgoGZGV2aWNlGAEgASgJQgq6SAdyBRACGIABEjQKCnBhcnRpdGlvbnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5EaXNrUGFydGl0aW9uIqIBCgRSYWlkEhIKCmFycmF5X25hbWUYASABKAkSDwoHZGV2aWNlcxgCIAMoCRI4CgVsZXZlbBgDIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLlJhaWRMZXZlbEILukgIyAEBggECEAESKwoOY3JlYXRlX29wdGlvbnMYBCADKAlCE7pIEJIBDRAgGAEiB3IFEAEYgAESDgoGc3BhcmVzGAUgASgFIpgBCg1EaXNrUGFydGl0aW9uEg4KBm51bWJlchgBIAEoDRISCgVsYWJlbBgCIAEoCUgAiAEBEgwKBHNpemUYAyABKAQSPgoIZ3B0X3R5cGUYBCABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5HUFRUeXBlQgu6SAjIAQGCAQIQAUgBiAEBQggKBl9sYWJlbEILCglfZ3B0X3R5cGUiRwoLVm9sdW1lR3JvdXASGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDwoHZGV2aWNlcxgCIAMoCRIMCgR0YWdzGAMgAygJIpIBCg1Mb2dpY2FsVm9sdW1lEhkKBG5hbWUYASABKAlCC7pICHIGwLOusQIBEiAKDHZvbHVtZV9ncm91cBgCIAEoCUIKukgHcgUQAhiAARIMCgRzaXplGAMgASgEEjYKCGx2bV90eXBlGAQgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTFZNVHlwZUIIukgFggECEAEqhgEKB0xWTVR5cGUSGAoUTFZNX1RZUEVfVU5TUEVDSUZJRUQQABIfCg9MVk1fVFlQRV9MSU5FQVIQARoKgrIZBmxpbmVhchIhChBMVk1fVFlQRV9TVFJJUEVEEAIaC4KyGQdzdHJpcGVkEh0KDkxWTV9UWVBFX1JBSUQxEAMaCYKyGQVyYWlkMSrEAQoGRm9ybWF0EhYKEkZPUk1BVF9VTlNQRUNJRklFRBAAEhkKC0ZPUk1BVF9WRkFUEAEaCIKyGQR2ZmF0EhkKC0ZPUk1BVF9FWFQzEAIaCIKyGQRleHQzEhkKC0ZPUk1BVF9FWFQ0EAMaCIKyGQRleHQ0EhkKC0ZPUk1BVF9TV0FQEAQaCIKyGQRzd2FwEhsKDEZPUk1BVF9UTVBGUxAFGgmCshkFdG1wZnMSGQoLRk9STUFUX05PTkUQBhoIgrIZBG5vbmUqowEKB0dQVFR5cGUSGAoUR1BUX1RZUEVfVU5TUEVDSUZJRUQQABIbCg1HUFRfVFlQRV9CT09UEAEaCIKyGQRlZjAwEhwKDkdQVF9UWVBFX0xJTlVYEAIaCIKyGQQ4MzAwEiEKE0dQVF9UWVBFX0xJTlVYX1JBSUQQAxoIgrIZBGZkMDASIAoSR1BUX1RZUEVfTElOVVhfTFZNEAQaCIKyGQQ4ZTAwKksKCVJhaWRMZXZlbBIaChZSQUlEX0xFVkVMX1VOU1BFQ0lGSUVEEAASEAoMUkFJRF9MRVZFTF8wEAESEAoMUkFJRF9MRVZFTF8xEAIy8gIKEUZpbGVzeXN0ZW1TZXJ2aWNlEnAKA0dldBIuLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlR2V0UmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgCEnMKBExpc3QSLy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtU2VydmljZUxpc3RSZXF1ZXN0GjAubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbVNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGAPg8xgCEnYKBU1hdGNoEjAubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbVNlcnZpY2VNYXRjaFJlcXVlc3QaMS5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtU2VydmljZU1hdGNoUmVzcG9uc2UiCNjzGAPg8xgCQsUBChVjb20ubWV0YWxzdGFjay5hcGkudjJCD0ZpbGVzeXN0ZW1Qcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.api.v2.FilesystemServiceGetRequest. + * Use `create(FilesystemServiceGetRequestSchema)` to create a new message. + */ +export const FilesystemServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 0); +/** + * Describes the message metalstack.api.v2.FilesystemServiceListRequest. + * Use `create(FilesystemServiceListRequestSchema)` to create a new message. + */ +export const FilesystemServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 1); +/** + * Describes the message metalstack.api.v2.FilesystemServiceGetResponse. + * Use `create(FilesystemServiceGetResponseSchema)` to create a new message. + */ +export const FilesystemServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 2); +/** + * Describes the message metalstack.api.v2.FilesystemServiceListResponse. + * Use `create(FilesystemServiceListResponseSchema)` to create a new message. + */ +export const FilesystemServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 3); +/** + * Describes the message metalstack.api.v2.FilesystemServiceMatchRequest. + * Use `create(FilesystemServiceMatchRequestSchema)` to create a new message. + */ +export const FilesystemServiceMatchRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 4); +/** + * Describes the message metalstack.api.v2.MatchImageAndSize. + * Use `create(MatchImageAndSizeSchema)` to create a new message. + */ +export const MatchImageAndSizeSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 5); +/** + * Describes the message metalstack.api.v2.MatchMachine. + * Use `create(MatchMachineSchema)` to create a new message. + */ +export const MatchMachineSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 6); +/** + * Describes the message metalstack.api.v2.FilesystemServiceMatchResponse. + * Use `create(FilesystemServiceMatchResponseSchema)` to create a new message. + */ +export const FilesystemServiceMatchResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 7); +/** + * Describes the message metalstack.api.v2.FilesystemLayout. + * Use `create(FilesystemLayoutSchema)` to create a new message. + */ +export const FilesystemLayoutSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 8); +/** + * Describes the message metalstack.api.v2.FilesystemLayoutConstraints. + * Use `create(FilesystemLayoutConstraintsSchema)` to create a new message. + */ +export const FilesystemLayoutConstraintsSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 9); +/** + * Describes the message metalstack.api.v2.Filesystem. + * Use `create(FilesystemSchema)` to create a new message. + */ +export const FilesystemSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 10); +/** + * Describes the message metalstack.api.v2.Disk. + * Use `create(DiskSchema)` to create a new message. + */ +export const DiskSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 11); +/** + * Describes the message metalstack.api.v2.Raid. + * Use `create(RaidSchema)` to create a new message. + */ +export const RaidSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 12); +/** + * Describes the message metalstack.api.v2.DiskPartition. + * Use `create(DiskPartitionSchema)` to create a new message. + */ +export const DiskPartitionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 13); +/** + * Describes the message metalstack.api.v2.VolumeGroup. + * Use `create(VolumeGroupSchema)` to create a new message. + */ +export const VolumeGroupSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 14); +/** + * Describes the message metalstack.api.v2.LogicalVolume. + * Use `create(LogicalVolumeSchema)` to create a new message. + */ +export const LogicalVolumeSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_filesystem, 15); +/** + * LVMType + * + * @generated from enum metalstack.api.v2.LVMType + */ +export var LVMType; +(function (LVMType) { + /** + * LVM_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: LVM_TYPE_UNSPECIFIED = 0; + */ + LVMType[LVMType["LVM_TYPE_UNSPECIFIED"] = 0] = "LVM_TYPE_UNSPECIFIED"; + /** + * LVM_TYPE_LINEAR append across all physical volumes + * + * @generated from enum value: LVM_TYPE_LINEAR = 1; + */ + LVMType[LVMType["LVM_TYPE_LINEAR"] = 1] = "LVM_TYPE_LINEAR"; + /** + * LVM_TYPE_STRIPED stripe across all physical volumes + * + * @generated from enum value: LVM_TYPE_STRIPED = 2; + */ + LVMType[LVMType["LVM_TYPE_STRIPED"] = 2] = "LVM_TYPE_STRIPED"; + /** + * LVM_TYPE_RAID1 mirror with raid across all physical volumes + * + * @generated from enum value: LVM_TYPE_RAID1 = 3; + */ + LVMType[LVMType["LVM_TYPE_RAID1"] = 3] = "LVM_TYPE_RAID1"; +})(LVMType || (LVMType = {})); +/** + * Describes the enum metalstack.api.v2.LVMType. + */ +export const LVMTypeSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_filesystem, 0); +/** + * Format specifies the filesystem to use on a volume + * + * @generated from enum metalstack.api.v2.Format + */ +export var Format; +(function (Format) { + /** + * FORMAT_UNSPECIFIED + * + * @generated from enum value: FORMAT_UNSPECIFIED = 0; + */ + Format[Format["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * FORMAT_VFAT is used for the UEFI boot partition + * + * @generated from enum value: FORMAT_VFAT = 1; + */ + Format[Format["VFAT"] = 1] = "VFAT"; + /** + * FORMAT_EXT3 is usually only used for /boot + * + * @generated from enum value: FORMAT_EXT3 = 2; + */ + Format[Format["EXT3"] = 2] = "EXT3"; + /** + * FORMAT_EXT4 is the default fs + * + * @generated from enum value: FORMAT_EXT4 = 3; + */ + Format[Format["EXT4"] = 3] = "EXT4"; + /** + * FORMAT_SWAP is for the swap partition + * + * @generated from enum value: FORMAT_SWAP = 4; + */ + Format[Format["SWAP"] = 4] = "SWAP"; + /** + * FORMAT_TMPFS is used for a memory filesystem typically /tmp + * + * @generated from enum value: FORMAT_TMPFS = 5; + */ + Format[Format["TMPFS"] = 5] = "TMPFS"; + /** + * FORMAT_NONE + * + * @generated from enum value: FORMAT_NONE = 6; + */ + Format[Format["NONE"] = 6] = "NONE"; +})(Format || (Format = {})); +/** + * Describes the enum metalstack.api.v2.Format. + */ +export const FormatSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_filesystem, 1); +/** + * GPTType specifies the partition type in uefi systems + * + * @generated from enum metalstack.api.v2.GPTType + */ +export var GPTType; +(function (GPTType) { + /** + * GPT_TYPE_UNSPECIFIED is no specified + * + * @generated from enum value: GPT_TYPE_UNSPECIFIED = 0; + */ + GPTType[GPTType["GPT_TYPE_UNSPECIFIED"] = 0] = "GPT_TYPE_UNSPECIFIED"; + /** + * GPT_TYPE_BOOT EFI Boot Partition + * + * @generated from enum value: GPT_TYPE_BOOT = 1; + */ + GPTType[GPTType["GPT_TYPE_BOOT"] = 1] = "GPT_TYPE_BOOT"; + /** + * GPT_TYPE_LINUX Linux Partition + * + * @generated from enum value: GPT_TYPE_LINUX = 2; + */ + GPTType[GPTType["GPT_TYPE_LINUX"] = 2] = "GPT_TYPE_LINUX"; + /** + * GPT_TYPE_LINUX_RAID Linux Raid Partition + * + * @generated from enum value: GPT_TYPE_LINUX_RAID = 3; + */ + GPTType[GPTType["GPT_TYPE_LINUX_RAID"] = 3] = "GPT_TYPE_LINUX_RAID"; + /** + * GPT_TYPE_LINUX_LVM Linux LVM Partition + * + * @generated from enum value: GPT_TYPE_LINUX_LVM = 4; + */ + GPTType[GPTType["GPT_TYPE_LINUX_LVM"] = 4] = "GPT_TYPE_LINUX_LVM"; +})(GPTType || (GPTType = {})); +/** + * Describes the enum metalstack.api.v2.GPTType. + */ +export const GPTTypeSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_filesystem, 2); +/** + * RaidLevel defines howto mirror two or more block devices + * + * @generated from enum metalstack.api.v2.RaidLevel + */ +export var RaidLevel; +(function (RaidLevel) { + /** + * RAID_LEVEL_UNSPECIFIED is not specified + * + * @generated from enum value: RAID_LEVEL_UNSPECIFIED = 0; + */ + RaidLevel[RaidLevel["RAID_LEVEL_UNSPECIFIED"] = 0] = "RAID_LEVEL_UNSPECIFIED"; + /** + * RAID_LEVEL_0 is a stripe of two or more disks + * + * @generated from enum value: RAID_LEVEL_0 = 1; + */ + RaidLevel[RaidLevel["RAID_LEVEL_0"] = 1] = "RAID_LEVEL_0"; + /** + * RAID_LEVEL_1 is a mirror of two disks + * + * @generated from enum value: RAID_LEVEL_1 = 2; + */ + RaidLevel[RaidLevel["RAID_LEVEL_1"] = 2] = "RAID_LEVEL_1"; +})(RaidLevel || (RaidLevel = {})); +/** + * Describes the enum metalstack.api.v2.RaidLevel. + */ +export const RaidLevelSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_filesystem, 3); +/** + * FilesystemService serves filesystem related functions + * + * @generated from service metalstack.api.v2.FilesystemService + */ +export const FilesystemService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_filesystem, 0); diff --git a/js/metalstack/api/v2/filesystem_pb.ts b/js/metalstack/api/v2/filesystem_pb.ts new file mode 100644 index 00000000..4c41b87d --- /dev/null +++ b/js/metalstack/api/v2/filesystem_pb.ts @@ -0,0 +1,819 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/filesystem.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Meta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/filesystem.proto. + */ +export const file_metalstack_api_v2_filesystem: GenFile = /*@__PURE__*/ + fileDesc("CiJtZXRhbHN0YWNrL2FwaS92Mi9maWxlc3lzdGVtLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiI1ChtGaWxlc3lzdGVtU2VydmljZUdldFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiQgocRmlsZXN5c3RlbVNlcnZpY2VMaXN0UmVxdWVzdBIbCgJpZBgBIAEoCUIKukgHcgUQAhiAAUgAiAEBQgUKA19pZCJeChxGaWxlc3lzdGVtU2VydmljZUdldFJlc3BvbnNlEj4KEWZpbGVzeXN0ZW1fbGF5b3V0GAEgASgLMiMubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dCJgCh1GaWxlc3lzdGVtU2VydmljZUxpc3RSZXNwb25zZRI/ChJmaWxlc3lzdGVtX2xheW91dHMYASADKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0IrEBCh1GaWxlc3lzdGVtU2VydmljZU1hdGNoUmVxdWVzdBI+Cg5zaXplX2FuZF9pbWFnZRgBIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hdGNoSW1hZ2VBbmRTaXplSAASRwocbWFjaGluZV9hbmRfZmlsZXN5c3RlbWxheW91dBgCIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk1hdGNoTWFjaGluZUgAQgcKBW1hdGNoIkgKEU1hdGNoSW1hZ2VBbmRTaXplEhgKBHNpemUYASABKAlCCrpIB3IFEAIYgAESGQoFaW1hZ2UYAiABKAlCCrpIB3IFEAIYgAEiUAoMTWF0Y2hNYWNoaW5lEhkKB21hY2hpbmUYASABKAlCCLpIBXIDsAEBEiUKEWZpbGVzeXN0ZW1fbGF5b3V0GAIgASgJQgq6SAdyBRACGIABImAKHkZpbGVzeXN0ZW1TZXJ2aWNlTWF0Y2hSZXNwb25zZRI+ChFmaWxlc3lzdGVtX2xheW91dBgBIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQi6wMKEEZpbGVzeXN0ZW1MYXlvdXQSFgoCaWQYASABKAlCCrpIB3IFEAIYgAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIyCgtmaWxlc3lzdGVtcxgFIAMoCzIdLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW0SJgoFZGlza3MYBiADKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5EaXNrEiUKBHJhaWQYByADKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5SYWlkEjUKDXZvbHVtZV9ncm91cHMYCCADKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5Wb2x1bWVHcm91cBI5Cg9sb2dpY2FsX3ZvbHVtZXMYCSADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Mb2dpY2FsVm9sdW1lEkMKC2NvbnN0cmFpbnRzGAogASgLMi4ubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dENvbnN0cmFpbnRzQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbiKnAQobRmlsZXN5c3RlbUxheW91dENvbnN0cmFpbnRzEg0KBXNpemVzGAEgAygJEkoKBmltYWdlcxgCIAMoCzI6Lm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXRDb25zdHJhaW50cy5JbWFnZXNFbnRyeRotCgtJbWFnZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIusCCgpGaWxlc3lzdGVtEhoKBmRldmljZRgBIAEoCUIKukgHcgUQAhiAARI2CgZmb3JtYXQYAiABKA4yGS5tZXRhbHN0YWNrLmFwaS52Mi5Gb3JtYXRCC7pICMgBAYIBAhABEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHQoEcGF0aBgFIAEoCUIKukgHcgUQARiAIEgCiAEBEh4KBWxhYmVsGAYgASgJQgq6SAdyBRACGIABSAOIAQESKgoNbW91bnRfb3B0aW9ucxgHIAMoCUITukgQkgENECAYASIHcgUQARiAARIrCg5jcmVhdGVfb3B0aW9ucxgIIAMoCUITukgQkgENECAYASIHcgUQARiAAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CBwoFX3BhdGhCCAoGX2xhYmVsIlgKBERpc2sSGgoGZGV2aWNlGAEgASgJQgq6SAdyBRACGIABEjQKCnBhcnRpdGlvbnMYAiADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5EaXNrUGFydGl0aW9uIqIBCgRSYWlkEhIKCmFycmF5X25hbWUYASABKAkSDwoHZGV2aWNlcxgCIAMoCRI4CgVsZXZlbBgDIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLlJhaWRMZXZlbEILukgIyAEBggECEAESKwoOY3JlYXRlX29wdGlvbnMYBCADKAlCE7pIEJIBDRAgGAEiB3IFEAEYgAESDgoGc3BhcmVzGAUgASgFIpgBCg1EaXNrUGFydGl0aW9uEg4KBm51bWJlchgBIAEoDRISCgVsYWJlbBgCIAEoCUgAiAEBEgwKBHNpemUYAyABKAQSPgoIZ3B0X3R5cGUYBCABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5HUFRUeXBlQgu6SAjIAQGCAQIQAUgBiAEBQggKBl9sYWJlbEILCglfZ3B0X3R5cGUiRwoLVm9sdW1lR3JvdXASGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDwoHZGV2aWNlcxgCIAMoCRIMCgR0YWdzGAMgAygJIpIBCg1Mb2dpY2FsVm9sdW1lEhkKBG5hbWUYASABKAlCC7pICHIGwLOusQIBEiAKDHZvbHVtZV9ncm91cBgCIAEoCUIKukgHcgUQAhiAARIMCgRzaXplGAMgASgEEjYKCGx2bV90eXBlGAQgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTFZNVHlwZUIIukgFggECEAEqhgEKB0xWTVR5cGUSGAoUTFZNX1RZUEVfVU5TUEVDSUZJRUQQABIfCg9MVk1fVFlQRV9MSU5FQVIQARoKgrIZBmxpbmVhchIhChBMVk1fVFlQRV9TVFJJUEVEEAIaC4KyGQdzdHJpcGVkEh0KDkxWTV9UWVBFX1JBSUQxEAMaCYKyGQVyYWlkMSrEAQoGRm9ybWF0EhYKEkZPUk1BVF9VTlNQRUNJRklFRBAAEhkKC0ZPUk1BVF9WRkFUEAEaCIKyGQR2ZmF0EhkKC0ZPUk1BVF9FWFQzEAIaCIKyGQRleHQzEhkKC0ZPUk1BVF9FWFQ0EAMaCIKyGQRleHQ0EhkKC0ZPUk1BVF9TV0FQEAQaCIKyGQRzd2FwEhsKDEZPUk1BVF9UTVBGUxAFGgmCshkFdG1wZnMSGQoLRk9STUFUX05PTkUQBhoIgrIZBG5vbmUqowEKB0dQVFR5cGUSGAoUR1BUX1RZUEVfVU5TUEVDSUZJRUQQABIbCg1HUFRfVFlQRV9CT09UEAEaCIKyGQRlZjAwEhwKDkdQVF9UWVBFX0xJTlVYEAIaCIKyGQQ4MzAwEiEKE0dQVF9UWVBFX0xJTlVYX1JBSUQQAxoIgrIZBGZkMDASIAoSR1BUX1RZUEVfTElOVVhfTFZNEAQaCIKyGQQ4ZTAwKksKCVJhaWRMZXZlbBIaChZSQUlEX0xFVkVMX1VOU1BFQ0lGSUVEEAASEAoMUkFJRF9MRVZFTF8wEAESEAoMUkFJRF9MRVZFTF8xEAIy8gIKEUZpbGVzeXN0ZW1TZXJ2aWNlEnAKA0dldBIuLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlR2V0UmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgCEnMKBExpc3QSLy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtU2VydmljZUxpc3RSZXF1ZXN0GjAubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbVNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGAPg8xgCEnYKBU1hdGNoEjAubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbVNlcnZpY2VNYXRjaFJlcXVlc3QaMS5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtU2VydmljZU1hdGNoUmVzcG9uc2UiCNjzGAPg8xgCQsUBChVjb20ubWV0YWxzdGFjay5hcGkudjJCD0ZpbGVzeXN0ZW1Qcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + +/** + * FilesystemServiceGetRequest is the request payload for a filesystem get request + * + * @generated from message metalstack.api.v2.FilesystemServiceGetRequest + */ +export type FilesystemServiceGetRequest = Message<"metalstack.api.v2.FilesystemServiceGetRequest"> & { + /** + * ID of the filesystem to get + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.api.v2.FilesystemServiceGetRequest. + * Use `create(FilesystemServiceGetRequestSchema)` to create a new message. + */ +export const FilesystemServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 0); + +/** + * FilesystemServiceListRequest is the request payload for a filesystem list request + * + * @generated from message metalstack.api.v2.FilesystemServiceListRequest + */ +export type FilesystemServiceListRequest = Message<"metalstack.api.v2.FilesystemServiceListRequest"> & { + /** + * ID of the filesystem to get + * + * @generated from field: optional string id = 1; + */ + id?: string; +}; + +/** + * Describes the message metalstack.api.v2.FilesystemServiceListRequest. + * Use `create(FilesystemServiceListRequestSchema)` to create a new message. + */ +export const FilesystemServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 1); + +/** + * FilesystemServiceGetResponse is the response payload for a filesystem get request + * + * @generated from message metalstack.api.v2.FilesystemServiceGetResponse + */ +export type FilesystemServiceGetResponse = Message<"metalstack.api.v2.FilesystemServiceGetResponse"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; + +/** + * Describes the message metalstack.api.v2.FilesystemServiceGetResponse. + * Use `create(FilesystemServiceGetResponseSchema)` to create a new message. + */ +export const FilesystemServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 2); + +/** + * FilesystemServiceListResponse is the response payload for a filesystem list request + * + * @generated from message metalstack.api.v2.FilesystemServiceListResponse + */ +export type FilesystemServiceListResponse = Message<"metalstack.api.v2.FilesystemServiceListResponse"> & { + /** + * FilesystemLayouts the filesystemlayouts + * + * @generated from field: repeated metalstack.api.v2.FilesystemLayout filesystem_layouts = 1; + */ + filesystemLayouts: FilesystemLayout[]; +}; + +/** + * Describes the message metalstack.api.v2.FilesystemServiceListResponse. + * Use `create(FilesystemServiceListResponseSchema)` to create a new message. + */ +export const FilesystemServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 3); + +/** + * FilesystemServiceMatchRequest + * + * @generated from message metalstack.api.v2.FilesystemServiceMatchRequest + */ +export type FilesystemServiceMatchRequest = Message<"metalstack.api.v2.FilesystemServiceMatchRequest"> & { + /** + * Match either size and image to a filesystemlayout + * or if a machine matches to a filesystemlayout + * + * @generated from oneof metalstack.api.v2.FilesystemServiceMatchRequest.match + */ + match: { + /** + * SizeAndImage + * + * @generated from field: metalstack.api.v2.MatchImageAndSize size_and_image = 1; + */ + value: MatchImageAndSize; + case: "sizeAndImage"; + } | { + /** + * MachineAndFilesystemlayout + * + * @generated from field: metalstack.api.v2.MatchMachine machine_and_filesystemlayout = 2; + */ + value: MatchMachine; + case: "machineAndFilesystemlayout"; + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message metalstack.api.v2.FilesystemServiceMatchRequest. + * Use `create(FilesystemServiceMatchRequestSchema)` to create a new message. + */ +export const FilesystemServiceMatchRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 4); + +/** + * MatchImageAndSize + * + * @generated from message metalstack.api.v2.MatchImageAndSize + */ +export type MatchImageAndSize = Message<"metalstack.api.v2.MatchImageAndSize"> & { + /** + * Size, machine size to try + * + * @generated from field: string size = 1; + */ + size: string; + + /** + * Image machine image to try + * + * @generated from field: string image = 2; + */ + image: string; +}; + +/** + * Describes the message metalstack.api.v2.MatchImageAndSize. + * Use `create(MatchImageAndSizeSchema)` to create a new message. + */ +export const MatchImageAndSizeSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 5); + +/** + * MatchMachine + * + * @generated from message metalstack.api.v2.MatchMachine + */ +export type MatchMachine = Message<"metalstack.api.v2.MatchMachine"> & { + /** + * Machine to check + * + * @generated from field: string machine = 1; + */ + machine: string; + + /** + * FilesystemLayout to check + * + * @generated from field: string filesystem_layout = 2; + */ + filesystemLayout: string; +}; + +/** + * Describes the message metalstack.api.v2.MatchMachine. + * Use `create(MatchMachineSchema)` to create a new message. + */ +export const MatchMachineSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 6); + +/** + * FilesystemServiceMatchResponse + * + * @generated from message metalstack.api.v2.FilesystemServiceMatchResponse + */ +export type FilesystemServiceMatchResponse = Message<"metalstack.api.v2.FilesystemServiceMatchResponse"> & { + /** + * FilesystemLayout the filesystemlayout + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 1; + */ + filesystemLayout?: FilesystemLayout; +}; + +/** + * Describes the message metalstack.api.v2.FilesystemServiceMatchResponse. + * Use `create(FilesystemServiceMatchResponseSchema)` to create a new message. + */ +export const FilesystemServiceMatchResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 7); + +/** + * FilesystemLayout + * + * @generated from message metalstack.api.v2.FilesystemLayout + */ +export type FilesystemLayout = Message<"metalstack.api.v2.FilesystemLayout"> & { + /** + * Id of this filesystemLayout + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Meta for this filesystemLayout + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + + /** + * Name of this filesystemLayout + * + * @generated from field: optional string name = 3; + */ + name?: string; + + /** + * Description of this filesystemLayout + * + * @generated from field: optional string description = 4; + */ + description?: string; + + /** + * Filesystems is a list of filesystems to create on a machine + * + * @generated from field: repeated metalstack.api.v2.Filesystem filesystems = 5; + */ + filesystems: Filesystem[]; + + /** + * Disks list of disks that belong to this layout + * + * @generated from field: repeated metalstack.api.v2.Disk disks = 6; + */ + disks: Disk[]; + + /** + * raid arrays to create + * + * @generated from field: repeated metalstack.api.v2.Raid raid = 7; + */ + raid: Raid[]; + + /** + * VolumeGroups list of volumegroups to create + * + * @generated from field: repeated metalstack.api.v2.VolumeGroup volume_groups = 8; + */ + volumeGroups: VolumeGroup[]; + + /** + * LogicalVolumes list of logicalvolumes to create + * + * @generated from field: repeated metalstack.api.v2.LogicalVolume logical_volumes = 9; + */ + logicalVolumes: LogicalVolume[]; + + /** + * Constraints which must match that this layout is taken, if sizes and images are empty these are develop layouts + * + * @generated from field: metalstack.api.v2.FilesystemLayoutConstraints constraints = 10; + */ + constraints?: FilesystemLayoutConstraints; +}; + +/** + * Describes the message metalstack.api.v2.FilesystemLayout. + * Use `create(FilesystemLayoutSchema)` to create a new message. + */ +export const FilesystemLayoutSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 8); + +/** + * FilesystemLayoutConstraints + * + * @generated from message metalstack.api.v2.FilesystemLayoutConstraints + */ +export type FilesystemLayoutConstraints = Message<"metalstack.api.v2.FilesystemLayoutConstraints"> & { + /** + * Sizes list of sizes this layout applies to + * + * @generated from field: repeated string sizes = 1; + */ + sizes: string[]; + + /** + * Images list of images this layout applies to + * + * @generated from field: map images = 2; + */ + images: { [key: string]: string }; +}; + +/** + * Describes the message metalstack.api.v2.FilesystemLayoutConstraints. + * Use `create(FilesystemLayoutConstraintsSchema)` to create a new message. + */ +export const FilesystemLayoutConstraintsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 9); + +/** + * Filesystem + * + * @generated from message metalstack.api.v2.Filesystem + */ +export type Filesystem = Message<"metalstack.api.v2.Filesystem"> & { + /** + * Device the underlying device where this filesystem should be created + * + * @generated from field: string device = 1; + */ + device: string; + + /** + * Format of the filesystem format + * + * @generated from field: metalstack.api.v2.Format format = 2; + */ + format: Format; + + /** + * Name of this filesystem + * + * @generated from field: optional string name = 3; + */ + name?: string; + + /** + * Description of this filesystem + * + * @generated from field: optional string description = 4; + */ + description?: string; + + /** + * Path the mountpoint where this filesystem should be mounted on + * + * @generated from field: optional string path = 5; + */ + path?: string; + + /** + * Label optional label for this this filesystem + * + * @generated from field: optional string label = 6; + */ + label?: string; + + /** + * MountOptions the options to use to mount this filesystem + * + * @generated from field: repeated string mount_options = 7; + */ + mountOptions: string[]; + + /** + * CreateOptions the options to use to create (mkfs) this filesystem + * + * @generated from field: repeated string create_options = 8; + */ + createOptions: string[]; +}; + +/** + * Describes the message metalstack.api.v2.Filesystem. + * Use `create(FilesystemSchema)` to create a new message. + */ +export const FilesystemSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 10); + +/** + * Disk + * + * @generated from message metalstack.api.v2.Disk + */ +export type Disk = Message<"metalstack.api.v2.Disk"> & { + /** + * Device the device to create the partitions + * + * @generated from field: string device = 1; + */ + device: string; + + /** + * Partitions list of partitions to create on this disk + * + * @generated from field: repeated metalstack.api.v2.DiskPartition partitions = 2; + */ + partitions: DiskPartition[]; +}; + +/** + * Describes the message metalstack.api.v2.Disk. + * Use `create(DiskSchema)` to create a new message. + */ +export const DiskSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 11); + +/** + * Raid + * + * @generated from message metalstack.api.v2.Raid + */ +export type Raid = Message<"metalstack.api.v2.Raid"> & { + /** + * ArrayName the name of the resulting array device + * + * @generated from field: string array_name = 1; + */ + arrayName: string; + + /** + * Devices list of devices to form the raid array from + * + * @generated from field: repeated string devices = 2; + */ + devices: string[]; + + /** + * Level raid level to create, should be 0 or 1 + * + * @generated from field: metalstack.api.v2.RaidLevel level = 3; + */ + level: RaidLevel; + + /** + * CreateOptions the options to use to create the raid array + * + * @generated from field: repeated string create_options = 4; + */ + createOptions: string[]; + + /** + * Spares number of spares for the raid array + * + * @generated from field: int32 spares = 5; + */ + spares: number; +}; + +/** + * Describes the message metalstack.api.v2.Raid. + * Use `create(RaidSchema)` to create a new message. + */ +export const RaidSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 12); + +/** + * DiskPartition + * + * @generated from message metalstack.api.v2.DiskPartition + */ +export type DiskPartition = Message<"metalstack.api.v2.DiskPartition"> & { + /** + * Number partition number, will be appended to partitionprefix to create the final devicename + * + * @generated from field: uint32 number = 1; + */ + number: number; + + /** + * optional label for this this partition + * + * @generated from field: optional string label = 2; + */ + label?: string; + + /** + * Size size in mebibytes (MiB) of this partition" + * + * @generated from field: uint64 size = 3; + */ + size: bigint; + + /** + * GPTType the gpt partition table type of this partition + * + * @generated from field: optional metalstack.api.v2.GPTType gpt_type = 4; + */ + gptType?: GPTType; +}; + +/** + * Describes the message metalstack.api.v2.DiskPartition. + * Use `create(DiskPartitionSchema)` to create a new message. + */ +export const DiskPartitionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 13); + +/** + * VolumeGroup + * + * @generated from message metalstack.api.v2.VolumeGroup + */ +export type VolumeGroup = Message<"metalstack.api.v2.VolumeGroup"> & { + /** + * Name the name of the resulting volume group + * + * @generated from field: string name = 1; + */ + name: string; + + /** + * Devices list of devices to form the volume group from + * + * @generated from field: repeated string devices = 2; + */ + devices: string[]; + + /** + * Tags list of tags to add to the volume group + * + * @generated from field: repeated string tags = 3; + */ + tags: string[]; +}; + +/** + * Describes the message metalstack.api.v2.VolumeGroup. + * Use `create(VolumeGroupSchema)` to create a new message. + */ +export const VolumeGroupSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 14); + +/** + * LogicalVolume + * + * @generated from message metalstack.api.v2.LogicalVolume + */ +export type LogicalVolume = Message<"metalstack.api.v2.LogicalVolume"> & { + /** + * Name the name of the logical volume + * + * @generated from field: string name = 1; + */ + name: string; + + /** + * VolumeGroup the name of the volume group where to create the logical volume onto + * + * @generated from field: string volume_group = 2; + */ + volumeGroup: string; + + /** + * Size size in mebibytes (MiB) of this volume + * + * @generated from field: uint64 size = 3; + */ + size: bigint; + + /** + * LVMType the type of this logical volume can be either linear|striped|raid1 + * + * @generated from field: metalstack.api.v2.LVMType lvm_type = 4; + */ + lvmType: LVMType; +}; + +/** + * Describes the message metalstack.api.v2.LogicalVolume. + * Use `create(LogicalVolumeSchema)` to create a new message. + */ +export const LogicalVolumeSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_filesystem, 15); + +/** + * LVMType + * + * @generated from enum metalstack.api.v2.LVMType + */ +export enum LVMType { + /** + * LVM_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: LVM_TYPE_UNSPECIFIED = 0; + */ + LVM_TYPE_UNSPECIFIED = 0, + + /** + * LVM_TYPE_LINEAR append across all physical volumes + * + * @generated from enum value: LVM_TYPE_LINEAR = 1; + */ + LVM_TYPE_LINEAR = 1, + + /** + * LVM_TYPE_STRIPED stripe across all physical volumes + * + * @generated from enum value: LVM_TYPE_STRIPED = 2; + */ + LVM_TYPE_STRIPED = 2, + + /** + * LVM_TYPE_RAID1 mirror with raid across all physical volumes + * + * @generated from enum value: LVM_TYPE_RAID1 = 3; + */ + LVM_TYPE_RAID1 = 3, +} + +/** + * Describes the enum metalstack.api.v2.LVMType. + */ +export const LVMTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_filesystem, 0); + +/** + * Format specifies the filesystem to use on a volume + * + * @generated from enum metalstack.api.v2.Format + */ +export enum Format { + /** + * FORMAT_UNSPECIFIED + * + * @generated from enum value: FORMAT_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * FORMAT_VFAT is used for the UEFI boot partition + * + * @generated from enum value: FORMAT_VFAT = 1; + */ + VFAT = 1, + + /** + * FORMAT_EXT3 is usually only used for /boot + * + * @generated from enum value: FORMAT_EXT3 = 2; + */ + EXT3 = 2, + + /** + * FORMAT_EXT4 is the default fs + * + * @generated from enum value: FORMAT_EXT4 = 3; + */ + EXT4 = 3, + + /** + * FORMAT_SWAP is for the swap partition + * + * @generated from enum value: FORMAT_SWAP = 4; + */ + SWAP = 4, + + /** + * FORMAT_TMPFS is used for a memory filesystem typically /tmp + * + * @generated from enum value: FORMAT_TMPFS = 5; + */ + TMPFS = 5, + + /** + * FORMAT_NONE + * + * @generated from enum value: FORMAT_NONE = 6; + */ + NONE = 6, +} + +/** + * Describes the enum metalstack.api.v2.Format. + */ +export const FormatSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_filesystem, 1); + +/** + * GPTType specifies the partition type in uefi systems + * + * @generated from enum metalstack.api.v2.GPTType + */ +export enum GPTType { + /** + * GPT_TYPE_UNSPECIFIED is no specified + * + * @generated from enum value: GPT_TYPE_UNSPECIFIED = 0; + */ + GPT_TYPE_UNSPECIFIED = 0, + + /** + * GPT_TYPE_BOOT EFI Boot Partition + * + * @generated from enum value: GPT_TYPE_BOOT = 1; + */ + GPT_TYPE_BOOT = 1, + + /** + * GPT_TYPE_LINUX Linux Partition + * + * @generated from enum value: GPT_TYPE_LINUX = 2; + */ + GPT_TYPE_LINUX = 2, + + /** + * GPT_TYPE_LINUX_RAID Linux Raid Partition + * + * @generated from enum value: GPT_TYPE_LINUX_RAID = 3; + */ + GPT_TYPE_LINUX_RAID = 3, + + /** + * GPT_TYPE_LINUX_LVM Linux LVM Partition + * + * @generated from enum value: GPT_TYPE_LINUX_LVM = 4; + */ + GPT_TYPE_LINUX_LVM = 4, +} + +/** + * Describes the enum metalstack.api.v2.GPTType. + */ +export const GPTTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_filesystem, 2); + +/** + * RaidLevel defines howto mirror two or more block devices + * + * @generated from enum metalstack.api.v2.RaidLevel + */ +export enum RaidLevel { + /** + * RAID_LEVEL_UNSPECIFIED is not specified + * + * @generated from enum value: RAID_LEVEL_UNSPECIFIED = 0; + */ + RAID_LEVEL_UNSPECIFIED = 0, + + /** + * RAID_LEVEL_0 is a stripe of two or more disks + * + * @generated from enum value: RAID_LEVEL_0 = 1; + */ + RAID_LEVEL_0 = 1, + + /** + * RAID_LEVEL_1 is a mirror of two disks + * + * @generated from enum value: RAID_LEVEL_1 = 2; + */ + RAID_LEVEL_1 = 2, +} + +/** + * Describes the enum metalstack.api.v2.RaidLevel. + */ +export const RaidLevelSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_filesystem, 3); + +/** + * FilesystemService serves filesystem related functions + * + * @generated from service metalstack.api.v2.FilesystemService + */ +export const FilesystemService: GenService<{ + /** + * Get a filesystem + * + * @generated from rpc metalstack.api.v2.FilesystemService.Get + */ + get: { + methodKind: "unary"; + input: typeof FilesystemServiceGetRequestSchema; + output: typeof FilesystemServiceGetResponseSchema; + }, + /** + * List all filesystems + * + * @generated from rpc metalstack.api.v2.FilesystemService.List + */ + list: { + methodKind: "unary"; + input: typeof FilesystemServiceListRequestSchema; + output: typeof FilesystemServiceListResponseSchema; + }, + /** + * Match a filesystems + * + * @generated from rpc metalstack.api.v2.FilesystemService.Match + */ + match: { + methodKind: "unary"; + input: typeof FilesystemServiceMatchRequestSchema; + output: typeof FilesystemServiceMatchResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_filesystem, 0); + diff --git a/js/metalstack/api/v2/health_pb.d.ts b/js/metalstack/api/v2/health_pb.d.ts new file mode 100644 index 00000000..61c1b627 --- /dev/null +++ b/js/metalstack/api/v2/health_pb.d.ts @@ -0,0 +1,220 @@ +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/health.proto. + */ +export declare const file_metalstack_api_v2_health: GenFile; +/** + * Health reports the health status of all services + * + * @generated from message metalstack.api.v2.Health + */ +export type Health = Message<"metalstack.api.v2.Health"> & { + /** + * Services the health of all individual services + * + * @generated from field: repeated metalstack.api.v2.HealthStatus services = 1; + */ + services: HealthStatus[]; +}; +/** + * Describes the message metalstack.api.v2.Health. + * Use `create(HealthSchema)` to create a new message. + */ +export declare const HealthSchema: GenMessage; +/** + * HealthStatus the health of one service + * + * @generated from message metalstack.api.v2.HealthStatus + */ +export type HealthStatus = Message<"metalstack.api.v2.HealthStatus"> & { + /** + * Name the name of the service + * + * @generated from field: metalstack.api.v2.Service name = 1; + */ + name: Service; + /** + * Status the status of this service + * + * @generated from field: metalstack.api.v2.ServiceStatus status = 2; + */ + status: ServiceStatus; + /** + * Message describes the reason for the unhealthy status if possible + * + * @generated from field: string message = 3; + */ + message: string; + /** + * Partitions describes the health of the service by partition + * + * @generated from field: map partitions = 4; + */ + partitions: { + [key: string]: PartitionHealth; + }; +}; +/** + * Describes the message metalstack.api.v2.HealthStatus. + * Use `create(HealthStatusSchema)` to create a new message. + */ +export declare const HealthStatusSchema: GenMessage; +/** + * PartitionHealth the status of a specific service in this partition + * + * @generated from message metalstack.api.v2.PartitionHealth + */ +export type PartitionHealth = Message<"metalstack.api.v2.PartitionHealth"> & { + /** + * Status the health status of the service in this partition + * + * @generated from field: metalstack.api.v2.ServiceStatus status = 1; + */ + status: ServiceStatus; + /** + * Message describes the reason for the unhealthy status if possible + * + * @generated from field: string message = 2; + */ + message: string; +}; +/** + * Describes the message metalstack.api.v2.PartitionHealth. + * Use `create(PartitionHealthSchema)` to create a new message. + */ +export declare const PartitionHealthSchema: GenMessage; +/** + * HealthServiceGetRequest is request payload to get the health of the system + * + * @generated from message metalstack.api.v2.HealthServiceGetRequest + */ +export type HealthServiceGetRequest = Message<"metalstack.api.v2.HealthServiceGetRequest"> & {}; +/** + * Describes the message metalstack.api.v2.HealthServiceGetRequest. + * Use `create(HealthServiceGetRequestSchema)` to create a new message. + */ +export declare const HealthServiceGetRequestSchema: GenMessage; +/** + * HealthServiceGetRequest is the response payload with the health of the system + * + * @generated from message metalstack.api.v2.HealthServiceGetResponse + */ +export type HealthServiceGetResponse = Message<"metalstack.api.v2.HealthServiceGetResponse"> & { + /** + * Health is the overall health of the system + * + * @generated from field: metalstack.api.v2.Health health = 1; + */ + health?: Health; +}; +/** + * Describes the message metalstack.api.v2.HealthServiceGetResponse. + * Use `create(HealthServiceGetResponseSchema)` to create a new message. + */ +export declare const HealthServiceGetResponseSchema: GenMessage; +/** + * ServiceStatus defines the status of a service + * + * @generated from enum metalstack.api.v2.ServiceStatus + */ +export declare enum ServiceStatus { + /** + * SERVICE_STATUS_UNSPECIFIED service status is not known or unspecified + * + * @generated from enum value: SERVICE_STATUS_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * SERVICE_STATUS_DEGRADED the service is in degraded status, not the whole functionality is available + * + * @generated from enum value: SERVICE_STATUS_DEGRADED = 1; + */ + DEGRADED = 1, + /** + * SERVICE_STATUS_UNHEALTHY the service is in unhealthy status, serious impact is expected + * + * @generated from enum value: SERVICE_STATUS_UNHEALTHY = 2; + */ + UNHEALTHY = 2, + /** + * SERVICE_STATUS_HEALTHY the service is in healthy status e.g. fully functional + * + * @generated from enum value: SERVICE_STATUS_HEALTHY = 3; + */ + HEALTHY = 3 +} +/** + * Describes the enum metalstack.api.v2.ServiceStatus. + */ +export declare const ServiceStatusSchema: GenEnum; +/** + * Service defines the service for which the healtyness is reported + * + * @generated from enum metalstack.api.v2.Service + */ +export declare enum Service { + /** + * SERVICE_UNSPECIFIED is a unknown service + * + * @generated from enum value: SERVICE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * SERVICE_IPAM the ipam service + * + * @generated from enum value: SERVICE_IPAM = 1; + */ + IPAM = 1, + /** + * SERVICE_RETHINK the rethinkdb + * + * @generated from enum value: SERVICE_RETHINK = 2; + */ + RETHINK = 2, + /** + * SERVICE_MASTERDATA the masterdata-api + * + * @generated from enum value: SERVICE_MASTERDATA = 3; + */ + MASTERDATA = 3, + /** + * SERVICE_MACHINES the machine service + * + * @generated from enum value: SERVICE_MACHINES = 4; + */ + MACHINES = 4, + /** + * SERVICE_AUDIT the auditing + * + * @generated from enum value: SERVICE_AUDIT = 5; + */ + AUDIT = 5, + /** + * SERVICE_VPN the vpn service + * + * @generated from enum value: SERVICE_VPN = 6; + */ + VPN = 6 +} +/** + * Describes the enum metalstack.api.v2.Service. + */ +export declare const ServiceSchema: GenEnum; +/** + * HealthService serves health related functions + * + * @generated from service metalstack.api.v2.HealthService + */ +export declare const HealthService: GenService<{ + /** + * Get the health of the platform + * + * @generated from rpc metalstack.api.v2.HealthService.Get + */ + get: { + methodKind: "unary"; + input: typeof HealthServiceGetRequestSchema; + output: typeof HealthServiceGetResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/health_pb.js b/js/metalstack/api/v2/health_pb.js new file mode 100644 index 00000000..83e456c7 --- /dev/null +++ b/js/metalstack/api/v2/health_pb.js @@ -0,0 +1,130 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/health.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_metalstack_api_v2_common } from "./common_pb"; +/** + * Describes the file metalstack/api/v2/health.proto. + */ +export const file_metalstack_api_v2_health = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9oZWFsdGgucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIjsKBkhlYWx0aBIxCghzZXJ2aWNlcxgBIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLkhlYWx0aFN0YXR1cyKXAgoMSGVhbHRoU3RhdHVzEigKBG5hbWUYASABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5TZXJ2aWNlEjAKBnN0YXR1cxgCIAEoDjIgLm1ldGFsc3RhY2suYXBpLnYyLlNlcnZpY2VTdGF0dXMSDwoHbWVzc2FnZRgDIAEoCRJDCgpwYXJ0aXRpb25zGAQgAygLMi8ubWV0YWxzdGFjay5hcGkudjIuSGVhbHRoU3RhdHVzLlBhcnRpdGlvbnNFbnRyeRpVCg9QYXJ0aXRpb25zRW50cnkSCwoDa2V5GAEgASgJEjEKBXZhbHVlGAIgASgLMiIubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uSGVhbHRoOgI4ASJUCg9QYXJ0aXRpb25IZWFsdGgSMAoGc3RhdHVzGAEgASgOMiAubWV0YWxzdGFjay5hcGkudjIuU2VydmljZVN0YXR1cxIPCgdtZXNzYWdlGAIgASgJIhkKF0hlYWx0aFNlcnZpY2VHZXRSZXF1ZXN0IkUKGEhlYWx0aFNlcnZpY2VHZXRSZXNwb25zZRIpCgZoZWFsdGgYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5IZWFsdGgqhgEKDVNlcnZpY2VTdGF0dXMSHgoaU0VSVklDRV9TVEFUVVNfVU5TUEVDSUZJRUQQABIbChdTRVJWSUNFX1NUQVRVU19ERUdSQURFRBABEhwKGFNFUlZJQ0VfU1RBVFVTX1VOSEVBTFRIWRACEhoKFlNFUlZJQ0VfU1RBVFVTX0hFQUxUSFkQAyrmAQoHU2VydmljZRIXChNTRVJWSUNFX1VOU1BFQ0lGSUVEEAASGgoMU0VSVklDRV9JUEFNEAEaCIKyGQRpcGFtEiIKD1NFUlZJQ0VfUkVUSElOSxACGg2CshkJcmV0aGlua2RiEiYKElNFUlZJQ0VfTUFTVEVSREFUQRADGg6CshkKbWFzdGVyZGF0YRIiChBTRVJWSUNFX01BQ0hJTkVTEAQaDIKyGQhtYWNoaW5lcxIcCg1TRVJWSUNFX0FVRElUEAUaCYKyGQVhdWRpdBIYCgtTRVJWSUNFX1ZQThAGGgeCshkDdnBuMnkKDUhlYWx0aFNlcnZpY2USaAoDR2V0EioubWV0YWxzdGFjay5hcGkudjIuSGVhbHRoU2VydmljZUdldFJlcXVlc3QaKy5tZXRhbHN0YWNrLmFwaS52Mi5IZWFsdGhTZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAHg8xgCQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC0hlYWx0aFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_metalstack_api_v2_common]); +/** + * Describes the message metalstack.api.v2.Health. + * Use `create(HealthSchema)` to create a new message. + */ +export const HealthSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_health, 0); +/** + * Describes the message metalstack.api.v2.HealthStatus. + * Use `create(HealthStatusSchema)` to create a new message. + */ +export const HealthStatusSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_health, 1); +/** + * Describes the message metalstack.api.v2.PartitionHealth. + * Use `create(PartitionHealthSchema)` to create a new message. + */ +export const PartitionHealthSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_health, 2); +/** + * Describes the message metalstack.api.v2.HealthServiceGetRequest. + * Use `create(HealthServiceGetRequestSchema)` to create a new message. + */ +export const HealthServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_health, 3); +/** + * Describes the message metalstack.api.v2.HealthServiceGetResponse. + * Use `create(HealthServiceGetResponseSchema)` to create a new message. + */ +export const HealthServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_health, 4); +/** + * ServiceStatus defines the status of a service + * + * @generated from enum metalstack.api.v2.ServiceStatus + */ +export var ServiceStatus; +(function (ServiceStatus) { + /** + * SERVICE_STATUS_UNSPECIFIED service status is not known or unspecified + * + * @generated from enum value: SERVICE_STATUS_UNSPECIFIED = 0; + */ + ServiceStatus[ServiceStatus["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * SERVICE_STATUS_DEGRADED the service is in degraded status, not the whole functionality is available + * + * @generated from enum value: SERVICE_STATUS_DEGRADED = 1; + */ + ServiceStatus[ServiceStatus["DEGRADED"] = 1] = "DEGRADED"; + /** + * SERVICE_STATUS_UNHEALTHY the service is in unhealthy status, serious impact is expected + * + * @generated from enum value: SERVICE_STATUS_UNHEALTHY = 2; + */ + ServiceStatus[ServiceStatus["UNHEALTHY"] = 2] = "UNHEALTHY"; + /** + * SERVICE_STATUS_HEALTHY the service is in healthy status e.g. fully functional + * + * @generated from enum value: SERVICE_STATUS_HEALTHY = 3; + */ + ServiceStatus[ServiceStatus["HEALTHY"] = 3] = "HEALTHY"; +})(ServiceStatus || (ServiceStatus = {})); +/** + * Describes the enum metalstack.api.v2.ServiceStatus. + */ +export const ServiceStatusSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_health, 0); +/** + * Service defines the service for which the healtyness is reported + * + * @generated from enum metalstack.api.v2.Service + */ +export var Service; +(function (Service) { + /** + * SERVICE_UNSPECIFIED is a unknown service + * + * @generated from enum value: SERVICE_UNSPECIFIED = 0; + */ + Service[Service["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * SERVICE_IPAM the ipam service + * + * @generated from enum value: SERVICE_IPAM = 1; + */ + Service[Service["IPAM"] = 1] = "IPAM"; + /** + * SERVICE_RETHINK the rethinkdb + * + * @generated from enum value: SERVICE_RETHINK = 2; + */ + Service[Service["RETHINK"] = 2] = "RETHINK"; + /** + * SERVICE_MASTERDATA the masterdata-api + * + * @generated from enum value: SERVICE_MASTERDATA = 3; + */ + Service[Service["MASTERDATA"] = 3] = "MASTERDATA"; + /** + * SERVICE_MACHINES the machine service + * + * @generated from enum value: SERVICE_MACHINES = 4; + */ + Service[Service["MACHINES"] = 4] = "MACHINES"; + /** + * SERVICE_AUDIT the auditing + * + * @generated from enum value: SERVICE_AUDIT = 5; + */ + Service[Service["AUDIT"] = 5] = "AUDIT"; + /** + * SERVICE_VPN the vpn service + * + * @generated from enum value: SERVICE_VPN = 6; + */ + Service[Service["VPN"] = 6] = "VPN"; +})(Service || (Service = {})); +/** + * Describes the enum metalstack.api.v2.Service. + */ +export const ServiceSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_health, 1); +/** + * HealthService serves health related functions + * + * @generated from service metalstack.api.v2.HealthService + */ +export const HealthService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_health, 0); diff --git a/js/metalstack/api/v2/health_pb.ts b/js/metalstack/api/v2/health_pb.ts new file mode 100644 index 00000000..0a3bc6e4 --- /dev/null +++ b/js/metalstack/api/v2/health_pb.ts @@ -0,0 +1,264 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/health.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/health.proto. + */ +export const file_metalstack_api_v2_health: GenFile = /*@__PURE__*/ + fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9oZWFsdGgucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIjsKBkhlYWx0aBIxCghzZXJ2aWNlcxgBIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLkhlYWx0aFN0YXR1cyKXAgoMSGVhbHRoU3RhdHVzEigKBG5hbWUYASABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5TZXJ2aWNlEjAKBnN0YXR1cxgCIAEoDjIgLm1ldGFsc3RhY2suYXBpLnYyLlNlcnZpY2VTdGF0dXMSDwoHbWVzc2FnZRgDIAEoCRJDCgpwYXJ0aXRpb25zGAQgAygLMi8ubWV0YWxzdGFjay5hcGkudjIuSGVhbHRoU3RhdHVzLlBhcnRpdGlvbnNFbnRyeRpVCg9QYXJ0aXRpb25zRW50cnkSCwoDa2V5GAEgASgJEjEKBXZhbHVlGAIgASgLMiIubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uSGVhbHRoOgI4ASJUCg9QYXJ0aXRpb25IZWFsdGgSMAoGc3RhdHVzGAEgASgOMiAubWV0YWxzdGFjay5hcGkudjIuU2VydmljZVN0YXR1cxIPCgdtZXNzYWdlGAIgASgJIhkKF0hlYWx0aFNlcnZpY2VHZXRSZXF1ZXN0IkUKGEhlYWx0aFNlcnZpY2VHZXRSZXNwb25zZRIpCgZoZWFsdGgYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5IZWFsdGgqhgEKDVNlcnZpY2VTdGF0dXMSHgoaU0VSVklDRV9TVEFUVVNfVU5TUEVDSUZJRUQQABIbChdTRVJWSUNFX1NUQVRVU19ERUdSQURFRBABEhwKGFNFUlZJQ0VfU1RBVFVTX1VOSEVBTFRIWRACEhoKFlNFUlZJQ0VfU1RBVFVTX0hFQUxUSFkQAyrmAQoHU2VydmljZRIXChNTRVJWSUNFX1VOU1BFQ0lGSUVEEAASGgoMU0VSVklDRV9JUEFNEAEaCIKyGQRpcGFtEiIKD1NFUlZJQ0VfUkVUSElOSxACGg2CshkJcmV0aGlua2RiEiYKElNFUlZJQ0VfTUFTVEVSREFUQRADGg6CshkKbWFzdGVyZGF0YRIiChBTRVJWSUNFX01BQ0hJTkVTEAQaDIKyGQhtYWNoaW5lcxIcCg1TRVJWSUNFX0FVRElUEAUaCYKyGQVhdWRpdBIYCgtTRVJWSUNFX1ZQThAGGgeCshkDdnBuMnkKDUhlYWx0aFNlcnZpY2USaAoDR2V0EioubWV0YWxzdGFjay5hcGkudjIuSGVhbHRoU2VydmljZUdldFJlcXVlc3QaKy5tZXRhbHN0YWNrLmFwaS52Mi5IZWFsdGhTZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAHg8xgCQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC0hlYWx0aFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_metalstack_api_v2_common]); + +/** + * Health reports the health status of all services + * + * @generated from message metalstack.api.v2.Health + */ +export type Health = Message<"metalstack.api.v2.Health"> & { + /** + * Services the health of all individual services + * + * @generated from field: repeated metalstack.api.v2.HealthStatus services = 1; + */ + services: HealthStatus[]; +}; + +/** + * Describes the message metalstack.api.v2.Health. + * Use `create(HealthSchema)` to create a new message. + */ +export const HealthSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_health, 0); + +/** + * HealthStatus the health of one service + * + * @generated from message metalstack.api.v2.HealthStatus + */ +export type HealthStatus = Message<"metalstack.api.v2.HealthStatus"> & { + /** + * Name the name of the service + * + * @generated from field: metalstack.api.v2.Service name = 1; + */ + name: Service; + + /** + * Status the status of this service + * + * @generated from field: metalstack.api.v2.ServiceStatus status = 2; + */ + status: ServiceStatus; + + /** + * Message describes the reason for the unhealthy status if possible + * + * @generated from field: string message = 3; + */ + message: string; + + /** + * Partitions describes the health of the service by partition + * + * @generated from field: map partitions = 4; + */ + partitions: { [key: string]: PartitionHealth }; +}; + +/** + * Describes the message metalstack.api.v2.HealthStatus. + * Use `create(HealthStatusSchema)` to create a new message. + */ +export const HealthStatusSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_health, 1); + +/** + * PartitionHealth the status of a specific service in this partition + * + * @generated from message metalstack.api.v2.PartitionHealth + */ +export type PartitionHealth = Message<"metalstack.api.v2.PartitionHealth"> & { + /** + * Status the health status of the service in this partition + * + * @generated from field: metalstack.api.v2.ServiceStatus status = 1; + */ + status: ServiceStatus; + + /** + * Message describes the reason for the unhealthy status if possible + * + * @generated from field: string message = 2; + */ + message: string; +}; + +/** + * Describes the message metalstack.api.v2.PartitionHealth. + * Use `create(PartitionHealthSchema)` to create a new message. + */ +export const PartitionHealthSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_health, 2); + +/** + * HealthServiceGetRequest is request payload to get the health of the system + * + * @generated from message metalstack.api.v2.HealthServiceGetRequest + */ +export type HealthServiceGetRequest = Message<"metalstack.api.v2.HealthServiceGetRequest"> & { +}; + +/** + * Describes the message metalstack.api.v2.HealthServiceGetRequest. + * Use `create(HealthServiceGetRequestSchema)` to create a new message. + */ +export const HealthServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_health, 3); + +/** + * HealthServiceGetRequest is the response payload with the health of the system + * + * @generated from message metalstack.api.v2.HealthServiceGetResponse + */ +export type HealthServiceGetResponse = Message<"metalstack.api.v2.HealthServiceGetResponse"> & { + /** + * Health is the overall health of the system + * + * @generated from field: metalstack.api.v2.Health health = 1; + */ + health?: Health; +}; + +/** + * Describes the message metalstack.api.v2.HealthServiceGetResponse. + * Use `create(HealthServiceGetResponseSchema)` to create a new message. + */ +export const HealthServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_health, 4); + +/** + * ServiceStatus defines the status of a service + * + * @generated from enum metalstack.api.v2.ServiceStatus + */ +export enum ServiceStatus { + /** + * SERVICE_STATUS_UNSPECIFIED service status is not known or unspecified + * + * @generated from enum value: SERVICE_STATUS_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * SERVICE_STATUS_DEGRADED the service is in degraded status, not the whole functionality is available + * + * @generated from enum value: SERVICE_STATUS_DEGRADED = 1; + */ + DEGRADED = 1, + + /** + * SERVICE_STATUS_UNHEALTHY the service is in unhealthy status, serious impact is expected + * + * @generated from enum value: SERVICE_STATUS_UNHEALTHY = 2; + */ + UNHEALTHY = 2, + + /** + * SERVICE_STATUS_HEALTHY the service is in healthy status e.g. fully functional + * + * @generated from enum value: SERVICE_STATUS_HEALTHY = 3; + */ + HEALTHY = 3, +} + +/** + * Describes the enum metalstack.api.v2.ServiceStatus. + */ +export const ServiceStatusSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_health, 0); + +/** + * Service defines the service for which the healtyness is reported + * + * @generated from enum metalstack.api.v2.Service + */ +export enum Service { + /** + * SERVICE_UNSPECIFIED is a unknown service + * + * @generated from enum value: SERVICE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * SERVICE_IPAM the ipam service + * + * @generated from enum value: SERVICE_IPAM = 1; + */ + IPAM = 1, + + /** + * SERVICE_RETHINK the rethinkdb + * + * @generated from enum value: SERVICE_RETHINK = 2; + */ + RETHINK = 2, + + /** + * SERVICE_MASTERDATA the masterdata-api + * + * @generated from enum value: SERVICE_MASTERDATA = 3; + */ + MASTERDATA = 3, + + /** + * SERVICE_MACHINES the machine service + * + * @generated from enum value: SERVICE_MACHINES = 4; + */ + MACHINES = 4, + + /** + * SERVICE_AUDIT the auditing + * + * @generated from enum value: SERVICE_AUDIT = 5; + */ + AUDIT = 5, + + /** + * SERVICE_VPN the vpn service + * + * @generated from enum value: SERVICE_VPN = 6; + */ + VPN = 6, +} + +/** + * Describes the enum metalstack.api.v2.Service. + */ +export const ServiceSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_health, 1); + +/** + * HealthService serves health related functions + * + * @generated from service metalstack.api.v2.HealthService + */ +export const HealthService: GenService<{ + /** + * Get the health of the platform + * + * @generated from rpc metalstack.api.v2.HealthService.Get + */ + get: { + methodKind: "unary"; + input: typeof HealthServiceGetRequestSchema; + output: typeof HealthServiceGetResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_health, 0); + diff --git a/js/metalstack/api/v2/image_pb.d.ts b/js/metalstack/api/v2/image_pb.d.ts new file mode 100644 index 00000000..3e7564a0 --- /dev/null +++ b/js/metalstack/api/v2/image_pb.d.ts @@ -0,0 +1,368 @@ +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import type { Labels, Meta } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/image.proto. + */ +export declare const file_metalstack_api_v2_image: GenFile; +/** + * ImageServiceGetRequest is the request payload for a image get request + * + * @generated from message metalstack.api.v2.ImageServiceGetRequest + */ +export type ImageServiceGetRequest = Message<"metalstack.api.v2.ImageServiceGetRequest"> & { + /** + * ID of the image to get + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.api.v2.ImageServiceGetRequest. + * Use `create(ImageServiceGetRequestSchema)` to create a new message. + */ +export declare const ImageServiceGetRequestSchema: GenMessage; +/** + * ImageServiceListRequest is the request payload for a image list request + * + * @generated from message metalstack.api.v2.ImageServiceListRequest + */ +export type ImageServiceListRequest = Message<"metalstack.api.v2.ImageServiceListRequest"> & { + /** + * Query for images + * + * @generated from field: metalstack.api.v2.ImageQuery query = 1; + */ + query?: ImageQuery; +}; +/** + * Describes the message metalstack.api.v2.ImageServiceListRequest. + * Use `create(ImageServiceListRequestSchema)` to create a new message. + */ +export declare const ImageServiceListRequestSchema: GenMessage; +/** + * ImageServiceLatestRequest is the request payload for a image latest request + * + * @generated from message metalstack.api.v2.ImageServiceLatestRequest + */ +export type ImageServiceLatestRequest = Message<"metalstack.api.v2.ImageServiceLatestRequest"> & { + /** + * OS for which the latest image should be fetched + * should contain os and major.minor then latest patch version of this os is returned + * + * @generated from field: string os = 1; + */ + os: string; +}; +/** + * Describes the message metalstack.api.v2.ImageServiceLatestRequest. + * Use `create(ImageServiceLatestRequestSchema)` to create a new message. + */ +export declare const ImageServiceLatestRequestSchema: GenMessage; +/** + * ImageServiceGetResponse is the response payload for a image get request + * + * @generated from message metalstack.api.v2.ImageServiceGetResponse + */ +export type ImageServiceGetResponse = Message<"metalstack.api.v2.ImageServiceGetResponse"> & { + /** + * Image the image + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; +/** + * Describes the message metalstack.api.v2.ImageServiceGetResponse. + * Use `create(ImageServiceGetResponseSchema)` to create a new message. + */ +export declare const ImageServiceGetResponseSchema: GenMessage; +/** + * ImageServiceListResponse is the response payload for a image list request + * + * @generated from message metalstack.api.v2.ImageServiceListResponse + */ +export type ImageServiceListResponse = Message<"metalstack.api.v2.ImageServiceListResponse"> & { + /** + * Images the images + * + * @generated from field: repeated metalstack.api.v2.Image images = 1; + */ + images: Image[]; +}; +/** + * Describes the message metalstack.api.v2.ImageServiceListResponse. + * Use `create(ImageServiceListResponseSchema)` to create a new message. + */ +export declare const ImageServiceListResponseSchema: GenMessage; +/** + * ImageServiceLatestResponse is the response payload for a image latest request + * + * @generated from message metalstack.api.v2.ImageServiceLatestResponse + */ +export type ImageServiceLatestResponse = Message<"metalstack.api.v2.ImageServiceLatestResponse"> & { + /** + * Image which is the latest for one os + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; +/** + * Describes the message metalstack.api.v2.ImageServiceLatestResponse. + * Use `create(ImageServiceLatestResponseSchema)` to create a new message. + */ +export declare const ImageServiceLatestResponseSchema: GenMessage; +/** + * Image + * + * @generated from message metalstack.api.v2.Image + */ +export type Image = Message<"metalstack.api.v2.Image"> & { + /** + * Id of this imageLayout + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Meta for this ip + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + /** + * URL where this image is located + * + * @generated from field: string url = 3; + */ + url: string; + /** + * Name of this imageLayout + * + * @generated from field: optional string name = 4; + */ + name?: string; + /** + * Description of this imageLayout + * + * @generated from field: optional string description = 5; + */ + description?: string; + /** + * Features of this image + * + * @generated from field: repeated metalstack.api.v2.ImageFeature features = 6; + */ + features: ImageFeature[]; + /** + * Classification of this image + * + * @generated from field: metalstack.api.v2.ImageClassification classification = 7; + */ + classification: ImageClassification; + /** + * ExpiresAt usage is not possible after this date + * + * @generated from field: google.protobuf.Timestamp expires_at = 8; + */ + expiresAt?: Timestamp; +}; +/** + * Describes the message metalstack.api.v2.Image. + * Use `create(ImageSchema)` to create a new message. + */ +export declare const ImageSchema: GenMessage; +/** + * ImageUsage reports which machines/firewalls actually use this image + * + * @generated from message metalstack.api.v2.ImageUsage + */ +export type ImageUsage = Message<"metalstack.api.v2.ImageUsage"> & { + /** + * Image with usage + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; + /** + * UsedBy the following machines/firewalls + * + * @generated from field: repeated string used_by = 2; + */ + usedBy: string[]; +}; +/** + * Describes the message metalstack.api.v2.ImageUsage. + * Use `create(ImageUsageSchema)` to create a new message. + */ +export declare const ImageUsageSchema: GenMessage; +/** + * ImageQuery is used to search images + * + * @generated from message metalstack.api.v2.ImageQuery + */ +export type ImageQuery = Message<"metalstack.api.v2.ImageQuery"> & { + /** + * ID of the image to get + * + * @generated from field: optional string id = 1; + */ + id?: string; + /** + * OS of the image + * + * @generated from field: optional string os = 2; + */ + os?: string; + /** + * Version of the Image + * + * @generated from field: optional string version = 3; + */ + version?: string; + /** + * Name of the image to query + * + * @generated from field: optional string name = 4; + */ + name?: string; + /** + * Description of the image to query + * + * @generated from field: optional string description = 5; + */ + description?: string; + /** + * Url of the image to query + * + * @generated from field: optional string url = 6; + */ + url?: string; + /** + * Feature of the image to query + * + * @generated from field: optional metalstack.api.v2.ImageFeature feature = 7; + */ + feature?: ImageFeature; + /** + * Classification of the image to query + * + * @generated from field: optional metalstack.api.v2.ImageClassification classification = 8; + */ + classification?: ImageClassification; + /** + * Labels lists only images containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 9; + */ + labels?: Labels; +}; +/** + * Describes the message metalstack.api.v2.ImageQuery. + * Use `create(ImageQuerySchema)` to create a new message. + */ +export declare const ImageQuerySchema: GenMessage; +/** + * ImageFeature + * + * @generated from enum metalstack.api.v2.ImageFeature + */ +export declare enum ImageFeature { + /** + * IMAGE_FEATURE_UNSPECIFIED is not specified + * + * @generated from enum value: IMAGE_FEATURE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * IMAGE_FEATURE_MACHINE indicates this image is usable for a machine + * + * @generated from enum value: IMAGE_FEATURE_MACHINE = 1; + */ + MACHINE = 1, + /** + * IMAGE_FEATURE_FIREWALL indicates this image is usable for a firewall + * + * @generated from enum value: IMAGE_FEATURE_FIREWALL = 2; + */ + FIREWALL = 2 +} +/** + * Describes the enum metalstack.api.v2.ImageFeature. + */ +export declare const ImageFeatureSchema: GenEnum; +/** + * Image + * + * @generated from enum metalstack.api.v2.ImageClassification + */ +export declare enum ImageClassification { + /** + * IMAGE_CLASSIFICATION_UNSPECIFIED is not specified + * + * @generated from enum value: IMAGE_CLASSIFICATION_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * IMAGE_CLASSIFICATION_PREVIEW indicates that this image is in preview + * + * @generated from enum value: IMAGE_CLASSIFICATION_PREVIEW = 1; + */ + PREVIEW = 1, + /** + * IMAGE_CLASSIFICATION_SUPPORTED indicates that this image is supported + * + * @generated from enum value: IMAGE_CLASSIFICATION_SUPPORTED = 2; + */ + SUPPORTED = 2, + /** + * IMAGE_CLASSIFICATION_DEPRECATED indicates that this image is deprecated + * + * @generated from enum value: IMAGE_CLASSIFICATION_DEPRECATED = 3; + */ + DEPRECATED = 3 +} +/** + * Describes the enum metalstack.api.v2.ImageClassification. + */ +export declare const ImageClassificationSchema: GenEnum; +/** + * ImageService serves image related functions + * + * @generated from service metalstack.api.v2.ImageService + */ +export declare const ImageService: GenService<{ + /** + * Get a image + * + * @generated from rpc metalstack.api.v2.ImageService.Get + */ + get: { + methodKind: "unary"; + input: typeof ImageServiceGetRequestSchema; + output: typeof ImageServiceGetResponseSchema; + }; + /** + * List all images + * + * @generated from rpc metalstack.api.v2.ImageService.List + */ + list: { + methodKind: "unary"; + input: typeof ImageServiceListRequestSchema; + output: typeof ImageServiceListResponseSchema; + }; + /** + * Latest image for a specific os + * + * @generated from rpc metalstack.api.v2.ImageService.Latest + */ + latest: { + methodKind: "unary"; + input: typeof ImageServiceLatestRequestSchema; + output: typeof ImageServiceLatestResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/image_pb.js b/js/metalstack/api/v2/image_pb.js new file mode 100644 index 00000000..efa8111c --- /dev/null +++ b/js/metalstack/api/v2/image_pb.js @@ -0,0 +1,129 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/image.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +/** + * Describes the file metalstack/api/v2/image.proto. + */ +export const file_metalstack_api_v2_image = /*@__PURE__*/ fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi9pbWFnZS5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIiMAoWSW1hZ2VTZXJ2aWNlR2V0UmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQAhiAASJHChdJbWFnZVNlcnZpY2VMaXN0UmVxdWVzdBIsCgVxdWVyeRgBIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlUXVlcnkiJwoZSW1hZ2VTZXJ2aWNlTGF0ZXN0UmVxdWVzdBIKCgJvcxgBIAEoCSJCChdJbWFnZVNlcnZpY2VHZXRSZXNwb25zZRInCgVpbWFnZRgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlIkQKGEltYWdlU2VydmljZUxpc3RSZXNwb25zZRIoCgZpbWFnZXMYASADKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZSJFChpJbWFnZVNlcnZpY2VMYXRlc3RSZXNwb25zZRInCgVpbWFnZRgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlIv4CCgVJbWFnZRIWCgJpZBgBIAEoCUIKukgHcgUQAhiAARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIYCgN1cmwYAyABKAlCC7pICHIG4LOusQIBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESQgoIZmVhdHVyZXMYBiADKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUZlYXR1cmVCD7pIDJIBCRgBIgWCAQIQARJICg5jbGFzc2lmaWNhdGlvbhgHIAEoDjImLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlQ2xhc3NpZmljYXRpb25CCLpIBYIBAhABEi4KCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbiJGCgpJbWFnZVVzYWdlEicKBWltYWdlGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USDwoHdXNlZF9ieRgCIAMoCSLzAwoKSW1hZ2VRdWVyeRIbCgJpZBgBIAEoCUIKukgHcgUQAhiAAUgAiAEBEhsKAm9zGAIgASgJQgq6SAdyBRACGIABSAGIAQESIAoHdmVyc2lvbhgDIAEoCUIKukgHcgUQARiAAUgCiAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSAOIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSASIAQESHQoDdXJsGAYgASgJQgu6SAhyBuCzrrECAUgFiAEBEj8KB2ZlYXR1cmUYByABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUZlYXR1cmVCCLpIBYIBAhABSAaIAQESTQoOY2xhc3NpZmljYXRpb24YCCABKA4yJi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNsYXNzaWZpY2F0aW9uQgi6SAWCAQIQAUgHiAEBEi4KBmxhYmVscxgJIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gIiAEBQgUKA19pZEIFCgNfb3NCCgoIX3ZlcnNpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgYKBF91cmxCCgoIX2ZlYXR1cmVCEQoPX2NsYXNzaWZpY2F0aW9uQgkKB19sYWJlbHMqfwoMSW1hZ2VGZWF0dXJlEh0KGUlNQUdFX0ZFQVRVUkVfVU5TUEVDSUZJRUQQABImChVJTUFHRV9GRUFUVVJFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSKAoWSU1BR0VfRkVBVFVSRV9GSVJFV0FMTBACGgyCshkIZmlyZXdhbGwq0gEKE0ltYWdlQ2xhc3NpZmljYXRpb24SJAogSU1BR0VfQ0xBU1NJRklDQVRJT05fVU5TUEVDSUZJRUQQABItChxJTUFHRV9DTEFTU0lGSUNBVElPTl9QUkVWSUVXEAEaC4KyGQdwcmV2aWV3EjEKHklNQUdFX0NMQVNTSUZJQ0FUSU9OX1NVUFBPUlRFRBACGg2CshkJc3VwcG9ydGVkEjMKH0lNQUdFX0NMQVNTSUZJQ0FUSU9OX0RFUFJFQ0FURUQQAxoOgrIZCmRlcHJlY2F0ZWQy0gIKDEltYWdlU2VydmljZRJmCgNHZXQSKS5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZVNlcnZpY2VHZXRSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuSW1hZ2VTZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgCEmkKBExpc3QSKi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZVNlcnZpY2VMaXN0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlU2VydmljZUxpc3RSZXNwb25zZSII2PMYA+DzGAISbwoGTGF0ZXN0EiwubWV0YWxzdGFjay5hcGkudjIuSW1hZ2VTZXJ2aWNlTGF0ZXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlU2VydmljZUxhdGVzdFJlc3BvbnNlIgjY8xgD4PMYAkLAAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgpJbWFnZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.api.v2.ImageServiceGetRequest. + * Use `create(ImageServiceGetRequestSchema)` to create a new message. + */ +export const ImageServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_image, 0); +/** + * Describes the message metalstack.api.v2.ImageServiceListRequest. + * Use `create(ImageServiceListRequestSchema)` to create a new message. + */ +export const ImageServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_image, 1); +/** + * Describes the message metalstack.api.v2.ImageServiceLatestRequest. + * Use `create(ImageServiceLatestRequestSchema)` to create a new message. + */ +export const ImageServiceLatestRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_image, 2); +/** + * Describes the message metalstack.api.v2.ImageServiceGetResponse. + * Use `create(ImageServiceGetResponseSchema)` to create a new message. + */ +export const ImageServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_image, 3); +/** + * Describes the message metalstack.api.v2.ImageServiceListResponse. + * Use `create(ImageServiceListResponseSchema)` to create a new message. + */ +export const ImageServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_image, 4); +/** + * Describes the message metalstack.api.v2.ImageServiceLatestResponse. + * Use `create(ImageServiceLatestResponseSchema)` to create a new message. + */ +export const ImageServiceLatestResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_image, 5); +/** + * Describes the message metalstack.api.v2.Image. + * Use `create(ImageSchema)` to create a new message. + */ +export const ImageSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_image, 6); +/** + * Describes the message metalstack.api.v2.ImageUsage. + * Use `create(ImageUsageSchema)` to create a new message. + */ +export const ImageUsageSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_image, 7); +/** + * Describes the message metalstack.api.v2.ImageQuery. + * Use `create(ImageQuerySchema)` to create a new message. + */ +export const ImageQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_image, 8); +/** + * ImageFeature + * + * @generated from enum metalstack.api.v2.ImageFeature + */ +export var ImageFeature; +(function (ImageFeature) { + /** + * IMAGE_FEATURE_UNSPECIFIED is not specified + * + * @generated from enum value: IMAGE_FEATURE_UNSPECIFIED = 0; + */ + ImageFeature[ImageFeature["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * IMAGE_FEATURE_MACHINE indicates this image is usable for a machine + * + * @generated from enum value: IMAGE_FEATURE_MACHINE = 1; + */ + ImageFeature[ImageFeature["MACHINE"] = 1] = "MACHINE"; + /** + * IMAGE_FEATURE_FIREWALL indicates this image is usable for a firewall + * + * @generated from enum value: IMAGE_FEATURE_FIREWALL = 2; + */ + ImageFeature[ImageFeature["FIREWALL"] = 2] = "FIREWALL"; +})(ImageFeature || (ImageFeature = {})); +/** + * Describes the enum metalstack.api.v2.ImageFeature. + */ +export const ImageFeatureSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_image, 0); +/** + * Image + * + * @generated from enum metalstack.api.v2.ImageClassification + */ +export var ImageClassification; +(function (ImageClassification) { + /** + * IMAGE_CLASSIFICATION_UNSPECIFIED is not specified + * + * @generated from enum value: IMAGE_CLASSIFICATION_UNSPECIFIED = 0; + */ + ImageClassification[ImageClassification["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * IMAGE_CLASSIFICATION_PREVIEW indicates that this image is in preview + * + * @generated from enum value: IMAGE_CLASSIFICATION_PREVIEW = 1; + */ + ImageClassification[ImageClassification["PREVIEW"] = 1] = "PREVIEW"; + /** + * IMAGE_CLASSIFICATION_SUPPORTED indicates that this image is supported + * + * @generated from enum value: IMAGE_CLASSIFICATION_SUPPORTED = 2; + */ + ImageClassification[ImageClassification["SUPPORTED"] = 2] = "SUPPORTED"; + /** + * IMAGE_CLASSIFICATION_DEPRECATED indicates that this image is deprecated + * + * @generated from enum value: IMAGE_CLASSIFICATION_DEPRECATED = 3; + */ + ImageClassification[ImageClassification["DEPRECATED"] = 3] = "DEPRECATED"; +})(ImageClassification || (ImageClassification = {})); +/** + * Describes the enum metalstack.api.v2.ImageClassification. + */ +export const ImageClassificationSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_image, 1); +/** + * ImageService serves image related functions + * + * @generated from service metalstack.api.v2.ImageService + */ +export const ImageService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_image, 0); diff --git a/js/metalstack/api/v2/image_pb.ts b/js/metalstack/api/v2/image_pb.ts new file mode 100644 index 00000000..23a7f98f --- /dev/null +++ b/js/metalstack/api/v2/image_pb.ts @@ -0,0 +1,436 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/image.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Labels, Meta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/image.proto. + */ +export const file_metalstack_api_v2_image: GenFile = /*@__PURE__*/ + fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi9pbWFnZS5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIiMAoWSW1hZ2VTZXJ2aWNlR2V0UmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQAhiAASJHChdJbWFnZVNlcnZpY2VMaXN0UmVxdWVzdBIsCgVxdWVyeRgBIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlUXVlcnkiJwoZSW1hZ2VTZXJ2aWNlTGF0ZXN0UmVxdWVzdBIKCgJvcxgBIAEoCSJCChdJbWFnZVNlcnZpY2VHZXRSZXNwb25zZRInCgVpbWFnZRgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlIkQKGEltYWdlU2VydmljZUxpc3RSZXNwb25zZRIoCgZpbWFnZXMYASADKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZSJFChpJbWFnZVNlcnZpY2VMYXRlc3RSZXNwb25zZRInCgVpbWFnZRgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlIv4CCgVJbWFnZRIWCgJpZBgBIAEoCUIKukgHcgUQAhiAARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIYCgN1cmwYAyABKAlCC7pICHIG4LOusQIBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESQgoIZmVhdHVyZXMYBiADKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUZlYXR1cmVCD7pIDJIBCRgBIgWCAQIQARJICg5jbGFzc2lmaWNhdGlvbhgHIAEoDjImLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlQ2xhc3NpZmljYXRpb25CCLpIBYIBAhABEi4KCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbiJGCgpJbWFnZVVzYWdlEicKBWltYWdlGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USDwoHdXNlZF9ieRgCIAMoCSLzAwoKSW1hZ2VRdWVyeRIbCgJpZBgBIAEoCUIKukgHcgUQAhiAAUgAiAEBEhsKAm9zGAIgASgJQgq6SAdyBRACGIABSAGIAQESIAoHdmVyc2lvbhgDIAEoCUIKukgHcgUQARiAAUgCiAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSAOIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSASIAQESHQoDdXJsGAYgASgJQgu6SAhyBuCzrrECAUgFiAEBEj8KB2ZlYXR1cmUYByABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUZlYXR1cmVCCLpIBYIBAhABSAaIAQESTQoOY2xhc3NpZmljYXRpb24YCCABKA4yJi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNsYXNzaWZpY2F0aW9uQgi6SAWCAQIQAUgHiAEBEi4KBmxhYmVscxgJIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gIiAEBQgUKA19pZEIFCgNfb3NCCgoIX3ZlcnNpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgYKBF91cmxCCgoIX2ZlYXR1cmVCEQoPX2NsYXNzaWZpY2F0aW9uQgkKB19sYWJlbHMqfwoMSW1hZ2VGZWF0dXJlEh0KGUlNQUdFX0ZFQVRVUkVfVU5TUEVDSUZJRUQQABImChVJTUFHRV9GRUFUVVJFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSKAoWSU1BR0VfRkVBVFVSRV9GSVJFV0FMTBACGgyCshkIZmlyZXdhbGwq0gEKE0ltYWdlQ2xhc3NpZmljYXRpb24SJAogSU1BR0VfQ0xBU1NJRklDQVRJT05fVU5TUEVDSUZJRUQQABItChxJTUFHRV9DTEFTU0lGSUNBVElPTl9QUkVWSUVXEAEaC4KyGQdwcmV2aWV3EjEKHklNQUdFX0NMQVNTSUZJQ0FUSU9OX1NVUFBPUlRFRBACGg2CshkJc3VwcG9ydGVkEjMKH0lNQUdFX0NMQVNTSUZJQ0FUSU9OX0RFUFJFQ0FURUQQAxoOgrIZCmRlcHJlY2F0ZWQy0gIKDEltYWdlU2VydmljZRJmCgNHZXQSKS5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZVNlcnZpY2VHZXRSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuSW1hZ2VTZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgCEmkKBExpc3QSKi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZVNlcnZpY2VMaXN0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlU2VydmljZUxpc3RSZXNwb25zZSII2PMYA+DzGAISbwoGTGF0ZXN0EiwubWV0YWxzdGFjay5hcGkudjIuSW1hZ2VTZXJ2aWNlTGF0ZXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlU2VydmljZUxhdGVzdFJlc3BvbnNlIgjY8xgD4PMYAkLAAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgpJbWFnZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + +/** + * ImageServiceGetRequest is the request payload for a image get request + * + * @generated from message metalstack.api.v2.ImageServiceGetRequest + */ +export type ImageServiceGetRequest = Message<"metalstack.api.v2.ImageServiceGetRequest"> & { + /** + * ID of the image to get + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.api.v2.ImageServiceGetRequest. + * Use `create(ImageServiceGetRequestSchema)` to create a new message. + */ +export const ImageServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_image, 0); + +/** + * ImageServiceListRequest is the request payload for a image list request + * + * @generated from message metalstack.api.v2.ImageServiceListRequest + */ +export type ImageServiceListRequest = Message<"metalstack.api.v2.ImageServiceListRequest"> & { + /** + * Query for images + * + * @generated from field: metalstack.api.v2.ImageQuery query = 1; + */ + query?: ImageQuery; +}; + +/** + * Describes the message metalstack.api.v2.ImageServiceListRequest. + * Use `create(ImageServiceListRequestSchema)` to create a new message. + */ +export const ImageServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_image, 1); + +/** + * ImageServiceLatestRequest is the request payload for a image latest request + * + * @generated from message metalstack.api.v2.ImageServiceLatestRequest + */ +export type ImageServiceLatestRequest = Message<"metalstack.api.v2.ImageServiceLatestRequest"> & { + /** + * OS for which the latest image should be fetched + * should contain os and major.minor then latest patch version of this os is returned + * + * @generated from field: string os = 1; + */ + os: string; +}; + +/** + * Describes the message metalstack.api.v2.ImageServiceLatestRequest. + * Use `create(ImageServiceLatestRequestSchema)` to create a new message. + */ +export const ImageServiceLatestRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_image, 2); + +/** + * ImageServiceGetResponse is the response payload for a image get request + * + * @generated from message metalstack.api.v2.ImageServiceGetResponse + */ +export type ImageServiceGetResponse = Message<"metalstack.api.v2.ImageServiceGetResponse"> & { + /** + * Image the image + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; + +/** + * Describes the message metalstack.api.v2.ImageServiceGetResponse. + * Use `create(ImageServiceGetResponseSchema)` to create a new message. + */ +export const ImageServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_image, 3); + +/** + * ImageServiceListResponse is the response payload for a image list request + * + * @generated from message metalstack.api.v2.ImageServiceListResponse + */ +export type ImageServiceListResponse = Message<"metalstack.api.v2.ImageServiceListResponse"> & { + /** + * Images the images + * + * @generated from field: repeated metalstack.api.v2.Image images = 1; + */ + images: Image[]; +}; + +/** + * Describes the message metalstack.api.v2.ImageServiceListResponse. + * Use `create(ImageServiceListResponseSchema)` to create a new message. + */ +export const ImageServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_image, 4); + +/** + * ImageServiceLatestResponse is the response payload for a image latest request + * + * @generated from message metalstack.api.v2.ImageServiceLatestResponse + */ +export type ImageServiceLatestResponse = Message<"metalstack.api.v2.ImageServiceLatestResponse"> & { + /** + * Image which is the latest for one os + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; +}; + +/** + * Describes the message metalstack.api.v2.ImageServiceLatestResponse. + * Use `create(ImageServiceLatestResponseSchema)` to create a new message. + */ +export const ImageServiceLatestResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_image, 5); + +/** + * Image + * + * @generated from message metalstack.api.v2.Image + */ +export type Image = Message<"metalstack.api.v2.Image"> & { + /** + * Id of this imageLayout + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Meta for this ip + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + + /** + * URL where this image is located + * + * @generated from field: string url = 3; + */ + url: string; + + /** + * Name of this imageLayout + * + * @generated from field: optional string name = 4; + */ + name?: string; + + /** + * Description of this imageLayout + * + * @generated from field: optional string description = 5; + */ + description?: string; + + /** + * Features of this image + * + * @generated from field: repeated metalstack.api.v2.ImageFeature features = 6; + */ + features: ImageFeature[]; + + /** + * Classification of this image + * + * @generated from field: metalstack.api.v2.ImageClassification classification = 7; + */ + classification: ImageClassification; + + /** + * ExpiresAt usage is not possible after this date + * + * @generated from field: google.protobuf.Timestamp expires_at = 8; + */ + expiresAt?: Timestamp; +}; + +/** + * Describes the message metalstack.api.v2.Image. + * Use `create(ImageSchema)` to create a new message. + */ +export const ImageSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_image, 6); + +/** + * ImageUsage reports which machines/firewalls actually use this image + * + * @generated from message metalstack.api.v2.ImageUsage + */ +export type ImageUsage = Message<"metalstack.api.v2.ImageUsage"> & { + /** + * Image with usage + * + * @generated from field: metalstack.api.v2.Image image = 1; + */ + image?: Image; + + /** + * UsedBy the following machines/firewalls + * + * @generated from field: repeated string used_by = 2; + */ + usedBy: string[]; +}; + +/** + * Describes the message metalstack.api.v2.ImageUsage. + * Use `create(ImageUsageSchema)` to create a new message. + */ +export const ImageUsageSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_image, 7); + +/** + * ImageQuery is used to search images + * + * @generated from message metalstack.api.v2.ImageQuery + */ +export type ImageQuery = Message<"metalstack.api.v2.ImageQuery"> & { + /** + * ID of the image to get + * + * @generated from field: optional string id = 1; + */ + id?: string; + + /** + * OS of the image + * + * @generated from field: optional string os = 2; + */ + os?: string; + + /** + * Version of the Image + * + * @generated from field: optional string version = 3; + */ + version?: string; + + /** + * Name of the image to query + * + * @generated from field: optional string name = 4; + */ + name?: string; + + /** + * Description of the image to query + * + * @generated from field: optional string description = 5; + */ + description?: string; + + /** + * Url of the image to query + * + * @generated from field: optional string url = 6; + */ + url?: string; + + /** + * Feature of the image to query + * + * @generated from field: optional metalstack.api.v2.ImageFeature feature = 7; + */ + feature?: ImageFeature; + + /** + * Classification of the image to query + * + * @generated from field: optional metalstack.api.v2.ImageClassification classification = 8; + */ + classification?: ImageClassification; + + /** + * Labels lists only images containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 9; + */ + labels?: Labels; +}; + +/** + * Describes the message metalstack.api.v2.ImageQuery. + * Use `create(ImageQuerySchema)` to create a new message. + */ +export const ImageQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_image, 8); + +/** + * ImageFeature + * + * @generated from enum metalstack.api.v2.ImageFeature + */ +export enum ImageFeature { + /** + * IMAGE_FEATURE_UNSPECIFIED is not specified + * + * @generated from enum value: IMAGE_FEATURE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * IMAGE_FEATURE_MACHINE indicates this image is usable for a machine + * + * @generated from enum value: IMAGE_FEATURE_MACHINE = 1; + */ + MACHINE = 1, + + /** + * IMAGE_FEATURE_FIREWALL indicates this image is usable for a firewall + * + * @generated from enum value: IMAGE_FEATURE_FIREWALL = 2; + */ + FIREWALL = 2, +} + +/** + * Describes the enum metalstack.api.v2.ImageFeature. + */ +export const ImageFeatureSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_image, 0); + +/** + * Image + * + * @generated from enum metalstack.api.v2.ImageClassification + */ +export enum ImageClassification { + /** + * IMAGE_CLASSIFICATION_UNSPECIFIED is not specified + * + * @generated from enum value: IMAGE_CLASSIFICATION_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * IMAGE_CLASSIFICATION_PREVIEW indicates that this image is in preview + * + * @generated from enum value: IMAGE_CLASSIFICATION_PREVIEW = 1; + */ + PREVIEW = 1, + + /** + * IMAGE_CLASSIFICATION_SUPPORTED indicates that this image is supported + * + * @generated from enum value: IMAGE_CLASSIFICATION_SUPPORTED = 2; + */ + SUPPORTED = 2, + + /** + * IMAGE_CLASSIFICATION_DEPRECATED indicates that this image is deprecated + * + * @generated from enum value: IMAGE_CLASSIFICATION_DEPRECATED = 3; + */ + DEPRECATED = 3, +} + +/** + * Describes the enum metalstack.api.v2.ImageClassification. + */ +export const ImageClassificationSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_image, 1); + +/** + * ImageService serves image related functions + * + * @generated from service metalstack.api.v2.ImageService + */ +export const ImageService: GenService<{ + /** + * Get a image + * + * @generated from rpc metalstack.api.v2.ImageService.Get + */ + get: { + methodKind: "unary"; + input: typeof ImageServiceGetRequestSchema; + output: typeof ImageServiceGetResponseSchema; + }, + /** + * List all images + * + * @generated from rpc metalstack.api.v2.ImageService.List + */ + list: { + methodKind: "unary"; + input: typeof ImageServiceListRequestSchema; + output: typeof ImageServiceListResponseSchema; + }, + /** + * Latest image for a specific os + * + * @generated from rpc metalstack.api.v2.ImageService.Latest + */ + latest: { + methodKind: "unary"; + input: typeof ImageServiceLatestRequestSchema; + output: typeof ImageServiceLatestResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_image, 0); + diff --git a/js/metalstack/api/v2/ip_pb.d.ts b/js/metalstack/api/v2/ip_pb.d.ts new file mode 100644 index 00000000..847e82ab --- /dev/null +++ b/js/metalstack/api/v2/ip_pb.d.ts @@ -0,0 +1,555 @@ +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/ip.proto. + */ +export declare const file_metalstack_api_v2_ip: GenFile; +/** + * IP is a ip address which can be used as loadbalancer addresses + * + * @generated from message metalstack.api.v2.IP + */ +export type IP = Message<"metalstack.api.v2.IP"> & { + /** + * Uuid of this ip + * + * @generated from field: string uuid = 1; + */ + uuid: string; + /** + * Meta for this ip + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + /** + * Ip is either ipv4 or ipv6 address + * + * @generated from field: string ip = 3; + */ + ip: string; + /** + * Name of this ip + * + * @generated from field: string name = 4; + */ + name: string; + /** + * Description of this ip + * + * @generated from field: string description = 5; + */ + description: string; + /** + * Network is the network this ip belongs to + * + * @generated from field: string network = 6; + */ + network: string; + /** + * Project where this ip address belongs to + * + * @generated from field: string project = 7; + */ + project: string; + /** + * Type of this ip + * + * @generated from field: metalstack.api.v2.IPType type = 8; + */ + type: IPType; + /** + * Namespace if specified this ip is from a namespaced network and can therefore overlap with others + * Will be equal with project most of the time + * + * @generated from field: optional string namespace = 9; + */ + namespace?: string; +}; +/** + * Describes the message metalstack.api.v2.IP. + * Use `create(IPSchema)` to create a new message. + */ +export declare const IPSchema: GenMessage; +/** + * IPServiceGetRequest is the request payload for a ip get request + * + * @generated from message metalstack.api.v2.IPServiceGetRequest + */ +export type IPServiceGetRequest = Message<"metalstack.api.v2.IPServiceGetRequest"> & { + /** + * IP of the ip to get + * + * @generated from field: string ip = 1; + */ + ip: string; + /** + * Project of the ip + * + * @generated from field: string project = 2; + */ + project: string; + /** + * Namespace can be specified to get the ip of a namespace. + * + * @generated from field: optional string namespace = 3; + */ + namespace?: string; +}; +/** + * Describes the message metalstack.api.v2.IPServiceGetRequest. + * Use `create(IPServiceGetRequestSchema)` to create a new message. + */ +export declare const IPServiceGetRequestSchema: GenMessage; +/** + * IPServiceCreateRequest is the request payload for a ip create request + * + * @generated from message metalstack.api.v2.IPServiceCreateRequest + */ +export type IPServiceCreateRequest = Message<"metalstack.api.v2.IPServiceCreateRequest"> & { + /** + * Network from which the IP should be created + * + * @generated from field: string network = 1; + */ + network: string; + /** + * Project of the ip + * + * @generated from field: string project = 2; + */ + project: string; + /** + * Name of the ip + * + * @generated from field: optional string name = 3; + */ + name?: string; + /** + * Description of the ip + * + * @generated from field: optional string description = 4; + */ + description?: string; + /** + * IP if given try to create this ip if still available + * + * @generated from field: optional string ip = 5; + */ + ip?: string; + /** + * Machine for which this ip should get created + * + * @generated from field: optional string machine = 6; + */ + machine?: string; + /** + * Labels to put onto the ip + * + * @generated from field: optional metalstack.api.v2.Labels labels = 7; + */ + labels?: Labels; + /** + * Type of the IP, ether ephemeral (default), or static + * + * @generated from field: optional metalstack.api.v2.IPType type = 8; + */ + type?: IPType; + /** + * Addressfamily of the IP to create, defaults to ipv4 + * + * @generated from field: optional metalstack.api.v2.IPAddressFamily address_family = 9; + */ + addressFamily?: IPAddressFamily; +}; +/** + * Describes the message metalstack.api.v2.IPServiceCreateRequest. + * Use `create(IPServiceCreateRequestSchema)` to create a new message. + */ +export declare const IPServiceCreateRequestSchema: GenMessage; +/** + * IPServiceUpdateRequest is the request payload for a ip update request + * + * @generated from message metalstack.api.v2.IPServiceUpdateRequest + */ +export type IPServiceUpdateRequest = Message<"metalstack.api.v2.IPServiceUpdateRequest"> & { + /** + * Ip the ip to update + * + * @generated from field: string ip = 1; + */ + ip: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * Project id of the ip + * + * @generated from field: string project = 3; + */ + project: string; + /** + * Name of this ip + * + * @generated from field: optional string name = 4; + */ + name?: string; + /** + * Description of this ip + * + * @generated from field: optional string description = 5; + */ + description?: string; + /** + * Type of this ip + * + * @generated from field: optional metalstack.api.v2.IPType type = 6; + */ + type?: IPType; + /** + * Labels on this ip + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 7; + */ + labels?: UpdateLabels; +}; +/** + * Describes the message metalstack.api.v2.IPServiceUpdateRequest. + * Use `create(IPServiceUpdateRequestSchema)` to create a new message. + */ +export declare const IPServiceUpdateRequestSchema: GenMessage; +/** + * IPServiceListRequest is the request payload for a ip list request + * + * @generated from message metalstack.api.v2.IPServiceListRequest + */ +export type IPServiceListRequest = Message<"metalstack.api.v2.IPServiceListRequest"> & { + /** + * Project of the ips to list + * + * @generated from field: string project = 1; + */ + project: string; + /** + * Query to list one ore more ips + * + * @generated from field: metalstack.api.v2.IPQuery query = 2; + */ + query?: IPQuery; +}; +/** + * Describes the message metalstack.api.v2.IPServiceListRequest. + * Use `create(IPServiceListRequestSchema)` to create a new message. + */ +export declare const IPServiceListRequestSchema: GenMessage; +/** + * IPQuery can be used to query a IP or a list of IP + * + * @generated from message metalstack.api.v2.IPQuery + */ +export type IPQuery = Message<"metalstack.api.v2.IPQuery"> & { + /** + * Ip the ip to list + * + * @generated from field: optional string ip = 1; + */ + ip?: string; + /** + * Network from where the ips to list + * + * @generated from field: optional string network = 2; + */ + network?: string; + /** + * Project of the ips to list + * + * @generated from field: optional string project = 3; + */ + project?: string; + /** + * Name of this ip + * + * @generated from field: optional string name = 4; + */ + name?: string; + /** + * Uuid for which this ips should get filtered + * + * @generated from field: optional string uuid = 5; + */ + uuid?: string; + /** + * Machine for which this ips should get filtered + * + * @generated from field: optional string machine = 6; + */ + machine?: string; + /** + * ParentPrefixCidr for which this ips should get filtered + * + * @generated from field: optional string parent_prefix_cidr = 7; + */ + parentPrefixCidr?: string; + /** + * Labels for which this ips should get filtered + * + * @generated from field: optional metalstack.api.v2.Labels labels = 8; + */ + labels?: Labels; + /** + * Static if set to true, this will be a Static ip + * + * @generated from field: optional metalstack.api.v2.IPType type = 9; + */ + type?: IPType; + /** + * Addressfamily of the IPs to list, defaults to all addressfamilies + * + * @generated from field: optional metalstack.api.v2.IPAddressFamily address_family = 10; + */ + addressFamily?: IPAddressFamily; + /** + * Namespace can be specified to get the ip of a namespace. + * + * @generated from field: optional string namespace = 11; + */ + namespace?: string; +}; +/** + * Describes the message metalstack.api.v2.IPQuery. + * Use `create(IPQuerySchema)` to create a new message. + */ +export declare const IPQuerySchema: GenMessage; +/** + * IPServiceDeleteRequest is the request payload for a ip delete request + * + * @generated from message metalstack.api.v2.IPServiceDeleteRequest + */ +export type IPServiceDeleteRequest = Message<"metalstack.api.v2.IPServiceDeleteRequest"> & { + /** + * IP of the ip to delete + * + * @generated from field: string ip = 1; + */ + ip: string; + /** + * Project of the ip + * + * @generated from field: string project = 2; + */ + project: string; +}; +/** + * Describes the message metalstack.api.v2.IPServiceDeleteRequest. + * Use `create(IPServiceDeleteRequestSchema)` to create a new message. + */ +export declare const IPServiceDeleteRequestSchema: GenMessage; +/** + * IPServiceGetResponse is the response payload for a ip get request + * + * @generated from message metalstack.api.v2.IPServiceGetResponse + */ +export type IPServiceGetResponse = Message<"metalstack.api.v2.IPServiceGetResponse"> & { + /** + * Ip the ip + * + * @generated from field: metalstack.api.v2.IP ip = 1; + */ + ip?: IP; +}; +/** + * Describes the message metalstack.api.v2.IPServiceGetResponse. + * Use `create(IPServiceGetResponseSchema)` to create a new message. + */ +export declare const IPServiceGetResponseSchema: GenMessage; +/** + * IPServiceUpdateResponse is the response payload for a ip update request + * + * @generated from message metalstack.api.v2.IPServiceUpdateResponse + */ +export type IPServiceUpdateResponse = Message<"metalstack.api.v2.IPServiceUpdateResponse"> & { + /** + * Ip the ip + * + * @generated from field: metalstack.api.v2.IP ip = 1; + */ + ip?: IP; +}; +/** + * Describes the message metalstack.api.v2.IPServiceUpdateResponse. + * Use `create(IPServiceUpdateResponseSchema)` to create a new message. + */ +export declare const IPServiceUpdateResponseSchema: GenMessage; +/** + * IPServiceCreateResponse is the response payload for a ip create request + * + * @generated from message metalstack.api.v2.IPServiceCreateResponse + */ +export type IPServiceCreateResponse = Message<"metalstack.api.v2.IPServiceCreateResponse"> & { + /** + * Ip the ip + * + * @generated from field: metalstack.api.v2.IP ip = 1; + */ + ip?: IP; +}; +/** + * Describes the message metalstack.api.v2.IPServiceCreateResponse. + * Use `create(IPServiceCreateResponseSchema)` to create a new message. + */ +export declare const IPServiceCreateResponseSchema: GenMessage; +/** + * IPServiceListResponse is the response payload for a ip list request + * + * @generated from message metalstack.api.v2.IPServiceListResponse + */ +export type IPServiceListResponse = Message<"metalstack.api.v2.IPServiceListResponse"> & { + /** + * Ips the ips + * + * @generated from field: repeated metalstack.api.v2.IP ips = 1; + */ + ips: IP[]; +}; +/** + * Describes the message metalstack.api.v2.IPServiceListResponse. + * Use `create(IPServiceListResponseSchema)` to create a new message. + */ +export declare const IPServiceListResponseSchema: GenMessage; +/** + * IPServiceDeleteResponse is the response payload for a ip delete request + * + * @generated from message metalstack.api.v2.IPServiceDeleteResponse + */ +export type IPServiceDeleteResponse = Message<"metalstack.api.v2.IPServiceDeleteResponse"> & { + /** + * Ip the ip + * + * @generated from field: metalstack.api.v2.IP ip = 1; + */ + ip?: IP; +}; +/** + * Describes the message metalstack.api.v2.IPServiceDeleteResponse. + * Use `create(IPServiceDeleteResponseSchema)` to create a new message. + */ +export declare const IPServiceDeleteResponseSchema: GenMessage; +/** + * IPType specifies different ip address types + * + * @generated from enum metalstack.api.v2.IPType + */ +export declare enum IPType { + /** + * IP_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: IP_TYPE_UNSPECIFIED = 0; + */ + IP_TYPE_UNSPECIFIED = 0, + /** + * IP_TYPE_EPHEMERAL defines a ephemeral ip address which is freed/deleted after usage + * + * @generated from enum value: IP_TYPE_EPHEMERAL = 1; + */ + IP_TYPE_EPHEMERAL = 1, + /** + * IP_TYPE_STATIC defines a static ip address which must be freed/deleted explicitly + * + * @generated from enum value: IP_TYPE_STATIC = 2; + */ + IP_TYPE_STATIC = 2 +} +/** + * Describes the enum metalstack.api.v2.IPType. + */ +export declare const IPTypeSchema: GenEnum; +/** + * IPAddressFamily defines either IPv4 or IPv6 Addressfamily + * + * @generated from enum metalstack.api.v2.IPAddressFamily + */ +export declare enum IPAddressFamily { + /** + * IP_ADDRESS_FAMILY_UNSPECIFIED is not specified + * + * @generated from enum value: IP_ADDRESS_FAMILY_UNSPECIFIED = 0; + */ + IP_ADDRESS_FAMILY_UNSPECIFIED = 0, + /** + * IP_ADDRESS_FAMILY_V4 defines a IPv4 address + * + * @generated from enum value: IP_ADDRESS_FAMILY_V4 = 1; + */ + IP_ADDRESS_FAMILY_V4 = 1, + /** + * IP_ADDRESS_FAMILY_V6 defines a IPv6 address + * + * @generated from enum value: IP_ADDRESS_FAMILY_V6 = 2; + */ + IP_ADDRESS_FAMILY_V6 = 2 +} +/** + * Describes the enum metalstack.api.v2.IPAddressFamily. + */ +export declare const IPAddressFamilySchema: GenEnum; +/** + * IPService serves ip address related functions + * + * @generated from service metalstack.api.v2.IPService + */ +export declare const IPService: GenService<{ + /** + * Get a ip + * + * @generated from rpc metalstack.api.v2.IPService.Get + */ + get: { + methodKind: "unary"; + input: typeof IPServiceGetRequestSchema; + output: typeof IPServiceGetResponseSchema; + }; + /** + * Create a ip + * + * @generated from rpc metalstack.api.v2.IPService.Create + */ + create: { + methodKind: "unary"; + input: typeof IPServiceCreateRequestSchema; + output: typeof IPServiceCreateResponseSchema; + }; + /** + * Update a ip + * + * @generated from rpc metalstack.api.v2.IPService.Update + */ + update: { + methodKind: "unary"; + input: typeof IPServiceUpdateRequestSchema; + output: typeof IPServiceUpdateResponseSchema; + }; + /** + * List all ips + * + * @generated from rpc metalstack.api.v2.IPService.List + */ + list: { + methodKind: "unary"; + input: typeof IPServiceListRequestSchema; + output: typeof IPServiceListResponseSchema; + }; + /** + * Delete a ip + * + * @generated from rpc metalstack.api.v2.IPService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof IPServiceDeleteRequestSchema; + output: typeof IPServiceDeleteResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/ip_pb.js b/js/metalstack/api/v2/ip_pb.js new file mode 100644 index 00000000..a1742c15 --- /dev/null +++ b/js/metalstack/api/v2/ip_pb.js @@ -0,0 +1,137 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/ip.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +/** + * Describes the file metalstack/api/v2/ip.proto. + */ +export const file_metalstack_api_v2_ip = /*@__PURE__*/ fileDesc("ChptZXRhbHN0YWNrL2FwaS92Mi9pcC5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIisAIKAklQEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhMKAmlwGAMgASgJQge6SARyAnABEhkKBG5hbWUYBCABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECARIbCgduZXR3b3JrGAYgASgJQgq6SAdyBRACGIABEhkKB3Byb2plY3QYByABKAlCCLpIBXIDsAEBEjEKBHR5cGUYCCABKA4yGS5tZXRhbHN0YWNrLmFwaS52Mi5JUFR5cGVCCLpIBYIBAhABEiAKCW5hbWVzcGFjZRgJIAEoCUIIukgFcgOwAQFIAIgBAUIMCgpfbmFtZXNwYWNlInUKE0lQU2VydmljZUdldFJlcXVlc3QSEwoCaXAYASABKAlCB7pIBHICcAESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQESIAoJbmFtZXNwYWNlGAMgASgJQgi6SAVyA7ABAUgAiAEBQgwKCl9uYW1lc3BhY2Ui1wMKFklQU2VydmljZUNyZWF0ZVJlcXVlc3QSGwoHbmV0d29yaxgBIAEoCUIKukgHcgUQAhiAARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEhgKAmlwGAUgASgJQge6SARyAnABSAKIAQESHgoHbWFjaGluZRgGIAEoCUIIukgFcgOwAQFIA4gBARIuCgZsYWJlbHMYByABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBIgBARI2CgR0eXBlGAggASgOMhkubWV0YWxzdGFjay5hcGkudjIuSVBUeXBlQgi6SAWCAQIQAUgFiAEBEkkKDmFkZHJlc3NfZmFtaWx5GAkgASgOMiIubWV0YWxzdGFjay5hcGkudjIuSVBBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgGiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIFCgNfaXBCCgoIX21hY2hpbmVCCQoHX2xhYmVsc0IHCgVfdHlwZUIRCg9fYWRkcmVzc19mYW1pbHki5gIKFklQU2VydmljZVVwZGF0ZVJlcXVlc3QSEwoCaXAYASABKAlCB7pIBHICcAESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESGQoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBARI2CgR0eXBlGAYgASgOMhkubWV0YWxzdGFjay5hcGkudjIuSVBUeXBlQgi6SAWCAQIQAUgCiAEBEjQKBmxhYmVscxgHIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIHCgVfdHlwZUIJCgdfbGFiZWxzIlwKFElQU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEikKBXF1ZXJ5GAIgASgLMhoubWV0YWxzdGFjay5hcGkudjIuSVBRdWVyeSLLBAoHSVBRdWVyeRIYCgJpcBgBIAEoCUIHukgEcgJwAUgAiAEBEiAKB25ldHdvcmsYAiABKAlCCrpIB3IFEAIYgAFIAYgBARIeCgdwcm9qZWN0GAMgASgJQgi6SAVyA7ABAUgCiAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSAOIAQESGwoEdXVpZBgFIAEoCUIIukgFcgOwAQFIBIgBARIeCgdtYWNoaW5lGAYgASgJQgi6SAVyA7ABAUgFiAEBEikKEnBhcmVudF9wcmVmaXhfY2lkchgHIAEoCUIIukgFcgPoAQFIBogBARIuCgZsYWJlbHMYCCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIB4gBARI2CgR0eXBlGAkgASgOMhkubWV0YWxzdGFjay5hcGkudjIuSVBUeXBlQgi6SAWCAQIQAUgIiAEBEkkKDmFkZHJlc3NfZmFtaWx5GAogASgOMiIubWV0YWxzdGFjay5hcGkudjIuSVBBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgJiAEBEiAKCW5hbWVzcGFjZRgLIAEoCUIIukgFcgOwAQFICogBAUIFCgNfaXBCCgoIX25ldHdvcmtCCgoIX3Byb2plY3RCBwoFX25hbWVCBwoFX3V1aWRCCgoIX21hY2hpbmVCFQoTX3BhcmVudF9wcmVmaXhfY2lkckIJCgdfbGFiZWxzQgcKBV90eXBlQhEKD19hZGRyZXNzX2ZhbWlseUIMCgpfbmFtZXNwYWNlIkgKFklQU2VydmljZURlbGV0ZVJlcXVlc3QSEwoCaXAYASABKAlCB7pIBHICcAESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiOQoUSVBTZXJ2aWNlR2V0UmVzcG9uc2USIQoCaXAYASABKAsyFS5tZXRhbHN0YWNrLmFwaS52Mi5JUCI8ChdJUFNlcnZpY2VVcGRhdGVSZXNwb25zZRIhCgJpcBgBIAEoCzIVLm1ldGFsc3RhY2suYXBpLnYyLklQIjwKF0lQU2VydmljZUNyZWF0ZVJlc3BvbnNlEiEKAmlwGAEgASgLMhUubWV0YWxzdGFjay5hcGkudjIuSVAiOwoVSVBTZXJ2aWNlTGlzdFJlc3BvbnNlEiIKA2lwcxgBIAMoCzIVLm1ldGFsc3RhY2suYXBpLnYyLklQIjwKF0lQU2VydmljZURlbGV0ZVJlc3BvbnNlEiEKAmlwGAEgASgLMhUubWV0YWxzdGFjay5hcGkudjIuSVAqZwoGSVBUeXBlEhcKE0lQX1RZUEVfVU5TUEVDSUZJRUQQABIkChFJUF9UWVBFX0VQSEVNRVJBTBABGg2CshkJZXBoZW1lcmFsEh4KDklQX1RZUEVfU1RBVElDEAIaCoKyGQZzdGF0aWMqfAoPSVBBZGRyZXNzRmFtaWx5EiEKHUlQX0FERFJFU1NfRkFNSUxZX1VOU1BFQ0lGSUVEEAASIgoUSVBfQUREUkVTU19GQU1JTFlfVjQQARoIgrIZBGlwdjQSIgoUSVBfQUREUkVTU19GQU1JTFlfVjYQAhoIgrIZBGlwdjYykwQKCUlQU2VydmljZRJjCgNHZXQSJi5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VHZXRSZXF1ZXN0GicubWV0YWxzdGFjay5hcGkudjIuSVBTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEmcKBkNyZWF0ZRIpLm1ldGFsc3RhY2suYXBpLnYyLklQU2VydmljZUNyZWF0ZVJlcXVlc3QaKi5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VDcmVhdGVSZXNwb25zZSIGyvMYAgECEmcKBlVwZGF0ZRIpLm1ldGFsc3RhY2suYXBpLnYyLklQU2VydmljZVVwZGF0ZVJlcXVlc3QaKi5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VVcGRhdGVSZXNwb25zZSIGyvMYAgECEmYKBExpc3QSJy5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VMaXN0UmVxdWVzdBooLm1ldGFsc3RhY2suYXBpLnYyLklQU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAISZwoGRGVsZXRlEikubWV0YWxzdGFjay5hcGkudjIuSVBTZXJ2aWNlRGVsZXRlUmVxdWVzdBoqLm1ldGFsc3RhY2suYXBpLnYyLklQU2VydmljZURlbGV0ZVJlc3BvbnNlIgbK8xgCAQJCvQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIHSXBQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.api.v2.IP. + * Use `create(IPSchema)` to create a new message. + */ +export const IPSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 0); +/** + * Describes the message metalstack.api.v2.IPServiceGetRequest. + * Use `create(IPServiceGetRequestSchema)` to create a new message. + */ +export const IPServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 1); +/** + * Describes the message metalstack.api.v2.IPServiceCreateRequest. + * Use `create(IPServiceCreateRequestSchema)` to create a new message. + */ +export const IPServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 2); +/** + * Describes the message metalstack.api.v2.IPServiceUpdateRequest. + * Use `create(IPServiceUpdateRequestSchema)` to create a new message. + */ +export const IPServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 3); +/** + * Describes the message metalstack.api.v2.IPServiceListRequest. + * Use `create(IPServiceListRequestSchema)` to create a new message. + */ +export const IPServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 4); +/** + * Describes the message metalstack.api.v2.IPQuery. + * Use `create(IPQuerySchema)` to create a new message. + */ +export const IPQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 5); +/** + * Describes the message metalstack.api.v2.IPServiceDeleteRequest. + * Use `create(IPServiceDeleteRequestSchema)` to create a new message. + */ +export const IPServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 6); +/** + * Describes the message metalstack.api.v2.IPServiceGetResponse. + * Use `create(IPServiceGetResponseSchema)` to create a new message. + */ +export const IPServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 7); +/** + * Describes the message metalstack.api.v2.IPServiceUpdateResponse. + * Use `create(IPServiceUpdateResponseSchema)` to create a new message. + */ +export const IPServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 8); +/** + * Describes the message metalstack.api.v2.IPServiceCreateResponse. + * Use `create(IPServiceCreateResponseSchema)` to create a new message. + */ +export const IPServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 9); +/** + * Describes the message metalstack.api.v2.IPServiceListResponse. + * Use `create(IPServiceListResponseSchema)` to create a new message. + */ +export const IPServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 10); +/** + * Describes the message metalstack.api.v2.IPServiceDeleteResponse. + * Use `create(IPServiceDeleteResponseSchema)` to create a new message. + */ +export const IPServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ip, 11); +/** + * IPType specifies different ip address types + * + * @generated from enum metalstack.api.v2.IPType + */ +export var IPType; +(function (IPType) { + /** + * IP_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: IP_TYPE_UNSPECIFIED = 0; + */ + IPType[IPType["IP_TYPE_UNSPECIFIED"] = 0] = "IP_TYPE_UNSPECIFIED"; + /** + * IP_TYPE_EPHEMERAL defines a ephemeral ip address which is freed/deleted after usage + * + * @generated from enum value: IP_TYPE_EPHEMERAL = 1; + */ + IPType[IPType["IP_TYPE_EPHEMERAL"] = 1] = "IP_TYPE_EPHEMERAL"; + /** + * IP_TYPE_STATIC defines a static ip address which must be freed/deleted explicitly + * + * @generated from enum value: IP_TYPE_STATIC = 2; + */ + IPType[IPType["IP_TYPE_STATIC"] = 2] = "IP_TYPE_STATIC"; +})(IPType || (IPType = {})); +/** + * Describes the enum metalstack.api.v2.IPType. + */ +export const IPTypeSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_ip, 0); +/** + * IPAddressFamily defines either IPv4 or IPv6 Addressfamily + * + * @generated from enum metalstack.api.v2.IPAddressFamily + */ +export var IPAddressFamily; +(function (IPAddressFamily) { + /** + * IP_ADDRESS_FAMILY_UNSPECIFIED is not specified + * + * @generated from enum value: IP_ADDRESS_FAMILY_UNSPECIFIED = 0; + */ + IPAddressFamily[IPAddressFamily["IP_ADDRESS_FAMILY_UNSPECIFIED"] = 0] = "IP_ADDRESS_FAMILY_UNSPECIFIED"; + /** + * IP_ADDRESS_FAMILY_V4 defines a IPv4 address + * + * @generated from enum value: IP_ADDRESS_FAMILY_V4 = 1; + */ + IPAddressFamily[IPAddressFamily["IP_ADDRESS_FAMILY_V4"] = 1] = "IP_ADDRESS_FAMILY_V4"; + /** + * IP_ADDRESS_FAMILY_V6 defines a IPv6 address + * + * @generated from enum value: IP_ADDRESS_FAMILY_V6 = 2; + */ + IPAddressFamily[IPAddressFamily["IP_ADDRESS_FAMILY_V6"] = 2] = "IP_ADDRESS_FAMILY_V6"; +})(IPAddressFamily || (IPAddressFamily = {})); +/** + * Describes the enum metalstack.api.v2.IPAddressFamily. + */ +export const IPAddressFamilySchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_ip, 1); +/** + * IPService serves ip address related functions + * + * @generated from service metalstack.api.v2.IPService + */ +export const IPService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_ip, 0); diff --git a/js/metalstack/api/v2/ip_pb.ts b/js/metalstack/api/v2/ip_pb.ts new file mode 100644 index 00000000..317ad532 --- /dev/null +++ b/js/metalstack/api/v2/ip_pb.ts @@ -0,0 +1,650 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/ip.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/ip.proto. + */ +export const file_metalstack_api_v2_ip: GenFile = /*@__PURE__*/ + fileDesc("ChptZXRhbHN0YWNrL2FwaS92Mi9pcC5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIisAIKAklQEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhMKAmlwGAMgASgJQge6SARyAnABEhkKBG5hbWUYBCABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECARIbCgduZXR3b3JrGAYgASgJQgq6SAdyBRACGIABEhkKB3Byb2plY3QYByABKAlCCLpIBXIDsAEBEjEKBHR5cGUYCCABKA4yGS5tZXRhbHN0YWNrLmFwaS52Mi5JUFR5cGVCCLpIBYIBAhABEiAKCW5hbWVzcGFjZRgJIAEoCUIIukgFcgOwAQFIAIgBAUIMCgpfbmFtZXNwYWNlInUKE0lQU2VydmljZUdldFJlcXVlc3QSEwoCaXAYASABKAlCB7pIBHICcAESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQESIAoJbmFtZXNwYWNlGAMgASgJQgi6SAVyA7ABAUgAiAEBQgwKCl9uYW1lc3BhY2Ui1wMKFklQU2VydmljZUNyZWF0ZVJlcXVlc3QSGwoHbmV0d29yaxgBIAEoCUIKukgHcgUQAhiAARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEhgKAmlwGAUgASgJQge6SARyAnABSAKIAQESHgoHbWFjaGluZRgGIAEoCUIIukgFcgOwAQFIA4gBARIuCgZsYWJlbHMYByABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBIgBARI2CgR0eXBlGAggASgOMhkubWV0YWxzdGFjay5hcGkudjIuSVBUeXBlQgi6SAWCAQIQAUgFiAEBEkkKDmFkZHJlc3NfZmFtaWx5GAkgASgOMiIubWV0YWxzdGFjay5hcGkudjIuSVBBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgGiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIFCgNfaXBCCgoIX21hY2hpbmVCCQoHX2xhYmVsc0IHCgVfdHlwZUIRCg9fYWRkcmVzc19mYW1pbHki5gIKFklQU2VydmljZVVwZGF0ZVJlcXVlc3QSEwoCaXAYASABKAlCB7pIBHICcAESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESGQoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBARI2CgR0eXBlGAYgASgOMhkubWV0YWxzdGFjay5hcGkudjIuSVBUeXBlQgi6SAWCAQIQAUgCiAEBEjQKBmxhYmVscxgHIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIHCgVfdHlwZUIJCgdfbGFiZWxzIlwKFElQU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEikKBXF1ZXJ5GAIgASgLMhoubWV0YWxzdGFjay5hcGkudjIuSVBRdWVyeSLLBAoHSVBRdWVyeRIYCgJpcBgBIAEoCUIHukgEcgJwAUgAiAEBEiAKB25ldHdvcmsYAiABKAlCCrpIB3IFEAIYgAFIAYgBARIeCgdwcm9qZWN0GAMgASgJQgi6SAVyA7ABAUgCiAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSAOIAQESGwoEdXVpZBgFIAEoCUIIukgFcgOwAQFIBIgBARIeCgdtYWNoaW5lGAYgASgJQgi6SAVyA7ABAUgFiAEBEikKEnBhcmVudF9wcmVmaXhfY2lkchgHIAEoCUIIukgFcgPoAQFIBogBARIuCgZsYWJlbHMYCCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIB4gBARI2CgR0eXBlGAkgASgOMhkubWV0YWxzdGFjay5hcGkudjIuSVBUeXBlQgi6SAWCAQIQAUgIiAEBEkkKDmFkZHJlc3NfZmFtaWx5GAogASgOMiIubWV0YWxzdGFjay5hcGkudjIuSVBBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgJiAEBEiAKCW5hbWVzcGFjZRgLIAEoCUIIukgFcgOwAQFICogBAUIFCgNfaXBCCgoIX25ldHdvcmtCCgoIX3Byb2plY3RCBwoFX25hbWVCBwoFX3V1aWRCCgoIX21hY2hpbmVCFQoTX3BhcmVudF9wcmVmaXhfY2lkckIJCgdfbGFiZWxzQgcKBV90eXBlQhEKD19hZGRyZXNzX2ZhbWlseUIMCgpfbmFtZXNwYWNlIkgKFklQU2VydmljZURlbGV0ZVJlcXVlc3QSEwoCaXAYASABKAlCB7pIBHICcAESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiOQoUSVBTZXJ2aWNlR2V0UmVzcG9uc2USIQoCaXAYASABKAsyFS5tZXRhbHN0YWNrLmFwaS52Mi5JUCI8ChdJUFNlcnZpY2VVcGRhdGVSZXNwb25zZRIhCgJpcBgBIAEoCzIVLm1ldGFsc3RhY2suYXBpLnYyLklQIjwKF0lQU2VydmljZUNyZWF0ZVJlc3BvbnNlEiEKAmlwGAEgASgLMhUubWV0YWxzdGFjay5hcGkudjIuSVAiOwoVSVBTZXJ2aWNlTGlzdFJlc3BvbnNlEiIKA2lwcxgBIAMoCzIVLm1ldGFsc3RhY2suYXBpLnYyLklQIjwKF0lQU2VydmljZURlbGV0ZVJlc3BvbnNlEiEKAmlwGAEgASgLMhUubWV0YWxzdGFjay5hcGkudjIuSVAqZwoGSVBUeXBlEhcKE0lQX1RZUEVfVU5TUEVDSUZJRUQQABIkChFJUF9UWVBFX0VQSEVNRVJBTBABGg2CshkJZXBoZW1lcmFsEh4KDklQX1RZUEVfU1RBVElDEAIaCoKyGQZzdGF0aWMqfAoPSVBBZGRyZXNzRmFtaWx5EiEKHUlQX0FERFJFU1NfRkFNSUxZX1VOU1BFQ0lGSUVEEAASIgoUSVBfQUREUkVTU19GQU1JTFlfVjQQARoIgrIZBGlwdjQSIgoUSVBfQUREUkVTU19GQU1JTFlfVjYQAhoIgrIZBGlwdjYykwQKCUlQU2VydmljZRJjCgNHZXQSJi5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VHZXRSZXF1ZXN0GicubWV0YWxzdGFjay5hcGkudjIuSVBTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEmcKBkNyZWF0ZRIpLm1ldGFsc3RhY2suYXBpLnYyLklQU2VydmljZUNyZWF0ZVJlcXVlc3QaKi5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VDcmVhdGVSZXNwb25zZSIGyvMYAgECEmcKBlVwZGF0ZRIpLm1ldGFsc3RhY2suYXBpLnYyLklQU2VydmljZVVwZGF0ZVJlcXVlc3QaKi5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VVcGRhdGVSZXNwb25zZSIGyvMYAgECEmYKBExpc3QSJy5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VMaXN0UmVxdWVzdBooLm1ldGFsc3RhY2suYXBpLnYyLklQU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAISZwoGRGVsZXRlEikubWV0YWxzdGFjay5hcGkudjIuSVBTZXJ2aWNlRGVsZXRlUmVxdWVzdBoqLm1ldGFsc3RhY2suYXBpLnYyLklQU2VydmljZURlbGV0ZVJlc3BvbnNlIgbK8xgCAQJCvQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIHSXBQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + +/** + * IP is a ip address which can be used as loadbalancer addresses + * + * @generated from message metalstack.api.v2.IP + */ +export type IP = Message<"metalstack.api.v2.IP"> & { + /** + * Uuid of this ip + * + * @generated from field: string uuid = 1; + */ + uuid: string; + + /** + * Meta for this ip + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + + /** + * Ip is either ipv4 or ipv6 address + * + * @generated from field: string ip = 3; + */ + ip: string; + + /** + * Name of this ip + * + * @generated from field: string name = 4; + */ + name: string; + + /** + * Description of this ip + * + * @generated from field: string description = 5; + */ + description: string; + + /** + * Network is the network this ip belongs to + * + * @generated from field: string network = 6; + */ + network: string; + + /** + * Project where this ip address belongs to + * + * @generated from field: string project = 7; + */ + project: string; + + /** + * Type of this ip + * + * @generated from field: metalstack.api.v2.IPType type = 8; + */ + type: IPType; + + /** + * Namespace if specified this ip is from a namespaced network and can therefore overlap with others + * Will be equal with project most of the time + * + * @generated from field: optional string namespace = 9; + */ + namespace?: string; +}; + +/** + * Describes the message metalstack.api.v2.IP. + * Use `create(IPSchema)` to create a new message. + */ +export const IPSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 0); + +/** + * IPServiceGetRequest is the request payload for a ip get request + * + * @generated from message metalstack.api.v2.IPServiceGetRequest + */ +export type IPServiceGetRequest = Message<"metalstack.api.v2.IPServiceGetRequest"> & { + /** + * IP of the ip to get + * + * @generated from field: string ip = 1; + */ + ip: string; + + /** + * Project of the ip + * + * @generated from field: string project = 2; + */ + project: string; + + /** + * Namespace can be specified to get the ip of a namespace. + * + * @generated from field: optional string namespace = 3; + */ + namespace?: string; +}; + +/** + * Describes the message metalstack.api.v2.IPServiceGetRequest. + * Use `create(IPServiceGetRequestSchema)` to create a new message. + */ +export const IPServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 1); + +/** + * IPServiceCreateRequest is the request payload for a ip create request + * + * @generated from message metalstack.api.v2.IPServiceCreateRequest + */ +export type IPServiceCreateRequest = Message<"metalstack.api.v2.IPServiceCreateRequest"> & { + /** + * Network from which the IP should be created + * + * @generated from field: string network = 1; + */ + network: string; + + /** + * Project of the ip + * + * @generated from field: string project = 2; + */ + project: string; + + /** + * Name of the ip + * + * @generated from field: optional string name = 3; + */ + name?: string; + + /** + * Description of the ip + * + * @generated from field: optional string description = 4; + */ + description?: string; + + /** + * IP if given try to create this ip if still available + * + * @generated from field: optional string ip = 5; + */ + ip?: string; + + /** + * Machine for which this ip should get created + * + * @generated from field: optional string machine = 6; + */ + machine?: string; + + /** + * Labels to put onto the ip + * + * @generated from field: optional metalstack.api.v2.Labels labels = 7; + */ + labels?: Labels; + + /** + * Type of the IP, ether ephemeral (default), or static + * + * @generated from field: optional metalstack.api.v2.IPType type = 8; + */ + type?: IPType; + + /** + * Addressfamily of the IP to create, defaults to ipv4 + * + * @generated from field: optional metalstack.api.v2.IPAddressFamily address_family = 9; + */ + addressFamily?: IPAddressFamily; +}; + +/** + * Describes the message metalstack.api.v2.IPServiceCreateRequest. + * Use `create(IPServiceCreateRequestSchema)` to create a new message. + */ +export const IPServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 2); + +/** + * IPServiceUpdateRequest is the request payload for a ip update request + * + * @generated from message metalstack.api.v2.IPServiceUpdateRequest + */ +export type IPServiceUpdateRequest = Message<"metalstack.api.v2.IPServiceUpdateRequest"> & { + /** + * Ip the ip to update + * + * @generated from field: string ip = 1; + */ + ip: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * Project id of the ip + * + * @generated from field: string project = 3; + */ + project: string; + + /** + * Name of this ip + * + * @generated from field: optional string name = 4; + */ + name?: string; + + /** + * Description of this ip + * + * @generated from field: optional string description = 5; + */ + description?: string; + + /** + * Type of this ip + * + * @generated from field: optional metalstack.api.v2.IPType type = 6; + */ + type?: IPType; + + /** + * Labels on this ip + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 7; + */ + labels?: UpdateLabels; +}; + +/** + * Describes the message metalstack.api.v2.IPServiceUpdateRequest. + * Use `create(IPServiceUpdateRequestSchema)` to create a new message. + */ +export const IPServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 3); + +/** + * IPServiceListRequest is the request payload for a ip list request + * + * @generated from message metalstack.api.v2.IPServiceListRequest + */ +export type IPServiceListRequest = Message<"metalstack.api.v2.IPServiceListRequest"> & { + /** + * Project of the ips to list + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * Query to list one ore more ips + * + * @generated from field: metalstack.api.v2.IPQuery query = 2; + */ + query?: IPQuery; +}; + +/** + * Describes the message metalstack.api.v2.IPServiceListRequest. + * Use `create(IPServiceListRequestSchema)` to create a new message. + */ +export const IPServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 4); + +/** + * IPQuery can be used to query a IP or a list of IP + * + * @generated from message metalstack.api.v2.IPQuery + */ +export type IPQuery = Message<"metalstack.api.v2.IPQuery"> & { + /** + * Ip the ip to list + * + * @generated from field: optional string ip = 1; + */ + ip?: string; + + /** + * Network from where the ips to list + * + * @generated from field: optional string network = 2; + */ + network?: string; + + /** + * Project of the ips to list + * + * @generated from field: optional string project = 3; + */ + project?: string; + + /** + * Name of this ip + * + * @generated from field: optional string name = 4; + */ + name?: string; + + /** + * Uuid for which this ips should get filtered + * + * @generated from field: optional string uuid = 5; + */ + uuid?: string; + + /** + * Machine for which this ips should get filtered + * + * @generated from field: optional string machine = 6; + */ + machine?: string; + + /** + * ParentPrefixCidr for which this ips should get filtered + * + * @generated from field: optional string parent_prefix_cidr = 7; + */ + parentPrefixCidr?: string; + + /** + * Labels for which this ips should get filtered + * + * @generated from field: optional metalstack.api.v2.Labels labels = 8; + */ + labels?: Labels; + + /** + * Static if set to true, this will be a Static ip + * + * @generated from field: optional metalstack.api.v2.IPType type = 9; + */ + type?: IPType; + + /** + * Addressfamily of the IPs to list, defaults to all addressfamilies + * + * @generated from field: optional metalstack.api.v2.IPAddressFamily address_family = 10; + */ + addressFamily?: IPAddressFamily; + + /** + * Namespace can be specified to get the ip of a namespace. + * + * @generated from field: optional string namespace = 11; + */ + namespace?: string; +}; + +/** + * Describes the message metalstack.api.v2.IPQuery. + * Use `create(IPQuerySchema)` to create a new message. + */ +export const IPQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 5); + +/** + * IPServiceDeleteRequest is the request payload for a ip delete request + * + * @generated from message metalstack.api.v2.IPServiceDeleteRequest + */ +export type IPServiceDeleteRequest = Message<"metalstack.api.v2.IPServiceDeleteRequest"> & { + /** + * IP of the ip to delete + * + * @generated from field: string ip = 1; + */ + ip: string; + + /** + * Project of the ip + * + * @generated from field: string project = 2; + */ + project: string; +}; + +/** + * Describes the message metalstack.api.v2.IPServiceDeleteRequest. + * Use `create(IPServiceDeleteRequestSchema)` to create a new message. + */ +export const IPServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 6); + +/** + * IPServiceGetResponse is the response payload for a ip get request + * + * @generated from message metalstack.api.v2.IPServiceGetResponse + */ +export type IPServiceGetResponse = Message<"metalstack.api.v2.IPServiceGetResponse"> & { + /** + * Ip the ip + * + * @generated from field: metalstack.api.v2.IP ip = 1; + */ + ip?: IP; +}; + +/** + * Describes the message metalstack.api.v2.IPServiceGetResponse. + * Use `create(IPServiceGetResponseSchema)` to create a new message. + */ +export const IPServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 7); + +/** + * IPServiceUpdateResponse is the response payload for a ip update request + * + * @generated from message metalstack.api.v2.IPServiceUpdateResponse + */ +export type IPServiceUpdateResponse = Message<"metalstack.api.v2.IPServiceUpdateResponse"> & { + /** + * Ip the ip + * + * @generated from field: metalstack.api.v2.IP ip = 1; + */ + ip?: IP; +}; + +/** + * Describes the message metalstack.api.v2.IPServiceUpdateResponse. + * Use `create(IPServiceUpdateResponseSchema)` to create a new message. + */ +export const IPServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 8); + +/** + * IPServiceCreateResponse is the response payload for a ip create request + * + * @generated from message metalstack.api.v2.IPServiceCreateResponse + */ +export type IPServiceCreateResponse = Message<"metalstack.api.v2.IPServiceCreateResponse"> & { + /** + * Ip the ip + * + * @generated from field: metalstack.api.v2.IP ip = 1; + */ + ip?: IP; +}; + +/** + * Describes the message metalstack.api.v2.IPServiceCreateResponse. + * Use `create(IPServiceCreateResponseSchema)` to create a new message. + */ +export const IPServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 9); + +/** + * IPServiceListResponse is the response payload for a ip list request + * + * @generated from message metalstack.api.v2.IPServiceListResponse + */ +export type IPServiceListResponse = Message<"metalstack.api.v2.IPServiceListResponse"> & { + /** + * Ips the ips + * + * @generated from field: repeated metalstack.api.v2.IP ips = 1; + */ + ips: IP[]; +}; + +/** + * Describes the message metalstack.api.v2.IPServiceListResponse. + * Use `create(IPServiceListResponseSchema)` to create a new message. + */ +export const IPServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 10); + +/** + * IPServiceDeleteResponse is the response payload for a ip delete request + * + * @generated from message metalstack.api.v2.IPServiceDeleteResponse + */ +export type IPServiceDeleteResponse = Message<"metalstack.api.v2.IPServiceDeleteResponse"> & { + /** + * Ip the ip + * + * @generated from field: metalstack.api.v2.IP ip = 1; + */ + ip?: IP; +}; + +/** + * Describes the message metalstack.api.v2.IPServiceDeleteResponse. + * Use `create(IPServiceDeleteResponseSchema)` to create a new message. + */ +export const IPServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_ip, 11); + +/** + * IPType specifies different ip address types + * + * @generated from enum metalstack.api.v2.IPType + */ +export enum IPType { + /** + * IP_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: IP_TYPE_UNSPECIFIED = 0; + */ + IP_TYPE_UNSPECIFIED = 0, + + /** + * IP_TYPE_EPHEMERAL defines a ephemeral ip address which is freed/deleted after usage + * + * @generated from enum value: IP_TYPE_EPHEMERAL = 1; + */ + IP_TYPE_EPHEMERAL = 1, + + /** + * IP_TYPE_STATIC defines a static ip address which must be freed/deleted explicitly + * + * @generated from enum value: IP_TYPE_STATIC = 2; + */ + IP_TYPE_STATIC = 2, +} + +/** + * Describes the enum metalstack.api.v2.IPType. + */ +export const IPTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_ip, 0); + +/** + * IPAddressFamily defines either IPv4 or IPv6 Addressfamily + * + * @generated from enum metalstack.api.v2.IPAddressFamily + */ +export enum IPAddressFamily { + /** + * IP_ADDRESS_FAMILY_UNSPECIFIED is not specified + * + * @generated from enum value: IP_ADDRESS_FAMILY_UNSPECIFIED = 0; + */ + IP_ADDRESS_FAMILY_UNSPECIFIED = 0, + + /** + * IP_ADDRESS_FAMILY_V4 defines a IPv4 address + * + * @generated from enum value: IP_ADDRESS_FAMILY_V4 = 1; + */ + IP_ADDRESS_FAMILY_V4 = 1, + + /** + * IP_ADDRESS_FAMILY_V6 defines a IPv6 address + * + * @generated from enum value: IP_ADDRESS_FAMILY_V6 = 2; + */ + IP_ADDRESS_FAMILY_V6 = 2, +} + +/** + * Describes the enum metalstack.api.v2.IPAddressFamily. + */ +export const IPAddressFamilySchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_ip, 1); + +/** + * IPService serves ip address related functions + * + * @generated from service metalstack.api.v2.IPService + */ +export const IPService: GenService<{ + /** + * Get a ip + * + * @generated from rpc metalstack.api.v2.IPService.Get + */ + get: { + methodKind: "unary"; + input: typeof IPServiceGetRequestSchema; + output: typeof IPServiceGetResponseSchema; + }, + /** + * Create a ip + * + * @generated from rpc metalstack.api.v2.IPService.Create + */ + create: { + methodKind: "unary"; + input: typeof IPServiceCreateRequestSchema; + output: typeof IPServiceCreateResponseSchema; + }, + /** + * Update a ip + * + * @generated from rpc metalstack.api.v2.IPService.Update + */ + update: { + methodKind: "unary"; + input: typeof IPServiceUpdateRequestSchema; + output: typeof IPServiceUpdateResponseSchema; + }, + /** + * List all ips + * + * @generated from rpc metalstack.api.v2.IPService.List + */ + list: { + methodKind: "unary"; + input: typeof IPServiceListRequestSchema; + output: typeof IPServiceListResponseSchema; + }, + /** + * Delete a ip + * + * @generated from rpc metalstack.api.v2.IPService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof IPServiceDeleteRequestSchema; + output: typeof IPServiceDeleteResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_ip, 0); + diff --git a/js/metalstack/api/v2/machine_pb.d.ts b/js/metalstack/api/v2/machine_pb.d.ts new file mode 100644 index 00000000..341321ef --- /dev/null +++ b/js/metalstack/api/v2/machine_pb.d.ts @@ -0,0 +1,1825 @@ +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb"; +import type { FilesystemLayout } from "./filesystem_pb"; +import type { Image } from "./image_pb"; +import type { NATType, NetworkType } from "./network_pb"; +import type { DNSServer, NTPServer, Partition } from "./partition_pb"; +import type { Size } from "./size_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/machine.proto. + */ +export declare const file_metalstack_api_v2_machine: GenFile; +/** + * MachineServiceGetRequest is the request payload for a machine get request + * + * @generated from message metalstack.api.v2.MachineServiceGetRequest + */ +export type MachineServiceGetRequest = Message<"metalstack.api.v2.MachineServiceGetRequest"> & { + /** + * UUID of the machine to get + * + * @generated from field: string uuid = 1; + */ + uuid: string; + /** + * Project of the machine + * + * @generated from field: string project = 2; + */ + project: string; +}; +/** + * Describes the message metalstack.api.v2.MachineServiceGetRequest. + * Use `create(MachineServiceGetRequestSchema)` to create a new message. + */ +export declare const MachineServiceGetRequestSchema: GenMessage; +/** + * MachineServiceGetResponse is the request payload for a machine get response + * + * @generated from message metalstack.api.v2.MachineServiceGetResponse + */ +export type MachineServiceGetResponse = Message<"metalstack.api.v2.MachineServiceGetResponse"> & { + /** + * Machine is the machine requested + * + * @generated from field: metalstack.api.v2.Machine machine = 1; + */ + machine?: Machine; +}; +/** + * Describes the message metalstack.api.v2.MachineServiceGetResponse. + * Use `create(MachineServiceGetResponseSchema)` to create a new message. + */ +export declare const MachineServiceGetResponseSchema: GenMessage; +/** + * MachineServiceCreateRequest is the request payload for a machine create request + * + * @generated from message metalstack.api.v2.MachineServiceCreateRequest + */ +export type MachineServiceCreateRequest = Message<"metalstack.api.v2.MachineServiceCreateRequest"> & { + /** + * Project of the machine + * + * @generated from field: string project = 1; + */ + project: string; + /** + * UUID if this field is set, this specific machine will be allocated if it is not in available state and not currently allocated. + * this field overrules size and partition + * + * @generated from field: optional string uuid = 2; + */ + uuid?: string; + /** + * Name of this machine + * + * @generated from field: string name = 3; + */ + name: string; + /** + * Description for this machine + * + * @generated from field: optional string description = 4; + */ + description?: string; + /** + * Hostname the hostname for the allocated machine (defaults to metal) + * + * @generated from field: optional string hostname = 5; + */ + hostname?: string; + /** + * Partition the partition id to assign this machine to + * + * @generated from field: string partition = 6; + */ + partition: string; + /** + * Size of the machine to create + * + * @generated from field: string size = 7; + */ + size: string; + /** + * Image which should be installed on this machine + * + * @generated from field: string image = 8; + */ + image: string; + /** + * FilesystemLayout which should be applied for the operating system installation + * Is defaulted by a lookup at the available fsls for this size and image. + * Can be specified to test new fsls during development of fsls + * + * @generated from field: optional string filesystem_layout = 9; + */ + filesystemLayout?: string; + /** + * SSHPublicKeys defines the ssh public key to be installed on the machine to access it via ssh + * + * @generated from field: repeated string ssh_public_keys = 10; + */ + sshPublicKeys: string[]; + /** + * Userdata contains instructions required to bootstrap the machine + * AWS limits the max userdata size to 16k, lets allow twice as much + * + * @generated from field: optional string userdata = 11; + */ + userdata?: string; + /** + * Labels to be attached to this machine allocation + * + * @generated from field: metalstack.api.v2.Labels labels = 12; + */ + labels?: Labels; + /** + * Networks the networks that this machine will be placed in. + * + * @generated from field: repeated metalstack.api.v2.MachineAllocationNetwork networks = 13; + */ + networks: MachineAllocationNetwork[]; + /** + * IPs to to attach to this machine additionally + * + * @generated from field: repeated string ips = 14; + */ + ips: string[]; + /** + * PlacementTags by default machines are spread across the racks inside a partition for every project. + * if placement tags are provided, the machine candidate has an additional anti-affinity to other machines having the same tags + * + * @generated from field: repeated string placement_tags = 15; + */ + placementTags: string[]; + /** + * DNSServer the dns servers used for the machine + * + * @generated from field: repeated metalstack.api.v2.DNSServer dns_server = 16; + */ + dnsServer: DNSServer[]; + /** + * NTPServer the ntp servers used for the machine + * + * @generated from field: repeated metalstack.api.v2.NTPServer ntp_server = 17; + */ + ntpServer: NTPServer[]; + /** + * AllocationType of this machine + * + * @generated from field: metalstack.api.v2.MachineAllocationType allocation_type = 18; + */ + allocationType: MachineAllocationType; + /** + * FirewallSpec provides firewall specific parameters if allocationType is firewall + * + * @generated from field: metalstack.api.v2.FirewallSpec firewall_spec = 19; + */ + firewallSpec?: FirewallSpec; +}; +/** + * Describes the message metalstack.api.v2.MachineServiceCreateRequest. + * Use `create(MachineServiceCreateRequestSchema)` to create a new message. + */ +export declare const MachineServiceCreateRequestSchema: GenMessage; +/** + * FirewallSpec contains firewall specific firewall creation parameters + * + * @generated from message metalstack.api.v2.FirewallSpec + */ +export type FirewallSpec = Message<"metalstack.api.v2.FirewallSpec"> & { + /** + * FirewallRules to be applied if this is a firewall + * + * @generated from field: metalstack.api.v2.FirewallRules firewall_rules = 19; + */ + firewallRules?: FirewallRules; +}; +/** + * Describes the message metalstack.api.v2.FirewallSpec. + * Use `create(FirewallSpecSchema)` to create a new message. + */ +export declare const FirewallSpecSchema: GenMessage; +/** + * MachineServiceCreateResponse is the request payload for a machine create response + * + * @generated from message metalstack.api.v2.MachineServiceCreateResponse + */ +export type MachineServiceCreateResponse = Message<"metalstack.api.v2.MachineServiceCreateResponse"> & { + /** + * Machine which was created + * + * @generated from field: metalstack.api.v2.Machine machine = 1; + */ + machine?: Machine; +}; +/** + * Describes the message metalstack.api.v2.MachineServiceCreateResponse. + * Use `create(MachineServiceCreateResponseSchema)` to create a new message. + */ +export declare const MachineServiceCreateResponseSchema: GenMessage; +/** + * MachineServiceUpdateRequest is the request payload for a machine update request + * + * @generated from message metalstack.api.v2.MachineServiceUpdateRequest + */ +export type MachineServiceUpdateRequest = Message<"metalstack.api.v2.MachineServiceUpdateRequest"> & { + /** + * UUID of the machine to modify + * + * @generated from field: string uuid = 1; + */ + uuid: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * Project of the machine + * + * @generated from field: string project = 3; + */ + project: string; + /** + * Description of this machine allocation + * + * @generated from field: optional string description = 4; + */ + description?: string; + /** + * Labels to update on this machine allocation + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 5; + */ + labels?: UpdateLabels; + /** + * SSHPublicKeys which should be update of this machine allocation + * + * @generated from field: repeated string ssh_public_keys = 6; + */ + sshPublicKeys: string[]; +}; +/** + * Describes the message metalstack.api.v2.MachineServiceUpdateRequest. + * Use `create(MachineServiceUpdateRequestSchema)` to create a new message. + */ +export declare const MachineServiceUpdateRequestSchema: GenMessage; +/** + * MachineServiceUpdateResponse is the request payload for a machine update response + * + * @generated from message metalstack.api.v2.MachineServiceUpdateResponse + */ +export type MachineServiceUpdateResponse = Message<"metalstack.api.v2.MachineServiceUpdateResponse"> & { + /** + * Machine which was updated + * + * @generated from field: metalstack.api.v2.Machine machine = 1; + */ + machine?: Machine; +}; +/** + * Describes the message metalstack.api.v2.MachineServiceUpdateResponse. + * Use `create(MachineServiceUpdateResponseSchema)` to create a new message. + */ +export declare const MachineServiceUpdateResponseSchema: GenMessage; +/** + * MachineServiceListRequest is the request payload for a machine list request + * + * @generated from message metalstack.api.v2.MachineServiceListRequest + */ +export type MachineServiceListRequest = Message<"metalstack.api.v2.MachineServiceListRequest"> & { + /** + * Project of the machines to list + * + * @generated from field: string project = 1; + */ + project: string; + /** + * Query to list one ore more machines + * + * @generated from field: metalstack.api.v2.MachineQuery query = 2; + */ + query?: MachineQuery; +}; +/** + * Describes the message metalstack.api.v2.MachineServiceListRequest. + * Use `create(MachineServiceListRequestSchema)` to create a new message. + */ +export declare const MachineServiceListRequestSchema: GenMessage; +/** + * MachineServiceListResponse is the request payload for a machine list response + * + * @generated from message metalstack.api.v2.MachineServiceListResponse + */ +export type MachineServiceListResponse = Message<"metalstack.api.v2.MachineServiceListResponse"> & { + /** + * Machines are the machines requested by a list request + * + * @generated from field: repeated metalstack.api.v2.Machine machines = 1; + */ + machines: Machine[]; +}; +/** + * Describes the message metalstack.api.v2.MachineServiceListResponse. + * Use `create(MachineServiceListResponseSchema)` to create a new message. + */ +export declare const MachineServiceListResponseSchema: GenMessage; +/** + * MachineServiceDeleteRequest is the request payload for a machine delete request + * + * @generated from message metalstack.api.v2.MachineServiceDeleteRequest + */ +export type MachineServiceDeleteRequest = Message<"metalstack.api.v2.MachineServiceDeleteRequest"> & { + /** + * UUID of the machine to delete + * + * @generated from field: string uuid = 1; + */ + uuid: string; + /** + * Project of the machine + * + * @generated from field: string project = 2; + */ + project: string; +}; +/** + * Describes the message metalstack.api.v2.MachineServiceDeleteRequest. + * Use `create(MachineServiceDeleteRequestSchema)` to create a new message. + */ +export declare const MachineServiceDeleteRequestSchema: GenMessage; +/** + * MachineServiceDeleteResponse is the request payload for a machine delete response + * + * @generated from message metalstack.api.v2.MachineServiceDeleteResponse + */ +export type MachineServiceDeleteResponse = Message<"metalstack.api.v2.MachineServiceDeleteResponse"> & { + /** + * Machine which was deleteds + * + * @generated from field: metalstack.api.v2.Machine machine = 1; + */ + machine?: Machine; +}; +/** + * Describes the message metalstack.api.v2.MachineServiceDeleteResponse. + * Use `create(MachineServiceDeleteResponseSchema)` to create a new message. + */ +export declare const MachineServiceDeleteResponseSchema: GenMessage; +/** + * Machine represents a physical bare metal machine. + * + * @generated from message metalstack.api.v2.Machine + */ +export type Machine = Message<"metalstack.api.v2.Machine"> & { + /** + * UUID of this machine + * + * @generated from field: string uuid = 1; + */ + uuid: string; + /** + * Meta for this machine + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + /** + * Partition where this machine resides + * + * @generated from field: metalstack.api.v2.Partition partition = 3; + */ + partition?: Partition; + /** + * Rack where this machine is located + * + * @generated from field: string rack = 4; + */ + rack: string; + /** + * Size of this machine + * + * @generated from field: metalstack.api.v2.Size size = 5; + */ + size?: Size; + /** + * Hardware specs of this machine + * + * @generated from field: metalstack.api.v2.MachineHardware hardware = 6; + */ + hardware?: MachineHardware; + /** + * Bios details for this machine + * + * @generated from field: metalstack.api.v2.MachineBios bios = 7; + */ + bios?: MachineBios; + /** + * Allocation details + * + * @generated from field: metalstack.api.v2.MachineAllocation allocation = 8; + */ + allocation?: MachineAllocation; + /** + * Status contains several status details related to this machine + * + * @generated from field: metalstack.api.v2.MachineStatus status = 9; + */ + status?: MachineStatus; + /** + * MachineRecentProvisioningEvents contains the recent provisioning events + * + * @generated from field: metalstack.api.v2.MachineRecentProvisioningEvents recent_provisioning_events = 10; + */ + recentProvisioningEvents?: MachineRecentProvisioningEvents; +}; +/** + * Describes the message metalstack.api.v2.Machine. + * Use `create(MachineSchema)` to create a new message. + */ +export declare const MachineSchema: GenMessage; +/** + * MachineStatus contains several status details related to this machine + * + * @generated from message metalstack.api.v2.MachineStatus + */ +export type MachineStatus = Message<"metalstack.api.v2.MachineStatus"> & { + /** + * Condition describes the availability + * + * @generated from field: metalstack.api.v2.MachineCondition condition = 1; + */ + condition?: MachineCondition; + /** + * LEDState indicates the state of the indicator LED on this machine + * + * @generated from field: metalstack.api.v2.MachineChassisIdentifyLEDState led_state = 2; + */ + ledState?: MachineChassisIdentifyLEDState; + /** + * Liveliness of this machine + * + * @generated from field: metalstack.api.v2.MachineLiveliness liveliness = 3; + */ + liveliness: MachineLiveliness; + /** + * MetalHammerVersion the version of metal hammer which put the machine in waiting state + * + * @generated from field: string metal_hammer_version = 4; + */ + metalHammerVersion: string; +}; +/** + * Describes the message metalstack.api.v2.MachineStatus. + * Use `create(MachineStatusSchema)` to create a new message. + */ +export declare const MachineStatusSchema: GenMessage; +/** + * MachineCondition describes the availability of this machine + * + * @generated from message metalstack.api.v2.MachineCondition + */ +export type MachineCondition = Message<"metalstack.api.v2.MachineCondition"> & { + /** + * State the state of this machine. empty means available for all + * + * @generated from field: metalstack.api.v2.MachineState state = 1; + */ + state: MachineState; + /** + * Description a description why this machine is in the given state + * + * @generated from field: string description = 2; + */ + description: string; + /** + * Issuer the user that changed the state + * + * @generated from field: string issuer = 3; + */ + issuer: string; +}; +/** + * Describes the message metalstack.api.v2.MachineCondition. + * Use `create(MachineConditionSchema)` to create a new message. + */ +export declare const MachineConditionSchema: GenMessage; +/** + * MachineAllocation contains properties if this machine is allocated + * + * @generated from message metalstack.api.v2.MachineAllocation + */ +export type MachineAllocation = Message<"metalstack.api.v2.MachineAllocation"> & { + /** + * UUID of this machine allocation + * + * @generated from field: string uuid = 1; + */ + uuid: string; + /** + * Meta for this machine allocation + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + /** + * Name of this allocation + * + * @generated from field: string name = 3; + */ + name: string; + /** + * Description of this allocation + * + * @generated from field: string description = 4; + */ + description: string; + /** + * Created By indicates who created this machine allocation + * + * @generated from field: string created_by = 5; + */ + createdBy: string; + /** + * Project of the allocation + * + * @generated from field: string project = 6; + */ + project: string; + /** + * Image to be used to install on this machine + * + * @generated from field: metalstack.api.v2.Image image = 7; + */ + image?: Image; + /** + * FilesystemLayout to create on the disks + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 8; + */ + filesystemLayout?: FilesystemLayout; + /** + * Networks this machine should be attached to + * + * @generated from field: repeated metalstack.api.v2.MachineNetwork networks = 9; + */ + networks: MachineNetwork[]; + /** + * Hostname of the allocated machine + * + * @generated from field: string hostname = 10; + */ + hostname: string; + /** + * SSHPublicKeys which should be installed on this machine + * + * @generated from field: repeated string ssh_public_keys = 11; + */ + sshPublicKeys: string[]; + /** + * Userdata contains instructions required to bootstrap the machine. + * AWS limits the max userdata size to 16k, lets allow twice as much + * + * @generated from field: string userdata = 12; + */ + userdata: string; + /** + * AllocationType of this machine + * + * @generated from field: metalstack.api.v2.MachineAllocationType allocation_type = 13; + */ + allocationType: MachineAllocationType; + /** + * FirewallRules to be applied if this is a firewall + * + * @generated from field: metalstack.api.v2.FirewallRules firewall_rules = 14; + */ + firewallRules?: FirewallRules; + /** + * DNSServers for this machine + * + * @generated from field: repeated metalstack.api.v2.DNSServer dns_server = 15; + */ + dnsServer: DNSServer[]; + /** + * NTPServers for this machine + * + * @generated from field: repeated metalstack.api.v2.NTPServer ntp_server = 16; + */ + ntpServer: NTPServer[]; + /** + * VPN connection configuration + * + * @generated from field: metalstack.api.v2.MachineVPN vpn = 17; + */ + vpn?: MachineVPN; +}; +/** + * Describes the message metalstack.api.v2.MachineAllocation. + * Use `create(MachineAllocationSchema)` to create a new message. + */ +export declare const MachineAllocationSchema: GenMessage; +/** + * MachineAllocationNetwork defines which network should be attached to a machine and if ips should be autoacquired + * + * @generated from message metalstack.api.v2.MachineAllocationNetwork + */ +export type MachineAllocationNetwork = Message<"metalstack.api.v2.MachineAllocationNetwork"> & { + /** + * Network the id of the network that this machine will be placed in + * + * @generated from field: string network = 1; + */ + network: string; + /** + * NoAutoAcquireIp will prevent automatic ip acquirement per network if set to true. + * By default one ip address is acquired per network for the machine + * + * @generated from field: optional bool no_auto_acquire_ip = 2; + */ + noAutoAcquireIp?: boolean; +}; +/** + * Describes the message metalstack.api.v2.MachineAllocationNetwork. + * Use `create(MachineAllocationNetworkSchema)` to create a new message. + */ +export declare const MachineAllocationNetworkSchema: GenMessage; +/** + * FirewallRules can be defined during firewall allocation + * + * @generated from message metalstack.api.v2.FirewallRules + */ +export type FirewallRules = Message<"metalstack.api.v2.FirewallRules"> & { + /** + * Egress list of egress rules to be deployed during firewall allocation + * + * @generated from field: repeated metalstack.api.v2.FirewallEgressRule egress = 1; + */ + egress: FirewallEgressRule[]; + /** + * Ingress list of ingress rules to be deployed during firewall allocation + * + * @generated from field: repeated metalstack.api.v2.FirewallIngressRule ingress = 2; + */ + ingress: FirewallIngressRule[]; +}; +/** + * Describes the message metalstack.api.v2.FirewallRules. + * Use `create(FirewallRulesSchema)` to create a new message. + */ +export declare const FirewallRulesSchema: GenMessage; +/** + * FirewallEgressRule defines rules for outgoing traffic + * + * @generated from message metalstack.api.v2.FirewallEgressRule + */ +export type FirewallEgressRule = Message<"metalstack.api.v2.FirewallEgressRule"> & { + /** + * Protocol the protocol for the rule, defaults to tcp + * + * @generated from field: metalstack.api.v2.IPProtocol protocol = 1; + */ + protocol: IPProtocol; + /** + * Ports the ports affected by this rule + * + * @generated from field: repeated uint32 ports = 2; + */ + ports: number[]; + /** + * To the destination cidrs affected by this rule + * + * @generated from field: repeated string to = 3; + */ + to: string[]; + /** + * Comment for this rule + * + * @generated from field: string comment = 4; + */ + comment: string; +}; +/** + * Describes the message metalstack.api.v2.FirewallEgressRule. + * Use `create(FirewallEgressRuleSchema)` to create a new message. + */ +export declare const FirewallEgressRuleSchema: GenMessage; +/** + * FirewallIngressRule defines rules for incoming traffic + * + * @generated from message metalstack.api.v2.FirewallIngressRule + */ +export type FirewallIngressRule = Message<"metalstack.api.v2.FirewallIngressRule"> & { + /** + * Protocol the protocol for the rule, defaults to tcp + * + * @generated from field: metalstack.api.v2.IPProtocol protocol = 1; + */ + protocol: IPProtocol; + /** + * Ports the ports affected by this rule + * + * @generated from field: repeated uint32 ports = 2; + */ + ports: number[]; + /** + * To the destination cidrs affected by this rule + * + * @generated from field: repeated string to = 3; + */ + to: string[]; + /** + * From the source cidrs affected by this rule + * + * @generated from field: repeated string from = 4; + */ + from: string[]; + /** + * Comment for this rule + * + * @generated from field: string comment = 5; + */ + comment: string; +}; +/** + * Describes the message metalstack.api.v2.FirewallIngressRule. + * Use `create(FirewallIngressRuleSchema)` to create a new message. + */ +export declare const FirewallIngressRuleSchema: GenMessage; +/** + * MachineNetwork contains details which network should be created on a allocated machine + * + * @generated from message metalstack.api.v2.MachineNetwork + */ +export type MachineNetwork = Message<"metalstack.api.v2.MachineNetwork"> & { + /** + * Network the networkID of the allocated machine in this vrf + * + * @generated from field: string network = 1; + */ + network: string; + /** + * Prefixes the prefixes of this network + * + * @generated from field: repeated string prefixes = 2; + */ + prefixes: string[]; + /** + * DestinationPrefixes prefixes that are reachable within this network + * + * @generated from field: repeated string destination_prefixes = 3; + */ + destinationPrefixes: string[]; + /** + * IPs the ip addresses of the allocated machine in this vrf + * + * @generated from field: repeated string ips = 4; + */ + ips: string[]; + /** + * NetworkType the type of network of this vrf + * + * @generated from field: metalstack.api.v2.NetworkType network_type = 5; + */ + networkType: NetworkType; + /** + * NatType what type of nat if any should be used + * + * @generated from field: metalstack.api.v2.NATType nat_type = 6; + */ + natType: NATType; + /** + * VRF the vrf id + * + * @generated from field: uint64 vrf = 7; + */ + vrf: bigint; + /** + * ASN the autonomous system number for this network + * + * @generated from field: uint32 asn = 8; + */ + asn: number; +}; +/** + * Describes the message metalstack.api.v2.MachineNetwork. + * Use `create(MachineNetworkSchema)` to create a new message. + */ +export declare const MachineNetworkSchema: GenMessage; +/** + * MachineHardware contains hardware details + * + * @generated from message metalstack.api.v2.MachineHardware + */ +export type MachineHardware = Message<"metalstack.api.v2.MachineHardware"> & { + /** + * Memory the total memory of the machine in bytes + * + * @generated from field: uint64 memory = 1; + */ + memory: bigint; + /** + * Disks the list of block devices of this machine + * + * @generated from field: repeated metalstack.api.v2.MachineBlockDevice disks = 3; + */ + disks: MachineBlockDevice[]; + /** + * CPUs the cpu details + * + * @generated from field: repeated metalstack.api.v2.MetalCPU cpus = 4; + */ + cpus: MetalCPU[]; + /** + * GPUs the gpu details + * + * @generated from field: repeated metalstack.api.v2.MetalGPU gpus = 5; + */ + gpus: MetalGPU[]; + /** + * Nics the list of network interfaces of this machine + * + * @generated from field: repeated metalstack.api.v2.MachineNic nics = 6; + */ + nics: MachineNic[]; +}; +/** + * Describes the message metalstack.api.v2.MachineHardware. + * Use `create(MachineHardwareSchema)` to create a new message. + */ +export declare const MachineHardwareSchema: GenMessage; +/** + * MetalCPU contains details of a cpu in this machine + * + * @generated from message metalstack.api.v2.MetalCPU + */ +export type MetalCPU = Message<"metalstack.api.v2.MetalCPU"> & { + /** + * Vendor of this cpu + * + * @generated from field: string vendor = 1; + */ + vendor: string; + /** + * Model of this cpu + * + * @generated from field: string model = 2; + */ + model: string; + /** + * Cores of this cpu + * + * @generated from field: uint32 cores = 3; + */ + cores: number; + /** + * Threads of this cpu + * + * @generated from field: uint32 threads = 4; + */ + threads: number; +}; +/** + * Describes the message metalstack.api.v2.MetalCPU. + * Use `create(MetalCPUSchema)` to create a new message. + */ +export declare const MetalCPUSchema: GenMessage; +/** + * MetalGPU contains details of a gpu in this machine + * + * @generated from message metalstack.api.v2.MetalGPU + */ +export type MetalGPU = Message<"metalstack.api.v2.MetalGPU"> & { + /** + * Vendor of this gpu + * + * @generated from field: string vendor = 1; + */ + vendor: string; + /** + * Model of this gpu + * + * @generated from field: string model = 2; + */ + model: string; +}; +/** + * Describes the message metalstack.api.v2.MetalGPU. + * Use `create(MetalGPUSchema)` to create a new message. + */ +export declare const MetalGPUSchema: GenMessage; +/** + * MachineNic contains details of a network interface of this machine + * + * @generated from message metalstack.api.v2.MachineNic + */ +export type MachineNic = Message<"metalstack.api.v2.MachineNic"> & { + /** + * Mac the macaddress of this interface + * + * @generated from field: string mac = 1; + */ + mac: string; + /** + * Name of this interface + * + * @generated from field: string name = 2; + */ + name: string; + /** + * Identifier the unique identifier of this network interface + * + * @generated from field: string identifier = 3; + */ + identifier: string; + /** + * Vendor of this network card + * + * @generated from field: string vendor = 4; + */ + vendor: string; + /** + * Model of this network card + * + * @generated from field: string model = 5; + */ + model: string; + /** + * Speed in bits/second of this network card + * + * @generated from field: uint64 speed = 6; + */ + speed: bigint; + /** + * Neighbors the neighbors visible to this network interface + * + * @generated from field: repeated metalstack.api.v2.MachineNic neighbors = 7; + */ + neighbors: MachineNic[]; +}; +/** + * Describes the message metalstack.api.v2.MachineNic. + * Use `create(MachineNicSchema)` to create a new message. + */ +export declare const MachineNicSchema: GenMessage; +/** + * MachineBlockDevice contains details of a block device of this machine + * + * @generated from message metalstack.api.v2.MachineBlockDevice + */ +export type MachineBlockDevice = Message<"metalstack.api.v2.MachineBlockDevice"> & { + /** + * Name of this block device + * + * @generated from field: string name = 1; + */ + name: string; + /** + * Size of this block device in bytes + * + * @generated from field: uint64 size = 2; + */ + size: bigint; +}; +/** + * Describes the message metalstack.api.v2.MachineBlockDevice. + * Use `create(MachineBlockDeviceSchema)` to create a new message. + */ +export declare const MachineBlockDeviceSchema: GenMessage; +/** + * MachineChassisIdentifyLEDState describes the identifier led state + * + * @generated from message metalstack.api.v2.MachineChassisIdentifyLEDState + */ +export type MachineChassisIdentifyLEDState = Message<"metalstack.api.v2.MachineChassisIdentifyLEDState"> & { + /** + * Value the state of this chassis identify LED. empty means LED-OFF + * + * @generated from field: string value = 1; + */ + value: string; + /** + * Description a description why this chassis identify LED is in the given state + * + * @generated from field: string description = 2; + */ + description: string; +}; +/** + * Describes the message metalstack.api.v2.MachineChassisIdentifyLEDState. + * Use `create(MachineChassisIdentifyLEDStateSchema)` to create a new message. + */ +export declare const MachineChassisIdentifyLEDStateSchema: GenMessage; +/** + * MachineBios contains BIOS details of this machine + * + * @generated from message metalstack.api.v2.MachineBios + */ +export type MachineBios = Message<"metalstack.api.v2.MachineBios"> & { + /** + * Version the bios version + * + * @generated from field: string version = 1; + */ + version: string; + /** + * Vendor the bios vendor + * + * @generated from field: string vendor = 2; + */ + vendor: string; + /** + * Date the bios date as string because every vendor has different ideas howto describe the date + * + * @generated from field: string date = 3; + */ + date: string; +}; +/** + * Describes the message metalstack.api.v2.MachineBios. + * Use `create(MachineBiosSchema)` to create a new message. + */ +export declare const MachineBiosSchema: GenMessage; +/** + * MachineRecentProvisioningEvents the recent provisioning events for this machine + * + * @generated from message metalstack.api.v2.MachineRecentProvisioningEvents + */ +export type MachineRecentProvisioningEvents = Message<"metalstack.api.v2.MachineRecentProvisioningEvents"> & { + /** + * Events the log of recent machine provisioning events + * + * @generated from field: repeated metalstack.api.v2.MachineProvisioningEvent events = 1; + */ + events: MachineProvisioningEvent[]; + /** + * LastEventTime the time where the last event was received + * + * @generated from field: google.protobuf.Timestamp last_event_time = 2; + */ + lastEventTime?: Timestamp; + /** + * LastErrorEvent the last erroneous event received + * + * @generated from field: metalstack.api.v2.MachineProvisioningEvent last_error_event = 3; + */ + lastErrorEvent?: MachineProvisioningEvent; + /** + * State can be either CrashLoop, FailedReclaim or something else + * + * @generated from field: metalstack.api.v2.MachineProvisioningEventState state = 4; + */ + state: MachineProvisioningEventState; +}; +/** + * Describes the message metalstack.api.v2.MachineRecentProvisioningEvents. + * Use `create(MachineRecentProvisioningEventsSchema)` to create a new message. + */ +export declare const MachineRecentProvisioningEventsSchema: GenMessage; +/** + * MachineProvisioningEvent is a event which has occurred during provisioning + * + * @generated from message metalstack.api.v2.MachineProvisioningEvent + */ +export type MachineProvisioningEvent = Message<"metalstack.api.v2.MachineProvisioningEvent"> & { + /** + * Time the time that this event was received + * + * @generated from field: google.protobuf.Timestamp time = 1; + */ + time?: Timestamp; + /** + * Event the event emitted by the machine + * + * @generated from field: metalstack.api.v2.MachineProvisioningEventType event = 2; + */ + event: MachineProvisioningEventType; + /** + * Message an additional message to add to the event + * + * @generated from field: string message = 3; + */ + message: string; +}; +/** + * Describes the message metalstack.api.v2.MachineProvisioningEvent. + * Use `create(MachineProvisioningEventSchema)` to create a new message. + */ +export declare const MachineProvisioningEventSchema: GenMessage; +/** + * MachineVPN contains configuration data for the VPN connection + * + * @generated from message metalstack.api.v2.MachineVPN + */ +export type MachineVPN = Message<"metalstack.api.v2.MachineVPN"> & { + /** + * Address of VPN control plane + * + * @generated from field: string control_plane_address = 1; + */ + controlPlaneAddress: string; + /** + * Auth key used to connect to VPN + * + * @generated from field: string auth_key = 2; + */ + authKey: string; + /** + * Connected indicate if this machine is connected to the VPN + * + * TODO add machine ips + * + * @generated from field: bool connected = 3; + */ + connected: boolean; +}; +/** + * Describes the message metalstack.api.v2.MachineVPN. + * Use `create(MachineVPNSchema)` to create a new message. + */ +export declare const MachineVPNSchema: GenMessage; +/** + * MachineQuery contains fields which can be specified to list specific machines. + * + * @generated from message metalstack.api.v2.MachineQuery + */ +export type MachineQuery = Message<"metalstack.api.v2.MachineQuery"> & { + /** + * UUID of the machine to get + * + * @generated from field: optional string uuid = 1; + */ + uuid?: string; + /** + * Name of the machine to get + * + * @generated from field: optional string name = 2; + */ + name?: string; + /** + * Partition of the machine to get + * + * @generated from field: optional string partition = 3; + */ + partition?: string; + /** + * Size of the machine to get + * + * @generated from field: optional string size = 4; + */ + size?: string; + /** + * Rack of the machine to get + * + * @generated from field: optional string rack = 5; + */ + rack?: string; + /** + * Labels for which this machine should get filtered + * + * @generated from field: optional metalstack.api.v2.Labels labels = 6; + */ + labels?: Labels; + /** + * Allocation specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineAllocationQuery allocation = 7; + */ + allocation?: MachineAllocationQuery; + /** + * Network specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineNetworkQuery network = 8; + */ + network?: MachineNetworkQuery; + /** + * Nic specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineNicQuery nic = 9; + */ + nic?: MachineNicQuery; + /** + * Disk specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineDiskQuery disk = 10; + */ + disk?: MachineDiskQuery; + /** + * IPMI specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineIPMIQuery ipmi = 11; + */ + ipmi?: MachineIPMIQuery; + /** + * FRU specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineFRUQuery fru = 12; + */ + fru?: MachineFRUQuery; + /** + * Hardware specific machine query + * + * @generated from field: optional metalstack.api.v2.MachineHardwareQuery hardware = 13; + */ + hardware?: MachineHardwareQuery; + /** + * State this machine has + * + * @generated from field: optional metalstack.api.v2.MachineState state = 14; + */ + state?: MachineState; +}; +/** + * Describes the message metalstack.api.v2.MachineQuery. + * Use `create(MachineQuerySchema)` to create a new message. + */ +export declare const MachineQuerySchema: GenMessage; +/** + * MachineAllocationQuery allocation specific query parameters + * + * @generated from message metalstack.api.v2.MachineAllocationQuery + */ +export type MachineAllocationQuery = Message<"metalstack.api.v2.MachineAllocationQuery"> & { + /** + * UUID of the allocation of the machine to get + * + * @generated from field: optional string uuid = 1; + */ + uuid?: string; + /** + * Name of the machine to get + * + * @generated from field: optional string name = 2; + */ + name?: string; + /** + * Project of the machine to get + * + * @generated from field: optional string project = 3; + */ + project?: string; + /** + * Image of the machine to get + * + * @generated from field: optional string image = 4; + */ + image?: string; + /** + * FilesystemLayout of the machine to get + * + * @generated from field: optional string filesystem_layout = 5; + */ + filesystemLayout?: string; + /** + * Hostname of the machine to get + * + * @generated from field: optional string hostname = 6; + */ + hostname?: string; + /** + * AllocationType of this machine + * + * @generated from field: optional metalstack.api.v2.MachineAllocationType allocation_type = 7; + */ + allocationType?: MachineAllocationType; + /** + * Labels for which this machine allocation should get filtered + * + * @generated from field: optional metalstack.api.v2.Labels labels = 8; + */ + labels?: Labels; +}; +/** + * Describes the message metalstack.api.v2.MachineAllocationQuery. + * Use `create(MachineAllocationQuerySchema)` to create a new message. + */ +export declare const MachineAllocationQuerySchema: GenMessage; +/** + * MachineNetworkQuery network specific machine queries + * + * @generated from message metalstack.api.v2.MachineNetworkQuery + */ +export type MachineNetworkQuery = Message<"metalstack.api.v2.MachineNetworkQuery"> & { + /** + * Networks this machine is connected to + * + * @generated from field: repeated string networks = 1; + */ + networks: string[]; + /** + * Prefixes this machine is connected to + * + * @generated from field: repeated string prefixes = 2; + */ + prefixes: string[]; + /** + * DestinationPrefixes this machine is connected to + * + * @generated from field: repeated string destination_prefixes = 3; + */ + destinationPrefixes: string[]; + /** + * IPs this machine has + * + * @generated from field: repeated string ips = 4; + */ + ips: string[]; + /** + * VRFs this machine is connected to + * + * @generated from field: repeated uint64 vrfs = 5; + */ + vrfs: bigint[]; + /** + * ASNs this machine is connected to + * + * @generated from field: repeated uint32 asns = 6; + */ + asns: number[]; +}; +/** + * Describes the message metalstack.api.v2.MachineNetworkQuery. + * Use `create(MachineNetworkQuerySchema)` to create a new message. + */ +export declare const MachineNetworkQuerySchema: GenMessage; +/** + * MachineNicQuery nic specific machine queries + * + * @generated from message metalstack.api.v2.MachineNicQuery + */ +export type MachineNicQuery = Message<"metalstack.api.v2.MachineNicQuery"> & { + /** + * Macs this machine nic has + * + * @generated from field: repeated string macs = 1; + */ + macs: string[]; + /** + * Names this machine nic has + * + * @generated from field: repeated string names = 2; + */ + names: string[]; + /** + * NeighborMacs this machine nic has + * + * @generated from field: repeated string neighbor_macs = 3; + */ + neighborMacs: string[]; + /** + * NeighborNames this machine nic has + * + * @generated from field: repeated string neighbor_names = 4; + */ + neighborNames: string[]; +}; +/** + * Describes the message metalstack.api.v2.MachineNicQuery. + * Use `create(MachineNicQuerySchema)` to create a new message. + */ +export declare const MachineNicQuerySchema: GenMessage; +/** + * MachineDiskQuery disk specific machine queries + * + * @generated from message metalstack.api.v2.MachineDiskQuery + */ +export type MachineDiskQuery = Message<"metalstack.api.v2.MachineDiskQuery"> & { + /** + * Names of disks in this machine + * + * @generated from field: repeated string names = 1; + */ + names: string[]; + /** + * Sizes of disks in this machine + * + * @generated from field: repeated uint64 sizes = 2; + */ + sizes: bigint[]; +}; +/** + * Describes the message metalstack.api.v2.MachineDiskQuery. + * Use `create(MachineDiskQuerySchema)` to create a new message. + */ +export declare const MachineDiskQuerySchema: GenMessage; +/** + * MachineIPMIQuery machine ipmi specific machine queries + * + * @generated from message metalstack.api.v2.MachineIPMIQuery + */ +export type MachineIPMIQuery = Message<"metalstack.api.v2.MachineIPMIQuery"> & { + /** + * Address of the ipmi system of this machine + * + * @generated from field: optional string address = 1; + */ + address?: string; + /** + * Mac of the ipmi system of this machine + * + * @generated from field: optional string mac = 2; + */ + mac?: string; + /** + * User of the ipmi system of this machine + * + * @generated from field: optional string user = 3; + */ + user?: string; + /** + * Interface of the ipmi system of this machine + * + * @generated from field: optional string interface = 4; + */ + interface?: string; +}; +/** + * Describes the message metalstack.api.v2.MachineIPMIQuery. + * Use `create(MachineIPMIQuerySchema)` to create a new message. + */ +export declare const MachineIPMIQuerySchema: GenMessage; +/** + * MachineFRUQuery machine fru specific machine queries + * + * @generated from message metalstack.api.v2.MachineFRUQuery + */ +export type MachineFRUQuery = Message<"metalstack.api.v2.MachineFRUQuery"> & { + /** + * ChassisPartNumber of this machine + * + * @generated from field: optional string chassis_part_number = 1; + */ + chassisPartNumber?: string; + /** + * ChassisPartSerial of this machine + * + * @generated from field: optional string chassis_part_serial = 2; + */ + chassisPartSerial?: string; + /** + * BoardMFG of this machine + * + * @generated from field: optional string board_mfg = 3; + */ + boardMfg?: string; + /** + * BoardSerial of this machine + * + * @generated from field: optional string board_serial = 4; + */ + boardSerial?: string; + /** + * BoardPartNumber of this machine + * + * @generated from field: optional string board_part_number = 5; + */ + boardPartNumber?: string; + /** + * ProductManufacturer of this machine + * + * @generated from field: optional string product_manufacturer = 6; + */ + productManufacturer?: string; + /** + * ProductPartNumber of this machine + * + * @generated from field: optional string product_part_number = 7; + */ + productPartNumber?: string; + /** + * ProductSerial of this machine + * + * @generated from field: optional string product_serial = 8; + */ + productSerial?: string; +}; +/** + * Describes the message metalstack.api.v2.MachineFRUQuery. + * Use `create(MachineFRUQuerySchema)` to create a new message. + */ +export declare const MachineFRUQuerySchema: GenMessage; +/** + * MachineHardwareQuery machine hardware specific machine queries + * + * @generated from message metalstack.api.v2.MachineHardwareQuery + */ +export type MachineHardwareQuery = Message<"metalstack.api.v2.MachineHardwareQuery"> & { + /** + * Memory the total memory of the machine in bytes + * + * @generated from field: optional uint64 memory = 1; + */ + memory?: bigint; + /** + * CPUCores the number of cpu cores + * + * @generated from field: optional uint32 cpu_cores = 2; + */ + cpuCores?: number; +}; +/** + * Describes the message metalstack.api.v2.MachineHardwareQuery. + * Use `create(MachineHardwareQuerySchema)` to create a new message. + */ +export declare const MachineHardwareQuerySchema: GenMessage; +/** + * IPProtocol defines tcp|udp + * + * @generated from enum metalstack.api.v2.IPProtocol + */ +export declare enum IPProtocol { + /** + * IP_PROTOCOL_UNSPECIFIED is not specified + * + * @generated from enum value: IP_PROTOCOL_UNSPECIFIED = 0; + */ + IP_PROTOCOL_UNSPECIFIED = 0, + /** + * IP_PROTOCOL_TCP is tcp + * + * @generated from enum value: IP_PROTOCOL_TCP = 1; + */ + IP_PROTOCOL_TCP = 1, + /** + * IP_PROTOCOL_UDP is udp + * + * @generated from enum value: IP_PROTOCOL_UDP = 2; + */ + IP_PROTOCOL_UDP = 2 +} +/** + * Describes the enum metalstack.api.v2.IPProtocol. + */ +export declare const IPProtocolSchema: GenEnum; +/** + * MachineState defines if the machine was locked or reserved from a operator + * + * @generated from enum metalstack.api.v2.MachineState + */ +export declare enum MachineState { + /** + * MACHINE_STATE_UNSPECIFIED is not specified + * + * @generated from enum value: MACHINE_STATE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * MACHINE_STATE_RESERVED this machine is reserved + * + * @generated from enum value: MACHINE_STATE_RESERVED = 1; + */ + RESERVED = 1, + /** + * MACHINE_STATE_LOCKED this machine is locked + * + * @generated from enum value: MACHINE_STATE_LOCKED = 2; + */ + LOCKED = 2, + /** + * MACHINE_STATE_LOCKED this machine is available for all + * + * @generated from enum value: MACHINE_STATE_AVAILABLE = 3; + */ + AVAILABLE = 3 +} +/** + * Describes the enum metalstack.api.v2.MachineState. + */ +export declare const MachineStateSchema: GenEnum; +/** + * MachineProvisioningEventState possible event states + * + * @generated from enum metalstack.api.v2.MachineProvisioningEventState + */ +export declare enum MachineProvisioningEventState { + /** + * MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED is not specified + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP machine is in crash loop + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP = 1; + */ + CRASHLOOP = 1, + /** + * MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM machine is in failed reclaim + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM = 2; + */ + FAILED_RECLAIM = 2 +} +/** + * Describes the enum metalstack.api.v2.MachineProvisioningEventState. + */ +export declare const MachineProvisioningEventStateSchema: GenEnum; +/** + * MachineProvisioningEventType defines in which phase the machine actually is + * + * @generated from enum metalstack.api.v2.MachineProvisioningEventType + */ +export declare enum MachineProvisioningEventType { + /** + * MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * MACHINE_PROVISIONING_EVENT_TYPE_ALIVE machine is alive + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_ALIVE = 1; + */ + ALIVE = 1, + /** + * MACHINE_PROVISIONING_EVENT_TYPE_CRASHED machine crashed + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_CRASHED = 2; + */ + CRASHED = 2, + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING machine is pxe booting into metal-hammer + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING = 3; + */ + PXE_BOOTING = 3, + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT machine got a reboot instruction + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT = 4; + */ + PLANNED_REBOOT = 4, + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PREPARING metal-hammer is preparing the machine + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PREPARING = 5; + */ + PREPARING = 5, + /** + * MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING metal-hammer registers machine at the apiserver + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING = 6; + */ + REGISTERING = 6, + /** + * MACHINE_PROVISIONING_EVENT_TYPE_WAITING machine is waiting for installation + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_WAITING = 7; + */ + WAITING = 7, + /** + * MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING metal-hammer is installing the desired os + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING = 8; + */ + INSTALLING = 8, + /** + * MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL metal-hammer completed installation and boots into target os + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL = 9; + */ + BOOTING_NEW_KERNEL = 9, + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME machine is installed and phones home + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME = 10; + */ + PHONED_HOME = 10, + /** + * MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM machine is not allocated, but phones home + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM = 11; + */ + MACHINE_RECLAIM = 11 +} +/** + * Describes the enum metalstack.api.v2.MachineProvisioningEventType. + */ +export declare const MachineProvisioningEventTypeSchema: GenEnum; +/** + * MachineLiveliness specifies the liveliness of a machine + * + * @generated from enum metalstack.api.v2.MachineLiveliness + */ +export declare enum MachineLiveliness { + /** + * MACHINE_LIVELINESS_UNSPECIFIED is not defined + * + * @generated from enum value: MACHINE_LIVELINESS_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * MACHINE_LIVELINESS_ALIVE liveliness is alive + * + * @generated from enum value: MACHINE_LIVELINESS_ALIVE = 1; + */ + ALIVE = 1, + /** + * MACHINE_LIVELINESS_DEAD liveliness is dead + * + * @generated from enum value: MACHINE_LIVELINESS_DEAD = 2; + */ + DEAD = 2, + /** + * MACHINE_LIVELINESS_UNKNOWN liveliness is unknown + * + * @generated from enum value: MACHINE_LIVELINESS_UNKNOWN = 3; + */ + UNKNOWN = 3 +} +/** + * Describes the enum metalstack.api.v2.MachineLiveliness. + */ +export declare const MachineLivelinessSchema: GenEnum; +/** + * MachineAllocationType defines if this is a machine or a firewall + * + * @generated from enum metalstack.api.v2.MachineAllocationType + */ +export declare enum MachineAllocationType { + /** + * MACHINE_ALLOCATION_TYPE_UNSPECIFIED is unspecified + * + * @generated from enum value: MACHINE_ALLOCATION_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * MACHINE_ALLOCATION_TYPE_MACHINE is a machine + * + * @generated from enum value: MACHINE_ALLOCATION_TYPE_MACHINE = 1; + */ + MACHINE = 1, + /** + * MACHINE_ALLOCATION_TYPE_FIREWALL is a firewall + * + * @generated from enum value: MACHINE_ALLOCATION_TYPE_FIREWALL = 2; + */ + FIREWALL = 2 +} +/** + * Describes the enum metalstack.api.v2.MachineAllocationType. + */ +export declare const MachineAllocationTypeSchema: GenEnum; +/** + * MachineService serves machine related functions + * + * @generated from service metalstack.api.v2.MachineService + */ +export declare const MachineService: GenService<{ + /** + * Get a machine + * + * @generated from rpc metalstack.api.v2.MachineService.Get + */ + get: { + methodKind: "unary"; + input: typeof MachineServiceGetRequestSchema; + output: typeof MachineServiceGetResponseSchema; + }; + /** + * Create a machine + * + * @generated from rpc metalstack.api.v2.MachineService.Create + */ + create: { + methodKind: "unary"; + input: typeof MachineServiceCreateRequestSchema; + output: typeof MachineServiceCreateResponseSchema; + }; + /** + * Update a machine + * + * @generated from rpc metalstack.api.v2.MachineService.Update + */ + update: { + methodKind: "unary"; + input: typeof MachineServiceUpdateRequestSchema; + output: typeof MachineServiceUpdateResponseSchema; + }; + /** + * List all machines + * + * @generated from rpc metalstack.api.v2.MachineService.List + */ + list: { + methodKind: "unary"; + input: typeof MachineServiceListRequestSchema; + output: typeof MachineServiceListResponseSchema; + }; + /** + * Delete a machine + * + * @generated from rpc metalstack.api.v2.MachineService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof MachineServiceDeleteRequestSchema; + output: typeof MachineServiceDeleteResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/machine_pb.js b/js/metalstack/api/v2/machine_pb.js new file mode 100644 index 00000000..a74ef962 --- /dev/null +++ b/js/metalstack/api/v2/machine_pb.js @@ -0,0 +1,459 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/machine.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_filesystem } from "./filesystem_pb"; +import { file_metalstack_api_v2_image } from "./image_pb"; +import { file_metalstack_api_v2_network } from "./network_pb"; +import { file_metalstack_api_v2_partition } from "./partition_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import { file_metalstack_api_v2_size } from "./size_pb"; +/** + * Describes the file metalstack/api/v2/machine.proto. + */ +export const file_metalstack_api_v2_machine = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLZBgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIZCgNpcHMYDiADKAlCDLpICZIBBuizrrECARIWCg5wbGFjZW1lbnRfdGFncxgPIAMoCRI6CgpkbnNfc2VydmVyGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGBEgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChJLCg9hbGxvY2F0aW9uX3R5cGUYEiABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABEjYKDWZpcmV3YWxsX3NwZWMYEyABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFNwZWNCBwoFX3V1aWRCDgoMX2Rlc2NyaXB0aW9uQgsKCV9ob3N0bmFtZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX3VzZXJkYXRhIkgKDEZpcmV3YWxsU3BlYxI4Cg5maXJld2FsbF9ydWxlcxgTIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMiSwocTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKwAgobTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgGIAMoCUIRukgOkgELEDIiB3IFEAEYgEBCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJmChlNYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5IkoKGk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG1hY2hpbmVzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJQChtNYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLgAwoHTWFjaGluZRIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIvCglwYXJ0aXRpb24YAyABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24SFgoEcmFjaxgEIAEoCUIIukgFcgMYgAESJQoEc2l6ZRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUSNAoIaGFyZHdhcmUYBiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmUSLAoEYmlvcxgHIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCaW9zEjgKCmFsbG9jYXRpb24YCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbhIwCgZzdGF0dXMYCSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdHVzElYKGnJlY2VudF9wcm92aXNpb25pbmdfZXZlbnRzGAogASgLMjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cyLvAQoNTWFjaGluZVN0YXR1cxI2Cgljb25kaXRpb24YASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29uZGl0aW9uEkQKCWxlZF9zdGF0ZRgCIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRJCCgpsaXZlbGluZXNzGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUxpdmVsaW5lc3NCCLpIBYIBAhABEhwKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAQgASgJIogBChBNYWNoaW5lQ29uZGl0aW9uEjgKBXN0YXRlGAEgASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlQgi6SAWCAQIQARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgESGAoGaXNzdWVyGAMgASgJQgi6SAVyAxiAAiL1BQoRTWFjaGluZUFsbG9jYXRpb24SFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEhwKCmNyZWF0ZWRfYnkYBSABKAlCCLpIBXIDGIABEhkKB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBEicKBWltYWdlGAcgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYCCABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0EjMKCG5ldHdvcmtzGAkgAygLMiEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmsSGQoIaG9zdG5hbWUYCiABKAlCB7pIBHICaAESKgoPc3NoX3B1YmxpY19rZXlzGAsgAygJQhG6SA6SAQsQMiIHcgUQARiAQBIbCgh1c2VyZGF0YRgMIAEoCUIJukgGcgQYgIACEksKD2FsbG9jYXRpb25fdHlwZRgNIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESOAoOZmlyZXdhbGxfcnVsZXMYDiABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFJ1bGVzEjoKCmRuc19zZXJ2ZXIYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYECADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEioKA3ZwbhgRIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVWUE4iYwoYTWFjaGluZUFsbG9jYXRpb25OZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHwoSbm9fYXV0b19hY3F1aXJlX2lwGAIgASgISACIAQFCFQoTX25vX2F1dG9fYWNxdWlyZV9pcCJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQbgs66xAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBuCzrrECARIaCgRmcm9tGAQgAygJQgy6SAmSAQbgs66xAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQimgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBuCzrrECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEG4LOusQIBEhkKA2lwcxgEIAMoCUIMukgJkgEG6LOusQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0i2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACItMBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASJaCgtNYWNoaW5lQmlvcxIZCgd2ZXJzaW9uGAEgASgJQgi6SAVyAxiAAhIYCgZ2ZW5kb3IYAiABKAlCCLpIBXIDGIACEhYKBGRhdGUYAyABKAlCCLpIBXIDGIACIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJQCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgiwQYKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI2CgRpcG1pGAsgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUlQTUlRdWVyeUgKiAEBEjQKA2ZydRgMIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlVRdWVyeUgLiAEBEj4KCGhhcmR3YXJlGA0gASgLMicubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlUXVlcnlIDIgBARIzCgVzdGF0ZRgOIAEoDjIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0ZUgNiAEBQgcKBV91dWlkQgcKBV9uYW1lQgwKCl9wYXJ0aXRpb25CBwoFX3NpemVCBwoFX3JhY2tCCQoHX2xhYmVsc0INCgtfYWxsb2NhdGlvbkIKCghfbmV0d29ya0IGCgRfbmljQgcKBV9kaXNrQgcKBV9pcG1pQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZSLQAwoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQFCBwoFX3V1aWRCBwoFX25hbWVCCgoIX3Byb2plY3RCCAoGX2ltYWdlQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfaG9zdG5hbWVCEgoQX2FsbG9jYXRpb25fdHlwZUIJCgdfbGFiZWxzIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQbgs66xAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBuCzrrECARIZCgNpcHMYBCADKAlCDLpICZIBBuizrrECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiugEKEE1hY2hpbmVJUE1JUXVlcnkSHQoHYWRkcmVzcxgBIAEoCUIHukgEcgJwAUgAiAEBEh0KA21hYxgCIAEoCUILukgIcga4s66xAgFIAYgBARIbCgR1c2VyGAMgASgJQgi6SAVyAxiAAUgCiAEBEiAKCWludGVyZmFjZRgEIAEoCUIIukgFcgMYgAFIA4gBAUIKCghfYWRkcmVzc0IGCgRfbWFjQgcKBV91c2VyQgwKCl9pbnRlcmZhY2UigwQKD01hY2hpbmVGUlVRdWVyeRIqChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgi6SAVyAxiAAUgAiAEBEioKE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCCLpIBXIDGIABSAGIAQESIAoJYm9hcmRfbWZnGAMgASgJQgi6SAVyAxiAAUgCiAEBEiMKDGJvYXJkX3NlcmlhbBgEIAEoCUIIukgFcgMYgAFIA4gBARIoChFib2FyZF9wYXJ0X251bWJlchgFIAEoCUIIukgFcgMYgAFIBIgBARIrChRwcm9kdWN0X21hbnVmYWN0dXJlchgGIAEoCUIIukgFcgMYgAFIBYgBARIqChNwcm9kdWN0X3BhcnRfbnVtYmVyGAcgASgJQgi6SAVyAxiAAUgGiAEBEiUKDnByb2R1Y3Rfc2VyaWFsGAggASgJQgi6SAVyAxiAAUgHiAEBQhYKFF9jaGFzc2lzX3BhcnRfbnVtYmVyQhYKFF9jaGFzc2lzX3BhcnRfc2VyaWFsQgwKCl9ib2FyZF9tZmdCDwoNX2JvYXJkX3NlcmlhbEIUChJfYm9hcmRfcGFydF9udW1iZXJCFwoVX3Byb2R1Y3RfbWFudWZhY3R1cmVyQhYKFF9wcm9kdWN0X3BhcnRfbnVtYmVyQhEKD19wcm9kdWN0X3NlcmlhbCJcChRNYWNoaW5lSGFyZHdhcmVRdWVyeRITCgZtZW1vcnkYASABKARIAIgBARIWCgljcHVfY29yZXMYAiABKA1IAYgBAUIJCgdfbWVtb3J5QgwKCl9jcHVfY29yZXMqZQoKSVBQcm90b2NvbBIbChdJUF9QUk9UT0NPTF9VTlNQRUNJRklFRBAAEhwKD0lQX1BST1RPQ09MX1RDUBABGgeCshkDdGNwEhwKD0lQX1BST1RPQ09MX1VEUBACGgeCshkDdWRwKq8BCgxNYWNoaW5lU3RhdGUSIwoZTUFDSElORV9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEigKFk1BQ0hJTkVfU1RBVEVfUkVTRVJWRUQQARoMgrIZCHJlc2VydmVkEiQKFE1BQ0hJTkVfU1RBVEVfTE9DS0VEEAIaCoKyGQZsb2NrZWQSKgoXTUFDSElORV9TVEFURV9BVkFJTEFCTEUQAxoNgrIZCWF2YWlsYWJsZSrfAQodTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50U3RhdGUSNgosTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfU1RBVEVfVU5TUEVDSUZJRUQQABoEgrIZABI9CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9DUkFTSExPT1AQARoNgrIZCWNyYXNobG9vcBJHCi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9GQUlMRURfUkVDTEFJTRACGhKCshkOZmFpbGVkLXJlY2xhaW0qnwYKHE1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSLworTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEjQKJU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQUxJVkUQARoJgrIZBUFsaXZlEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQ1JBU0hFRBACGguCshkHQ3Jhc2hlZBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BYRV9CT09USU5HEAMaD4KyGQtQWEUgQm9vdGluZxJGCi5NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BMQU5ORURfUkVCT09UEAQaEoKyGQ5QbGFubmVkIFJlYm9vdBI8CilNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BSRVBBUklORxAFGg2CshkJUHJlcGFyaW5nEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUkVHSVNURVJJTkcQBhoPgrIZC1JlZ2lzdGVyaW5nEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfV0FJVElORxAHGguCshkHV2FpdGluZxI+CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0lOU1RBTExJTkcQCBoOgrIZCkluc3RhbGxpbmcSTgoyTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9CT09USU5HX05FV19LRVJORUwQCRoWgrIZEkJvb3RpbmcgTmV3IEtlcm5lbBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BIT05FRF9IT01FEAoaD4KyGQtQaG9uZWQgSG9tZRJICi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX01BQ0hJTkVfUkVDTEFJTRALGhOCshkPTWFjaGluZSBSZWNsYWltKroBChFNYWNoaW5lTGl2ZWxpbmVzcxIoCh5NQUNISU5FX0xJVkVMSU5FU1NfVU5TUEVDSUZJRUQQABoEgrIZABInChhNQUNISU5FX0xJVkVMSU5FU1NfQUxJVkUQARoJgrIZBWFsaXZlEiUKF01BQ0hJTkVfTElWRUxJTkVTU19ERUFEEAIaCIKyGQRkZWFkEisKGk1BQ0hJTkVfTElWRUxJTkVTU19VTktOT1dOEAMaC4KyGQd1bmtub3duKqwBChVNYWNoaW5lQWxsb2NhdGlvblR5cGUSLQojTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABoEgrIZABIwCh9NQUNISU5FX0FMTE9DQVRJT05fVFlQRV9NQUNISU5FEAEaC4KyGQdtYWNoaW5lEjIKIE1BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX0ZJUkVXQUxMEAIaDIKyGQhmaXJld2FsbDLKBAoOTWFjaGluZVNlcnZpY2USbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAIScQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZSIGyvMYAgECEnEKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiBsrzGAIBAhJwCgRMaXN0EiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlIgvK8xgDAQID4PMYAhJxCgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); +/** + * Describes the message metalstack.api.v2.MachineServiceGetRequest. + * Use `create(MachineServiceGetRequestSchema)` to create a new message. + */ +export const MachineServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 0); +/** + * Describes the message metalstack.api.v2.MachineServiceGetResponse. + * Use `create(MachineServiceGetResponseSchema)` to create a new message. + */ +export const MachineServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 1); +/** + * Describes the message metalstack.api.v2.MachineServiceCreateRequest. + * Use `create(MachineServiceCreateRequestSchema)` to create a new message. + */ +export const MachineServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 2); +/** + * Describes the message metalstack.api.v2.FirewallSpec. + * Use `create(FirewallSpecSchema)` to create a new message. + */ +export const FirewallSpecSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 3); +/** + * Describes the message metalstack.api.v2.MachineServiceCreateResponse. + * Use `create(MachineServiceCreateResponseSchema)` to create a new message. + */ +export const MachineServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 4); +/** + * Describes the message metalstack.api.v2.MachineServiceUpdateRequest. + * Use `create(MachineServiceUpdateRequestSchema)` to create a new message. + */ +export const MachineServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 5); +/** + * Describes the message metalstack.api.v2.MachineServiceUpdateResponse. + * Use `create(MachineServiceUpdateResponseSchema)` to create a new message. + */ +export const MachineServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 6); +/** + * Describes the message metalstack.api.v2.MachineServiceListRequest. + * Use `create(MachineServiceListRequestSchema)` to create a new message. + */ +export const MachineServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 7); +/** + * Describes the message metalstack.api.v2.MachineServiceListResponse. + * Use `create(MachineServiceListResponseSchema)` to create a new message. + */ +export const MachineServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 8); +/** + * Describes the message metalstack.api.v2.MachineServiceDeleteRequest. + * Use `create(MachineServiceDeleteRequestSchema)` to create a new message. + */ +export const MachineServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 9); +/** + * Describes the message metalstack.api.v2.MachineServiceDeleteResponse. + * Use `create(MachineServiceDeleteResponseSchema)` to create a new message. + */ +export const MachineServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 10); +/** + * Describes the message metalstack.api.v2.Machine. + * Use `create(MachineSchema)` to create a new message. + */ +export const MachineSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 11); +/** + * Describes the message metalstack.api.v2.MachineStatus. + * Use `create(MachineStatusSchema)` to create a new message. + */ +export const MachineStatusSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 12); +/** + * Describes the message metalstack.api.v2.MachineCondition. + * Use `create(MachineConditionSchema)` to create a new message. + */ +export const MachineConditionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 13); +/** + * Describes the message metalstack.api.v2.MachineAllocation. + * Use `create(MachineAllocationSchema)` to create a new message. + */ +export const MachineAllocationSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 14); +/** + * Describes the message metalstack.api.v2.MachineAllocationNetwork. + * Use `create(MachineAllocationNetworkSchema)` to create a new message. + */ +export const MachineAllocationNetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 15); +/** + * Describes the message metalstack.api.v2.FirewallRules. + * Use `create(FirewallRulesSchema)` to create a new message. + */ +export const FirewallRulesSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 16); +/** + * Describes the message metalstack.api.v2.FirewallEgressRule. + * Use `create(FirewallEgressRuleSchema)` to create a new message. + */ +export const FirewallEgressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 17); +/** + * Describes the message metalstack.api.v2.FirewallIngressRule. + * Use `create(FirewallIngressRuleSchema)` to create a new message. + */ +export const FirewallIngressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 18); +/** + * Describes the message metalstack.api.v2.MachineNetwork. + * Use `create(MachineNetworkSchema)` to create a new message. + */ +export const MachineNetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 19); +/** + * Describes the message metalstack.api.v2.MachineHardware. + * Use `create(MachineHardwareSchema)` to create a new message. + */ +export const MachineHardwareSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 20); +/** + * Describes the message metalstack.api.v2.MetalCPU. + * Use `create(MetalCPUSchema)` to create a new message. + */ +export const MetalCPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 21); +/** + * Describes the message metalstack.api.v2.MetalGPU. + * Use `create(MetalGPUSchema)` to create a new message. + */ +export const MetalGPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 22); +/** + * Describes the message metalstack.api.v2.MachineNic. + * Use `create(MachineNicSchema)` to create a new message. + */ +export const MachineNicSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 23); +/** + * Describes the message metalstack.api.v2.MachineBlockDevice. + * Use `create(MachineBlockDeviceSchema)` to create a new message. + */ +export const MachineBlockDeviceSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 24); +/** + * Describes the message metalstack.api.v2.MachineChassisIdentifyLEDState. + * Use `create(MachineChassisIdentifyLEDStateSchema)` to create a new message. + */ +export const MachineChassisIdentifyLEDStateSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 25); +/** + * Describes the message metalstack.api.v2.MachineBios. + * Use `create(MachineBiosSchema)` to create a new message. + */ +export const MachineBiosSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 26); +/** + * Describes the message metalstack.api.v2.MachineRecentProvisioningEvents. + * Use `create(MachineRecentProvisioningEventsSchema)` to create a new message. + */ +export const MachineRecentProvisioningEventsSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 27); +/** + * Describes the message metalstack.api.v2.MachineProvisioningEvent. + * Use `create(MachineProvisioningEventSchema)` to create a new message. + */ +export const MachineProvisioningEventSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 28); +/** + * Describes the message metalstack.api.v2.MachineVPN. + * Use `create(MachineVPNSchema)` to create a new message. + */ +export const MachineVPNSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 29); +/** + * Describes the message metalstack.api.v2.MachineQuery. + * Use `create(MachineQuerySchema)` to create a new message. + */ +export const MachineQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 30); +/** + * Describes the message metalstack.api.v2.MachineAllocationQuery. + * Use `create(MachineAllocationQuerySchema)` to create a new message. + */ +export const MachineAllocationQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 31); +/** + * Describes the message metalstack.api.v2.MachineNetworkQuery. + * Use `create(MachineNetworkQuerySchema)` to create a new message. + */ +export const MachineNetworkQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 32); +/** + * Describes the message metalstack.api.v2.MachineNicQuery. + * Use `create(MachineNicQuerySchema)` to create a new message. + */ +export const MachineNicQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 33); +/** + * Describes the message metalstack.api.v2.MachineDiskQuery. + * Use `create(MachineDiskQuerySchema)` to create a new message. + */ +export const MachineDiskQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 34); +/** + * Describes the message metalstack.api.v2.MachineIPMIQuery. + * Use `create(MachineIPMIQuerySchema)` to create a new message. + */ +export const MachineIPMIQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 35); +/** + * Describes the message metalstack.api.v2.MachineFRUQuery. + * Use `create(MachineFRUQuerySchema)` to create a new message. + */ +export const MachineFRUQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 36); +/** + * Describes the message metalstack.api.v2.MachineHardwareQuery. + * Use `create(MachineHardwareQuerySchema)` to create a new message. + */ +export const MachineHardwareQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 37); +/** + * IPProtocol defines tcp|udp + * + * @generated from enum metalstack.api.v2.IPProtocol + */ +export var IPProtocol; +(function (IPProtocol) { + /** + * IP_PROTOCOL_UNSPECIFIED is not specified + * + * @generated from enum value: IP_PROTOCOL_UNSPECIFIED = 0; + */ + IPProtocol[IPProtocol["IP_PROTOCOL_UNSPECIFIED"] = 0] = "IP_PROTOCOL_UNSPECIFIED"; + /** + * IP_PROTOCOL_TCP is tcp + * + * @generated from enum value: IP_PROTOCOL_TCP = 1; + */ + IPProtocol[IPProtocol["IP_PROTOCOL_TCP"] = 1] = "IP_PROTOCOL_TCP"; + /** + * IP_PROTOCOL_UDP is udp + * + * @generated from enum value: IP_PROTOCOL_UDP = 2; + */ + IPProtocol[IPProtocol["IP_PROTOCOL_UDP"] = 2] = "IP_PROTOCOL_UDP"; +})(IPProtocol || (IPProtocol = {})); +/** + * Describes the enum metalstack.api.v2.IPProtocol. + */ +export const IPProtocolSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_machine, 0); +/** + * MachineState defines if the machine was locked or reserved from a operator + * + * @generated from enum metalstack.api.v2.MachineState + */ +export var MachineState; +(function (MachineState) { + /** + * MACHINE_STATE_UNSPECIFIED is not specified + * + * @generated from enum value: MACHINE_STATE_UNSPECIFIED = 0; + */ + MachineState[MachineState["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * MACHINE_STATE_RESERVED this machine is reserved + * + * @generated from enum value: MACHINE_STATE_RESERVED = 1; + */ + MachineState[MachineState["RESERVED"] = 1] = "RESERVED"; + /** + * MACHINE_STATE_LOCKED this machine is locked + * + * @generated from enum value: MACHINE_STATE_LOCKED = 2; + */ + MachineState[MachineState["LOCKED"] = 2] = "LOCKED"; + /** + * MACHINE_STATE_LOCKED this machine is available for all + * + * @generated from enum value: MACHINE_STATE_AVAILABLE = 3; + */ + MachineState[MachineState["AVAILABLE"] = 3] = "AVAILABLE"; +})(MachineState || (MachineState = {})); +/** + * Describes the enum metalstack.api.v2.MachineState. + */ +export const MachineStateSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_machine, 1); +/** + * MachineProvisioningEventState possible event states + * + * @generated from enum metalstack.api.v2.MachineProvisioningEventState + */ +export var MachineProvisioningEventState; +(function (MachineProvisioningEventState) { + /** + * MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED is not specified + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED = 0; + */ + MachineProvisioningEventState[MachineProvisioningEventState["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP machine is in crash loop + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP = 1; + */ + MachineProvisioningEventState[MachineProvisioningEventState["CRASHLOOP"] = 1] = "CRASHLOOP"; + /** + * MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM machine is in failed reclaim + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM = 2; + */ + MachineProvisioningEventState[MachineProvisioningEventState["FAILED_RECLAIM"] = 2] = "FAILED_RECLAIM"; +})(MachineProvisioningEventState || (MachineProvisioningEventState = {})); +/** + * Describes the enum metalstack.api.v2.MachineProvisioningEventState. + */ +export const MachineProvisioningEventStateSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_machine, 2); +/** + * MachineProvisioningEventType defines in which phase the machine actually is + * + * @generated from enum metalstack.api.v2.MachineProvisioningEventType + */ +export var MachineProvisioningEventType; +(function (MachineProvisioningEventType) { + /** + * MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED = 0; + */ + MachineProvisioningEventType[MachineProvisioningEventType["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * MACHINE_PROVISIONING_EVENT_TYPE_ALIVE machine is alive + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_ALIVE = 1; + */ + MachineProvisioningEventType[MachineProvisioningEventType["ALIVE"] = 1] = "ALIVE"; + /** + * MACHINE_PROVISIONING_EVENT_TYPE_CRASHED machine crashed + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_CRASHED = 2; + */ + MachineProvisioningEventType[MachineProvisioningEventType["CRASHED"] = 2] = "CRASHED"; + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING machine is pxe booting into metal-hammer + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING = 3; + */ + MachineProvisioningEventType[MachineProvisioningEventType["PXE_BOOTING"] = 3] = "PXE_BOOTING"; + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT machine got a reboot instruction + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT = 4; + */ + MachineProvisioningEventType[MachineProvisioningEventType["PLANNED_REBOOT"] = 4] = "PLANNED_REBOOT"; + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PREPARING metal-hammer is preparing the machine + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PREPARING = 5; + */ + MachineProvisioningEventType[MachineProvisioningEventType["PREPARING"] = 5] = "PREPARING"; + /** + * MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING metal-hammer registers machine at the apiserver + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING = 6; + */ + MachineProvisioningEventType[MachineProvisioningEventType["REGISTERING"] = 6] = "REGISTERING"; + /** + * MACHINE_PROVISIONING_EVENT_TYPE_WAITING machine is waiting for installation + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_WAITING = 7; + */ + MachineProvisioningEventType[MachineProvisioningEventType["WAITING"] = 7] = "WAITING"; + /** + * MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING metal-hammer is installing the desired os + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING = 8; + */ + MachineProvisioningEventType[MachineProvisioningEventType["INSTALLING"] = 8] = "INSTALLING"; + /** + * MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL metal-hammer completed installation and boots into target os + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL = 9; + */ + MachineProvisioningEventType[MachineProvisioningEventType["BOOTING_NEW_KERNEL"] = 9] = "BOOTING_NEW_KERNEL"; + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME machine is installed and phones home + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME = 10; + */ + MachineProvisioningEventType[MachineProvisioningEventType["PHONED_HOME"] = 10] = "PHONED_HOME"; + /** + * MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM machine is not allocated, but phones home + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM = 11; + */ + MachineProvisioningEventType[MachineProvisioningEventType["MACHINE_RECLAIM"] = 11] = "MACHINE_RECLAIM"; +})(MachineProvisioningEventType || (MachineProvisioningEventType = {})); +/** + * Describes the enum metalstack.api.v2.MachineProvisioningEventType. + */ +export const MachineProvisioningEventTypeSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_machine, 3); +/** + * MachineLiveliness specifies the liveliness of a machine + * + * @generated from enum metalstack.api.v2.MachineLiveliness + */ +export var MachineLiveliness; +(function (MachineLiveliness) { + /** + * MACHINE_LIVELINESS_UNSPECIFIED is not defined + * + * @generated from enum value: MACHINE_LIVELINESS_UNSPECIFIED = 0; + */ + MachineLiveliness[MachineLiveliness["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * MACHINE_LIVELINESS_ALIVE liveliness is alive + * + * @generated from enum value: MACHINE_LIVELINESS_ALIVE = 1; + */ + MachineLiveliness[MachineLiveliness["ALIVE"] = 1] = "ALIVE"; + /** + * MACHINE_LIVELINESS_DEAD liveliness is dead + * + * @generated from enum value: MACHINE_LIVELINESS_DEAD = 2; + */ + MachineLiveliness[MachineLiveliness["DEAD"] = 2] = "DEAD"; + /** + * MACHINE_LIVELINESS_UNKNOWN liveliness is unknown + * + * @generated from enum value: MACHINE_LIVELINESS_UNKNOWN = 3; + */ + MachineLiveliness[MachineLiveliness["UNKNOWN"] = 3] = "UNKNOWN"; +})(MachineLiveliness || (MachineLiveliness = {})); +/** + * Describes the enum metalstack.api.v2.MachineLiveliness. + */ +export const MachineLivelinessSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_machine, 4); +/** + * MachineAllocationType defines if this is a machine or a firewall + * + * @generated from enum metalstack.api.v2.MachineAllocationType + */ +export var MachineAllocationType; +(function (MachineAllocationType) { + /** + * MACHINE_ALLOCATION_TYPE_UNSPECIFIED is unspecified + * + * @generated from enum value: MACHINE_ALLOCATION_TYPE_UNSPECIFIED = 0; + */ + MachineAllocationType[MachineAllocationType["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * MACHINE_ALLOCATION_TYPE_MACHINE is a machine + * + * @generated from enum value: MACHINE_ALLOCATION_TYPE_MACHINE = 1; + */ + MachineAllocationType[MachineAllocationType["MACHINE"] = 1] = "MACHINE"; + /** + * MACHINE_ALLOCATION_TYPE_FIREWALL is a firewall + * + * @generated from enum value: MACHINE_ALLOCATION_TYPE_FIREWALL = 2; + */ + MachineAllocationType[MachineAllocationType["FIREWALL"] = 2] = "FIREWALL"; +})(MachineAllocationType || (MachineAllocationType = {})); +/** + * Describes the enum metalstack.api.v2.MachineAllocationType. + */ +export const MachineAllocationTypeSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_machine, 5); +/** + * MachineService serves machine related functions + * + * @generated from service metalstack.api.v2.MachineService + */ +export const MachineService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_machine, 0); diff --git a/js/metalstack/api/v2/machine_pb.ts b/js/metalstack/api/v2/machine_pb.ts new file mode 100644 index 00000000..01930537 --- /dev/null +++ b/js/metalstack/api/v2/machine_pb.ts @@ -0,0 +1,2136 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/machine.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import type { FilesystemLayout } from "./filesystem_pb"; +import { file_metalstack_api_v2_filesystem } from "./filesystem_pb"; +import type { Image } from "./image_pb"; +import { file_metalstack_api_v2_image } from "./image_pb"; +import type { NATType, NetworkType } from "./network_pb"; +import { file_metalstack_api_v2_network } from "./network_pb"; +import type { DNSServer, NTPServer, Partition } from "./partition_pb"; +import { file_metalstack_api_v2_partition } from "./partition_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Size } from "./size_pb"; +import { file_metalstack_api_v2_size } from "./size_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/machine.proto. + */ +export const file_metalstack_api_v2_machine: GenFile = /*@__PURE__*/ + fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLZBgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIZCgNpcHMYDiADKAlCDLpICZIBBuizrrECARIWCg5wbGFjZW1lbnRfdGFncxgPIAMoCRI6CgpkbnNfc2VydmVyGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGBEgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChJLCg9hbGxvY2F0aW9uX3R5cGUYEiABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABEjYKDWZpcmV3YWxsX3NwZWMYEyABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFNwZWNCBwoFX3V1aWRCDgoMX2Rlc2NyaXB0aW9uQgsKCV9ob3N0bmFtZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX3VzZXJkYXRhIkgKDEZpcmV3YWxsU3BlYxI4Cg5maXJld2FsbF9ydWxlcxgTIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMiSwocTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKwAgobTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgGIAMoCUIRukgOkgELEDIiB3IFEAEYgEBCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJmChlNYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5IkoKGk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG1hY2hpbmVzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJQChtNYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLgAwoHTWFjaGluZRIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIvCglwYXJ0aXRpb24YAyABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24SFgoEcmFjaxgEIAEoCUIIukgFcgMYgAESJQoEc2l6ZRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUSNAoIaGFyZHdhcmUYBiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmUSLAoEYmlvcxgHIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCaW9zEjgKCmFsbG9jYXRpb24YCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbhIwCgZzdGF0dXMYCSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdHVzElYKGnJlY2VudF9wcm92aXNpb25pbmdfZXZlbnRzGAogASgLMjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cyLvAQoNTWFjaGluZVN0YXR1cxI2Cgljb25kaXRpb24YASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29uZGl0aW9uEkQKCWxlZF9zdGF0ZRgCIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRJCCgpsaXZlbGluZXNzGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUxpdmVsaW5lc3NCCLpIBYIBAhABEhwKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAQgASgJIogBChBNYWNoaW5lQ29uZGl0aW9uEjgKBXN0YXRlGAEgASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlQgi6SAWCAQIQARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgESGAoGaXNzdWVyGAMgASgJQgi6SAVyAxiAAiL1BQoRTWFjaGluZUFsbG9jYXRpb24SFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEhwKCmNyZWF0ZWRfYnkYBSABKAlCCLpIBXIDGIABEhkKB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBEicKBWltYWdlGAcgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYCCABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0EjMKCG5ldHdvcmtzGAkgAygLMiEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmsSGQoIaG9zdG5hbWUYCiABKAlCB7pIBHICaAESKgoPc3NoX3B1YmxpY19rZXlzGAsgAygJQhG6SA6SAQsQMiIHcgUQARiAQBIbCgh1c2VyZGF0YRgMIAEoCUIJukgGcgQYgIACEksKD2FsbG9jYXRpb25fdHlwZRgNIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESOAoOZmlyZXdhbGxfcnVsZXMYDiABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFJ1bGVzEjoKCmRuc19zZXJ2ZXIYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYECADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEioKA3ZwbhgRIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVWUE4iYwoYTWFjaGluZUFsbG9jYXRpb25OZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHwoSbm9fYXV0b19hY3F1aXJlX2lwGAIgASgISACIAQFCFQoTX25vX2F1dG9fYWNxdWlyZV9pcCJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQbgs66xAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBuCzrrECARIaCgRmcm9tGAQgAygJQgy6SAmSAQbgs66xAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQimgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBuCzrrECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEG4LOusQIBEhkKA2lwcxgEIAMoCUIMukgJkgEG6LOusQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0i2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACItMBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASJaCgtNYWNoaW5lQmlvcxIZCgd2ZXJzaW9uGAEgASgJQgi6SAVyAxiAAhIYCgZ2ZW5kb3IYAiABKAlCCLpIBXIDGIACEhYKBGRhdGUYAyABKAlCCLpIBXIDGIACIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJQCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgiwQYKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI2CgRpcG1pGAsgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUlQTUlRdWVyeUgKiAEBEjQKA2ZydRgMIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlVRdWVyeUgLiAEBEj4KCGhhcmR3YXJlGA0gASgLMicubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlUXVlcnlIDIgBARIzCgVzdGF0ZRgOIAEoDjIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0ZUgNiAEBQgcKBV91dWlkQgcKBV9uYW1lQgwKCl9wYXJ0aXRpb25CBwoFX3NpemVCBwoFX3JhY2tCCQoHX2xhYmVsc0INCgtfYWxsb2NhdGlvbkIKCghfbmV0d29ya0IGCgRfbmljQgcKBV9kaXNrQgcKBV9pcG1pQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZSLQAwoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQFCBwoFX3V1aWRCBwoFX25hbWVCCgoIX3Byb2plY3RCCAoGX2ltYWdlQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfaG9zdG5hbWVCEgoQX2FsbG9jYXRpb25fdHlwZUIJCgdfbGFiZWxzIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQbgs66xAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBuCzrrECARIZCgNpcHMYBCADKAlCDLpICZIBBuizrrECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiugEKEE1hY2hpbmVJUE1JUXVlcnkSHQoHYWRkcmVzcxgBIAEoCUIHukgEcgJwAUgAiAEBEh0KA21hYxgCIAEoCUILukgIcga4s66xAgFIAYgBARIbCgR1c2VyGAMgASgJQgi6SAVyAxiAAUgCiAEBEiAKCWludGVyZmFjZRgEIAEoCUIIukgFcgMYgAFIA4gBAUIKCghfYWRkcmVzc0IGCgRfbWFjQgcKBV91c2VyQgwKCl9pbnRlcmZhY2UigwQKD01hY2hpbmVGUlVRdWVyeRIqChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgi6SAVyAxiAAUgAiAEBEioKE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCCLpIBXIDGIABSAGIAQESIAoJYm9hcmRfbWZnGAMgASgJQgi6SAVyAxiAAUgCiAEBEiMKDGJvYXJkX3NlcmlhbBgEIAEoCUIIukgFcgMYgAFIA4gBARIoChFib2FyZF9wYXJ0X251bWJlchgFIAEoCUIIukgFcgMYgAFIBIgBARIrChRwcm9kdWN0X21hbnVmYWN0dXJlchgGIAEoCUIIukgFcgMYgAFIBYgBARIqChNwcm9kdWN0X3BhcnRfbnVtYmVyGAcgASgJQgi6SAVyAxiAAUgGiAEBEiUKDnByb2R1Y3Rfc2VyaWFsGAggASgJQgi6SAVyAxiAAUgHiAEBQhYKFF9jaGFzc2lzX3BhcnRfbnVtYmVyQhYKFF9jaGFzc2lzX3BhcnRfc2VyaWFsQgwKCl9ib2FyZF9tZmdCDwoNX2JvYXJkX3NlcmlhbEIUChJfYm9hcmRfcGFydF9udW1iZXJCFwoVX3Byb2R1Y3RfbWFudWZhY3R1cmVyQhYKFF9wcm9kdWN0X3BhcnRfbnVtYmVyQhEKD19wcm9kdWN0X3NlcmlhbCJcChRNYWNoaW5lSGFyZHdhcmVRdWVyeRITCgZtZW1vcnkYASABKARIAIgBARIWCgljcHVfY29yZXMYAiABKA1IAYgBAUIJCgdfbWVtb3J5QgwKCl9jcHVfY29yZXMqZQoKSVBQcm90b2NvbBIbChdJUF9QUk9UT0NPTF9VTlNQRUNJRklFRBAAEhwKD0lQX1BST1RPQ09MX1RDUBABGgeCshkDdGNwEhwKD0lQX1BST1RPQ09MX1VEUBACGgeCshkDdWRwKq8BCgxNYWNoaW5lU3RhdGUSIwoZTUFDSElORV9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEigKFk1BQ0hJTkVfU1RBVEVfUkVTRVJWRUQQARoMgrIZCHJlc2VydmVkEiQKFE1BQ0hJTkVfU1RBVEVfTE9DS0VEEAIaCoKyGQZsb2NrZWQSKgoXTUFDSElORV9TVEFURV9BVkFJTEFCTEUQAxoNgrIZCWF2YWlsYWJsZSrfAQodTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50U3RhdGUSNgosTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfU1RBVEVfVU5TUEVDSUZJRUQQABoEgrIZABI9CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9DUkFTSExPT1AQARoNgrIZCWNyYXNobG9vcBJHCi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9GQUlMRURfUkVDTEFJTRACGhKCshkOZmFpbGVkLXJlY2xhaW0qnwYKHE1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSLworTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEjQKJU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQUxJVkUQARoJgrIZBUFsaXZlEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQ1JBU0hFRBACGguCshkHQ3Jhc2hlZBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BYRV9CT09USU5HEAMaD4KyGQtQWEUgQm9vdGluZxJGCi5NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BMQU5ORURfUkVCT09UEAQaEoKyGQ5QbGFubmVkIFJlYm9vdBI8CilNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BSRVBBUklORxAFGg2CshkJUHJlcGFyaW5nEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUkVHSVNURVJJTkcQBhoPgrIZC1JlZ2lzdGVyaW5nEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfV0FJVElORxAHGguCshkHV2FpdGluZxI+CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0lOU1RBTExJTkcQCBoOgrIZCkluc3RhbGxpbmcSTgoyTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9CT09USU5HX05FV19LRVJORUwQCRoWgrIZEkJvb3RpbmcgTmV3IEtlcm5lbBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BIT05FRF9IT01FEAoaD4KyGQtQaG9uZWQgSG9tZRJICi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX01BQ0hJTkVfUkVDTEFJTRALGhOCshkPTWFjaGluZSBSZWNsYWltKroBChFNYWNoaW5lTGl2ZWxpbmVzcxIoCh5NQUNISU5FX0xJVkVMSU5FU1NfVU5TUEVDSUZJRUQQABoEgrIZABInChhNQUNISU5FX0xJVkVMSU5FU1NfQUxJVkUQARoJgrIZBWFsaXZlEiUKF01BQ0hJTkVfTElWRUxJTkVTU19ERUFEEAIaCIKyGQRkZWFkEisKGk1BQ0hJTkVfTElWRUxJTkVTU19VTktOT1dOEAMaC4KyGQd1bmtub3duKqwBChVNYWNoaW5lQWxsb2NhdGlvblR5cGUSLQojTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABoEgrIZABIwCh9NQUNISU5FX0FMTE9DQVRJT05fVFlQRV9NQUNISU5FEAEaC4KyGQdtYWNoaW5lEjIKIE1BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX0ZJUkVXQUxMEAIaDIKyGQhmaXJld2FsbDLKBAoOTWFjaGluZVNlcnZpY2USbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAIScQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZSIGyvMYAgECEnEKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiBsrzGAIBAhJwCgRMaXN0EiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlIgvK8xgDAQID4PMYAhJxCgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); + +/** + * MachineServiceGetRequest is the request payload for a machine get request + * + * @generated from message metalstack.api.v2.MachineServiceGetRequest + */ +export type MachineServiceGetRequest = Message<"metalstack.api.v2.MachineServiceGetRequest"> & { + /** + * UUID of the machine to get + * + * @generated from field: string uuid = 1; + */ + uuid: string; + + /** + * Project of the machine + * + * @generated from field: string project = 2; + */ + project: string; +}; + +/** + * Describes the message metalstack.api.v2.MachineServiceGetRequest. + * Use `create(MachineServiceGetRequestSchema)` to create a new message. + */ +export const MachineServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 0); + +/** + * MachineServiceGetResponse is the request payload for a machine get response + * + * @generated from message metalstack.api.v2.MachineServiceGetResponse + */ +export type MachineServiceGetResponse = Message<"metalstack.api.v2.MachineServiceGetResponse"> & { + /** + * Machine is the machine requested + * + * @generated from field: metalstack.api.v2.Machine machine = 1; + */ + machine?: Machine; +}; + +/** + * Describes the message metalstack.api.v2.MachineServiceGetResponse. + * Use `create(MachineServiceGetResponseSchema)` to create a new message. + */ +export const MachineServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 1); + +/** + * MachineServiceCreateRequest is the request payload for a machine create request + * + * @generated from message metalstack.api.v2.MachineServiceCreateRequest + */ +export type MachineServiceCreateRequest = Message<"metalstack.api.v2.MachineServiceCreateRequest"> & { + /** + * Project of the machine + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * UUID if this field is set, this specific machine will be allocated if it is not in available state and not currently allocated. + * this field overrules size and partition + * + * @generated from field: optional string uuid = 2; + */ + uuid?: string; + + /** + * Name of this machine + * + * @generated from field: string name = 3; + */ + name: string; + + /** + * Description for this machine + * + * @generated from field: optional string description = 4; + */ + description?: string; + + /** + * Hostname the hostname for the allocated machine (defaults to metal) + * + * @generated from field: optional string hostname = 5; + */ + hostname?: string; + + /** + * Partition the partition id to assign this machine to + * + * @generated from field: string partition = 6; + */ + partition: string; + + /** + * Size of the machine to create + * + * @generated from field: string size = 7; + */ + size: string; + + /** + * Image which should be installed on this machine + * + * @generated from field: string image = 8; + */ + image: string; + + /** + * FilesystemLayout which should be applied for the operating system installation + * Is defaulted by a lookup at the available fsls for this size and image. + * Can be specified to test new fsls during development of fsls + * + * @generated from field: optional string filesystem_layout = 9; + */ + filesystemLayout?: string; + + /** + * SSHPublicKeys defines the ssh public key to be installed on the machine to access it via ssh + * + * @generated from field: repeated string ssh_public_keys = 10; + */ + sshPublicKeys: string[]; + + /** + * Userdata contains instructions required to bootstrap the machine + * AWS limits the max userdata size to 16k, lets allow twice as much + * + * @generated from field: optional string userdata = 11; + */ + userdata?: string; + + /** + * Labels to be attached to this machine allocation + * + * @generated from field: metalstack.api.v2.Labels labels = 12; + */ + labels?: Labels; + + /** + * Networks the networks that this machine will be placed in. + * + * @generated from field: repeated metalstack.api.v2.MachineAllocationNetwork networks = 13; + */ + networks: MachineAllocationNetwork[]; + + /** + * IPs to to attach to this machine additionally + * + * @generated from field: repeated string ips = 14; + */ + ips: string[]; + + /** + * PlacementTags by default machines are spread across the racks inside a partition for every project. + * if placement tags are provided, the machine candidate has an additional anti-affinity to other machines having the same tags + * + * @generated from field: repeated string placement_tags = 15; + */ + placementTags: string[]; + + /** + * DNSServer the dns servers used for the machine + * + * @generated from field: repeated metalstack.api.v2.DNSServer dns_server = 16; + */ + dnsServer: DNSServer[]; + + /** + * NTPServer the ntp servers used for the machine + * + * @generated from field: repeated metalstack.api.v2.NTPServer ntp_server = 17; + */ + ntpServer: NTPServer[]; + + /** + * AllocationType of this machine + * + * @generated from field: metalstack.api.v2.MachineAllocationType allocation_type = 18; + */ + allocationType: MachineAllocationType; + + /** + * FirewallSpec provides firewall specific parameters if allocationType is firewall + * + * @generated from field: metalstack.api.v2.FirewallSpec firewall_spec = 19; + */ + firewallSpec?: FirewallSpec; +}; + +/** + * Describes the message metalstack.api.v2.MachineServiceCreateRequest. + * Use `create(MachineServiceCreateRequestSchema)` to create a new message. + */ +export const MachineServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 2); + +/** + * FirewallSpec contains firewall specific firewall creation parameters + * + * @generated from message metalstack.api.v2.FirewallSpec + */ +export type FirewallSpec = Message<"metalstack.api.v2.FirewallSpec"> & { + /** + * FirewallRules to be applied if this is a firewall + * + * @generated from field: metalstack.api.v2.FirewallRules firewall_rules = 19; + */ + firewallRules?: FirewallRules; +}; + +/** + * Describes the message metalstack.api.v2.FirewallSpec. + * Use `create(FirewallSpecSchema)` to create a new message. + */ +export const FirewallSpecSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 3); + +/** + * MachineServiceCreateResponse is the request payload for a machine create response + * + * @generated from message metalstack.api.v2.MachineServiceCreateResponse + */ +export type MachineServiceCreateResponse = Message<"metalstack.api.v2.MachineServiceCreateResponse"> & { + /** + * Machine which was created + * + * @generated from field: metalstack.api.v2.Machine machine = 1; + */ + machine?: Machine; +}; + +/** + * Describes the message metalstack.api.v2.MachineServiceCreateResponse. + * Use `create(MachineServiceCreateResponseSchema)` to create a new message. + */ +export const MachineServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 4); + +/** + * MachineServiceUpdateRequest is the request payload for a machine update request + * + * @generated from message metalstack.api.v2.MachineServiceUpdateRequest + */ +export type MachineServiceUpdateRequest = Message<"metalstack.api.v2.MachineServiceUpdateRequest"> & { + /** + * UUID of the machine to modify + * + * @generated from field: string uuid = 1; + */ + uuid: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * Project of the machine + * + * @generated from field: string project = 3; + */ + project: string; + + /** + * Description of this machine allocation + * + * @generated from field: optional string description = 4; + */ + description?: string; + + /** + * Labels to update on this machine allocation + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 5; + */ + labels?: UpdateLabels; + + /** + * SSHPublicKeys which should be update of this machine allocation + * + * @generated from field: repeated string ssh_public_keys = 6; + */ + sshPublicKeys: string[]; +}; + +/** + * Describes the message metalstack.api.v2.MachineServiceUpdateRequest. + * Use `create(MachineServiceUpdateRequestSchema)` to create a new message. + */ +export const MachineServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 5); + +/** + * MachineServiceUpdateResponse is the request payload for a machine update response + * + * @generated from message metalstack.api.v2.MachineServiceUpdateResponse + */ +export type MachineServiceUpdateResponse = Message<"metalstack.api.v2.MachineServiceUpdateResponse"> & { + /** + * Machine which was updated + * + * @generated from field: metalstack.api.v2.Machine machine = 1; + */ + machine?: Machine; +}; + +/** + * Describes the message metalstack.api.v2.MachineServiceUpdateResponse. + * Use `create(MachineServiceUpdateResponseSchema)` to create a new message. + */ +export const MachineServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 6); + +/** + * MachineServiceListRequest is the request payload for a machine list request + * + * @generated from message metalstack.api.v2.MachineServiceListRequest + */ +export type MachineServiceListRequest = Message<"metalstack.api.v2.MachineServiceListRequest"> & { + /** + * Project of the machines to list + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * Query to list one ore more machines + * + * @generated from field: metalstack.api.v2.MachineQuery query = 2; + */ + query?: MachineQuery; +}; + +/** + * Describes the message metalstack.api.v2.MachineServiceListRequest. + * Use `create(MachineServiceListRequestSchema)` to create a new message. + */ +export const MachineServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 7); + +/** + * MachineServiceListResponse is the request payload for a machine list response + * + * @generated from message metalstack.api.v2.MachineServiceListResponse + */ +export type MachineServiceListResponse = Message<"metalstack.api.v2.MachineServiceListResponse"> & { + /** + * Machines are the machines requested by a list request + * + * @generated from field: repeated metalstack.api.v2.Machine machines = 1; + */ + machines: Machine[]; +}; + +/** + * Describes the message metalstack.api.v2.MachineServiceListResponse. + * Use `create(MachineServiceListResponseSchema)` to create a new message. + */ +export const MachineServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 8); + +/** + * MachineServiceDeleteRequest is the request payload for a machine delete request + * + * @generated from message metalstack.api.v2.MachineServiceDeleteRequest + */ +export type MachineServiceDeleteRequest = Message<"metalstack.api.v2.MachineServiceDeleteRequest"> & { + /** + * UUID of the machine to delete + * + * @generated from field: string uuid = 1; + */ + uuid: string; + + /** + * Project of the machine + * + * @generated from field: string project = 2; + */ + project: string; +}; + +/** + * Describes the message metalstack.api.v2.MachineServiceDeleteRequest. + * Use `create(MachineServiceDeleteRequestSchema)` to create a new message. + */ +export const MachineServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 9); + +/** + * MachineServiceDeleteResponse is the request payload for a machine delete response + * + * @generated from message metalstack.api.v2.MachineServiceDeleteResponse + */ +export type MachineServiceDeleteResponse = Message<"metalstack.api.v2.MachineServiceDeleteResponse"> & { + /** + * Machine which was deleteds + * + * @generated from field: metalstack.api.v2.Machine machine = 1; + */ + machine?: Machine; +}; + +/** + * Describes the message metalstack.api.v2.MachineServiceDeleteResponse. + * Use `create(MachineServiceDeleteResponseSchema)` to create a new message. + */ +export const MachineServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 10); + +/** + * Machine represents a physical bare metal machine. + * + * @generated from message metalstack.api.v2.Machine + */ +export type Machine = Message<"metalstack.api.v2.Machine"> & { + /** + * UUID of this machine + * + * @generated from field: string uuid = 1; + */ + uuid: string; + + /** + * Meta for this machine + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + + /** + * Partition where this machine resides + * + * @generated from field: metalstack.api.v2.Partition partition = 3; + */ + partition?: Partition; + + /** + * Rack where this machine is located + * + * @generated from field: string rack = 4; + */ + rack: string; + + /** + * Size of this machine + * + * @generated from field: metalstack.api.v2.Size size = 5; + */ + size?: Size; + + /** + * Hardware specs of this machine + * + * @generated from field: metalstack.api.v2.MachineHardware hardware = 6; + */ + hardware?: MachineHardware; + + /** + * Bios details for this machine + * + * @generated from field: metalstack.api.v2.MachineBios bios = 7; + */ + bios?: MachineBios; + + /** + * Allocation details + * + * @generated from field: metalstack.api.v2.MachineAllocation allocation = 8; + */ + allocation?: MachineAllocation; + + /** + * Status contains several status details related to this machine + * + * @generated from field: metalstack.api.v2.MachineStatus status = 9; + */ + status?: MachineStatus; + + /** + * MachineRecentProvisioningEvents contains the recent provisioning events + * + * @generated from field: metalstack.api.v2.MachineRecentProvisioningEvents recent_provisioning_events = 10; + */ + recentProvisioningEvents?: MachineRecentProvisioningEvents; +}; + +/** + * Describes the message metalstack.api.v2.Machine. + * Use `create(MachineSchema)` to create a new message. + */ +export const MachineSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 11); + +/** + * MachineStatus contains several status details related to this machine + * + * @generated from message metalstack.api.v2.MachineStatus + */ +export type MachineStatus = Message<"metalstack.api.v2.MachineStatus"> & { + /** + * Condition describes the availability + * + * @generated from field: metalstack.api.v2.MachineCondition condition = 1; + */ + condition?: MachineCondition; + + /** + * LEDState indicates the state of the indicator LED on this machine + * + * @generated from field: metalstack.api.v2.MachineChassisIdentifyLEDState led_state = 2; + */ + ledState?: MachineChassisIdentifyLEDState; + + /** + * Liveliness of this machine + * + * @generated from field: metalstack.api.v2.MachineLiveliness liveliness = 3; + */ + liveliness: MachineLiveliness; + + /** + * MetalHammerVersion the version of metal hammer which put the machine in waiting state + * + * @generated from field: string metal_hammer_version = 4; + */ + metalHammerVersion: string; +}; + +/** + * Describes the message metalstack.api.v2.MachineStatus. + * Use `create(MachineStatusSchema)` to create a new message. + */ +export const MachineStatusSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 12); + +/** + * MachineCondition describes the availability of this machine + * + * @generated from message metalstack.api.v2.MachineCondition + */ +export type MachineCondition = Message<"metalstack.api.v2.MachineCondition"> & { + /** + * State the state of this machine. empty means available for all + * + * @generated from field: metalstack.api.v2.MachineState state = 1; + */ + state: MachineState; + + /** + * Description a description why this machine is in the given state + * + * @generated from field: string description = 2; + */ + description: string; + + /** + * Issuer the user that changed the state + * + * @generated from field: string issuer = 3; + */ + issuer: string; +}; + +/** + * Describes the message metalstack.api.v2.MachineCondition. + * Use `create(MachineConditionSchema)` to create a new message. + */ +export const MachineConditionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 13); + +/** + * MachineAllocation contains properties if this machine is allocated + * + * @generated from message metalstack.api.v2.MachineAllocation + */ +export type MachineAllocation = Message<"metalstack.api.v2.MachineAllocation"> & { + /** + * UUID of this machine allocation + * + * @generated from field: string uuid = 1; + */ + uuid: string; + + /** + * Meta for this machine allocation + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + + /** + * Name of this allocation + * + * @generated from field: string name = 3; + */ + name: string; + + /** + * Description of this allocation + * + * @generated from field: string description = 4; + */ + description: string; + + /** + * Created By indicates who created this machine allocation + * + * @generated from field: string created_by = 5; + */ + createdBy: string; + + /** + * Project of the allocation + * + * @generated from field: string project = 6; + */ + project: string; + + /** + * Image to be used to install on this machine + * + * @generated from field: metalstack.api.v2.Image image = 7; + */ + image?: Image; + + /** + * FilesystemLayout to create on the disks + * + * @generated from field: metalstack.api.v2.FilesystemLayout filesystem_layout = 8; + */ + filesystemLayout?: FilesystemLayout; + + /** + * Networks this machine should be attached to + * + * @generated from field: repeated metalstack.api.v2.MachineNetwork networks = 9; + */ + networks: MachineNetwork[]; + + /** + * Hostname of the allocated machine + * + * @generated from field: string hostname = 10; + */ + hostname: string; + + /** + * SSHPublicKeys which should be installed on this machine + * + * @generated from field: repeated string ssh_public_keys = 11; + */ + sshPublicKeys: string[]; + + /** + * Userdata contains instructions required to bootstrap the machine. + * AWS limits the max userdata size to 16k, lets allow twice as much + * + * @generated from field: string userdata = 12; + */ + userdata: string; + + /** + * AllocationType of this machine + * + * @generated from field: metalstack.api.v2.MachineAllocationType allocation_type = 13; + */ + allocationType: MachineAllocationType; + + /** + * FirewallRules to be applied if this is a firewall + * + * @generated from field: metalstack.api.v2.FirewallRules firewall_rules = 14; + */ + firewallRules?: FirewallRules; + + /** + * DNSServers for this machine + * + * @generated from field: repeated metalstack.api.v2.DNSServer dns_server = 15; + */ + dnsServer: DNSServer[]; + + /** + * NTPServers for this machine + * + * @generated from field: repeated metalstack.api.v2.NTPServer ntp_server = 16; + */ + ntpServer: NTPServer[]; + + /** + * VPN connection configuration + * + * @generated from field: metalstack.api.v2.MachineVPN vpn = 17; + */ + vpn?: MachineVPN; +}; + +/** + * Describes the message metalstack.api.v2.MachineAllocation. + * Use `create(MachineAllocationSchema)` to create a new message. + */ +export const MachineAllocationSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 14); + +/** + * MachineAllocationNetwork defines which network should be attached to a machine and if ips should be autoacquired + * + * @generated from message metalstack.api.v2.MachineAllocationNetwork + */ +export type MachineAllocationNetwork = Message<"metalstack.api.v2.MachineAllocationNetwork"> & { + /** + * Network the id of the network that this machine will be placed in + * + * @generated from field: string network = 1; + */ + network: string; + + /** + * NoAutoAcquireIp will prevent automatic ip acquirement per network if set to true. + * By default one ip address is acquired per network for the machine + * + * @generated from field: optional bool no_auto_acquire_ip = 2; + */ + noAutoAcquireIp?: boolean; +}; + +/** + * Describes the message metalstack.api.v2.MachineAllocationNetwork. + * Use `create(MachineAllocationNetworkSchema)` to create a new message. + */ +export const MachineAllocationNetworkSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 15); + +/** + * FirewallRules can be defined during firewall allocation + * + * @generated from message metalstack.api.v2.FirewallRules + */ +export type FirewallRules = Message<"metalstack.api.v2.FirewallRules"> & { + /** + * Egress list of egress rules to be deployed during firewall allocation + * + * @generated from field: repeated metalstack.api.v2.FirewallEgressRule egress = 1; + */ + egress: FirewallEgressRule[]; + + /** + * Ingress list of ingress rules to be deployed during firewall allocation + * + * @generated from field: repeated metalstack.api.v2.FirewallIngressRule ingress = 2; + */ + ingress: FirewallIngressRule[]; +}; + +/** + * Describes the message metalstack.api.v2.FirewallRules. + * Use `create(FirewallRulesSchema)` to create a new message. + */ +export const FirewallRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 16); + +/** + * FirewallEgressRule defines rules for outgoing traffic + * + * @generated from message metalstack.api.v2.FirewallEgressRule + */ +export type FirewallEgressRule = Message<"metalstack.api.v2.FirewallEgressRule"> & { + /** + * Protocol the protocol for the rule, defaults to tcp + * + * @generated from field: metalstack.api.v2.IPProtocol protocol = 1; + */ + protocol: IPProtocol; + + /** + * Ports the ports affected by this rule + * + * @generated from field: repeated uint32 ports = 2; + */ + ports: number[]; + + /** + * To the destination cidrs affected by this rule + * + * @generated from field: repeated string to = 3; + */ + to: string[]; + + /** + * Comment for this rule + * + * @generated from field: string comment = 4; + */ + comment: string; +}; + +/** + * Describes the message metalstack.api.v2.FirewallEgressRule. + * Use `create(FirewallEgressRuleSchema)` to create a new message. + */ +export const FirewallEgressRuleSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 17); + +/** + * FirewallIngressRule defines rules for incoming traffic + * + * @generated from message metalstack.api.v2.FirewallIngressRule + */ +export type FirewallIngressRule = Message<"metalstack.api.v2.FirewallIngressRule"> & { + /** + * Protocol the protocol for the rule, defaults to tcp + * + * @generated from field: metalstack.api.v2.IPProtocol protocol = 1; + */ + protocol: IPProtocol; + + /** + * Ports the ports affected by this rule + * + * @generated from field: repeated uint32 ports = 2; + */ + ports: number[]; + + /** + * To the destination cidrs affected by this rule + * + * @generated from field: repeated string to = 3; + */ + to: string[]; + + /** + * From the source cidrs affected by this rule + * + * @generated from field: repeated string from = 4; + */ + from: string[]; + + /** + * Comment for this rule + * + * @generated from field: string comment = 5; + */ + comment: string; +}; + +/** + * Describes the message metalstack.api.v2.FirewallIngressRule. + * Use `create(FirewallIngressRuleSchema)` to create a new message. + */ +export const FirewallIngressRuleSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 18); + +/** + * MachineNetwork contains details which network should be created on a allocated machine + * + * @generated from message metalstack.api.v2.MachineNetwork + */ +export type MachineNetwork = Message<"metalstack.api.v2.MachineNetwork"> & { + /** + * Network the networkID of the allocated machine in this vrf + * + * @generated from field: string network = 1; + */ + network: string; + + /** + * Prefixes the prefixes of this network + * + * @generated from field: repeated string prefixes = 2; + */ + prefixes: string[]; + + /** + * DestinationPrefixes prefixes that are reachable within this network + * + * @generated from field: repeated string destination_prefixes = 3; + */ + destinationPrefixes: string[]; + + /** + * IPs the ip addresses of the allocated machine in this vrf + * + * @generated from field: repeated string ips = 4; + */ + ips: string[]; + + /** + * NetworkType the type of network of this vrf + * + * @generated from field: metalstack.api.v2.NetworkType network_type = 5; + */ + networkType: NetworkType; + + /** + * NatType what type of nat if any should be used + * + * @generated from field: metalstack.api.v2.NATType nat_type = 6; + */ + natType: NATType; + + /** + * VRF the vrf id + * + * @generated from field: uint64 vrf = 7; + */ + vrf: bigint; + + /** + * ASN the autonomous system number for this network + * + * @generated from field: uint32 asn = 8; + */ + asn: number; +}; + +/** + * Describes the message metalstack.api.v2.MachineNetwork. + * Use `create(MachineNetworkSchema)` to create a new message. + */ +export const MachineNetworkSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 19); + +/** + * MachineHardware contains hardware details + * + * @generated from message metalstack.api.v2.MachineHardware + */ +export type MachineHardware = Message<"metalstack.api.v2.MachineHardware"> & { + /** + * Memory the total memory of the machine in bytes + * + * @generated from field: uint64 memory = 1; + */ + memory: bigint; + + /** + * Disks the list of block devices of this machine + * + * @generated from field: repeated metalstack.api.v2.MachineBlockDevice disks = 3; + */ + disks: MachineBlockDevice[]; + + /** + * CPUs the cpu details + * + * @generated from field: repeated metalstack.api.v2.MetalCPU cpus = 4; + */ + cpus: MetalCPU[]; + + /** + * GPUs the gpu details + * + * @generated from field: repeated metalstack.api.v2.MetalGPU gpus = 5; + */ + gpus: MetalGPU[]; + + /** + * Nics the list of network interfaces of this machine + * + * @generated from field: repeated metalstack.api.v2.MachineNic nics = 6; + */ + nics: MachineNic[]; +}; + +/** + * Describes the message metalstack.api.v2.MachineHardware. + * Use `create(MachineHardwareSchema)` to create a new message. + */ +export const MachineHardwareSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 20); + +/** + * MetalCPU contains details of a cpu in this machine + * + * @generated from message metalstack.api.v2.MetalCPU + */ +export type MetalCPU = Message<"metalstack.api.v2.MetalCPU"> & { + /** + * Vendor of this cpu + * + * @generated from field: string vendor = 1; + */ + vendor: string; + + /** + * Model of this cpu + * + * @generated from field: string model = 2; + */ + model: string; + + /** + * Cores of this cpu + * + * @generated from field: uint32 cores = 3; + */ + cores: number; + + /** + * Threads of this cpu + * + * @generated from field: uint32 threads = 4; + */ + threads: number; +}; + +/** + * Describes the message metalstack.api.v2.MetalCPU. + * Use `create(MetalCPUSchema)` to create a new message. + */ +export const MetalCPUSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 21); + +/** + * MetalGPU contains details of a gpu in this machine + * + * @generated from message metalstack.api.v2.MetalGPU + */ +export type MetalGPU = Message<"metalstack.api.v2.MetalGPU"> & { + /** + * Vendor of this gpu + * + * @generated from field: string vendor = 1; + */ + vendor: string; + + /** + * Model of this gpu + * + * @generated from field: string model = 2; + */ + model: string; +}; + +/** + * Describes the message metalstack.api.v2.MetalGPU. + * Use `create(MetalGPUSchema)` to create a new message. + */ +export const MetalGPUSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 22); + +/** + * MachineNic contains details of a network interface of this machine + * + * @generated from message metalstack.api.v2.MachineNic + */ +export type MachineNic = Message<"metalstack.api.v2.MachineNic"> & { + /** + * Mac the macaddress of this interface + * + * @generated from field: string mac = 1; + */ + mac: string; + + /** + * Name of this interface + * + * @generated from field: string name = 2; + */ + name: string; + + /** + * Identifier the unique identifier of this network interface + * + * @generated from field: string identifier = 3; + */ + identifier: string; + + /** + * Vendor of this network card + * + * @generated from field: string vendor = 4; + */ + vendor: string; + + /** + * Model of this network card + * + * @generated from field: string model = 5; + */ + model: string; + + /** + * Speed in bits/second of this network card + * + * @generated from field: uint64 speed = 6; + */ + speed: bigint; + + /** + * Neighbors the neighbors visible to this network interface + * + * @generated from field: repeated metalstack.api.v2.MachineNic neighbors = 7; + */ + neighbors: MachineNic[]; +}; + +/** + * Describes the message metalstack.api.v2.MachineNic. + * Use `create(MachineNicSchema)` to create a new message. + */ +export const MachineNicSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 23); + +/** + * MachineBlockDevice contains details of a block device of this machine + * + * @generated from message metalstack.api.v2.MachineBlockDevice + */ +export type MachineBlockDevice = Message<"metalstack.api.v2.MachineBlockDevice"> & { + /** + * Name of this block device + * + * @generated from field: string name = 1; + */ + name: string; + + /** + * Size of this block device in bytes + * + * @generated from field: uint64 size = 2; + */ + size: bigint; +}; + +/** + * Describes the message metalstack.api.v2.MachineBlockDevice. + * Use `create(MachineBlockDeviceSchema)` to create a new message. + */ +export const MachineBlockDeviceSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 24); + +/** + * MachineChassisIdentifyLEDState describes the identifier led state + * + * @generated from message metalstack.api.v2.MachineChassisIdentifyLEDState + */ +export type MachineChassisIdentifyLEDState = Message<"metalstack.api.v2.MachineChassisIdentifyLEDState"> & { + /** + * Value the state of this chassis identify LED. empty means LED-OFF + * + * @generated from field: string value = 1; + */ + value: string; + + /** + * Description a description why this chassis identify LED is in the given state + * + * @generated from field: string description = 2; + */ + description: string; +}; + +/** + * Describes the message metalstack.api.v2.MachineChassisIdentifyLEDState. + * Use `create(MachineChassisIdentifyLEDStateSchema)` to create a new message. + */ +export const MachineChassisIdentifyLEDStateSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 25); + +/** + * MachineBios contains BIOS details of this machine + * + * @generated from message metalstack.api.v2.MachineBios + */ +export type MachineBios = Message<"metalstack.api.v2.MachineBios"> & { + /** + * Version the bios version + * + * @generated from field: string version = 1; + */ + version: string; + + /** + * Vendor the bios vendor + * + * @generated from field: string vendor = 2; + */ + vendor: string; + + /** + * Date the bios date as string because every vendor has different ideas howto describe the date + * + * @generated from field: string date = 3; + */ + date: string; +}; + +/** + * Describes the message metalstack.api.v2.MachineBios. + * Use `create(MachineBiosSchema)` to create a new message. + */ +export const MachineBiosSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 26); + +/** + * MachineRecentProvisioningEvents the recent provisioning events for this machine + * + * @generated from message metalstack.api.v2.MachineRecentProvisioningEvents + */ +export type MachineRecentProvisioningEvents = Message<"metalstack.api.v2.MachineRecentProvisioningEvents"> & { + /** + * Events the log of recent machine provisioning events + * + * @generated from field: repeated metalstack.api.v2.MachineProvisioningEvent events = 1; + */ + events: MachineProvisioningEvent[]; + + /** + * LastEventTime the time where the last event was received + * + * @generated from field: google.protobuf.Timestamp last_event_time = 2; + */ + lastEventTime?: Timestamp; + + /** + * LastErrorEvent the last erroneous event received + * + * @generated from field: metalstack.api.v2.MachineProvisioningEvent last_error_event = 3; + */ + lastErrorEvent?: MachineProvisioningEvent; + + /** + * State can be either CrashLoop, FailedReclaim or something else + * + * @generated from field: metalstack.api.v2.MachineProvisioningEventState state = 4; + */ + state: MachineProvisioningEventState; +}; + +/** + * Describes the message metalstack.api.v2.MachineRecentProvisioningEvents. + * Use `create(MachineRecentProvisioningEventsSchema)` to create a new message. + */ +export const MachineRecentProvisioningEventsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 27); + +/** + * MachineProvisioningEvent is a event which has occurred during provisioning + * + * @generated from message metalstack.api.v2.MachineProvisioningEvent + */ +export type MachineProvisioningEvent = Message<"metalstack.api.v2.MachineProvisioningEvent"> & { + /** + * Time the time that this event was received + * + * @generated from field: google.protobuf.Timestamp time = 1; + */ + time?: Timestamp; + + /** + * Event the event emitted by the machine + * + * @generated from field: metalstack.api.v2.MachineProvisioningEventType event = 2; + */ + event: MachineProvisioningEventType; + + /** + * Message an additional message to add to the event + * + * @generated from field: string message = 3; + */ + message: string; +}; + +/** + * Describes the message metalstack.api.v2.MachineProvisioningEvent. + * Use `create(MachineProvisioningEventSchema)` to create a new message. + */ +export const MachineProvisioningEventSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 28); + +/** + * MachineVPN contains configuration data for the VPN connection + * + * @generated from message metalstack.api.v2.MachineVPN + */ +export type MachineVPN = Message<"metalstack.api.v2.MachineVPN"> & { + /** + * Address of VPN control plane + * + * @generated from field: string control_plane_address = 1; + */ + controlPlaneAddress: string; + + /** + * Auth key used to connect to VPN + * + * @generated from field: string auth_key = 2; + */ + authKey: string; + + /** + * Connected indicate if this machine is connected to the VPN + * + * TODO add machine ips + * + * @generated from field: bool connected = 3; + */ + connected: boolean; +}; + +/** + * Describes the message metalstack.api.v2.MachineVPN. + * Use `create(MachineVPNSchema)` to create a new message. + */ +export const MachineVPNSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 29); + +/** + * MachineQuery contains fields which can be specified to list specific machines. + * + * @generated from message metalstack.api.v2.MachineQuery + */ +export type MachineQuery = Message<"metalstack.api.v2.MachineQuery"> & { + /** + * UUID of the machine to get + * + * @generated from field: optional string uuid = 1; + */ + uuid?: string; + + /** + * Name of the machine to get + * + * @generated from field: optional string name = 2; + */ + name?: string; + + /** + * Partition of the machine to get + * + * @generated from field: optional string partition = 3; + */ + partition?: string; + + /** + * Size of the machine to get + * + * @generated from field: optional string size = 4; + */ + size?: string; + + /** + * Rack of the machine to get + * + * @generated from field: optional string rack = 5; + */ + rack?: string; + + /** + * Labels for which this machine should get filtered + * + * @generated from field: optional metalstack.api.v2.Labels labels = 6; + */ + labels?: Labels; + + /** + * Allocation specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineAllocationQuery allocation = 7; + */ + allocation?: MachineAllocationQuery; + + /** + * Network specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineNetworkQuery network = 8; + */ + network?: MachineNetworkQuery; + + /** + * Nic specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineNicQuery nic = 9; + */ + nic?: MachineNicQuery; + + /** + * Disk specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineDiskQuery disk = 10; + */ + disk?: MachineDiskQuery; + + /** + * IPMI specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineIPMIQuery ipmi = 11; + */ + ipmi?: MachineIPMIQuery; + + /** + * FRU specific machine queries + * + * @generated from field: optional metalstack.api.v2.MachineFRUQuery fru = 12; + */ + fru?: MachineFRUQuery; + + /** + * Hardware specific machine query + * + * @generated from field: optional metalstack.api.v2.MachineHardwareQuery hardware = 13; + */ + hardware?: MachineHardwareQuery; + + /** + * State this machine has + * + * @generated from field: optional metalstack.api.v2.MachineState state = 14; + */ + state?: MachineState; +}; + +/** + * Describes the message metalstack.api.v2.MachineQuery. + * Use `create(MachineQuerySchema)` to create a new message. + */ +export const MachineQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 30); + +/** + * MachineAllocationQuery allocation specific query parameters + * + * @generated from message metalstack.api.v2.MachineAllocationQuery + */ +export type MachineAllocationQuery = Message<"metalstack.api.v2.MachineAllocationQuery"> & { + /** + * UUID of the allocation of the machine to get + * + * @generated from field: optional string uuid = 1; + */ + uuid?: string; + + /** + * Name of the machine to get + * + * @generated from field: optional string name = 2; + */ + name?: string; + + /** + * Project of the machine to get + * + * @generated from field: optional string project = 3; + */ + project?: string; + + /** + * Image of the machine to get + * + * @generated from field: optional string image = 4; + */ + image?: string; + + /** + * FilesystemLayout of the machine to get + * + * @generated from field: optional string filesystem_layout = 5; + */ + filesystemLayout?: string; + + /** + * Hostname of the machine to get + * + * @generated from field: optional string hostname = 6; + */ + hostname?: string; + + /** + * AllocationType of this machine + * + * @generated from field: optional metalstack.api.v2.MachineAllocationType allocation_type = 7; + */ + allocationType?: MachineAllocationType; + + /** + * Labels for which this machine allocation should get filtered + * + * @generated from field: optional metalstack.api.v2.Labels labels = 8; + */ + labels?: Labels; +}; + +/** + * Describes the message metalstack.api.v2.MachineAllocationQuery. + * Use `create(MachineAllocationQuerySchema)` to create a new message. + */ +export const MachineAllocationQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 31); + +/** + * MachineNetworkQuery network specific machine queries + * + * @generated from message metalstack.api.v2.MachineNetworkQuery + */ +export type MachineNetworkQuery = Message<"metalstack.api.v2.MachineNetworkQuery"> & { + /** + * Networks this machine is connected to + * + * @generated from field: repeated string networks = 1; + */ + networks: string[]; + + /** + * Prefixes this machine is connected to + * + * @generated from field: repeated string prefixes = 2; + */ + prefixes: string[]; + + /** + * DestinationPrefixes this machine is connected to + * + * @generated from field: repeated string destination_prefixes = 3; + */ + destinationPrefixes: string[]; + + /** + * IPs this machine has + * + * @generated from field: repeated string ips = 4; + */ + ips: string[]; + + /** + * VRFs this machine is connected to + * + * @generated from field: repeated uint64 vrfs = 5; + */ + vrfs: bigint[]; + + /** + * ASNs this machine is connected to + * + * @generated from field: repeated uint32 asns = 6; + */ + asns: number[]; +}; + +/** + * Describes the message metalstack.api.v2.MachineNetworkQuery. + * Use `create(MachineNetworkQuerySchema)` to create a new message. + */ +export const MachineNetworkQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 32); + +/** + * MachineNicQuery nic specific machine queries + * + * @generated from message metalstack.api.v2.MachineNicQuery + */ +export type MachineNicQuery = Message<"metalstack.api.v2.MachineNicQuery"> & { + /** + * Macs this machine nic has + * + * @generated from field: repeated string macs = 1; + */ + macs: string[]; + + /** + * Names this machine nic has + * + * @generated from field: repeated string names = 2; + */ + names: string[]; + + /** + * NeighborMacs this machine nic has + * + * @generated from field: repeated string neighbor_macs = 3; + */ + neighborMacs: string[]; + + /** + * NeighborNames this machine nic has + * + * @generated from field: repeated string neighbor_names = 4; + */ + neighborNames: string[]; +}; + +/** + * Describes the message metalstack.api.v2.MachineNicQuery. + * Use `create(MachineNicQuerySchema)` to create a new message. + */ +export const MachineNicQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 33); + +/** + * MachineDiskQuery disk specific machine queries + * + * @generated from message metalstack.api.v2.MachineDiskQuery + */ +export type MachineDiskQuery = Message<"metalstack.api.v2.MachineDiskQuery"> & { + /** + * Names of disks in this machine + * + * @generated from field: repeated string names = 1; + */ + names: string[]; + + /** + * Sizes of disks in this machine + * + * @generated from field: repeated uint64 sizes = 2; + */ + sizes: bigint[]; +}; + +/** + * Describes the message metalstack.api.v2.MachineDiskQuery. + * Use `create(MachineDiskQuerySchema)` to create a new message. + */ +export const MachineDiskQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 34); + +/** + * MachineIPMIQuery machine ipmi specific machine queries + * + * @generated from message metalstack.api.v2.MachineIPMIQuery + */ +export type MachineIPMIQuery = Message<"metalstack.api.v2.MachineIPMIQuery"> & { + /** + * Address of the ipmi system of this machine + * + * @generated from field: optional string address = 1; + */ + address?: string; + + /** + * Mac of the ipmi system of this machine + * + * @generated from field: optional string mac = 2; + */ + mac?: string; + + /** + * User of the ipmi system of this machine + * + * @generated from field: optional string user = 3; + */ + user?: string; + + /** + * Interface of the ipmi system of this machine + * + * @generated from field: optional string interface = 4; + */ + interface?: string; +}; + +/** + * Describes the message metalstack.api.v2.MachineIPMIQuery. + * Use `create(MachineIPMIQuerySchema)` to create a new message. + */ +export const MachineIPMIQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 35); + +/** + * MachineFRUQuery machine fru specific machine queries + * + * @generated from message metalstack.api.v2.MachineFRUQuery + */ +export type MachineFRUQuery = Message<"metalstack.api.v2.MachineFRUQuery"> & { + /** + * ChassisPartNumber of this machine + * + * @generated from field: optional string chassis_part_number = 1; + */ + chassisPartNumber?: string; + + /** + * ChassisPartSerial of this machine + * + * @generated from field: optional string chassis_part_serial = 2; + */ + chassisPartSerial?: string; + + /** + * BoardMFG of this machine + * + * @generated from field: optional string board_mfg = 3; + */ + boardMfg?: string; + + /** + * BoardSerial of this machine + * + * @generated from field: optional string board_serial = 4; + */ + boardSerial?: string; + + /** + * BoardPartNumber of this machine + * + * @generated from field: optional string board_part_number = 5; + */ + boardPartNumber?: string; + + /** + * ProductManufacturer of this machine + * + * @generated from field: optional string product_manufacturer = 6; + */ + productManufacturer?: string; + + /** + * ProductPartNumber of this machine + * + * @generated from field: optional string product_part_number = 7; + */ + productPartNumber?: string; + + /** + * ProductSerial of this machine + * + * @generated from field: optional string product_serial = 8; + */ + productSerial?: string; +}; + +/** + * Describes the message metalstack.api.v2.MachineFRUQuery. + * Use `create(MachineFRUQuerySchema)` to create a new message. + */ +export const MachineFRUQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 36); + +/** + * MachineHardwareQuery machine hardware specific machine queries + * + * @generated from message metalstack.api.v2.MachineHardwareQuery + */ +export type MachineHardwareQuery = Message<"metalstack.api.v2.MachineHardwareQuery"> & { + /** + * Memory the total memory of the machine in bytes + * + * @generated from field: optional uint64 memory = 1; + */ + memory?: bigint; + + /** + * CPUCores the number of cpu cores + * + * @generated from field: optional uint32 cpu_cores = 2; + */ + cpuCores?: number; +}; + +/** + * Describes the message metalstack.api.v2.MachineHardwareQuery. + * Use `create(MachineHardwareQuerySchema)` to create a new message. + */ +export const MachineHardwareQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_machine, 37); + +/** + * IPProtocol defines tcp|udp + * + * @generated from enum metalstack.api.v2.IPProtocol + */ +export enum IPProtocol { + /** + * IP_PROTOCOL_UNSPECIFIED is not specified + * + * @generated from enum value: IP_PROTOCOL_UNSPECIFIED = 0; + */ + IP_PROTOCOL_UNSPECIFIED = 0, + + /** + * IP_PROTOCOL_TCP is tcp + * + * @generated from enum value: IP_PROTOCOL_TCP = 1; + */ + IP_PROTOCOL_TCP = 1, + + /** + * IP_PROTOCOL_UDP is udp + * + * @generated from enum value: IP_PROTOCOL_UDP = 2; + */ + IP_PROTOCOL_UDP = 2, +} + +/** + * Describes the enum metalstack.api.v2.IPProtocol. + */ +export const IPProtocolSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_machine, 0); + +/** + * MachineState defines if the machine was locked or reserved from a operator + * + * @generated from enum metalstack.api.v2.MachineState + */ +export enum MachineState { + /** + * MACHINE_STATE_UNSPECIFIED is not specified + * + * @generated from enum value: MACHINE_STATE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * MACHINE_STATE_RESERVED this machine is reserved + * + * @generated from enum value: MACHINE_STATE_RESERVED = 1; + */ + RESERVED = 1, + + /** + * MACHINE_STATE_LOCKED this machine is locked + * + * @generated from enum value: MACHINE_STATE_LOCKED = 2; + */ + LOCKED = 2, + + /** + * MACHINE_STATE_LOCKED this machine is available for all + * + * @generated from enum value: MACHINE_STATE_AVAILABLE = 3; + */ + AVAILABLE = 3, +} + +/** + * Describes the enum metalstack.api.v2.MachineState. + */ +export const MachineStateSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_machine, 1); + +/** + * MachineProvisioningEventState possible event states + * + * @generated from enum metalstack.api.v2.MachineProvisioningEventState + */ +export enum MachineProvisioningEventState { + /** + * MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED is not specified + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_STATE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP machine is in crash loop + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_STATE_CRASHLOOP = 1; + */ + CRASHLOOP = 1, + + /** + * MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM machine is in failed reclaim + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_STATE_FAILED_RECLAIM = 2; + */ + FAILED_RECLAIM = 2, +} + +/** + * Describes the enum metalstack.api.v2.MachineProvisioningEventState. + */ +export const MachineProvisioningEventStateSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_machine, 2); + +/** + * MachineProvisioningEventType defines in which phase the machine actually is + * + * @generated from enum metalstack.api.v2.MachineProvisioningEventType + */ +export enum MachineProvisioningEventType { + /** + * MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * MACHINE_PROVISIONING_EVENT_TYPE_ALIVE machine is alive + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_ALIVE = 1; + */ + ALIVE = 1, + + /** + * MACHINE_PROVISIONING_EVENT_TYPE_CRASHED machine crashed + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_CRASHED = 2; + */ + CRASHED = 2, + + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING machine is pxe booting into metal-hammer + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PXE_BOOTING = 3; + */ + PXE_BOOTING = 3, + + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT machine got a reboot instruction + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PLANNED_REBOOT = 4; + */ + PLANNED_REBOOT = 4, + + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PREPARING metal-hammer is preparing the machine + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PREPARING = 5; + */ + PREPARING = 5, + + /** + * MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING metal-hammer registers machine at the apiserver + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_REGISTERING = 6; + */ + REGISTERING = 6, + + /** + * MACHINE_PROVISIONING_EVENT_TYPE_WAITING machine is waiting for installation + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_WAITING = 7; + */ + WAITING = 7, + + /** + * MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING metal-hammer is installing the desired os + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_INSTALLING = 8; + */ + INSTALLING = 8, + + /** + * MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL metal-hammer completed installation and boots into target os + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL = 9; + */ + BOOTING_NEW_KERNEL = 9, + + /** + * MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME machine is installed and phones home + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_PHONED_HOME = 10; + */ + PHONED_HOME = 10, + + /** + * MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM machine is not allocated, but phones home + * + * @generated from enum value: MACHINE_PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM = 11; + */ + MACHINE_RECLAIM = 11, +} + +/** + * Describes the enum metalstack.api.v2.MachineProvisioningEventType. + */ +export const MachineProvisioningEventTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_machine, 3); + +/** + * MachineLiveliness specifies the liveliness of a machine + * + * @generated from enum metalstack.api.v2.MachineLiveliness + */ +export enum MachineLiveliness { + /** + * MACHINE_LIVELINESS_UNSPECIFIED is not defined + * + * @generated from enum value: MACHINE_LIVELINESS_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * MACHINE_LIVELINESS_ALIVE liveliness is alive + * + * @generated from enum value: MACHINE_LIVELINESS_ALIVE = 1; + */ + ALIVE = 1, + + /** + * MACHINE_LIVELINESS_DEAD liveliness is dead + * + * @generated from enum value: MACHINE_LIVELINESS_DEAD = 2; + */ + DEAD = 2, + + /** + * MACHINE_LIVELINESS_UNKNOWN liveliness is unknown + * + * @generated from enum value: MACHINE_LIVELINESS_UNKNOWN = 3; + */ + UNKNOWN = 3, +} + +/** + * Describes the enum metalstack.api.v2.MachineLiveliness. + */ +export const MachineLivelinessSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_machine, 4); + +/** + * MachineAllocationType defines if this is a machine or a firewall + * + * @generated from enum metalstack.api.v2.MachineAllocationType + */ +export enum MachineAllocationType { + /** + * MACHINE_ALLOCATION_TYPE_UNSPECIFIED is unspecified + * + * @generated from enum value: MACHINE_ALLOCATION_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * MACHINE_ALLOCATION_TYPE_MACHINE is a machine + * + * @generated from enum value: MACHINE_ALLOCATION_TYPE_MACHINE = 1; + */ + MACHINE = 1, + + /** + * MACHINE_ALLOCATION_TYPE_FIREWALL is a firewall + * + * @generated from enum value: MACHINE_ALLOCATION_TYPE_FIREWALL = 2; + */ + FIREWALL = 2, +} + +/** + * Describes the enum metalstack.api.v2.MachineAllocationType. + */ +export const MachineAllocationTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_machine, 5); + +/** + * MachineService serves machine related functions + * + * @generated from service metalstack.api.v2.MachineService + */ +export const MachineService: GenService<{ + /** + * Get a machine + * + * @generated from rpc metalstack.api.v2.MachineService.Get + */ + get: { + methodKind: "unary"; + input: typeof MachineServiceGetRequestSchema; + output: typeof MachineServiceGetResponseSchema; + }, + /** + * Create a machine + * + * @generated from rpc metalstack.api.v2.MachineService.Create + */ + create: { + methodKind: "unary"; + input: typeof MachineServiceCreateRequestSchema; + output: typeof MachineServiceCreateResponseSchema; + }, + /** + * Update a machine + * + * @generated from rpc metalstack.api.v2.MachineService.Update + */ + update: { + methodKind: "unary"; + input: typeof MachineServiceUpdateRequestSchema; + output: typeof MachineServiceUpdateResponseSchema; + }, + /** + * List all machines + * + * @generated from rpc metalstack.api.v2.MachineService.List + */ + list: { + methodKind: "unary"; + input: typeof MachineServiceListRequestSchema; + output: typeof MachineServiceListResponseSchema; + }, + /** + * Delete a machine + * + * @generated from rpc metalstack.api.v2.MachineService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof MachineServiceDeleteRequestSchema; + output: typeof MachineServiceDeleteResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_machine, 0); + diff --git a/js/metalstack/api/v2/method_pb.d.ts b/js/metalstack/api/v2/method_pb.d.ts new file mode 100644 index 00000000..72d56bb8 --- /dev/null +++ b/js/metalstack/api/v2/method_pb.d.ts @@ -0,0 +1,122 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { AdminRole, InfraRole, ProjectRole, TenantRole } from "./common_pb"; +import type { MethodPermission } from "./token_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/method.proto. + */ +export declare const file_metalstack_api_v2_method: GenFile; +/** + * MethodServiceListRequest is the request payload to list all public methods + * + * @generated from message metalstack.api.v2.MethodServiceListRequest + */ +export type MethodServiceListRequest = Message<"metalstack.api.v2.MethodServiceListRequest"> & {}; +/** + * Describes the message metalstack.api.v2.MethodServiceListRequest. + * Use `create(MethodServiceListRequestSchema)` to create a new message. + */ +export declare const MethodServiceListRequestSchema: GenMessage; +/** + * MethodServiceListResponse is the response payload with all public visible methods + * + * @generated from message metalstack.api.v2.MethodServiceListResponse + */ +export type MethodServiceListResponse = Message<"metalstack.api.v2.MethodServiceListResponse"> & { + /** + * Methods is a list of methods public callable + * + * @generated from field: repeated string methods = 1; + */ + methods: string[]; +}; +/** + * Describes the message metalstack.api.v2.MethodServiceListResponse. + * Use `create(MethodServiceListResponseSchema)` to create a new message. + */ +export declare const MethodServiceListResponseSchema: GenMessage; +/** + * MethodServiceTokenScopedListRequest is the request payload to list all methods callable with the token present in the request + * + * @generated from message metalstack.api.v2.MethodServiceTokenScopedListRequest + */ +export type MethodServiceTokenScopedListRequest = Message<"metalstack.api.v2.MethodServiceTokenScopedListRequest"> & {}; +/** + * Describes the message metalstack.api.v2.MethodServiceTokenScopedListRequest. + * Use `create(MethodServiceTokenScopedListRequestSchema)` to create a new message. + */ +export declare const MethodServiceTokenScopedListRequestSchema: GenMessage; +/** + * MethodServiceTokenScopedListResponse is the response payload which contains all methods which are callable with the given token + * + * @generated from message metalstack.api.v2.MethodServiceTokenScopedListResponse + */ +export type MethodServiceTokenScopedListResponse = Message<"metalstack.api.v2.MethodServiceTokenScopedListResponse"> & { + /** + * Permissions a list of methods which can be called + * + * @generated from field: repeated metalstack.api.v2.MethodPermission permissions = 1; + */ + permissions: MethodPermission[]; + /** + * ProjectRoles associates a project id with the corresponding role of the token owner + * + * @generated from field: map project_roles = 3; + */ + projectRoles: { + [key: string]: ProjectRole; + }; + /** + * TenantRoles associates a tenant id with the corresponding role of the token owner + * + * @generated from field: map tenant_roles = 4; + */ + tenantRoles: { + [key: string]: TenantRole; + }; + /** + * AdminRole defines the admin role of the token owner + * + * @generated from field: optional metalstack.api.v2.AdminRole admin_role = 5; + */ + adminRole?: AdminRole; + /** + * InfraRole defines the infrastructure role of the token owner + * + * @generated from field: optional metalstack.api.v2.InfraRole infra_role = 6; + */ + infraRole?: InfraRole; +}; +/** + * Describes the message metalstack.api.v2.MethodServiceTokenScopedListResponse. + * Use `create(MethodServiceTokenScopedListResponseSchema)` to create a new message. + */ +export declare const MethodServiceTokenScopedListResponseSchema: GenMessage; +/** + * MethodService serves method related functions + * methods are functions in services + * + * @generated from service metalstack.api.v2.MethodService + */ +export declare const MethodService: GenService<{ + /** + * List all public visible methods + * + * @generated from rpc metalstack.api.v2.MethodService.List + */ + list: { + methodKind: "unary"; + input: typeof MethodServiceListRequestSchema; + output: typeof MethodServiceListResponseSchema; + }; + /** + * TokenScopedList all methods callable with the token present in the request + * + * @generated from rpc metalstack.api.v2.MethodService.TokenScopedList + */ + tokenScopedList: { + methodKind: "unary"; + input: typeof MethodServiceTokenScopedListRequestSchema; + output: typeof MethodServiceTokenScopedListResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/method_pb.js b/js/metalstack/api/v2/method_pb.js new file mode 100644 index 00000000..c0f7855f --- /dev/null +++ b/js/metalstack/api/v2/method_pb.js @@ -0,0 +1,38 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/method.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_token } from "./token_pb"; +/** + * Describes the file metalstack/api/v2/method.proto. + */ +export const file_metalstack_api_v2_method = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9tZXRob2QucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIhoKGE1ldGhvZFNlcnZpY2VMaXN0UmVxdWVzdCIsChlNZXRob2RTZXJ2aWNlTGlzdFJlc3BvbnNlEg8KB21ldGhvZHMYASADKAkiJQojTWV0aG9kU2VydmljZVRva2VuU2NvcGVkTGlzdFJlcXVlc3Qi6gQKJE1ldGhvZFNlcnZpY2VUb2tlblNjb3BlZExpc3RSZXNwb25zZRI4CgtwZXJtaXNzaW9ucxgBIAMoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFBlcm1pc3Npb24SYAoNcHJvamVjdF9yb2xlcxgDIAMoCzJJLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VUb2tlblNjb3BlZExpc3RSZXNwb25zZS5Qcm9qZWN0Um9sZXNFbnRyeRJeCgx0ZW5hbnRfcm9sZXMYBCADKAsySC5tZXRhbHN0YWNrLmFwaS52Mi5NZXRob2RTZXJ2aWNlVG9rZW5TY29wZWRMaXN0UmVzcG9uc2UuVGVuYW50Um9sZXNFbnRyeRI/CgphZG1pbl9yb2xlGAUgASgOMhwubWV0YWxzdGFjay5hcGkudjIuQWRtaW5Sb2xlQgi6SAWCAQIQAUgAiAEBEj8KCmluZnJhX3JvbGUYBiABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVJvbGVCCLpIBYIBAhABSAGIAQEaUwoRUHJvamVjdFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGU6AjgBGlEKEFRlbmFudFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZToCOAFCDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUygwIKDU1ldGhvZFNlcnZpY2USZwoETGlzdBIrLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VMaXN0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VMaXN0UmVzcG9uc2UiBNjzGAESiAEKD1Rva2VuU2NvcGVkTGlzdBI2Lm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VUb2tlblNjb3BlZExpc3RSZXF1ZXN0GjcubWV0YWxzdGFjay5hcGkudjIuTWV0aG9kU2VydmljZVRva2VuU2NvcGVkTGlzdFJlc3BvbnNlIgTY8xgDQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC01ldGhvZFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_token]); +/** + * Describes the message metalstack.api.v2.MethodServiceListRequest. + * Use `create(MethodServiceListRequestSchema)` to create a new message. + */ +export const MethodServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_method, 0); +/** + * Describes the message metalstack.api.v2.MethodServiceListResponse. + * Use `create(MethodServiceListResponseSchema)` to create a new message. + */ +export const MethodServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_method, 1); +/** + * Describes the message metalstack.api.v2.MethodServiceTokenScopedListRequest. + * Use `create(MethodServiceTokenScopedListRequestSchema)` to create a new message. + */ +export const MethodServiceTokenScopedListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_method, 2); +/** + * Describes the message metalstack.api.v2.MethodServiceTokenScopedListResponse. + * Use `create(MethodServiceTokenScopedListResponseSchema)` to create a new message. + */ +export const MethodServiceTokenScopedListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_method, 3); +/** + * MethodService serves method related functions + * methods are functions in services + * + * @generated from service metalstack.api.v2.MethodService + */ +export const MethodService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_method, 0); diff --git a/js/metalstack/api/v2/method_pb.ts b/js/metalstack/api/v2/method_pb.ts new file mode 100644 index 00000000..abf03161 --- /dev/null +++ b/js/metalstack/api/v2/method_pb.ts @@ -0,0 +1,149 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/method.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { AdminRole, InfraRole, ProjectRole, TenantRole } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import type { MethodPermission } from "./token_pb"; +import { file_metalstack_api_v2_token } from "./token_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/method.proto. + */ +export const file_metalstack_api_v2_method: GenFile = /*@__PURE__*/ + fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9tZXRob2QucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIhoKGE1ldGhvZFNlcnZpY2VMaXN0UmVxdWVzdCIsChlNZXRob2RTZXJ2aWNlTGlzdFJlc3BvbnNlEg8KB21ldGhvZHMYASADKAkiJQojTWV0aG9kU2VydmljZVRva2VuU2NvcGVkTGlzdFJlcXVlc3Qi6gQKJE1ldGhvZFNlcnZpY2VUb2tlblNjb3BlZExpc3RSZXNwb25zZRI4CgtwZXJtaXNzaW9ucxgBIAMoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFBlcm1pc3Npb24SYAoNcHJvamVjdF9yb2xlcxgDIAMoCzJJLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VUb2tlblNjb3BlZExpc3RSZXNwb25zZS5Qcm9qZWN0Um9sZXNFbnRyeRJeCgx0ZW5hbnRfcm9sZXMYBCADKAsySC5tZXRhbHN0YWNrLmFwaS52Mi5NZXRob2RTZXJ2aWNlVG9rZW5TY29wZWRMaXN0UmVzcG9uc2UuVGVuYW50Um9sZXNFbnRyeRI/CgphZG1pbl9yb2xlGAUgASgOMhwubWV0YWxzdGFjay5hcGkudjIuQWRtaW5Sb2xlQgi6SAWCAQIQAUgAiAEBEj8KCmluZnJhX3JvbGUYBiABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVJvbGVCCLpIBYIBAhABSAGIAQEaUwoRUHJvamVjdFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGU6AjgBGlEKEFRlbmFudFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZToCOAFCDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUygwIKDU1ldGhvZFNlcnZpY2USZwoETGlzdBIrLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VMaXN0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VMaXN0UmVzcG9uc2UiBNjzGAESiAEKD1Rva2VuU2NvcGVkTGlzdBI2Lm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VUb2tlblNjb3BlZExpc3RSZXF1ZXN0GjcubWV0YWxzdGFjay5hcGkudjIuTWV0aG9kU2VydmljZVRva2VuU2NvcGVkTGlzdFJlc3BvbnNlIgTY8xgDQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC01ldGhvZFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_token]); + +/** + * MethodServiceListRequest is the request payload to list all public methods + * + * @generated from message metalstack.api.v2.MethodServiceListRequest + */ +export type MethodServiceListRequest = Message<"metalstack.api.v2.MethodServiceListRequest"> & { +}; + +/** + * Describes the message metalstack.api.v2.MethodServiceListRequest. + * Use `create(MethodServiceListRequestSchema)` to create a new message. + */ +export const MethodServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_method, 0); + +/** + * MethodServiceListResponse is the response payload with all public visible methods + * + * @generated from message metalstack.api.v2.MethodServiceListResponse + */ +export type MethodServiceListResponse = Message<"metalstack.api.v2.MethodServiceListResponse"> & { + /** + * Methods is a list of methods public callable + * + * @generated from field: repeated string methods = 1; + */ + methods: string[]; +}; + +/** + * Describes the message metalstack.api.v2.MethodServiceListResponse. + * Use `create(MethodServiceListResponseSchema)` to create a new message. + */ +export const MethodServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_method, 1); + +/** + * MethodServiceTokenScopedListRequest is the request payload to list all methods callable with the token present in the request + * + * @generated from message metalstack.api.v2.MethodServiceTokenScopedListRequest + */ +export type MethodServiceTokenScopedListRequest = Message<"metalstack.api.v2.MethodServiceTokenScopedListRequest"> & { +}; + +/** + * Describes the message metalstack.api.v2.MethodServiceTokenScopedListRequest. + * Use `create(MethodServiceTokenScopedListRequestSchema)` to create a new message. + */ +export const MethodServiceTokenScopedListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_method, 2); + +/** + * MethodServiceTokenScopedListResponse is the response payload which contains all methods which are callable with the given token + * + * @generated from message metalstack.api.v2.MethodServiceTokenScopedListResponse + */ +export type MethodServiceTokenScopedListResponse = Message<"metalstack.api.v2.MethodServiceTokenScopedListResponse"> & { + /** + * Permissions a list of methods which can be called + * + * @generated from field: repeated metalstack.api.v2.MethodPermission permissions = 1; + */ + permissions: MethodPermission[]; + + /** + * ProjectRoles associates a project id with the corresponding role of the token owner + * + * @generated from field: map project_roles = 3; + */ + projectRoles: { [key: string]: ProjectRole }; + + /** + * TenantRoles associates a tenant id with the corresponding role of the token owner + * + * @generated from field: map tenant_roles = 4; + */ + tenantRoles: { [key: string]: TenantRole }; + + /** + * AdminRole defines the admin role of the token owner + * + * @generated from field: optional metalstack.api.v2.AdminRole admin_role = 5; + */ + adminRole?: AdminRole; + + /** + * InfraRole defines the infrastructure role of the token owner + * + * @generated from field: optional metalstack.api.v2.InfraRole infra_role = 6; + */ + infraRole?: InfraRole; +}; + +/** + * Describes the message metalstack.api.v2.MethodServiceTokenScopedListResponse. + * Use `create(MethodServiceTokenScopedListResponseSchema)` to create a new message. + */ +export const MethodServiceTokenScopedListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_method, 3); + +/** + * MethodService serves method related functions + * methods are functions in services + * + * @generated from service metalstack.api.v2.MethodService + */ +export const MethodService: GenService<{ + /** + * List all public visible methods + * + * @generated from rpc metalstack.api.v2.MethodService.List + */ + list: { + methodKind: "unary"; + input: typeof MethodServiceListRequestSchema; + output: typeof MethodServiceListResponseSchema; + }, + /** + * TokenScopedList all methods callable with the token present in the request + * + * @generated from rpc metalstack.api.v2.MethodService.TokenScopedList + */ + tokenScopedList: { + methodKind: "unary"; + input: typeof MethodServiceTokenScopedListRequestSchema; + output: typeof MethodServiceTokenScopedListResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_method, 0); + diff --git a/js/metalstack/api/v2/network_pb.d.ts b/js/metalstack/api/v2/network_pb.d.ts new file mode 100644 index 00000000..493eddf1 --- /dev/null +++ b/js/metalstack/api/v2/network_pb.d.ts @@ -0,0 +1,820 @@ +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/network.proto. + */ +export declare const file_metalstack_api_v2_network: GenFile; +/** + * NetworkServiceGetRequest + * + * @generated from message metalstack.api.v2.NetworkServiceGetRequest + */ +export type NetworkServiceGetRequest = Message<"metalstack.api.v2.NetworkServiceGetRequest"> & { + /** + * ID of the network to get + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Project of the network + * + * @generated from field: string project = 2; + */ + project: string; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceGetRequest. + * Use `create(NetworkServiceGetRequestSchema)` to create a new message. + */ +export declare const NetworkServiceGetRequestSchema: GenMessage; +/** + * NetworkServiceGetResponse + * + * @generated from message metalstack.api.v2.NetworkServiceGetResponse + */ +export type NetworkServiceGetResponse = Message<"metalstack.api.v2.NetworkServiceGetResponse"> & { + /** + * Network which was requested to get + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceGetResponse. + * Use `create(NetworkServiceGetResponseSchema)` to create a new message. + */ +export declare const NetworkServiceGetResponseSchema: GenMessage; +/** + * NetworkServiceCreateRequest + * + * @generated from message metalstack.api.v2.NetworkServiceCreateRequest + */ +export type NetworkServiceCreateRequest = Message<"metalstack.api.v2.NetworkServiceCreateRequest"> & { + /** + * Project where this network belongs to + * + * @generated from field: string project = 1; + */ + project: string; + /** + * Name of this network + * + * @generated from field: optional string name = 2; + */ + name?: string; + /** + * Description of this network + * + * @generated from field: optional string description = 3; + */ + description?: string; + /** + * Partition where this network will be created + * + * @generated from field: optional string partition = 4; + */ + partition?: string; + /** + * Labels on this network + * + * @generated from field: metalstack.api.v2.Labels labels = 5; + */ + labels?: Labels; + /** + * Parent Network points to the id of the parent network if any + * + * @generated from field: optional string parent_network = 6; + */ + parentNetwork?: string; + /** + * Length per addressfamily + * + * @generated from field: optional metalstack.api.v2.ChildPrefixLength length = 7; + */ + length?: ChildPrefixLength; + /** + * AddressFamily to create, defaults to the same as the parent + * + * @generated from field: optional metalstack.api.v2.NetworkAddressFamily address_family = 8; + */ + addressFamily?: NetworkAddressFamily; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceCreateRequest. + * Use `create(NetworkServiceCreateRequestSchema)` to create a new message. + */ +export declare const NetworkServiceCreateRequestSchema: GenMessage; +/** + * NetworkServiceCreateResponse + * + * @generated from message metalstack.api.v2.NetworkServiceCreateResponse + */ +export type NetworkServiceCreateResponse = Message<"metalstack.api.v2.NetworkServiceCreateResponse"> & { + /** + * Network is the created network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceCreateResponse. + * Use `create(NetworkServiceCreateResponseSchema)` to create a new message. + */ +export declare const NetworkServiceCreateResponseSchema: GenMessage; +/** + * NetworkServiceUpdateRequest + * + * @generated from message metalstack.api.v2.NetworkServiceUpdateRequest + */ +export type NetworkServiceUpdateRequest = Message<"metalstack.api.v2.NetworkServiceUpdateRequest"> & { + /** + * ID of the network to get + * + * @generated from field: string id = 1; + */ + id: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * Project of the network + * + * @generated from field: string project = 3; + */ + project: string; + /** + * Name of this network + * + * @generated from field: optional string name = 4; + */ + name?: string; + /** + * Description of this network + * + * @generated from field: optional string description = 5; + */ + description?: string; + /** + * Labels on this network + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 6; + */ + labels?: UpdateLabels; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceUpdateRequest. + * Use `create(NetworkServiceUpdateRequestSchema)` to create a new message. + */ +export declare const NetworkServiceUpdateRequestSchema: GenMessage; +/** + * NetworkServiceUpdateResponse + * + * @generated from message metalstack.api.v2.NetworkServiceUpdateResponse + */ +export type NetworkServiceUpdateResponse = Message<"metalstack.api.v2.NetworkServiceUpdateResponse"> & { + /** + * Network is the updated network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceUpdateResponse. + * Use `create(NetworkServiceUpdateResponseSchema)` to create a new message. + */ +export declare const NetworkServiceUpdateResponseSchema: GenMessage; +/** + * NetworkServiceListRequest + * + * @generated from message metalstack.api.v2.NetworkServiceListRequest + */ +export type NetworkServiceListRequest = Message<"metalstack.api.v2.NetworkServiceListRequest"> & { + /** + * Project of the networks to list + * + * @generated from field: string project = 1; + */ + project: string; + /** + * Query which specifies which networks to return + * + * @generated from field: metalstack.api.v2.NetworkQuery query = 2; + */ + query?: NetworkQuery; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceListRequest. + * Use `create(NetworkServiceListRequestSchema)` to create a new message. + */ +export declare const NetworkServiceListRequestSchema: GenMessage; +/** + * NetworkServiceListResponse + * + * @generated from message metalstack.api.v2.NetworkServiceListResponse + */ +export type NetworkServiceListResponse = Message<"metalstack.api.v2.NetworkServiceListResponse"> & { + /** + * Networks are the requested networks + * + * @generated from field: repeated metalstack.api.v2.Network networks = 1; + */ + networks: Network[]; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceListResponse. + * Use `create(NetworkServiceListResponseSchema)` to create a new message. + */ +export declare const NetworkServiceListResponseSchema: GenMessage; +/** + * NetworkServiceListRequest + * + * @generated from message metalstack.api.v2.NetworkServiceListBaseNetworksRequest + */ +export type NetworkServiceListBaseNetworksRequest = Message<"metalstack.api.v2.NetworkServiceListBaseNetworksRequest"> & { + /** + * Project of the base networks to list + * + * @generated from field: string project = 1; + */ + project: string; + /** + * Query which specifies which networks to return + * + * @generated from field: metalstack.api.v2.NetworkQuery query = 2; + */ + query?: NetworkQuery; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceListBaseNetworksRequest. + * Use `create(NetworkServiceListBaseNetworksRequestSchema)` to create a new message. + */ +export declare const NetworkServiceListBaseNetworksRequestSchema: GenMessage; +/** + * NetworkServiceListResponse + * + * @generated from message metalstack.api.v2.NetworkServiceListBaseNetworksResponse + */ +export type NetworkServiceListBaseNetworksResponse = Message<"metalstack.api.v2.NetworkServiceListBaseNetworksResponse"> & { + /** + * Networks are the requested networks + * + * @generated from field: repeated metalstack.api.v2.Network networks = 1; + */ + networks: Network[]; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceListBaseNetworksResponse. + * Use `create(NetworkServiceListBaseNetworksResponseSchema)` to create a new message. + */ +export declare const NetworkServiceListBaseNetworksResponseSchema: GenMessage; +/** + * NetworkServiceDeleteRequest + * + * @generated from message metalstack.api.v2.NetworkServiceDeleteRequest + */ +export type NetworkServiceDeleteRequest = Message<"metalstack.api.v2.NetworkServiceDeleteRequest"> & { + /** + * ID of the network to get + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Project of the network + * + * @generated from field: string project = 2; + */ + project: string; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceDeleteRequest. + * Use `create(NetworkServiceDeleteRequestSchema)` to create a new message. + */ +export declare const NetworkServiceDeleteRequestSchema: GenMessage; +/** + * NetworkServiceDeleteResponse + * + * @generated from message metalstack.api.v2.NetworkServiceDeleteResponse + */ +export type NetworkServiceDeleteResponse = Message<"metalstack.api.v2.NetworkServiceDeleteResponse"> & { + /** + * Network is the deleted network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; +/** + * Describes the message metalstack.api.v2.NetworkServiceDeleteResponse. + * Use `create(NetworkServiceDeleteResponseSchema)` to create a new message. + */ +export declare const NetworkServiceDeleteResponseSchema: GenMessage; +/** + * Network + * + * @generated from message metalstack.api.v2.Network + */ +export type Network = Message<"metalstack.api.v2.Network"> & { + /** + * Id of this network + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Meta for this network + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + /** + * Name of this network + * + * @generated from field: optional string name = 3; + */ + name?: string; + /** + * Description of this network + * + * @generated from field: optional string description = 4; + */ + description?: string; + /** + * Partition where this network will be created + * + * @generated from field: optional string partition = 5; + */ + partition?: string; + /** + * Project where this network belongs to + * + * @generated from field: optional string project = 6; + */ + project?: string; + /** + * Namespace if specified, this network is namespaced and can therefore overlap with others + * Will be equal with project most of the time + * + * @generated from field: optional string namespace = 7; + */ + namespace?: string; + /** + * Prefixes in this network + * + * @generated from field: repeated string prefixes = 8; + */ + prefixes: string[]; + /** + * Destination Prefixes in this network + * + * @generated from field: repeated string destination_prefixes = 9; + */ + destinationPrefixes: string[]; + /** + * Default Child Prefix length defines the bitlength of a child network created per addressfamily, of not specified during the allocate request + * + * @generated from field: metalstack.api.v2.ChildPrefixLength default_child_prefix_length = 10; + */ + defaultChildPrefixLength?: ChildPrefixLength; + /** + * Min Child Prefix length asserts that during child network creation the requested bit length is greater or equal the min child prefix length + * + * @generated from field: metalstack.api.v2.ChildPrefixLength min_child_prefix_length = 11; + */ + minChildPrefixLength?: ChildPrefixLength; + /** + * Type of the network + * + * @generated from field: optional metalstack.api.v2.NetworkType type = 12; + */ + type?: NetworkType; + /** + * NATType of this network + * + * @generated from field: optional metalstack.api.v2.NATType nat_type = 13; + */ + natType?: NATType; + /** + * VRF of this network has this VNI. + * + * @generated from field: optional uint32 vrf = 14; + */ + vrf?: number; + /** + * Parent Network points to the id of the parent network if any + * + * @generated from field: optional string parent_network = 15; + */ + parentNetwork?: string; + /** + * AdditionalAnnouncableCidrs will be added to the allow list on the switch which prefixes might be announced + * + * @generated from field: repeated string additional_announcable_cidrs = 16; + */ + additionalAnnouncableCidrs: string[]; + /** + * Consumption of ips and prefixes in this networks + * + * @generated from field: metalstack.api.v2.NetworkConsumption consumption = 17; + */ + consumption?: NetworkConsumption; +}; +/** + * Describes the message metalstack.api.v2.Network. + * Use `create(NetworkSchema)` to create a new message. + */ +export declare const NetworkSchema: GenMessage; +/** + * NetworkQuery defines which networks to query + * + * @generated from message metalstack.api.v2.NetworkQuery + */ +export type NetworkQuery = Message<"metalstack.api.v2.NetworkQuery"> & { + /** + * Id of the network to query + * + * @generated from field: optional string id = 1; + */ + id?: string; + /** + * Name of this network + * + * @generated from field: optional string name = 2; + */ + name?: string; + /** + * Description of this network + * + * @generated from field: optional string description = 3; + */ + description?: string; + /** + * Partition where this network will be created + * + * @generated from field: optional string partition = 4; + */ + partition?: string; + /** + * Project where this network belongs to + * + * @generated from field: optional string project = 5; + */ + project?: string; + /** + * Namespace where this network belongs to + * + * @generated from field: optional string namespace = 6; + */ + namespace?: string; + /** + * Prefixes in this network + * + * @generated from field: repeated string prefixes = 7; + */ + prefixes: string[]; + /** + * Destination Prefixes in this network + * + * @generated from field: repeated string destination_prefixes = 8; + */ + destinationPrefixes: string[]; + /** + * VRF of this network has this VNI. + * + * @generated from field: optional uint32 vrf = 9; + */ + vrf?: number; + /** + * Parent Network points to the id of the parent network if any + * + * @generated from field: optional string parent_network = 10; + */ + parentNetwork?: string; + /** + * Addressfamily to query + * + * @generated from field: optional metalstack.api.v2.NetworkAddressFamily address_family = 11; + */ + addressFamily?: NetworkAddressFamily; + /** + * Type of the network to query for + * + * @generated from field: optional metalstack.api.v2.NetworkType type = 12; + */ + type?: NetworkType; + /** + * NATType configured + * + * @generated from field: optional metalstack.api.v2.NATType nat_type = 13; + */ + natType?: NATType; + /** + * Labels on this network + * + * @generated from field: optional metalstack.api.v2.Labels labels = 14; + */ + labels?: Labels; +}; +/** + * Describes the message metalstack.api.v2.NetworkQuery. + * Use `create(NetworkQuerySchema)` to create a new message. + */ +export declare const NetworkQuerySchema: GenMessage; +/** + * ChildPrefixLength + * + * @generated from message metalstack.api.v2.ChildPrefixLength + */ +export type ChildPrefixLength = Message<"metalstack.api.v2.ChildPrefixLength"> & { + /** + * IPv4 bit length of this network in this addressfamily + * + * @generated from field: optional uint32 ipv4 = 1; + */ + ipv4?: number; + /** + * IPv6 bit length of this network in this addressfamily + * + * @generated from field: optional uint32 ipv6 = 2; + */ + ipv6?: number; +}; +/** + * Describes the message metalstack.api.v2.ChildPrefixLength. + * Use `create(ChildPrefixLengthSchema)` to create a new message. + */ +export declare const ChildPrefixLengthSchema: GenMessage; +/** + * NetworkConsumption contains ip and prefix usage by addressfamily + * + * @generated from message metalstack.api.v2.NetworkConsumption + */ +export type NetworkConsumption = Message<"metalstack.api.v2.NetworkConsumption"> & { + /** + * IPv4 network usage + * + * @generated from field: metalstack.api.v2.NetworkUsage ipv4 = 1; + */ + ipv4?: NetworkUsage; + /** + * IPv6 network usage, this can be approximated for high numbers + * + * @generated from field: metalstack.api.v2.NetworkUsage ipv6 = 2; + */ + ipv6?: NetworkUsage; +}; +/** + * Describes the message metalstack.api.v2.NetworkConsumption. + * Use `create(NetworkConsumptionSchema)` to create a new message. + */ +export declare const NetworkConsumptionSchema: GenMessage; +/** + * NetworkUsage reports core metrics about available and used IPs or Prefixes in a Network. + * + * @generated from message metalstack.api.v2.NetworkUsage + */ +export type NetworkUsage = Message<"metalstack.api.v2.NetworkUsage"> & { + /** + * the total available IPs + * + * @generated from field: uint64 available_ips = 2; + */ + availableIps: bigint; + /** + * the total used IPs + * + * @generated from field: uint64 used_ips = 3; + */ + usedIps: bigint; + /** + * the total available 2 bit Prefixes + * + * @generated from field: uint64 available_prefixes = 4; + */ + availablePrefixes: bigint; + /** + * the total used Prefixes + * + * @generated from field: uint64 used_prefixes = 5; + */ + usedPrefixes: bigint; +}; +/** + * Describes the message metalstack.api.v2.NetworkUsage. + * Use `create(NetworkUsageSchema)` to create a new message. + */ +export declare const NetworkUsageSchema: GenMessage; +/** + * NATType defines how and if outgoing traffic is translated + * + * @generated from enum metalstack.api.v2.NATType + */ +export declare enum NATType { + /** + * NAT_TYPE_UNSPECIFIED indicates a unspecified nat type + * + * @generated from enum value: NAT_TYPE_UNSPECIFIED = 0; + */ + NAT_TYPE_UNSPECIFIED = 0, + /** + * NAT_TYPE_NONE indicates that no nat is configured + * + * @generated from enum value: NAT_TYPE_NONE = 1; + */ + NAT_TYPE_NONE = 1, + /** + * NAT_TYPE_IPV4_MASQUERADE masquerade ipv4 behind gateway ip when traffic enters this network + * + * @generated from enum value: NAT_TYPE_IPV4_MASQUERADE = 2; + */ + NAT_TYPE_IPV4_MASQUERADE = 2 +} +/** + * Describes the enum metalstack.api.v2.NATType. + */ +export declare const NATTypeSchema: GenEnum; +/** + * NetworkType indicates the purpose of the network, it cannot be changed after creation + * + * @generated from enum metalstack.api.v2.NetworkType + */ +export declare enum NetworkType { + /** + * NETWORK_TYPE_UNSPECIFIED indicates a unknown network type + * + * @generated from enum value: NETWORK_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * NETWORK_TYPE_EXTERNAL indicates network where multiple projects can allocate ips, it offers connectivity to other external networks + * In most cases this is the internet network or a network which offers connectivity to legacy datacenter networks. + * If it is not project scoped everyone can allocate Ips in this network, otherwise only from the same project ip allocation is possible. + * + * @generated from enum value: NETWORK_TYPE_EXTERNAL = 1; + */ + EXTERNAL = 1, + /** + * NETWORK_TYPE_UNDERLAY indicates a underlay network + * The underlay network connects all switches and the firewalls to build a EVPN dataplane + * It is not project scoped. Is part of the dataplane and reserved for administrative purposes. + * + * @generated from enum value: NETWORK_TYPE_UNDERLAY = 2; + */ + UNDERLAY = 2, + /** + * NETWORK_TYPE_SUPER indicates a super network which is only used to create child networks + * If the vrf id is given, child networks will inherit this vrf. + * If the vrf id is nil in this network, child vrf is taken from the pool. + * If the partition is given, child networks inherit the partition. + * If the partition is nil, child networks also do not have a partition (i.e. requires vrf is distributed across all partitions). + * If the partition is given, only one super network in that partition can be created. + * If the partition is nil, multiple super networks can exist. Then, for child network creation the network id must be specified (base networks can be queried by label selector). + * For child creation destination prefixes will be inherited + * If this is project scoped, the child project must match, otherwise can be freely specified. + * + * @generated from enum value: NETWORK_TYPE_SUPER = 3; + */ + SUPER = 3, + /** + * NETWORK_TYPE_SUPER_NAMESPACED indicates a super network which is only used to create child networks. + * All rules from NETWORK_TYPE_SUPER apply for them as well. + * In addition, a network namespace will be created for every project. Child networks per project will have disjunct prefixes. + * Prefix allocation will start again with the same base cidr for every project / namespace. + * This will allow the creation of much more child networks from a given super network size. + * + * @generated from enum value: NETWORK_TYPE_SUPER_NAMESPACED = 4; + */ + SUPER_NAMESPACED = 4, + /** + * NETWORK_TYPE_CHILD indicates a child network of a project. + * This is the only network type that can be created by a user. + * Connectivity to external networks is not possible without going through an additional firewall in this network which creates connectivity to other networks. + * Such a network will be created either from a super, or super namespaced. + * + * @generated from enum value: NETWORK_TYPE_CHILD = 5; + */ + CHILD = 5, + /** + * NETWORK_TYPE_CHILD_SHARED indicates a child network of a project which allows the allocation of ips from different projects. + * Connectivity to external networks is not possible, as for normal child networks. + * These networks are usually used to provide connectivity to shared services which are created in child networks, e.g. storage. + * With this approach the number of hops can be reduced to the bare minimum in order to increase availability and performance. + * + * @generated from enum value: NETWORK_TYPE_CHILD_SHARED = 6; + */ + CHILD_SHARED = 6 +} +/** + * Describes the enum metalstack.api.v2.NetworkType. + */ +export declare const NetworkTypeSchema: GenEnum; +/** + * NetworkAddressFamily defines the address family of a network + * + * @generated from enum metalstack.api.v2.NetworkAddressFamily + */ +export declare enum NetworkAddressFamily { + /** + * NETWORK_ADDRESS_FAMILY_UNSPECIFIED is not specified + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * NETWORK_ADDRESS_FAMILY_V4 defines a network with IPv4 address prefixes + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_V4 = 1; + */ + V4 = 1, + /** + * NETWORK_ADDRESS_FAMILY_V6 defines a network with IPv6 address prefixes + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_V6 = 2; + */ + V6 = 2, + /** + * NETWORK_ADDRESS_FAMILY_DUAL_STACK defines a network with both IPv4 and IPv6 address prefixes + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_DUAL_STACK = 3; + */ + DUAL_STACK = 3 +} +/** + * Describes the enum metalstack.api.v2.NetworkAddressFamily. + */ +export declare const NetworkAddressFamilySchema: GenEnum; +/** + * NetworkService serves network address related functions for end users, e.g. with project scope + * + * @generated from service metalstack.api.v2.NetworkService + */ +export declare const NetworkService: GenService<{ + /** + * Get a network + * + * @generated from rpc metalstack.api.v2.NetworkService.Get + */ + get: { + methodKind: "unary"; + input: typeof NetworkServiceGetRequestSchema; + output: typeof NetworkServiceGetResponseSchema; + }; + /** + * Create a child network from a super network. + * + * @generated from rpc metalstack.api.v2.NetworkService.Create + */ + create: { + methodKind: "unary"; + input: typeof NetworkServiceCreateRequestSchema; + output: typeof NetworkServiceCreateResponseSchema; + }; + /** + * Update a network + * + * @generated from rpc metalstack.api.v2.NetworkService.Update + */ + update: { + methodKind: "unary"; + input: typeof NetworkServiceUpdateRequestSchema; + output: typeof NetworkServiceUpdateResponseSchema; + }; + /** + * List all project networks + * + * @generated from rpc metalstack.api.v2.NetworkService.List + */ + list: { + methodKind: "unary"; + input: typeof NetworkServiceListRequestSchema; + output: typeof NetworkServiceListResponseSchema; + }; + /** + * ListBaseNetworks all base networks that can be used for either child network or ip allocation + * + * @generated from rpc metalstack.api.v2.NetworkService.ListBaseNetworks + */ + listBaseNetworks: { + methodKind: "unary"; + input: typeof NetworkServiceListBaseNetworksRequestSchema; + output: typeof NetworkServiceListBaseNetworksResponseSchema; + }; + /** + * Delete a network + * + * @generated from rpc metalstack.api.v2.NetworkService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof NetworkServiceDeleteRequestSchema; + output: typeof NetworkServiceDeleteResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/network_pb.js b/js/metalstack/api/v2/network_pb.js new file mode 100644 index 00000000..d8a1ede6 --- /dev/null +++ b/js/metalstack/api/v2/network_pb.js @@ -0,0 +1,244 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/network.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +/** + * Describes the file metalstack/api/v2/network.proto. + */ +export const file_metalstack_api_v2_network = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9uZXR3b3JrLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJQChhOZXR3b3JrU2VydmljZUdldFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAESHAoHcHJvamVjdBgCIAEoCUILukgI2AEBcgOwAQEiSAoZTmV0d29ya1NlcnZpY2VHZXRSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayLcAwobTmV0d29ya1NlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxIoCg5wYXJlbnRfbmV0d29yaxgGIAEoCUILukgIcgbAs66xAgFIA4gBARI5CgZsZW5ndGgYByABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aEgEiAEBEk4KDmFkZHJlc3NfZmFtaWx5GAggASgOMicubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya0FkZHJlc3NGYW1pbHlCCLpIBYIBAhABSAWIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CEQoPX3BhcmVudF9uZXR3b3JrQgkKB19sZW5ndGhCEQoPX2FkZHJlc3NfZmFtaWx5IksKHE5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsirgIKG05ldHdvcmtTZXJ2aWNlVXBkYXRlUmVxdWVzdBIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESGQoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBARI0CgZsYWJlbHMYBiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIAogBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVscyJLChxOZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrImkKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSHAoHcHJvamVjdBgBIAEoCUILukgI2AEBcgOwAQESLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkiSgoaTmV0d29ya1NlcnZpY2VMaXN0UmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrInUKJU5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1JlcXVlc3QSHAoHcHJvamVjdBgBIAEoCUILukgI2AEBcgOwAQESLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkiVgomTmV0d29ya1NlcnZpY2VMaXN0QmFzZU5ldHdvcmtzUmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIlEKG05ldHdvcmtTZXJ2aWNlRGVsZXRlUmVxdWVzdBIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTmV0d29ya1NlcnZpY2VEZWxldGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayLtBgoHTmV0d29yaxIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIjCglwYXJ0aXRpb24YBSABKAlCC7pICHIG0LOusQIBSAKIAQESHgoHcHJvamVjdBgGIAEoCUIIukgFcgOwAQFIA4gBARIgCgluYW1lc3BhY2UYByABKAlCCLpIBXIDsAEBSASIAQESHgoIcHJlZml4ZXMYCCADKAlCDLpICZIBBuCzrrECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgJIAMoCUIMukgJkgEG4LOusQIBEkkKG2RlZmF1bHRfY2hpbGRfcHJlZml4X2xlbmd0aBgKIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEkUKF21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoGAsgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGgSOwoEdHlwZRgMIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQAUgFiAEBEjsKCG5hdF90eXBlGA0gASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAFIBogBARIQCgN2cmYYDiABKA1IB4gBARIoCg5wYXJlbnRfbmV0d29yaxgPIAEoCUILukgIcgbAs66xAgFICIgBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGBAgAygJQgy6SAmSAQbgs66xAgESOgoLY29uc3VtcHRpb24YESABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrQ29uc3VtcHRpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCDAoKX25hbWVzcGFjZUIHCgVfdHlwZUILCglfbmF0X3R5cGVCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmsi8gUKDE5ldHdvcmtRdWVyeRIbCgJpZBgBIAEoCUIKukgHcgUQAhiAAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgDiAEBEh4KB3Byb2plY3QYBSABKAlCCLpIBXIDsAEBSASIAQESIAoJbmFtZXNwYWNlGAYgASgJQgi6SAVyA7ABAUgFiAEBEh4KCHByZWZpeGVzGAcgAygJQgy6SAmSAQbgs66xAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCCADKAlCDLpICZIBBuCzrrECARIQCgN2cmYYCSABKA1IBogBARIoCg5wYXJlbnRfbmV0d29yaxgKIAEoCUILukgIcgbAs66xAgFIB4gBARJOCg5hZGRyZXNzX2ZhbWlseRgLIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgIiAEBEjsKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAFICYgBARI7CghuYXRfdHlwZRgNIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAqIAQESLgoGbGFiZWxzGA4gASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAuIAQFCBQoDX2lkQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQgoKCF9wcm9qZWN0QgwKCl9uYW1lc3BhY2VCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmtCEQoPX2FkZHJlc3NfZmFtaWx5QgcKBV90eXBlQgsKCV9uYXRfdHlwZUIJCgdfbGFiZWxzImIKEUNoaWxkUHJlZml4TGVuZ3RoEhwKBGlwdjQYASABKA1CCbpIBioEGCAgAEgAiAEBEh0KBGlwdjYYAiABKA1CCrpIByoFGIABIABIAYgBAUIHCgVfaXB2NEIHCgVfaXB2NiJyChJOZXR3b3JrQ29uc3VtcHRpb24SLQoEaXB2NBgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtVc2FnZRItCgRpcHY2GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1VzYWdlImoKDE5ldHdvcmtVc2FnZRIVCg1hdmFpbGFibGVfaXBzGAIgASgEEhAKCHVzZWRfaXBzGAMgASgEEhoKEmF2YWlsYWJsZV9wcmVmaXhlcxgEIAEoBBIVCg11c2VkX3ByZWZpeGVzGAUgASgEKm0KB05BVFR5cGUSGAoUTkFUX1RZUEVfVU5TUEVDSUZJRUQQABIbCg1OQVRfVFlQRV9OT05FEAEaCIKyGQRub25lEisKGE5BVF9UWVBFX0lQVjRfTUFTUVVFUkFERRACGg2CshkJaXB2NC1tYXNxKq0CCgtOZXR3b3JrVHlwZRIcChhORVRXT1JLX1RZUEVfVU5TUEVDSUZJRUQQABInChVORVRXT1JLX1RZUEVfRVhURVJOQUwQARoMgrIZCGV4dGVybmFsEicKFU5FVFdPUktfVFlQRV9VTkRFUkxBWRACGgyCshkIdW5kZXJsYXkSIQoSTkVUV09SS19UWVBFX1NVUEVSEAMaCYKyGQVzdXBlchI3Ch1ORVRXT1JLX1RZUEVfU1VQRVJfTkFNRVNQQUNFRBAEGhSCshkQc3VwZXItbmFtZXNwYWNlZBIhChJORVRXT1JLX1RZUEVfQ0hJTEQQBRoJgrIZBWNoaWxkEi8KGU5FVFdPUktfVFlQRV9DSElMRF9TSEFSRUQQBhoQgrIZDGNoaWxkLXNoYXJlZCrHAQoUTmV0d29ya0FkZHJlc3NGYW1pbHkSJgoiTkVUV09SS19BRERSRVNTX0ZBTUlMWV9VTlNQRUNJRklFRBAAEicKGU5FVFdPUktfQUREUkVTU19GQU1JTFlfVjQQARoIgrIZBGlwdjQSJwoZTkVUV09SS19BRERSRVNTX0ZBTUlMWV9WNhACGgiCshkEaXB2NhI1CiFORVRXT1JLX0FERFJFU1NfRkFNSUxZX0RVQUxfU1RBQ0sQAxoOgrIZCmR1YWwtc3RhY2sy4QUKDk5ldHdvcmtTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBsrzGAIBAhJxCgZVcGRhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlIgbK8xgCAQIScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAISlAEKEExpc3RCYXNlTmV0d29ya3MSOC5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0GjkubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VMaXN0QmFzZU5ldHdvcmtzUmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkRlbGV0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiBsrzGAIBAkLCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxOZXR3b3JrUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.api.v2.NetworkServiceGetRequest. + * Use `create(NetworkServiceGetRequestSchema)` to create a new message. + */ +export const NetworkServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 0); +/** + * Describes the message metalstack.api.v2.NetworkServiceGetResponse. + * Use `create(NetworkServiceGetResponseSchema)` to create a new message. + */ +export const NetworkServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 1); +/** + * Describes the message metalstack.api.v2.NetworkServiceCreateRequest. + * Use `create(NetworkServiceCreateRequestSchema)` to create a new message. + */ +export const NetworkServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 2); +/** + * Describes the message metalstack.api.v2.NetworkServiceCreateResponse. + * Use `create(NetworkServiceCreateResponseSchema)` to create a new message. + */ +export const NetworkServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 3); +/** + * Describes the message metalstack.api.v2.NetworkServiceUpdateRequest. + * Use `create(NetworkServiceUpdateRequestSchema)` to create a new message. + */ +export const NetworkServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 4); +/** + * Describes the message metalstack.api.v2.NetworkServiceUpdateResponse. + * Use `create(NetworkServiceUpdateResponseSchema)` to create a new message. + */ +export const NetworkServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 5); +/** + * Describes the message metalstack.api.v2.NetworkServiceListRequest. + * Use `create(NetworkServiceListRequestSchema)` to create a new message. + */ +export const NetworkServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 6); +/** + * Describes the message metalstack.api.v2.NetworkServiceListResponse. + * Use `create(NetworkServiceListResponseSchema)` to create a new message. + */ +export const NetworkServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 7); +/** + * Describes the message metalstack.api.v2.NetworkServiceListBaseNetworksRequest. + * Use `create(NetworkServiceListBaseNetworksRequestSchema)` to create a new message. + */ +export const NetworkServiceListBaseNetworksRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 8); +/** + * Describes the message metalstack.api.v2.NetworkServiceListBaseNetworksResponse. + * Use `create(NetworkServiceListBaseNetworksResponseSchema)` to create a new message. + */ +export const NetworkServiceListBaseNetworksResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 9); +/** + * Describes the message metalstack.api.v2.NetworkServiceDeleteRequest. + * Use `create(NetworkServiceDeleteRequestSchema)` to create a new message. + */ +export const NetworkServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 10); +/** + * Describes the message metalstack.api.v2.NetworkServiceDeleteResponse. + * Use `create(NetworkServiceDeleteResponseSchema)` to create a new message. + */ +export const NetworkServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 11); +/** + * Describes the message metalstack.api.v2.Network. + * Use `create(NetworkSchema)` to create a new message. + */ +export const NetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 12); +/** + * Describes the message metalstack.api.v2.NetworkQuery. + * Use `create(NetworkQuerySchema)` to create a new message. + */ +export const NetworkQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 13); +/** + * Describes the message metalstack.api.v2.ChildPrefixLength. + * Use `create(ChildPrefixLengthSchema)` to create a new message. + */ +export const ChildPrefixLengthSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 14); +/** + * Describes the message metalstack.api.v2.NetworkConsumption. + * Use `create(NetworkConsumptionSchema)` to create a new message. + */ +export const NetworkConsumptionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 15); +/** + * Describes the message metalstack.api.v2.NetworkUsage. + * Use `create(NetworkUsageSchema)` to create a new message. + */ +export const NetworkUsageSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 16); +/** + * NATType defines how and if outgoing traffic is translated + * + * @generated from enum metalstack.api.v2.NATType + */ +export var NATType; +(function (NATType) { + /** + * NAT_TYPE_UNSPECIFIED indicates a unspecified nat type + * + * @generated from enum value: NAT_TYPE_UNSPECIFIED = 0; + */ + NATType[NATType["NAT_TYPE_UNSPECIFIED"] = 0] = "NAT_TYPE_UNSPECIFIED"; + /** + * NAT_TYPE_NONE indicates that no nat is configured + * + * @generated from enum value: NAT_TYPE_NONE = 1; + */ + NATType[NATType["NAT_TYPE_NONE"] = 1] = "NAT_TYPE_NONE"; + /** + * NAT_TYPE_IPV4_MASQUERADE masquerade ipv4 behind gateway ip when traffic enters this network + * + * @generated from enum value: NAT_TYPE_IPV4_MASQUERADE = 2; + */ + NATType[NATType["NAT_TYPE_IPV4_MASQUERADE"] = 2] = "NAT_TYPE_IPV4_MASQUERADE"; +})(NATType || (NATType = {})); +/** + * Describes the enum metalstack.api.v2.NATType. + */ +export const NATTypeSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_network, 0); +/** + * NetworkType indicates the purpose of the network, it cannot be changed after creation + * + * @generated from enum metalstack.api.v2.NetworkType + */ +export var NetworkType; +(function (NetworkType) { + /** + * NETWORK_TYPE_UNSPECIFIED indicates a unknown network type + * + * @generated from enum value: NETWORK_TYPE_UNSPECIFIED = 0; + */ + NetworkType[NetworkType["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * NETWORK_TYPE_EXTERNAL indicates network where multiple projects can allocate ips, it offers connectivity to other external networks + * In most cases this is the internet network or a network which offers connectivity to legacy datacenter networks. + * If it is not project scoped everyone can allocate Ips in this network, otherwise only from the same project ip allocation is possible. + * + * @generated from enum value: NETWORK_TYPE_EXTERNAL = 1; + */ + NetworkType[NetworkType["EXTERNAL"] = 1] = "EXTERNAL"; + /** + * NETWORK_TYPE_UNDERLAY indicates a underlay network + * The underlay network connects all switches and the firewalls to build a EVPN dataplane + * It is not project scoped. Is part of the dataplane and reserved for administrative purposes. + * + * @generated from enum value: NETWORK_TYPE_UNDERLAY = 2; + */ + NetworkType[NetworkType["UNDERLAY"] = 2] = "UNDERLAY"; + /** + * NETWORK_TYPE_SUPER indicates a super network which is only used to create child networks + * If the vrf id is given, child networks will inherit this vrf. + * If the vrf id is nil in this network, child vrf is taken from the pool. + * If the partition is given, child networks inherit the partition. + * If the partition is nil, child networks also do not have a partition (i.e. requires vrf is distributed across all partitions). + * If the partition is given, only one super network in that partition can be created. + * If the partition is nil, multiple super networks can exist. Then, for child network creation the network id must be specified (base networks can be queried by label selector). + * For child creation destination prefixes will be inherited + * If this is project scoped, the child project must match, otherwise can be freely specified. + * + * @generated from enum value: NETWORK_TYPE_SUPER = 3; + */ + NetworkType[NetworkType["SUPER"] = 3] = "SUPER"; + /** + * NETWORK_TYPE_SUPER_NAMESPACED indicates a super network which is only used to create child networks. + * All rules from NETWORK_TYPE_SUPER apply for them as well. + * In addition, a network namespace will be created for every project. Child networks per project will have disjunct prefixes. + * Prefix allocation will start again with the same base cidr for every project / namespace. + * This will allow the creation of much more child networks from a given super network size. + * + * @generated from enum value: NETWORK_TYPE_SUPER_NAMESPACED = 4; + */ + NetworkType[NetworkType["SUPER_NAMESPACED"] = 4] = "SUPER_NAMESPACED"; + /** + * NETWORK_TYPE_CHILD indicates a child network of a project. + * This is the only network type that can be created by a user. + * Connectivity to external networks is not possible without going through an additional firewall in this network which creates connectivity to other networks. + * Such a network will be created either from a super, or super namespaced. + * + * @generated from enum value: NETWORK_TYPE_CHILD = 5; + */ + NetworkType[NetworkType["CHILD"] = 5] = "CHILD"; + /** + * NETWORK_TYPE_CHILD_SHARED indicates a child network of a project which allows the allocation of ips from different projects. + * Connectivity to external networks is not possible, as for normal child networks. + * These networks are usually used to provide connectivity to shared services which are created in child networks, e.g. storage. + * With this approach the number of hops can be reduced to the bare minimum in order to increase availability and performance. + * + * @generated from enum value: NETWORK_TYPE_CHILD_SHARED = 6; + */ + NetworkType[NetworkType["CHILD_SHARED"] = 6] = "CHILD_SHARED"; +})(NetworkType || (NetworkType = {})); +/** + * Describes the enum metalstack.api.v2.NetworkType. + */ +export const NetworkTypeSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_network, 1); +/** + * NetworkAddressFamily defines the address family of a network + * + * @generated from enum metalstack.api.v2.NetworkAddressFamily + */ +export var NetworkAddressFamily; +(function (NetworkAddressFamily) { + /** + * NETWORK_ADDRESS_FAMILY_UNSPECIFIED is not specified + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_UNSPECIFIED = 0; + */ + NetworkAddressFamily[NetworkAddressFamily["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * NETWORK_ADDRESS_FAMILY_V4 defines a network with IPv4 address prefixes + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_V4 = 1; + */ + NetworkAddressFamily[NetworkAddressFamily["V4"] = 1] = "V4"; + /** + * NETWORK_ADDRESS_FAMILY_V6 defines a network with IPv6 address prefixes + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_V6 = 2; + */ + NetworkAddressFamily[NetworkAddressFamily["V6"] = 2] = "V6"; + /** + * NETWORK_ADDRESS_FAMILY_DUAL_STACK defines a network with both IPv4 and IPv6 address prefixes + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_DUAL_STACK = 3; + */ + NetworkAddressFamily[NetworkAddressFamily["DUAL_STACK"] = 3] = "DUAL_STACK"; +})(NetworkAddressFamily || (NetworkAddressFamily = {})); +/** + * Describes the enum metalstack.api.v2.NetworkAddressFamily. + */ +export const NetworkAddressFamilySchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_network, 2); +/** + * NetworkService serves network address related functions for end users, e.g. with project scope + * + * @generated from service metalstack.api.v2.NetworkService + */ +export const NetworkService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_network, 0); diff --git a/js/metalstack/api/v2/network_pb.ts b/js/metalstack/api/v2/network_pb.ts new file mode 100644 index 00000000..34e0fa40 --- /dev/null +++ b/js/metalstack/api/v2/network_pb.ts @@ -0,0 +1,954 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/network.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/network.proto. + */ +export const file_metalstack_api_v2_network: GenFile = /*@__PURE__*/ + fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9uZXR3b3JrLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJQChhOZXR3b3JrU2VydmljZUdldFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAESHAoHcHJvamVjdBgCIAEoCUILukgI2AEBcgOwAQEiSAoZTmV0d29ya1NlcnZpY2VHZXRSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayLcAwobTmV0d29ya1NlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgCiAEBEikKBmxhYmVscxgFIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxIoCg5wYXJlbnRfbmV0d29yaxgGIAEoCUILukgIcgbAs66xAgFIA4gBARI5CgZsZW5ndGgYByABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aEgEiAEBEk4KDmFkZHJlc3NfZmFtaWx5GAggASgOMicubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya0FkZHJlc3NGYW1pbHlCCLpIBYIBAhABSAWIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CEQoPX3BhcmVudF9uZXR3b3JrQgkKB19sZW5ndGhCEQoPX2FkZHJlc3NfZmFtaWx5IksKHE5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsirgIKG05ldHdvcmtTZXJ2aWNlVXBkYXRlUmVxdWVzdBIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESGQoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBARI0CgZsYWJlbHMYBiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIAogBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVscyJLChxOZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrImkKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSHAoHcHJvamVjdBgBIAEoCUILukgI2AEBcgOwAQESLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkiSgoaTmV0d29ya1NlcnZpY2VMaXN0UmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrInUKJU5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1JlcXVlc3QSHAoHcHJvamVjdBgBIAEoCUILukgI2AEBcgOwAQESLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkiVgomTmV0d29ya1NlcnZpY2VMaXN0QmFzZU5ldHdvcmtzUmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIlEKG05ldHdvcmtTZXJ2aWNlRGVsZXRlUmVxdWVzdBIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTmV0d29ya1NlcnZpY2VEZWxldGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayLtBgoHTmV0d29yaxIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIjCglwYXJ0aXRpb24YBSABKAlCC7pICHIG0LOusQIBSAKIAQESHgoHcHJvamVjdBgGIAEoCUIIukgFcgOwAQFIA4gBARIgCgluYW1lc3BhY2UYByABKAlCCLpIBXIDsAEBSASIAQESHgoIcHJlZml4ZXMYCCADKAlCDLpICZIBBuCzrrECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgJIAMoCUIMukgJkgEG4LOusQIBEkkKG2RlZmF1bHRfY2hpbGRfcHJlZml4X2xlbmd0aBgKIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEkUKF21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoGAsgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGgSOwoEdHlwZRgMIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQAUgFiAEBEjsKCG5hdF90eXBlGA0gASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAFIBogBARIQCgN2cmYYDiABKA1IB4gBARIoCg5wYXJlbnRfbmV0d29yaxgPIAEoCUILukgIcgbAs66xAgFICIgBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGBAgAygJQgy6SAmSAQbgs66xAgESOgoLY29uc3VtcHRpb24YESABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrQ29uc3VtcHRpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCDAoKX25hbWVzcGFjZUIHCgVfdHlwZUILCglfbmF0X3R5cGVCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmsi8gUKDE5ldHdvcmtRdWVyeRIbCgJpZBgBIAEoCUIKukgHcgUQAhiAAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgDiAEBEh4KB3Byb2plY3QYBSABKAlCCLpIBXIDsAEBSASIAQESIAoJbmFtZXNwYWNlGAYgASgJQgi6SAVyA7ABAUgFiAEBEh4KCHByZWZpeGVzGAcgAygJQgy6SAmSAQbgs66xAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCCADKAlCDLpICZIBBuCzrrECARIQCgN2cmYYCSABKA1IBogBARIoCg5wYXJlbnRfbmV0d29yaxgKIAEoCUILukgIcgbAs66xAgFIB4gBARJOCg5hZGRyZXNzX2ZhbWlseRgLIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgIiAEBEjsKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAFICYgBARI7CghuYXRfdHlwZRgNIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAqIAQESLgoGbGFiZWxzGA4gASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAuIAQFCBQoDX2lkQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQgoKCF9wcm9qZWN0QgwKCl9uYW1lc3BhY2VCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmtCEQoPX2FkZHJlc3NfZmFtaWx5QgcKBV90eXBlQgsKCV9uYXRfdHlwZUIJCgdfbGFiZWxzImIKEUNoaWxkUHJlZml4TGVuZ3RoEhwKBGlwdjQYASABKA1CCbpIBioEGCAgAEgAiAEBEh0KBGlwdjYYAiABKA1CCrpIByoFGIABIABIAYgBAUIHCgVfaXB2NEIHCgVfaXB2NiJyChJOZXR3b3JrQ29uc3VtcHRpb24SLQoEaXB2NBgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtVc2FnZRItCgRpcHY2GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1VzYWdlImoKDE5ldHdvcmtVc2FnZRIVCg1hdmFpbGFibGVfaXBzGAIgASgEEhAKCHVzZWRfaXBzGAMgASgEEhoKEmF2YWlsYWJsZV9wcmVmaXhlcxgEIAEoBBIVCg11c2VkX3ByZWZpeGVzGAUgASgEKm0KB05BVFR5cGUSGAoUTkFUX1RZUEVfVU5TUEVDSUZJRUQQABIbCg1OQVRfVFlQRV9OT05FEAEaCIKyGQRub25lEisKGE5BVF9UWVBFX0lQVjRfTUFTUVVFUkFERRACGg2CshkJaXB2NC1tYXNxKq0CCgtOZXR3b3JrVHlwZRIcChhORVRXT1JLX1RZUEVfVU5TUEVDSUZJRUQQABInChVORVRXT1JLX1RZUEVfRVhURVJOQUwQARoMgrIZCGV4dGVybmFsEicKFU5FVFdPUktfVFlQRV9VTkRFUkxBWRACGgyCshkIdW5kZXJsYXkSIQoSTkVUV09SS19UWVBFX1NVUEVSEAMaCYKyGQVzdXBlchI3Ch1ORVRXT1JLX1RZUEVfU1VQRVJfTkFNRVNQQUNFRBAEGhSCshkQc3VwZXItbmFtZXNwYWNlZBIhChJORVRXT1JLX1RZUEVfQ0hJTEQQBRoJgrIZBWNoaWxkEi8KGU5FVFdPUktfVFlQRV9DSElMRF9TSEFSRUQQBhoQgrIZDGNoaWxkLXNoYXJlZCrHAQoUTmV0d29ya0FkZHJlc3NGYW1pbHkSJgoiTkVUV09SS19BRERSRVNTX0ZBTUlMWV9VTlNQRUNJRklFRBAAEicKGU5FVFdPUktfQUREUkVTU19GQU1JTFlfVjQQARoIgrIZBGlwdjQSJwoZTkVUV09SS19BRERSRVNTX0ZBTUlMWV9WNhACGgiCshkEaXB2NhI1CiFORVRXT1JLX0FERFJFU1NfRkFNSUxZX0RVQUxfU1RBQ0sQAxoOgrIZCmR1YWwtc3RhY2sy4QUKDk5ldHdvcmtTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBsrzGAIBAhJxCgZVcGRhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlIgbK8xgCAQIScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAISlAEKEExpc3RCYXNlTmV0d29ya3MSOC5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0GjkubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VMaXN0QmFzZU5ldHdvcmtzUmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkRlbGV0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiBsrzGAIBAkLCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxOZXR3b3JrUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + +/** + * NetworkServiceGetRequest + * + * @generated from message metalstack.api.v2.NetworkServiceGetRequest + */ +export type NetworkServiceGetRequest = Message<"metalstack.api.v2.NetworkServiceGetRequest"> & { + /** + * ID of the network to get + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Project of the network + * + * @generated from field: string project = 2; + */ + project: string; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceGetRequest. + * Use `create(NetworkServiceGetRequestSchema)` to create a new message. + */ +export const NetworkServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 0); + +/** + * NetworkServiceGetResponse + * + * @generated from message metalstack.api.v2.NetworkServiceGetResponse + */ +export type NetworkServiceGetResponse = Message<"metalstack.api.v2.NetworkServiceGetResponse"> & { + /** + * Network which was requested to get + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceGetResponse. + * Use `create(NetworkServiceGetResponseSchema)` to create a new message. + */ +export const NetworkServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 1); + +/** + * NetworkServiceCreateRequest + * + * @generated from message metalstack.api.v2.NetworkServiceCreateRequest + */ +export type NetworkServiceCreateRequest = Message<"metalstack.api.v2.NetworkServiceCreateRequest"> & { + /** + * Project where this network belongs to + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * Name of this network + * + * @generated from field: optional string name = 2; + */ + name?: string; + + /** + * Description of this network + * + * @generated from field: optional string description = 3; + */ + description?: string; + + /** + * Partition where this network will be created + * + * @generated from field: optional string partition = 4; + */ + partition?: string; + + /** + * Labels on this network + * + * @generated from field: metalstack.api.v2.Labels labels = 5; + */ + labels?: Labels; + + /** + * Parent Network points to the id of the parent network if any + * + * @generated from field: optional string parent_network = 6; + */ + parentNetwork?: string; + + /** + * Length per addressfamily + * + * @generated from field: optional metalstack.api.v2.ChildPrefixLength length = 7; + */ + length?: ChildPrefixLength; + + /** + * AddressFamily to create, defaults to the same as the parent + * + * @generated from field: optional metalstack.api.v2.NetworkAddressFamily address_family = 8; + */ + addressFamily?: NetworkAddressFamily; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceCreateRequest. + * Use `create(NetworkServiceCreateRequestSchema)` to create a new message. + */ +export const NetworkServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 2); + +/** + * NetworkServiceCreateResponse + * + * @generated from message metalstack.api.v2.NetworkServiceCreateResponse + */ +export type NetworkServiceCreateResponse = Message<"metalstack.api.v2.NetworkServiceCreateResponse"> & { + /** + * Network is the created network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceCreateResponse. + * Use `create(NetworkServiceCreateResponseSchema)` to create a new message. + */ +export const NetworkServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 3); + +/** + * NetworkServiceUpdateRequest + * + * @generated from message metalstack.api.v2.NetworkServiceUpdateRequest + */ +export type NetworkServiceUpdateRequest = Message<"metalstack.api.v2.NetworkServiceUpdateRequest"> & { + /** + * ID of the network to get + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * Project of the network + * + * @generated from field: string project = 3; + */ + project: string; + + /** + * Name of this network + * + * @generated from field: optional string name = 4; + */ + name?: string; + + /** + * Description of this network + * + * @generated from field: optional string description = 5; + */ + description?: string; + + /** + * Labels on this network + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 6; + */ + labels?: UpdateLabels; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceUpdateRequest. + * Use `create(NetworkServiceUpdateRequestSchema)` to create a new message. + */ +export const NetworkServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 4); + +/** + * NetworkServiceUpdateResponse + * + * @generated from message metalstack.api.v2.NetworkServiceUpdateResponse + */ +export type NetworkServiceUpdateResponse = Message<"metalstack.api.v2.NetworkServiceUpdateResponse"> & { + /** + * Network is the updated network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceUpdateResponse. + * Use `create(NetworkServiceUpdateResponseSchema)` to create a new message. + */ +export const NetworkServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 5); + +/** + * NetworkServiceListRequest + * + * @generated from message metalstack.api.v2.NetworkServiceListRequest + */ +export type NetworkServiceListRequest = Message<"metalstack.api.v2.NetworkServiceListRequest"> & { + /** + * Project of the networks to list + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * Query which specifies which networks to return + * + * @generated from field: metalstack.api.v2.NetworkQuery query = 2; + */ + query?: NetworkQuery; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceListRequest. + * Use `create(NetworkServiceListRequestSchema)` to create a new message. + */ +export const NetworkServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 6); + +/** + * NetworkServiceListResponse + * + * @generated from message metalstack.api.v2.NetworkServiceListResponse + */ +export type NetworkServiceListResponse = Message<"metalstack.api.v2.NetworkServiceListResponse"> & { + /** + * Networks are the requested networks + * + * @generated from field: repeated metalstack.api.v2.Network networks = 1; + */ + networks: Network[]; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceListResponse. + * Use `create(NetworkServiceListResponseSchema)` to create a new message. + */ +export const NetworkServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 7); + +/** + * NetworkServiceListRequest + * + * @generated from message metalstack.api.v2.NetworkServiceListBaseNetworksRequest + */ +export type NetworkServiceListBaseNetworksRequest = Message<"metalstack.api.v2.NetworkServiceListBaseNetworksRequest"> & { + /** + * Project of the base networks to list + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * Query which specifies which networks to return + * + * @generated from field: metalstack.api.v2.NetworkQuery query = 2; + */ + query?: NetworkQuery; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceListBaseNetworksRequest. + * Use `create(NetworkServiceListBaseNetworksRequestSchema)` to create a new message. + */ +export const NetworkServiceListBaseNetworksRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 8); + +/** + * NetworkServiceListResponse + * + * @generated from message metalstack.api.v2.NetworkServiceListBaseNetworksResponse + */ +export type NetworkServiceListBaseNetworksResponse = Message<"metalstack.api.v2.NetworkServiceListBaseNetworksResponse"> & { + /** + * Networks are the requested networks + * + * @generated from field: repeated metalstack.api.v2.Network networks = 1; + */ + networks: Network[]; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceListBaseNetworksResponse. + * Use `create(NetworkServiceListBaseNetworksResponseSchema)` to create a new message. + */ +export const NetworkServiceListBaseNetworksResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 9); + +/** + * NetworkServiceDeleteRequest + * + * @generated from message metalstack.api.v2.NetworkServiceDeleteRequest + */ +export type NetworkServiceDeleteRequest = Message<"metalstack.api.v2.NetworkServiceDeleteRequest"> & { + /** + * ID of the network to get + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Project of the network + * + * @generated from field: string project = 2; + */ + project: string; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceDeleteRequest. + * Use `create(NetworkServiceDeleteRequestSchema)` to create a new message. + */ +export const NetworkServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 10); + +/** + * NetworkServiceDeleteResponse + * + * @generated from message metalstack.api.v2.NetworkServiceDeleteResponse + */ +export type NetworkServiceDeleteResponse = Message<"metalstack.api.v2.NetworkServiceDeleteResponse"> & { + /** + * Network is the deleted network + * + * @generated from field: metalstack.api.v2.Network network = 1; + */ + network?: Network; +}; + +/** + * Describes the message metalstack.api.v2.NetworkServiceDeleteResponse. + * Use `create(NetworkServiceDeleteResponseSchema)` to create a new message. + */ +export const NetworkServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 11); + +/** + * Network + * + * @generated from message metalstack.api.v2.Network + */ +export type Network = Message<"metalstack.api.v2.Network"> & { + /** + * Id of this network + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Meta for this network + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + + /** + * Name of this network + * + * @generated from field: optional string name = 3; + */ + name?: string; + + /** + * Description of this network + * + * @generated from field: optional string description = 4; + */ + description?: string; + + /** + * Partition where this network will be created + * + * @generated from field: optional string partition = 5; + */ + partition?: string; + + /** + * Project where this network belongs to + * + * @generated from field: optional string project = 6; + */ + project?: string; + + /** + * Namespace if specified, this network is namespaced and can therefore overlap with others + * Will be equal with project most of the time + * + * @generated from field: optional string namespace = 7; + */ + namespace?: string; + + /** + * Prefixes in this network + * + * @generated from field: repeated string prefixes = 8; + */ + prefixes: string[]; + + /** + * Destination Prefixes in this network + * + * @generated from field: repeated string destination_prefixes = 9; + */ + destinationPrefixes: string[]; + + /** + * Default Child Prefix length defines the bitlength of a child network created per addressfamily, of not specified during the allocate request + * + * @generated from field: metalstack.api.v2.ChildPrefixLength default_child_prefix_length = 10; + */ + defaultChildPrefixLength?: ChildPrefixLength; + + /** + * Min Child Prefix length asserts that during child network creation the requested bit length is greater or equal the min child prefix length + * + * @generated from field: metalstack.api.v2.ChildPrefixLength min_child_prefix_length = 11; + */ + minChildPrefixLength?: ChildPrefixLength; + + /** + * Type of the network + * + * @generated from field: optional metalstack.api.v2.NetworkType type = 12; + */ + type?: NetworkType; + + /** + * NATType of this network + * + * @generated from field: optional metalstack.api.v2.NATType nat_type = 13; + */ + natType?: NATType; + + /** + * VRF of this network has this VNI. + * + * @generated from field: optional uint32 vrf = 14; + */ + vrf?: number; + + /** + * Parent Network points to the id of the parent network if any + * + * @generated from field: optional string parent_network = 15; + */ + parentNetwork?: string; + + /** + * AdditionalAnnouncableCidrs will be added to the allow list on the switch which prefixes might be announced + * + * @generated from field: repeated string additional_announcable_cidrs = 16; + */ + additionalAnnouncableCidrs: string[]; + + /** + * Consumption of ips and prefixes in this networks + * + * @generated from field: metalstack.api.v2.NetworkConsumption consumption = 17; + */ + consumption?: NetworkConsumption; +}; + +/** + * Describes the message metalstack.api.v2.Network. + * Use `create(NetworkSchema)` to create a new message. + */ +export const NetworkSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 12); + +/** + * NetworkQuery defines which networks to query + * + * @generated from message metalstack.api.v2.NetworkQuery + */ +export type NetworkQuery = Message<"metalstack.api.v2.NetworkQuery"> & { + /** + * Id of the network to query + * + * @generated from field: optional string id = 1; + */ + id?: string; + + /** + * Name of this network + * + * @generated from field: optional string name = 2; + */ + name?: string; + + /** + * Description of this network + * + * @generated from field: optional string description = 3; + */ + description?: string; + + /** + * Partition where this network will be created + * + * @generated from field: optional string partition = 4; + */ + partition?: string; + + /** + * Project where this network belongs to + * + * @generated from field: optional string project = 5; + */ + project?: string; + + /** + * Namespace where this network belongs to + * + * @generated from field: optional string namespace = 6; + */ + namespace?: string; + + /** + * Prefixes in this network + * + * @generated from field: repeated string prefixes = 7; + */ + prefixes: string[]; + + /** + * Destination Prefixes in this network + * + * @generated from field: repeated string destination_prefixes = 8; + */ + destinationPrefixes: string[]; + + /** + * VRF of this network has this VNI. + * + * @generated from field: optional uint32 vrf = 9; + */ + vrf?: number; + + /** + * Parent Network points to the id of the parent network if any + * + * @generated from field: optional string parent_network = 10; + */ + parentNetwork?: string; + + /** + * Addressfamily to query + * + * @generated from field: optional metalstack.api.v2.NetworkAddressFamily address_family = 11; + */ + addressFamily?: NetworkAddressFamily; + + /** + * Type of the network to query for + * + * @generated from field: optional metalstack.api.v2.NetworkType type = 12; + */ + type?: NetworkType; + + /** + * NATType configured + * + * @generated from field: optional metalstack.api.v2.NATType nat_type = 13; + */ + natType?: NATType; + + /** + * Labels on this network + * + * @generated from field: optional metalstack.api.v2.Labels labels = 14; + */ + labels?: Labels; +}; + +/** + * Describes the message metalstack.api.v2.NetworkQuery. + * Use `create(NetworkQuerySchema)` to create a new message. + */ +export const NetworkQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 13); + +/** + * ChildPrefixLength + * + * @generated from message metalstack.api.v2.ChildPrefixLength + */ +export type ChildPrefixLength = Message<"metalstack.api.v2.ChildPrefixLength"> & { + /** + * IPv4 bit length of this network in this addressfamily + * + * @generated from field: optional uint32 ipv4 = 1; + */ + ipv4?: number; + + /** + * IPv6 bit length of this network in this addressfamily + * + * @generated from field: optional uint32 ipv6 = 2; + */ + ipv6?: number; +}; + +/** + * Describes the message metalstack.api.v2.ChildPrefixLength. + * Use `create(ChildPrefixLengthSchema)` to create a new message. + */ +export const ChildPrefixLengthSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 14); + +/** + * NetworkConsumption contains ip and prefix usage by addressfamily + * + * @generated from message metalstack.api.v2.NetworkConsumption + */ +export type NetworkConsumption = Message<"metalstack.api.v2.NetworkConsumption"> & { + /** + * IPv4 network usage + * + * @generated from field: metalstack.api.v2.NetworkUsage ipv4 = 1; + */ + ipv4?: NetworkUsage; + + /** + * IPv6 network usage, this can be approximated for high numbers + * + * @generated from field: metalstack.api.v2.NetworkUsage ipv6 = 2; + */ + ipv6?: NetworkUsage; +}; + +/** + * Describes the message metalstack.api.v2.NetworkConsumption. + * Use `create(NetworkConsumptionSchema)` to create a new message. + */ +export const NetworkConsumptionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 15); + +/** + * NetworkUsage reports core metrics about available and used IPs or Prefixes in a Network. + * + * @generated from message metalstack.api.v2.NetworkUsage + */ +export type NetworkUsage = Message<"metalstack.api.v2.NetworkUsage"> & { + /** + * the total available IPs + * + * @generated from field: uint64 available_ips = 2; + */ + availableIps: bigint; + + /** + * the total used IPs + * + * @generated from field: uint64 used_ips = 3; + */ + usedIps: bigint; + + /** + * the total available 2 bit Prefixes + * + * @generated from field: uint64 available_prefixes = 4; + */ + availablePrefixes: bigint; + + /** + * the total used Prefixes + * + * @generated from field: uint64 used_prefixes = 5; + */ + usedPrefixes: bigint; +}; + +/** + * Describes the message metalstack.api.v2.NetworkUsage. + * Use `create(NetworkUsageSchema)` to create a new message. + */ +export const NetworkUsageSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_network, 16); + +/** + * NATType defines how and if outgoing traffic is translated + * + * @generated from enum metalstack.api.v2.NATType + */ +export enum NATType { + /** + * NAT_TYPE_UNSPECIFIED indicates a unspecified nat type + * + * @generated from enum value: NAT_TYPE_UNSPECIFIED = 0; + */ + NAT_TYPE_UNSPECIFIED = 0, + + /** + * NAT_TYPE_NONE indicates that no nat is configured + * + * @generated from enum value: NAT_TYPE_NONE = 1; + */ + NAT_TYPE_NONE = 1, + + /** + * NAT_TYPE_IPV4_MASQUERADE masquerade ipv4 behind gateway ip when traffic enters this network + * + * @generated from enum value: NAT_TYPE_IPV4_MASQUERADE = 2; + */ + NAT_TYPE_IPV4_MASQUERADE = 2, +} + +/** + * Describes the enum metalstack.api.v2.NATType. + */ +export const NATTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_network, 0); + +/** + * NetworkType indicates the purpose of the network, it cannot be changed after creation + * + * @generated from enum metalstack.api.v2.NetworkType + */ +export enum NetworkType { + /** + * NETWORK_TYPE_UNSPECIFIED indicates a unknown network type + * + * @generated from enum value: NETWORK_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * NETWORK_TYPE_EXTERNAL indicates network where multiple projects can allocate ips, it offers connectivity to other external networks + * In most cases this is the internet network or a network which offers connectivity to legacy datacenter networks. + * If it is not project scoped everyone can allocate Ips in this network, otherwise only from the same project ip allocation is possible. + * + * @generated from enum value: NETWORK_TYPE_EXTERNAL = 1; + */ + EXTERNAL = 1, + + /** + * NETWORK_TYPE_UNDERLAY indicates a underlay network + * The underlay network connects all switches and the firewalls to build a EVPN dataplane + * It is not project scoped. Is part of the dataplane and reserved for administrative purposes. + * + * @generated from enum value: NETWORK_TYPE_UNDERLAY = 2; + */ + UNDERLAY = 2, + + /** + * NETWORK_TYPE_SUPER indicates a super network which is only used to create child networks + * If the vrf id is given, child networks will inherit this vrf. + * If the vrf id is nil in this network, child vrf is taken from the pool. + * If the partition is given, child networks inherit the partition. + * If the partition is nil, child networks also do not have a partition (i.e. requires vrf is distributed across all partitions). + * If the partition is given, only one super network in that partition can be created. + * If the partition is nil, multiple super networks can exist. Then, for child network creation the network id must be specified (base networks can be queried by label selector). + * For child creation destination prefixes will be inherited + * If this is project scoped, the child project must match, otherwise can be freely specified. + * + * @generated from enum value: NETWORK_TYPE_SUPER = 3; + */ + SUPER = 3, + + /** + * NETWORK_TYPE_SUPER_NAMESPACED indicates a super network which is only used to create child networks. + * All rules from NETWORK_TYPE_SUPER apply for them as well. + * In addition, a network namespace will be created for every project. Child networks per project will have disjunct prefixes. + * Prefix allocation will start again with the same base cidr for every project / namespace. + * This will allow the creation of much more child networks from a given super network size. + * + * @generated from enum value: NETWORK_TYPE_SUPER_NAMESPACED = 4; + */ + SUPER_NAMESPACED = 4, + + /** + * NETWORK_TYPE_CHILD indicates a child network of a project. + * This is the only network type that can be created by a user. + * Connectivity to external networks is not possible without going through an additional firewall in this network which creates connectivity to other networks. + * Such a network will be created either from a super, or super namespaced. + * + * @generated from enum value: NETWORK_TYPE_CHILD = 5; + */ + CHILD = 5, + + /** + * NETWORK_TYPE_CHILD_SHARED indicates a child network of a project which allows the allocation of ips from different projects. + * Connectivity to external networks is not possible, as for normal child networks. + * These networks are usually used to provide connectivity to shared services which are created in child networks, e.g. storage. + * With this approach the number of hops can be reduced to the bare minimum in order to increase availability and performance. + * + * @generated from enum value: NETWORK_TYPE_CHILD_SHARED = 6; + */ + CHILD_SHARED = 6, +} + +/** + * Describes the enum metalstack.api.v2.NetworkType. + */ +export const NetworkTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_network, 1); + +/** + * NetworkAddressFamily defines the address family of a network + * + * @generated from enum metalstack.api.v2.NetworkAddressFamily + */ +export enum NetworkAddressFamily { + /** + * NETWORK_ADDRESS_FAMILY_UNSPECIFIED is not specified + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * NETWORK_ADDRESS_FAMILY_V4 defines a network with IPv4 address prefixes + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_V4 = 1; + */ + V4 = 1, + + /** + * NETWORK_ADDRESS_FAMILY_V6 defines a network with IPv6 address prefixes + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_V6 = 2; + */ + V6 = 2, + + /** + * NETWORK_ADDRESS_FAMILY_DUAL_STACK defines a network with both IPv4 and IPv6 address prefixes + * + * @generated from enum value: NETWORK_ADDRESS_FAMILY_DUAL_STACK = 3; + */ + DUAL_STACK = 3, +} + +/** + * Describes the enum metalstack.api.v2.NetworkAddressFamily. + */ +export const NetworkAddressFamilySchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_network, 2); + +/** + * NetworkService serves network address related functions for end users, e.g. with project scope + * + * @generated from service metalstack.api.v2.NetworkService + */ +export const NetworkService: GenService<{ + /** + * Get a network + * + * @generated from rpc metalstack.api.v2.NetworkService.Get + */ + get: { + methodKind: "unary"; + input: typeof NetworkServiceGetRequestSchema; + output: typeof NetworkServiceGetResponseSchema; + }, + /** + * Create a child network from a super network. + * + * @generated from rpc metalstack.api.v2.NetworkService.Create + */ + create: { + methodKind: "unary"; + input: typeof NetworkServiceCreateRequestSchema; + output: typeof NetworkServiceCreateResponseSchema; + }, + /** + * Update a network + * + * @generated from rpc metalstack.api.v2.NetworkService.Update + */ + update: { + methodKind: "unary"; + input: typeof NetworkServiceUpdateRequestSchema; + output: typeof NetworkServiceUpdateResponseSchema; + }, + /** + * List all project networks + * + * @generated from rpc metalstack.api.v2.NetworkService.List + */ + list: { + methodKind: "unary"; + input: typeof NetworkServiceListRequestSchema; + output: typeof NetworkServiceListResponseSchema; + }, + /** + * ListBaseNetworks all base networks that can be used for either child network or ip allocation + * + * @generated from rpc metalstack.api.v2.NetworkService.ListBaseNetworks + */ + listBaseNetworks: { + methodKind: "unary"; + input: typeof NetworkServiceListBaseNetworksRequestSchema; + output: typeof NetworkServiceListBaseNetworksResponseSchema; + }, + /** + * Delete a network + * + * @generated from rpc metalstack.api.v2.NetworkService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof NetworkServiceDeleteRequestSchema; + output: typeof NetworkServiceDeleteResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_network, 0); + diff --git a/js/metalstack/api/v2/partition_pb.d.ts b/js/metalstack/api/v2/partition_pb.d.ts new file mode 100644 index 00000000..4766ecd7 --- /dev/null +++ b/js/metalstack/api/v2/partition_pb.d.ts @@ -0,0 +1,251 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Labels, Meta } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/partition.proto. + */ +export declare const file_metalstack_api_v2_partition: GenFile; +/** + * Partition is a failure domain with machines and switches + * + * @generated from message metalstack.api.v2.Partition + */ +export type Partition = Message<"metalstack.api.v2.Partition"> & { + /** + * ID of this partition + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Meta for this ip + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + /** + * Description of this partition + * + * @generated from field: string description = 3; + */ + description: string; + /** + * PartitionBootConfiguration defines how metal-hammer boots + * + * @generated from field: metalstack.api.v2.PartitionBootConfiguration boot_configuration = 4; + */ + bootConfiguration?: PartitionBootConfiguration; + /** + * DNSServers for this partition + * + * @generated from field: repeated metalstack.api.v2.DNSServer dns_server = 5; + */ + dnsServer: DNSServer[]; + /** + * NTPServers for this partition + * + * @generated from field: repeated metalstack.api.v2.NTPServer ntp_server = 6; + */ + ntpServer: NTPServer[]; + /** + * ManagementServiceAddresses defines where the management is reachable + * should be in the form : + * + * @generated from field: repeated string mgmt_service_addresses = 7; + */ + mgmtServiceAddresses: string[]; +}; +/** + * Describes the message metalstack.api.v2.Partition. + * Use `create(PartitionSchema)` to create a new message. + */ +export declare const PartitionSchema: GenMessage; +/** + * PartitionQuery is used to search partitions + * + * @generated from message metalstack.api.v2.PartitionQuery + */ +export type PartitionQuery = Message<"metalstack.api.v2.PartitionQuery"> & { + /** + * ID of the partition to get + * + * @generated from field: optional string id = 1; + */ + id?: string; + /** + * Labels lists only partitions containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 2; + */ + labels?: Labels; +}; +/** + * Describes the message metalstack.api.v2.PartitionQuery. + * Use `create(PartitionQuerySchema)` to create a new message. + */ +export declare const PartitionQuerySchema: GenMessage; +/** + * PartitionBootConfiguration defines how metal-hammer boots + * + * @generated from message metalstack.api.v2.PartitionBootConfiguration + */ +export type PartitionBootConfiguration = Message<"metalstack.api.v2.PartitionBootConfiguration"> & { + /** + * ImageURL the url to download the initrd for the boot image + * + * @generated from field: string image_url = 1; + */ + imageUrl: string; + /** + * KernelURL the url to download the kernel for the boot image + * + * @generated from field: string kernel_url = 2; + */ + kernelUrl: string; + /** + * Commandline the cmdline to the kernel for the boot image + * + * @generated from field: string commandline = 3; + */ + commandline: string; +}; +/** + * Describes the message metalstack.api.v2.PartitionBootConfiguration. + * Use `create(PartitionBootConfigurationSchema)` to create a new message. + */ +export declare const PartitionBootConfigurationSchema: GenMessage; +/** + * DNSServer + * + * @generated from message metalstack.api.v2.DNSServer + */ +export type DNSServer = Message<"metalstack.api.v2.DNSServer"> & { + /** + * IP address of this dns server + * + * @generated from field: string ip = 1; + */ + ip: string; +}; +/** + * Describes the message metalstack.api.v2.DNSServer. + * Use `create(DNSServerSchema)` to create a new message. + */ +export declare const DNSServerSchema: GenMessage; +/** + * NTPServer + * + * @generated from message metalstack.api.v2.NTPServer + */ +export type NTPServer = Message<"metalstack.api.v2.NTPServer"> & { + /** + * Address either as ip or hostname + * + * @generated from field: string address = 1; + */ + address: string; +}; +/** + * Describes the message metalstack.api.v2.NTPServer. + * Use `create(NTPServerSchema)` to create a new message. + */ +export declare const NTPServerSchema: GenMessage; +/** + * PartitionServiceGetRequest is the request payload for a partition get request + * + * @generated from message metalstack.api.v2.PartitionServiceGetRequest + */ +export type PartitionServiceGetRequest = Message<"metalstack.api.v2.PartitionServiceGetRequest"> & { + /** + * ID of the partition to get + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.api.v2.PartitionServiceGetRequest. + * Use `create(PartitionServiceGetRequestSchema)` to create a new message. + */ +export declare const PartitionServiceGetRequestSchema: GenMessage; +/** + * PartitionServiceListRequest is the request payload for a partition list request + * + * @generated from message metalstack.api.v2.PartitionServiceListRequest + */ +export type PartitionServiceListRequest = Message<"metalstack.api.v2.PartitionServiceListRequest"> & { + /** + * Query for partitions + * + * @generated from field: metalstack.api.v2.PartitionQuery query = 1; + */ + query?: PartitionQuery; +}; +/** + * Describes the message metalstack.api.v2.PartitionServiceListRequest. + * Use `create(PartitionServiceListRequestSchema)` to create a new message. + */ +export declare const PartitionServiceListRequestSchema: GenMessage; +/** + * PartitionServiceGetResponse is the response payload for a partition get request + * + * @generated from message metalstack.api.v2.PartitionServiceGetResponse + */ +export type PartitionServiceGetResponse = Message<"metalstack.api.v2.PartitionServiceGetResponse"> & { + /** + * Ip the partition + * + * @generated from field: metalstack.api.v2.Partition partition = 1; + */ + partition?: Partition; +}; +/** + * Describes the message metalstack.api.v2.PartitionServiceGetResponse. + * Use `create(PartitionServiceGetResponseSchema)` to create a new message. + */ +export declare const PartitionServiceGetResponseSchema: GenMessage; +/** + * PartitionServiceListResponse is the response payload for a partition list request + * + * @generated from message metalstack.api.v2.PartitionServiceListResponse + */ +export type PartitionServiceListResponse = Message<"metalstack.api.v2.PartitionServiceListResponse"> & { + /** + * Ips the partitions + * + * @generated from field: repeated metalstack.api.v2.Partition partitions = 1; + */ + partitions: Partition[]; +}; +/** + * Describes the message metalstack.api.v2.PartitionServiceListResponse. + * Use `create(PartitionServiceListResponseSchema)` to create a new message. + */ +export declare const PartitionServiceListResponseSchema: GenMessage; +/** + * PartitionService serves partition address related functions + * + * @generated from service metalstack.api.v2.PartitionService + */ +export declare const PartitionService: GenService<{ + /** + * Get a partition + * + * @generated from rpc metalstack.api.v2.PartitionService.Get + */ + get: { + methodKind: "unary"; + input: typeof PartitionServiceGetRequestSchema; + output: typeof PartitionServiceGetResponseSchema; + }; + /** + * List all partitions + * + * @generated from rpc metalstack.api.v2.PartitionService.List + */ + list: { + methodKind: "unary"; + input: typeof PartitionServiceListRequestSchema; + output: typeof PartitionServiceListResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/partition_pb.js b/js/metalstack/api/v2/partition_pb.js new file mode 100644 index 00000000..3c2fa73c --- /dev/null +++ b/js/metalstack/api/v2/partition_pb.js @@ -0,0 +1,62 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/partition.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +/** + * Describes the file metalstack/api/v2/partition.proto. + */ +export const file_metalstack_api_v2_partition = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FwaS92Mi9wYXJ0aXRpb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIs8CCglQYXJ0aXRpb24SFgoCaWQYASABKAlCCrpIB3IFEAIYgAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEkkKEmJvb3RfY29uZmlndXJhdGlvbhgEIAEoCzItLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbkJvb3RDb25maWd1cmF0aW9uEjoKCmRuc19zZXJ2ZXIYBSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYBiADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEh4KFm1nbXRfc2VydmljZV9hZGRyZXNzZXMYByADKAkibwoOUGFydGl0aW9uUXVlcnkSGwoCaWQYASABKAlCCrpIB3IFEAIYgAFIAIgBARIuCgZsYWJlbHMYAiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIAYgBAUIFCgNfaWRCCQoHX2xhYmVscyJyChpQYXJ0aXRpb25Cb290Q29uZmlndXJhdGlvbhIeCglpbWFnZV91cmwYASABKAlCC7pICHIG4LOusQIBEh8KCmtlcm5lbF91cmwYAiABKAlCC7pICHIG4LOusQIBEhMKC2NvbW1hbmRsaW5lGAMgASgJIiAKCUROU1NlcnZlchITCgJpcBgBIAEoCUIHukgEcgJwASImCglOVFBTZXJ2ZXISGQoHYWRkcmVzcxgBIAEoCUIIukgFcgMYgAIiNAoaUGFydGl0aW9uU2VydmljZUdldFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiTwobUGFydGl0aW9uU2VydmljZUxpc3RSZXF1ZXN0EjAKBXF1ZXJ5GAEgASgLMiEubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uUXVlcnkiTgobUGFydGl0aW9uU2VydmljZUdldFJlc3BvbnNlEi8KCXBhcnRpdGlvbhgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbiJQChxQYXJ0aXRpb25TZXJ2aWNlTGlzdFJlc3BvbnNlEjAKCnBhcnRpdGlvbnMYASADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24y9QEKEFBhcnRpdGlvblNlcnZpY2USbgoDR2V0Ei0ubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uU2VydmljZUdldFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25TZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgCEnEKBExpc3QSLi5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25TZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25TZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgD4PMYAkLEAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQg5QYXJ0aXRpb25Qcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.api.v2.Partition. + * Use `create(PartitionSchema)` to create a new message. + */ +export const PartitionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_partition, 0); +/** + * Describes the message metalstack.api.v2.PartitionQuery. + * Use `create(PartitionQuerySchema)` to create a new message. + */ +export const PartitionQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_partition, 1); +/** + * Describes the message metalstack.api.v2.PartitionBootConfiguration. + * Use `create(PartitionBootConfigurationSchema)` to create a new message. + */ +export const PartitionBootConfigurationSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_partition, 2); +/** + * Describes the message metalstack.api.v2.DNSServer. + * Use `create(DNSServerSchema)` to create a new message. + */ +export const DNSServerSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_partition, 3); +/** + * Describes the message metalstack.api.v2.NTPServer. + * Use `create(NTPServerSchema)` to create a new message. + */ +export const NTPServerSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_partition, 4); +/** + * Describes the message metalstack.api.v2.PartitionServiceGetRequest. + * Use `create(PartitionServiceGetRequestSchema)` to create a new message. + */ +export const PartitionServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_partition, 5); +/** + * Describes the message metalstack.api.v2.PartitionServiceListRequest. + * Use `create(PartitionServiceListRequestSchema)` to create a new message. + */ +export const PartitionServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_partition, 6); +/** + * Describes the message metalstack.api.v2.PartitionServiceGetResponse. + * Use `create(PartitionServiceGetResponseSchema)` to create a new message. + */ +export const PartitionServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_partition, 7); +/** + * Describes the message metalstack.api.v2.PartitionServiceListResponse. + * Use `create(PartitionServiceListResponseSchema)` to create a new message. + */ +export const PartitionServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_partition, 8); +/** + * PartitionService serves partition address related functions + * + * @generated from service metalstack.api.v2.PartitionService + */ +export const PartitionService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_partition, 0); diff --git a/js/metalstack/api/v2/partition_pb.ts b/js/metalstack/api/v2/partition_pb.ts new file mode 100644 index 00000000..b16ef53e --- /dev/null +++ b/js/metalstack/api/v2/partition_pb.ts @@ -0,0 +1,300 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/partition.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Labels, Meta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/partition.proto. + */ +export const file_metalstack_api_v2_partition: GenFile = /*@__PURE__*/ + fileDesc("CiFtZXRhbHN0YWNrL2FwaS92Mi9wYXJ0aXRpb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIs8CCglQYXJ0aXRpb24SFgoCaWQYASABKAlCCrpIB3IFEAIYgAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEkkKEmJvb3RfY29uZmlndXJhdGlvbhgEIAEoCzItLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbkJvb3RDb25maWd1cmF0aW9uEjoKCmRuc19zZXJ2ZXIYBSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYBiADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEh4KFm1nbXRfc2VydmljZV9hZGRyZXNzZXMYByADKAkibwoOUGFydGl0aW9uUXVlcnkSGwoCaWQYASABKAlCCrpIB3IFEAIYgAFIAIgBARIuCgZsYWJlbHMYAiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIAYgBAUIFCgNfaWRCCQoHX2xhYmVscyJyChpQYXJ0aXRpb25Cb290Q29uZmlndXJhdGlvbhIeCglpbWFnZV91cmwYASABKAlCC7pICHIG4LOusQIBEh8KCmtlcm5lbF91cmwYAiABKAlCC7pICHIG4LOusQIBEhMKC2NvbW1hbmRsaW5lGAMgASgJIiAKCUROU1NlcnZlchITCgJpcBgBIAEoCUIHukgEcgJwASImCglOVFBTZXJ2ZXISGQoHYWRkcmVzcxgBIAEoCUIIukgFcgMYgAIiNAoaUGFydGl0aW9uU2VydmljZUdldFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiTwobUGFydGl0aW9uU2VydmljZUxpc3RSZXF1ZXN0EjAKBXF1ZXJ5GAEgASgLMiEubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uUXVlcnkiTgobUGFydGl0aW9uU2VydmljZUdldFJlc3BvbnNlEi8KCXBhcnRpdGlvbhgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbiJQChxQYXJ0aXRpb25TZXJ2aWNlTGlzdFJlc3BvbnNlEjAKCnBhcnRpdGlvbnMYASADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24y9QEKEFBhcnRpdGlvblNlcnZpY2USbgoDR2V0Ei0ubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uU2VydmljZUdldFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25TZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgCEnEKBExpc3QSLi5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25TZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25TZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgD4PMYAkLEAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQg5QYXJ0aXRpb25Qcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + +/** + * Partition is a failure domain with machines and switches + * + * @generated from message metalstack.api.v2.Partition + */ +export type Partition = Message<"metalstack.api.v2.Partition"> & { + /** + * ID of this partition + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Meta for this ip + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + + /** + * Description of this partition + * + * @generated from field: string description = 3; + */ + description: string; + + /** + * PartitionBootConfiguration defines how metal-hammer boots + * + * @generated from field: metalstack.api.v2.PartitionBootConfiguration boot_configuration = 4; + */ + bootConfiguration?: PartitionBootConfiguration; + + /** + * DNSServers for this partition + * + * @generated from field: repeated metalstack.api.v2.DNSServer dns_server = 5; + */ + dnsServer: DNSServer[]; + + /** + * NTPServers for this partition + * + * @generated from field: repeated metalstack.api.v2.NTPServer ntp_server = 6; + */ + ntpServer: NTPServer[]; + + /** + * ManagementServiceAddresses defines where the management is reachable + * should be in the form : + * + * @generated from field: repeated string mgmt_service_addresses = 7; + */ + mgmtServiceAddresses: string[]; +}; + +/** + * Describes the message metalstack.api.v2.Partition. + * Use `create(PartitionSchema)` to create a new message. + */ +export const PartitionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_partition, 0); + +/** + * PartitionQuery is used to search partitions + * + * @generated from message metalstack.api.v2.PartitionQuery + */ +export type PartitionQuery = Message<"metalstack.api.v2.PartitionQuery"> & { + /** + * ID of the partition to get + * + * @generated from field: optional string id = 1; + */ + id?: string; + + /** + * Labels lists only partitions containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 2; + */ + labels?: Labels; +}; + +/** + * Describes the message metalstack.api.v2.PartitionQuery. + * Use `create(PartitionQuerySchema)` to create a new message. + */ +export const PartitionQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_partition, 1); + +/** + * PartitionBootConfiguration defines how metal-hammer boots + * + * @generated from message metalstack.api.v2.PartitionBootConfiguration + */ +export type PartitionBootConfiguration = Message<"metalstack.api.v2.PartitionBootConfiguration"> & { + /** + * ImageURL the url to download the initrd for the boot image + * + * @generated from field: string image_url = 1; + */ + imageUrl: string; + + /** + * KernelURL the url to download the kernel for the boot image + * + * @generated from field: string kernel_url = 2; + */ + kernelUrl: string; + + /** + * Commandline the cmdline to the kernel for the boot image + * + * @generated from field: string commandline = 3; + */ + commandline: string; +}; + +/** + * Describes the message metalstack.api.v2.PartitionBootConfiguration. + * Use `create(PartitionBootConfigurationSchema)` to create a new message. + */ +export const PartitionBootConfigurationSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_partition, 2); + +/** + * DNSServer + * + * @generated from message metalstack.api.v2.DNSServer + */ +export type DNSServer = Message<"metalstack.api.v2.DNSServer"> & { + /** + * IP address of this dns server + * + * @generated from field: string ip = 1; + */ + ip: string; +}; + +/** + * Describes the message metalstack.api.v2.DNSServer. + * Use `create(DNSServerSchema)` to create a new message. + */ +export const DNSServerSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_partition, 3); + +/** + * NTPServer + * + * @generated from message metalstack.api.v2.NTPServer + */ +export type NTPServer = Message<"metalstack.api.v2.NTPServer"> & { + /** + * Address either as ip or hostname + * + * @generated from field: string address = 1; + */ + address: string; +}; + +/** + * Describes the message metalstack.api.v2.NTPServer. + * Use `create(NTPServerSchema)` to create a new message. + */ +export const NTPServerSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_partition, 4); + +/** + * PartitionServiceGetRequest is the request payload for a partition get request + * + * @generated from message metalstack.api.v2.PartitionServiceGetRequest + */ +export type PartitionServiceGetRequest = Message<"metalstack.api.v2.PartitionServiceGetRequest"> & { + /** + * ID of the partition to get + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.api.v2.PartitionServiceGetRequest. + * Use `create(PartitionServiceGetRequestSchema)` to create a new message. + */ +export const PartitionServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_partition, 5); + +/** + * PartitionServiceListRequest is the request payload for a partition list request + * + * @generated from message metalstack.api.v2.PartitionServiceListRequest + */ +export type PartitionServiceListRequest = Message<"metalstack.api.v2.PartitionServiceListRequest"> & { + /** + * Query for partitions + * + * @generated from field: metalstack.api.v2.PartitionQuery query = 1; + */ + query?: PartitionQuery; +}; + +/** + * Describes the message metalstack.api.v2.PartitionServiceListRequest. + * Use `create(PartitionServiceListRequestSchema)` to create a new message. + */ +export const PartitionServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_partition, 6); + +/** + * PartitionServiceGetResponse is the response payload for a partition get request + * + * @generated from message metalstack.api.v2.PartitionServiceGetResponse + */ +export type PartitionServiceGetResponse = Message<"metalstack.api.v2.PartitionServiceGetResponse"> & { + /** + * Ip the partition + * + * @generated from field: metalstack.api.v2.Partition partition = 1; + */ + partition?: Partition; +}; + +/** + * Describes the message metalstack.api.v2.PartitionServiceGetResponse. + * Use `create(PartitionServiceGetResponseSchema)` to create a new message. + */ +export const PartitionServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_partition, 7); + +/** + * PartitionServiceListResponse is the response payload for a partition list request + * + * @generated from message metalstack.api.v2.PartitionServiceListResponse + */ +export type PartitionServiceListResponse = Message<"metalstack.api.v2.PartitionServiceListResponse"> & { + /** + * Ips the partitions + * + * @generated from field: repeated metalstack.api.v2.Partition partitions = 1; + */ + partitions: Partition[]; +}; + +/** + * Describes the message metalstack.api.v2.PartitionServiceListResponse. + * Use `create(PartitionServiceListResponseSchema)` to create a new message. + */ +export const PartitionServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_partition, 8); + +/** + * PartitionService serves partition address related functions + * + * @generated from service metalstack.api.v2.PartitionService + */ +export const PartitionService: GenService<{ + /** + * Get a partition + * + * @generated from rpc metalstack.api.v2.PartitionService.Get + */ + get: { + methodKind: "unary"; + input: typeof PartitionServiceGetRequestSchema; + output: typeof PartitionServiceGetResponseSchema; + }, + /** + * List all partitions + * + * @generated from rpc metalstack.api.v2.PartitionService.List + */ + list: { + methodKind: "unary"; + input: typeof PartitionServiceListRequestSchema; + output: typeof PartitionServiceListResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_partition, 0); + diff --git a/js/metalstack/api/v2/predefined_rules_pb.d.ts b/js/metalstack/api/v2/predefined_rules_pb.d.ts new file mode 100644 index 00000000..9cdc572e --- /dev/null +++ b/js/metalstack/api/v2/predefined_rules_pb.d.ts @@ -0,0 +1,54 @@ +import type { GenExtension, GenFile } from "@bufbuild/protobuf/codegenv2"; +import type { RepeatedRules, StringRules } from "../../../buf/validate/validate_pb"; +/** + * Describes the file metalstack/api/v2/predefined_rules.proto. + */ +export declare const file_metalstack_api_v2_predefined_rules: GenFile; +/** + * Macaddress returns true if the given string is a valid macadress + * + * @generated from extension: optional bool macaddress = 80048951; + */ +export declare const macaddress: GenExtension; +/** + * IsName returns true if name field satisfies our requirements + * + * @generated from extension: optional bool is_name = 80048952; + */ +export declare const is_name: GenExtension; +/** + * IsDescription returns true if description field satisfies our requirements + * + * @generated from extension: optional bool is_description = 80048953; + */ +export declare const is_description: GenExtension; +/** + * IsPartition returns true if partition field satisfies our requirements + * + * @generated from extension: optional bool is_partition = 80048954; + */ +export declare const is_partition: GenExtension; +/** + * IsPrefix validates if the given string is a valid prefix + * + * @generated from extension: optional bool is_prefix = 80048955; + */ +export declare const is_prefix: GenExtension; +/** + * IsUri validates if the given string is a valid URI + * + * @generated from extension: optional bool is_uri = 80048956; + */ +export declare const is_uri: GenExtension; +/** + * Prefixes validates if a slice of prefixes in string form are valid + * + * @generated from extension: optional bool prefixes = 80048956; + */ +export declare const prefixes: GenExtension; +/** + * Ips validates if a slice of ips in string form are valid + * + * @generated from extension: optional bool ips = 80048957; + */ +export declare const ips: GenExtension; diff --git a/js/metalstack/api/v2/predefined_rules_pb.js b/js/metalstack/api/v2/predefined_rules_pb.js new file mode 100644 index 00000000..e398dab4 --- /dev/null +++ b/js/metalstack/api/v2/predefined_rules_pb.js @@ -0,0 +1,57 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/predefined_rules.proto (package metalstack.api.v2, syntax proto2) +/* eslint-disable */ +import { extDesc, fileDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +/** + * Describes the file metalstack/api/v2/predefined_rules.proto. + */ +export const file_metalstack_api_v2_predefined_rules = /*@__PURE__*/ fileDesc("CihtZXRhbHN0YWNrL2FwaS92Mi9wcmVkZWZpbmVkX3J1bGVzLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52Mjq4AQoKbWFjYWRkcmVzcxIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi35pUmIAEoCEJ6wkh3CnUKEXN0cmluZy5tYWNhZGRyZXNzEiZ0aGlzIHN0cmluZyBtdXN0IGJlIGEgdmFsaWQgbWFjYWRkcmVzcxo4dGhpcy5tYXRjaGVzKCdeKFswLTlBLUZhLWZdezJ9WzpdKXs1fShbMC05QS1GYS1mXXsyfSkkJylSCm1hY2FkZHJlc3M6mQEKB2lzX25hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuOaVJiABKAhCYsJIXwpdCg5zdHJpbmcuaXNfbmFtZRIjbXVzdCBiZSB3aXRoaW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4UgZpc05hbWU6mgEKDmlzX2Rlc2NyaXB0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLnmlSYgASgIQlXCSFIKUAoVc3RyaW5nLmlzX2Rlc2NyaXB0aW9uEiNtdXN0IGJlIHNob3J0ZXIgdGhhbiAyNTYgY2hhcmFjdGVycxoSdGhpcy5zaXplKCkgPD0gMjU2Ug1pc0Rlc2NyaXB0aW9uOqgBCgxpc19wYXJ0aXRpb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuuaVJiABKAhCZ8JIZApiChNzdHJpbmcuaXNfcGFydGl0aW9uEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSC2lzUGFydGl0aW9uOoIBCglpc19wcmVmaXgSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYu+aVJiABKAhCR8JIRApCCg9zdHJpbmcucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaEXRoaXMuaXNJcFByZWZpeCgpUghpc1ByZWZpeDptCgZpc191cmkSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvOaVJiABKAhCOMJINQozCgpzdHJpbmcudXJpEhdnaXZlbiB1cmkgbXVzdCBiZSB2YWxpZBoMdGhpcy5pc1VyaSgpUgVpc1VyaTqPAQoIcHJlZml4ZXMSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxi85pUmIAEoCEJTwkhQCk4KEXJlcGVhdGVkLnByZWZpeGVzEhxnaXZlbiBwcmVmaXhlcyBtdXN0IGJlIHZhbGlkGht0aGlzLmFsbChtLCBtLmlzSXBQcmVmaXgoKSlSCHByZWZpeGVzOnUKA2lwcxIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzGL3mlSYgASgIQkPCSEAKPgoMcmVwZWF0ZWQuaXBzEhdnaXZlbiBpcHMgbXVzdCBiZSB2YWxpZBoVdGhpcy5hbGwobSwgbS5pc0lwKCkpUgNpcHNCygEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIUUHJlZGVmaW5lZFJ1bGVzUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYy", [file_buf_validate_validate]); +/** + * Macaddress returns true if the given string is a valid macadress + * + * @generated from extension: optional bool macaddress = 80048951; + */ +export const macaddress = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 0); +/** + * IsName returns true if name field satisfies our requirements + * + * @generated from extension: optional bool is_name = 80048952; + */ +export const is_name = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 1); +/** + * IsDescription returns true if description field satisfies our requirements + * + * @generated from extension: optional bool is_description = 80048953; + */ +export const is_description = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 2); +/** + * IsPartition returns true if partition field satisfies our requirements + * + * @generated from extension: optional bool is_partition = 80048954; + */ +export const is_partition = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 3); +/** + * IsPrefix validates if the given string is a valid prefix + * + * @generated from extension: optional bool is_prefix = 80048955; + */ +export const is_prefix = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 4); +/** + * IsUri validates if the given string is a valid URI + * + * @generated from extension: optional bool is_uri = 80048956; + */ +export const is_uri = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 5); +/** + * Prefixes validates if a slice of prefixes in string form are valid + * + * @generated from extension: optional bool prefixes = 80048956; + */ +export const prefixes = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 6); +/** + * Ips validates if a slice of ips in string form are valid + * + * @generated from extension: optional bool ips = 80048957; + */ +export const ips = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 7); diff --git a/js/metalstack/api/v2/predefined_rules_pb.ts b/js/metalstack/api/v2/predefined_rules_pb.ts new file mode 100644 index 00000000..b62f4b0a --- /dev/null +++ b/js/metalstack/api/v2/predefined_rules_pb.ts @@ -0,0 +1,79 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/predefined_rules.proto (package metalstack.api.v2, syntax proto2) +/* eslint-disable */ + +import type { GenExtension, GenFile } from "@bufbuild/protobuf/codegenv2"; +import { extDesc, fileDesc } from "@bufbuild/protobuf/codegenv2"; +import type { RepeatedRules, StringRules } from "../../../buf/validate/validate_pb"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; + +/** + * Describes the file metalstack/api/v2/predefined_rules.proto. + */ +export const file_metalstack_api_v2_predefined_rules: GenFile = /*@__PURE__*/ + fileDesc("CihtZXRhbHN0YWNrL2FwaS92Mi9wcmVkZWZpbmVkX3J1bGVzLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52Mjq4AQoKbWFjYWRkcmVzcxIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi35pUmIAEoCEJ6wkh3CnUKEXN0cmluZy5tYWNhZGRyZXNzEiZ0aGlzIHN0cmluZyBtdXN0IGJlIGEgdmFsaWQgbWFjYWRkcmVzcxo4dGhpcy5tYXRjaGVzKCdeKFswLTlBLUZhLWZdezJ9WzpdKXs1fShbMC05QS1GYS1mXXsyfSkkJylSCm1hY2FkZHJlc3M6mQEKB2lzX25hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuOaVJiABKAhCYsJIXwpdCg5zdHJpbmcuaXNfbmFtZRIjbXVzdCBiZSB3aXRoaW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4UgZpc05hbWU6mgEKDmlzX2Rlc2NyaXB0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLnmlSYgASgIQlXCSFIKUAoVc3RyaW5nLmlzX2Rlc2NyaXB0aW9uEiNtdXN0IGJlIHNob3J0ZXIgdGhhbiAyNTYgY2hhcmFjdGVycxoSdGhpcy5zaXplKCkgPD0gMjU2Ug1pc0Rlc2NyaXB0aW9uOqgBCgxpc19wYXJ0aXRpb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuuaVJiABKAhCZ8JIZApiChNzdHJpbmcuaXNfcGFydGl0aW9uEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSC2lzUGFydGl0aW9uOoIBCglpc19wcmVmaXgSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYu+aVJiABKAhCR8JIRApCCg9zdHJpbmcucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaEXRoaXMuaXNJcFByZWZpeCgpUghpc1ByZWZpeDptCgZpc191cmkSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvOaVJiABKAhCOMJINQozCgpzdHJpbmcudXJpEhdnaXZlbiB1cmkgbXVzdCBiZSB2YWxpZBoMdGhpcy5pc1VyaSgpUgVpc1VyaTqPAQoIcHJlZml4ZXMSGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlcxi85pUmIAEoCEJTwkhQCk4KEXJlcGVhdGVkLnByZWZpeGVzEhxnaXZlbiBwcmVmaXhlcyBtdXN0IGJlIHZhbGlkGht0aGlzLmFsbChtLCBtLmlzSXBQcmVmaXgoKSlSCHByZWZpeGVzOnUKA2lwcxIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzGL3mlSYgASgIQkPCSEAKPgoMcmVwZWF0ZWQuaXBzEhdnaXZlbiBpcHMgbXVzdCBiZSB2YWxpZBoVdGhpcy5hbGwobSwgbS5pc0lwKCkpUgNpcHNCygEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIUUHJlZGVmaW5lZFJ1bGVzUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYy", [file_buf_validate_validate]); + +/** + * Macaddress returns true if the given string is a valid macadress + * + * @generated from extension: optional bool macaddress = 80048951; + */ +export const macaddress: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_predefined_rules, 0); + +/** + * IsName returns true if name field satisfies our requirements + * + * @generated from extension: optional bool is_name = 80048952; + */ +export const is_name: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_predefined_rules, 1); + +/** + * IsDescription returns true if description field satisfies our requirements + * + * @generated from extension: optional bool is_description = 80048953; + */ +export const is_description: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_predefined_rules, 2); + +/** + * IsPartition returns true if partition field satisfies our requirements + * + * @generated from extension: optional bool is_partition = 80048954; + */ +export const is_partition: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_predefined_rules, 3); + +/** + * IsPrefix validates if the given string is a valid prefix + * + * @generated from extension: optional bool is_prefix = 80048955; + */ +export const is_prefix: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_predefined_rules, 4); + +/** + * IsUri validates if the given string is a valid URI + * + * @generated from extension: optional bool is_uri = 80048956; + */ +export const is_uri: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_predefined_rules, 5); + +/** + * Prefixes validates if a slice of prefixes in string form are valid + * + * @generated from extension: optional bool prefixes = 80048956; + */ +export const prefixes: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_predefined_rules, 6); + +/** + * Ips validates if a slice of ips in string form are valid + * + * @generated from extension: optional bool ips = 80048957; + */ +export const ips: GenExtension = /*@__PURE__*/ + extDesc(file_metalstack_api_v2_predefined_rules, 7); + diff --git a/js/metalstack/api/v2/project_pb.d.ts b/js/metalstack/api/v2/project_pb.d.ts new file mode 100644 index 00000000..854bbb9a --- /dev/null +++ b/js/metalstack/api/v2/project_pb.d.ts @@ -0,0 +1,862 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import type { Labels, Meta, ProjectRole, UpdateLabels, UpdateMeta } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/project.proto. + */ +export declare const file_metalstack_api_v2_project: GenFile; +/** + * Project defines a group of resources belonging to a tenant + * a tenant can have multiple projects + * + * @generated from message metalstack.api.v2.Project + */ +export type Project = Message<"metalstack.api.v2.Project"> & { + /** + * Uuid of this project + * + * @generated from field: string uuid = 1; + */ + uuid: string; + /** + * Meta for this project + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + /** + * Name of this project must be unique per tenant + * + * @generated from field: string name = 3; + */ + name: string; + /** + * Description of this project + * + * @generated from field: string description = 4; + */ + description: string; + /** + * Tenant this project belongs to + * + * @generated from field: string tenant = 5; + */ + tenant: string; + /** + * AvatarUrl of the Project + * + * @generated from field: optional string avatar_url = 6; + */ + avatarUrl?: string; +}; +/** + * Describes the message metalstack.api.v2.Project. + * Use `create(ProjectSchema)` to create a new message. + */ +export declare const ProjectSchema: GenMessage; +/** + * ProjectMember defines a user that participates at a project + * + * @generated from message metalstack.api.v2.ProjectMember + */ +export type ProjectMember = Message<"metalstack.api.v2.ProjectMember"> & { + /** + * Id is the user id of the member + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Role is the role of the member + * + * @generated from field: metalstack.api.v2.ProjectRole role = 2; + */ + role: ProjectRole; + /** + * InheritedMembership indicates that this member has implicit permissions on the project through his membership within the tenant. + * This member does not have direct project membership but gains permissions on this project from the role he has in the tenant. + * Inherited memberships are not included in member lists for users with guest permission but only for direct tenant members. + * + * @generated from field: bool inherited_membership = 3; + */ + inheritedMembership: boolean; + /** + * CreatedAt the date when the member was added to the project + * + * @generated from field: google.protobuf.Timestamp created_at = 10; + */ + createdAt?: Timestamp; +}; +/** + * Describes the message metalstack.api.v2.ProjectMember. + * Use `create(ProjectMemberSchema)` to create a new message. + */ +export declare const ProjectMemberSchema: GenMessage; +/** + * ProjectInvite defines invite to project + * + * @generated from message metalstack.api.v2.ProjectInvite + */ +export type ProjectInvite = Message<"metalstack.api.v2.ProjectInvite"> & { + /** + * Secret is the secret part of the invite, typically part of the url + * + * @generated from field: string secret = 1; + */ + secret: string; + /** + * Project is the project id for which this invite was created + * + * @generated from field: string project = 2; + */ + project: string; + /** + * Role is the role in this project the user will get after accepting the invitation + * + * @generated from field: metalstack.api.v2.ProjectRole role = 3; + */ + role: ProjectRole; + /** + * Joined is false as long as a user has not accepted the invite + * + * @generated from field: bool joined = 4; + */ + joined: boolean; + /** + * ProjectName is the project name for which this invite was created + * + * @generated from field: string project_name = 5; + */ + projectName: string; + /** + * Tenant is the login of tenant who invites to join this project + * + * @generated from field: string tenant = 6; + */ + tenant: string; + /** + * TenantName is the name of tenant who invites to join this project + * + * @generated from field: string tenant_name = 7; + */ + tenantName: string; + /** + * ExpiresAt the date when this invite expires + * + * @generated from field: google.protobuf.Timestamp expires_at = 10; + */ + expiresAt?: Timestamp; + /** + * JoinedAt the date when the member accepted this invite + * + * @generated from field: google.protobuf.Timestamp joined_at = 11; + */ + joinedAt?: Timestamp; +}; +/** + * Describes the message metalstack.api.v2.ProjectInvite. + * Use `create(ProjectInviteSchema)` to create a new message. + */ +export declare const ProjectInviteSchema: GenMessage; +/** + * ProjectServiceListRequest is the request payload to list all projects + * + * @generated from message metalstack.api.v2.ProjectServiceListRequest + */ +export type ProjectServiceListRequest = Message<"metalstack.api.v2.ProjectServiceListRequest"> & { + /** + * Id lists only projects with this id + * + * @generated from field: optional string id = 1; + */ + id?: string; + /** + * Name lists only projects with this name + * + * @generated from field: optional string name = 2; + */ + name?: string; + /** + * Tenant lists only projects of this tenant + * + * @generated from field: optional string tenant = 3; + */ + tenant?: string; + /** + * Labels lists only projects containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 6; + */ + labels?: Labels; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceListRequest. + * Use `create(ProjectServiceListRequestSchema)` to create a new message. + */ +export declare const ProjectServiceListRequestSchema: GenMessage; +/** + * ProjectServiceListResponse is the response payload to list all projects + * + * @generated from message metalstack.api.v2.ProjectServiceListResponse + */ +export type ProjectServiceListResponse = Message<"metalstack.api.v2.ProjectServiceListResponse"> & { + /** + * Projects is a list of all your projects + * + * @generated from field: repeated metalstack.api.v2.Project projects = 1; + */ + projects: Project[]; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceListResponse. + * Use `create(ProjectServiceListResponseSchema)` to create a new message. + */ +export declare const ProjectServiceListResponseSchema: GenMessage; +/** + * ProjectServiceGetRequest is the request payload to get a project + * + * @generated from message metalstack.api.v2.ProjectServiceGetRequest + */ +export type ProjectServiceGetRequest = Message<"metalstack.api.v2.ProjectServiceGetRequest"> & { + /** + * Project is the uuid of the project to get + * + * @generated from field: string project = 1; + */ + project: string; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceGetRequest. + * Use `create(ProjectServiceGetRequestSchema)` to create a new message. + */ +export declare const ProjectServiceGetRequestSchema: GenMessage; +/** + * ProjectServiceGetResponse is the response payload to get a projects + * + * @generated from message metalstack.api.v2.ProjectServiceGetResponse + */ +export type ProjectServiceGetResponse = Message<"metalstack.api.v2.ProjectServiceGetResponse"> & { + /** + * Project is the project + * + * @generated from field: metalstack.api.v2.Project project = 1; + */ + project?: Project; + /** + * ProjectMembers in this project, projects guests will only see direct project members and not implicit memberships from tenant permissions + * + * @generated from field: repeated metalstack.api.v2.ProjectMember project_members = 2; + */ + projectMembers: ProjectMember[]; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceGetResponse. + * Use `create(ProjectServiceGetResponseSchema)` to create a new message. + */ +export declare const ProjectServiceGetResponseSchema: GenMessage; +/** + * ProjectServiceCreateRequest is the request payload to Create a project + * + * @generated from message metalstack.api.v2.ProjectServiceCreateRequest + */ +export type ProjectServiceCreateRequest = Message<"metalstack.api.v2.ProjectServiceCreateRequest"> & { + /** + * Login is the tenant of this project + * TODO: is login really a good name? + * + * @generated from field: string login = 1; + */ + login: string; + /** + * Name of this project, unique per tenant + * + * @generated from field: string name = 2; + */ + name: string; + /** + * Description of this project + * + * @generated from field: string description = 3; + */ + description: string; + /** + * Avatar URL of the project + * + * @generated from field: optional string avatar_url = 4; + */ + avatarUrl?: string; + /** + * Labels on the project + * + * @generated from field: metalstack.api.v2.Labels labels = 5; + */ + labels?: Labels; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceCreateRequest. + * Use `create(ProjectServiceCreateRequestSchema)` to create a new message. + */ +export declare const ProjectServiceCreateRequestSchema: GenMessage; +/** + * ProjectServiceCreateResponse is the response payload of creation of a project + * + * @generated from message metalstack.api.v2.ProjectServiceCreateResponse + */ +export type ProjectServiceCreateResponse = Message<"metalstack.api.v2.ProjectServiceCreateResponse"> & { + /** + * Project is the project + * + * @generated from field: metalstack.api.v2.Project project = 1; + */ + project?: Project; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceCreateResponse. + * Use `create(ProjectServiceCreateResponseSchema)` to create a new message. + */ +export declare const ProjectServiceCreateResponseSchema: GenMessage; +/** + * ProjectServiceDeleteRequest is the request payload to delete a project + * + * @generated from message metalstack.api.v2.ProjectServiceDeleteRequest + */ +export type ProjectServiceDeleteRequest = Message<"metalstack.api.v2.ProjectServiceDeleteRequest"> & { + /** + * Project is the uuid of the project to get + * + * @generated from field: string project = 1; + */ + project: string; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceDeleteRequest. + * Use `create(ProjectServiceDeleteRequestSchema)` to create a new message. + */ +export declare const ProjectServiceDeleteRequestSchema: GenMessage; +/** + * ProjectServiceDeleteResponse is the response payload to delete a project + * + * @generated from message metalstack.api.v2.ProjectServiceDeleteResponse + */ +export type ProjectServiceDeleteResponse = Message<"metalstack.api.v2.ProjectServiceDeleteResponse"> & { + /** + * Project is the project + * + * @generated from field: metalstack.api.v2.Project project = 1; + */ + project?: Project; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceDeleteResponse. + * Use `create(ProjectServiceDeleteResponseSchema)` to create a new message. + */ +export declare const ProjectServiceDeleteResponseSchema: GenMessage; +/** + * ProjectServiceUpdateRequest is the request payload to update a project + * + * @generated from message metalstack.api.v2.ProjectServiceUpdateRequest + */ +export type ProjectServiceUpdateRequest = Message<"metalstack.api.v2.ProjectServiceUpdateRequest"> & { + /** + * Project is the uuid of the project to get + * + * @generated from field: string project = 1; + */ + project: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * Name of this project unique per tenant + * + * @generated from field: optional string name = 3; + */ + name?: string; + /** + * Description of this project + * + * @generated from field: optional string description = 4; + */ + description?: string; + /** + * Avatar URL of the project + * + * @generated from field: optional string avatar_url = 5; + */ + avatarUrl?: string; + /** + * Labels on this project + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 6; + */ + labels?: UpdateLabels; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateRequest. + * Use `create(ProjectServiceUpdateRequestSchema)` to create a new message. + */ +export declare const ProjectServiceUpdateRequestSchema: GenMessage; +/** + * ProjectServiceUpdateResponse is the response payload to update a project + * + * @generated from message metalstack.api.v2.ProjectServiceUpdateResponse + */ +export type ProjectServiceUpdateResponse = Message<"metalstack.api.v2.ProjectServiceUpdateResponse"> & { + /** + * Project is the project + * + * @generated from field: metalstack.api.v2.Project project = 1; + */ + project?: Project; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateResponse. + * Use `create(ProjectServiceUpdateResponseSchema)` to create a new message. + */ +export declare const ProjectServiceUpdateResponseSchema: GenMessage; +/** + * ProjectServiceInviteRequest is used to invite a member to a project + * + * @generated from message metalstack.api.v2.ProjectServiceInviteRequest + */ +export type ProjectServiceInviteRequest = Message<"metalstack.api.v2.ProjectServiceInviteRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; + /** + * Role of this user in this project + * + * @generated from field: metalstack.api.v2.ProjectRole role = 3; + */ + role: ProjectRole; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteRequest. + * Use `create(ProjectServiceInviteRequestSchema)` to create a new message. + */ +export declare const ProjectServiceInviteRequestSchema: GenMessage; +/** + * ProjectServiceInviteRequest is the response payload to a invite member request + * + * @generated from message metalstack.api.v2.ProjectServiceInviteResponse + */ +export type ProjectServiceInviteResponse = Message<"metalstack.api.v2.ProjectServiceInviteResponse"> & { + /** + * Inviter contains a secret which can be sent to a potential user + * can be appended to the invitation endpoint at our cloud console like + * console.metalstack.cloud/invite/ + * + * @generated from field: metalstack.api.v2.ProjectInvite invite = 1; + */ + invite?: ProjectInvite; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteResponse. + * Use `create(ProjectServiceInviteResponseSchema)` to create a new message. + */ +export declare const ProjectServiceInviteResponseSchema: GenMessage; +/** + * ProjectServiceInvitesListRequest is the request payload to a list invites request + * + * @generated from message metalstack.api.v2.ProjectServiceInvitesListRequest + */ +export type ProjectServiceInvitesListRequest = Message<"metalstack.api.v2.ProjectServiceInvitesListRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceInvitesListRequest. + * Use `create(ProjectServiceInvitesListRequestSchema)` to create a new message. + */ +export declare const ProjectServiceInvitesListRequestSchema: GenMessage; +/** + * ProjectServiceInvitesListResponse is the response payload to a list invites request + * + * @generated from message metalstack.api.v2.ProjectServiceInvitesListResponse + */ +export type ProjectServiceInvitesListResponse = Message<"metalstack.api.v2.ProjectServiceInvitesListResponse"> & { + /** + * Invites not already accepted the invitation to this project + * + * @generated from field: repeated metalstack.api.v2.ProjectInvite invites = 1; + */ + invites: ProjectInvite[]; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceInvitesListResponse. + * Use `create(ProjectServiceInvitesListResponseSchema)` to create a new message. + */ +export declare const ProjectServiceInvitesListResponseSchema: GenMessage; +/** + * ProjectServiceInviteGetRequest is the request payload to get a invite + * + * @generated from message metalstack.api.v2.ProjectServiceInviteGetRequest + */ +export type ProjectServiceInviteGetRequest = Message<"metalstack.api.v2.ProjectServiceInviteGetRequest"> & { + /** + * Secret of the invite to list + * + * @generated from field: string secret = 1; + */ + secret: string; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteGetRequest. + * Use `create(ProjectServiceInviteGetRequestSchema)` to create a new message. + */ +export declare const ProjectServiceInviteGetRequestSchema: GenMessage; +/** + * ProjectServiceInviteGetResponse is the response payload to a get invite request + * + * @generated from message metalstack.api.v2.ProjectServiceInviteGetResponse + */ +export type ProjectServiceInviteGetResponse = Message<"metalstack.api.v2.ProjectServiceInviteGetResponse"> & { + /** + * Invite is the invite + * + * @generated from field: metalstack.api.v2.ProjectInvite invite = 1; + */ + invite?: ProjectInvite; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteGetResponse. + * Use `create(ProjectServiceInviteGetResponseSchema)` to create a new message. + */ +export declare const ProjectServiceInviteGetResponseSchema: GenMessage; +/** + * ProjectServiceLeaveRequest is used to leave a project + * + * @generated from message metalstack.api.v2.ProjectServiceLeaveRequest + */ +export type ProjectServiceLeaveRequest = Message<"metalstack.api.v2.ProjectServiceLeaveRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceLeaveRequest. + * Use `create(ProjectServiceLeaveRequestSchema)` to create a new message. + */ +export declare const ProjectServiceLeaveRequestSchema: GenMessage; +/** + * ProjectServiceLeaveResponse is the response payload to a leave project request + * + * @generated from message metalstack.api.v2.ProjectServiceLeaveResponse + */ +export type ProjectServiceLeaveResponse = Message<"metalstack.api.v2.ProjectServiceLeaveResponse"> & {}; +/** + * Describes the message metalstack.api.v2.ProjectServiceLeaveResponse. + * Use `create(ProjectServiceLeaveResponseSchema)` to create a new message. + */ +export declare const ProjectServiceLeaveResponseSchema: GenMessage; +/** + * ProjectServiceRemoveMemberRequest is used to remove a member from a project + * + * @generated from message metalstack.api.v2.ProjectServiceRemoveMemberRequest + */ +export type ProjectServiceRemoveMemberRequest = Message<"metalstack.api.v2.ProjectServiceRemoveMemberRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; + /** + * Member is the id of the member to remove from this project + * + * @generated from field: string member = 2; + */ + member: string; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberRequest. + * Use `create(ProjectServiceRemoveMemberRequestSchema)` to create a new message. + */ +export declare const ProjectServiceRemoveMemberRequestSchema: GenMessage; +/** + * ProjectServiceRemoveMemberResponse is the response payload to a remove member request + * + * @generated from message metalstack.api.v2.ProjectServiceRemoveMemberResponse + */ +export type ProjectServiceRemoveMemberResponse = Message<"metalstack.api.v2.ProjectServiceRemoveMemberResponse"> & {}; +/** + * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberResponse. + * Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message. + */ +export declare const ProjectServiceRemoveMemberResponseSchema: GenMessage; +/** + * ProjectServiceUpdateMemberRequest is used to update a member of a project + * + * @generated from message metalstack.api.v2.ProjectServiceUpdateMemberRequest + */ +export type ProjectServiceUpdateMemberRequest = Message<"metalstack.api.v2.ProjectServiceUpdateMemberRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; + /** + * Member is the id of the member to remove from this project + * + * @generated from field: string member = 2; + */ + member: string; + /** + * Role is the role in this project the user will get after the update + * + * @generated from field: metalstack.api.v2.ProjectRole role = 3; + */ + role: ProjectRole; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberRequest. + * Use `create(ProjectServiceUpdateMemberRequestSchema)` to create a new message. + */ +export declare const ProjectServiceUpdateMemberRequestSchema: GenMessage; +/** + * ProjectServiceUpdateMemberResponse is the response payload to a update member request + * + * @generated from message metalstack.api.v2.ProjectServiceUpdateMemberResponse + */ +export type ProjectServiceUpdateMemberResponse = Message<"metalstack.api.v2.ProjectServiceUpdateMemberResponse"> & { + /** + * ProjectMember is the updated project member + * + * @generated from field: metalstack.api.v2.ProjectMember project_member = 5; + */ + projectMember?: ProjectMember; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberResponse. + * Use `create(ProjectServiceUpdateMemberResponseSchema)` to create a new message. + */ +export declare const ProjectServiceUpdateMemberResponseSchema: GenMessage; +/** + * ProjectServiceInviteAcceptRequest is the request payload to a accept invite request + * + * @generated from message metalstack.api.v2.ProjectServiceInviteAcceptRequest + */ +export type ProjectServiceInviteAcceptRequest = Message<"metalstack.api.v2.ProjectServiceInviteAcceptRequest"> & { + /** + * Secret is the invitation secret part of the invitation url + * + * @generated from field: string secret = 1; + */ + secret: string; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteAcceptRequest. + * Use `create(ProjectServiceInviteAcceptRequestSchema)` to create a new message. + */ +export declare const ProjectServiceInviteAcceptRequestSchema: GenMessage; +/** + * ProjectServiceInvitesListResponse is the response payload to a accept invite request + * + * @generated from message metalstack.api.v2.ProjectServiceInviteAcceptResponse + */ +export type ProjectServiceInviteAcceptResponse = Message<"metalstack.api.v2.ProjectServiceInviteAcceptResponse"> & { + /** + * Project ID of the project joined + * + * @generated from field: string project = 1; + */ + project: string; + /** + * ProjectName if the project joined + * + * @generated from field: string project_name = 2; + */ + projectName: string; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteAcceptResponse. + * Use `create(ProjectServiceInviteAcceptResponseSchema)` to create a new message. + */ +export declare const ProjectServiceInviteAcceptResponseSchema: GenMessage; +/** + * ProjectServiceInviteDeleteRequest is the request payload to a delete invite + * + * @generated from message metalstack.api.v2.ProjectServiceInviteDeleteRequest + */ +export type ProjectServiceInviteDeleteRequest = Message<"metalstack.api.v2.ProjectServiceInviteDeleteRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; + /** + * Secret of the invite to delete + * + * @generated from field: string secret = 2; + */ + secret: string; +}; +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteDeleteRequest. + * Use `create(ProjectServiceInviteDeleteRequestSchema)` to create a new message. + */ +export declare const ProjectServiceInviteDeleteRequestSchema: GenMessage; +/** + * ProjectServiceInviteDeleteResponse is the response payload of a delete invite request + * + * @generated from message metalstack.api.v2.ProjectServiceInviteDeleteResponse + */ +export type ProjectServiceInviteDeleteResponse = Message<"metalstack.api.v2.ProjectServiceInviteDeleteResponse"> & {}; +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteDeleteResponse. + * Use `create(ProjectServiceInviteDeleteResponseSchema)` to create a new message. + */ +export declare const ProjectServiceInviteDeleteResponseSchema: GenMessage; +/** + * ProjectService serves project related functions + * + * @generated from service metalstack.api.v2.ProjectService + */ +export declare const ProjectService: GenService<{ + /** + * List all accessible projects + * + * @generated from rpc metalstack.api.v2.ProjectService.List + */ + list: { + methodKind: "unary"; + input: typeof ProjectServiceListRequestSchema; + output: typeof ProjectServiceListResponseSchema; + }; + /** + * Get a project + * + * @generated from rpc metalstack.api.v2.ProjectService.Get + */ + get: { + methodKind: "unary"; + input: typeof ProjectServiceGetRequestSchema; + output: typeof ProjectServiceGetResponseSchema; + }; + /** + * Create a project + * + * @generated from rpc metalstack.api.v2.ProjectService.Create + */ + create: { + methodKind: "unary"; + input: typeof ProjectServiceCreateRequestSchema; + output: typeof ProjectServiceCreateResponseSchema; + }; + /** + * Delete a project + * + * @generated from rpc metalstack.api.v2.ProjectService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof ProjectServiceDeleteRequestSchema; + output: typeof ProjectServiceDeleteResponseSchema; + }; + /** + * Update a project + * + * @generated from rpc metalstack.api.v2.ProjectService.Update + */ + update: { + methodKind: "unary"; + input: typeof ProjectServiceUpdateRequestSchema; + output: typeof ProjectServiceUpdateResponseSchema; + }; + /** + * Leave project + * + * @generated from rpc metalstack.api.v2.ProjectService.Leave + */ + leave: { + methodKind: "unary"; + input: typeof ProjectServiceLeaveRequestSchema; + output: typeof ProjectServiceLeaveResponseSchema; + }; + /** + * RemoveMember remove a user from a project + * + * @generated from rpc metalstack.api.v2.ProjectService.RemoveMember + */ + removeMember: { + methodKind: "unary"; + input: typeof ProjectServiceRemoveMemberRequestSchema; + output: typeof ProjectServiceRemoveMemberResponseSchema; + }; + /** + * UpdateMember update a user for a project + * + * @generated from rpc metalstack.api.v2.ProjectService.UpdateMember + */ + updateMember: { + methodKind: "unary"; + input: typeof ProjectServiceUpdateMemberRequestSchema; + output: typeof ProjectServiceUpdateMemberResponseSchema; + }; + /** + * Invite a user to a project + * + * @generated from rpc metalstack.api.v2.ProjectService.Invite + */ + invite: { + methodKind: "unary"; + input: typeof ProjectServiceInviteRequestSchema; + output: typeof ProjectServiceInviteResponseSchema; + }; + /** + * InviteAccept is called from a user to accept a invitation + * + * @generated from rpc metalstack.api.v2.ProjectService.InviteAccept + */ + inviteAccept: { + methodKind: "unary"; + input: typeof ProjectServiceInviteAcceptRequestSchema; + output: typeof ProjectServiceInviteAcceptResponseSchema; + }; + /** + * InviteDelete deletes a pending invitation + * + * @generated from rpc metalstack.api.v2.ProjectService.InviteDelete + */ + inviteDelete: { + methodKind: "unary"; + input: typeof ProjectServiceInviteDeleteRequestSchema; + output: typeof ProjectServiceInviteDeleteResponseSchema; + }; + /** + * InvitesList list all invites to a project + * + * @generated from rpc metalstack.api.v2.ProjectService.InvitesList + */ + invitesList: { + methodKind: "unary"; + input: typeof ProjectServiceInvitesListRequestSchema; + output: typeof ProjectServiceInvitesListResponseSchema; + }; + /** + * InviteGet get an invite + * + * @generated from rpc metalstack.api.v2.ProjectService.InviteGet + */ + inviteGet: { + methodKind: "unary"; + input: typeof ProjectServiceInviteGetRequestSchema; + output: typeof ProjectServiceInviteGetResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/project_pb.js b/js/metalstack/api/v2/project_pb.js new file mode 100644 index 00000000..5a9cde34 --- /dev/null +++ b/js/metalstack/api/v2/project_pb.js @@ -0,0 +1,163 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/project.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +/** + * Describes the file metalstack/api/v2/project.proto. + */ +export const file_metalstack_api_v2_project = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiKzAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSFwoKYXZhdGFyX3VybBgGIAEoCUgAiAEBQg0KC19hdmF0YXJfdXJsIqEBCg1Qcm9qZWN0TWVtYmVyEgoKAmlkGAEgASgJEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESHAoUaW5oZXJpdGVkX21lbWJlcnNoaXAYAyABKAgSLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAikgIKDVByb2plY3RJbnZpdGUSDgoGc2VjcmV0GAEgASgJEg8KB3Byb2plY3QYAiABKAkSNgoEcm9sZRgDIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSFAoMcHJvamVjdF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsMBChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIfCgZ0ZW5hbnQYAyABKAlCCrpIB3IFEAIYgAFIAogBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIFCgNfaWRCBwoFX25hbWVCCQoHX3RlbmFudEIJCgdfbGFiZWxzIkoKGlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCHByb2plY3RzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCI1ChhQcm9qZWN0U2VydmljZUdldFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEigwEKGVByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QSOQoPcHJvamVjdF9tZW1iZXJzGAIgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlciLIAQobUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKBWxvZ2luGAEgASgJQgq6SAdyBRACGIABEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIXCgphdmF0YXJfdXJsGAQgASgJSACIAQESKQoGbGFiZWxzGAUgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzQg0KC19hdmF0YXJfdXJsIksKHFByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiOAobUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIksKHFByb2plY3RTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QivQIKG1Byb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEhcKCmF2YXRhcl91cmwYBSABKAlIAogBARI0CgZsYWJlbHMYBiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIA4gBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDQoLX2F2YXRhcl91cmxCCQoHX2xhYmVscyJLChxQcm9qZWN0U2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0InAKG1Byb2plY3RTZXJ2aWNlSW52aXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIlAKHFByb2plY3RTZXJ2aWNlSW52aXRlUmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI9CiBQcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJWCiFQcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2USMQoHaW52aXRlcxgBIAMoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RJbnZpdGUiMAoeUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJTCh9Qcm9qZWN0U2VydmljZUludml0ZUdldFJlc3BvbnNlEjAKBmludml0ZRgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RJbnZpdGUiNwoaUHJvamVjdFNlcnZpY2VMZWF2ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiHQobUHJvamVjdFNlcnZpY2VMZWF2ZVJlc3BvbnNlIk4KIVByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZtZW1iZXIYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSKGAQohUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIl4KIlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USOAoOcHJvamVjdF9tZW1iZXIYBSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIjMKIVByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSwoiUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZRIPCgdwcm9qZWN0GAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCSJOCiFQcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGc2VjcmV0GAIgASgJIiQKIlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2Uy4gwKDlByb2plY3RTZXJ2aWNlEm0KBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGAPg8xgCEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESdAoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScQoFTGVhdmUSLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXNwb25zZSIJyvMYAQPg8xgBEoYBCgxSZW1vdmVNZW1iZXISNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnK8xgBAeDzGAEShgEKDFVwZGF0ZU1lbWJlchI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARJ0CgZJbnZpdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZVJlc3BvbnNlIgnK8xgBAeDzGAEShQEKDEludml0ZUFjY2VwdBI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2UiCNjzGAPg8xgBEoYBCgxJbnZpdGVEZWxldGUSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESgwEKC0ludml0ZXNMaXN0EjMubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2UiCcrzGAEB4PMYAhJ8CglJbnZpdGVHZXQSMS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QaMi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlc3BvbnNlIgjY8xgD4PMYAkLCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxQcm9qZWN0UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.api.v2.Project. + * Use `create(ProjectSchema)` to create a new message. + */ +export const ProjectSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 0); +/** + * Describes the message metalstack.api.v2.ProjectMember. + * Use `create(ProjectMemberSchema)` to create a new message. + */ +export const ProjectMemberSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 1); +/** + * Describes the message metalstack.api.v2.ProjectInvite. + * Use `create(ProjectInviteSchema)` to create a new message. + */ +export const ProjectInviteSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 2); +/** + * Describes the message metalstack.api.v2.ProjectServiceListRequest. + * Use `create(ProjectServiceListRequestSchema)` to create a new message. + */ +export const ProjectServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 3); +/** + * Describes the message metalstack.api.v2.ProjectServiceListResponse. + * Use `create(ProjectServiceListResponseSchema)` to create a new message. + */ +export const ProjectServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 4); +/** + * Describes the message metalstack.api.v2.ProjectServiceGetRequest. + * Use `create(ProjectServiceGetRequestSchema)` to create a new message. + */ +export const ProjectServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 5); +/** + * Describes the message metalstack.api.v2.ProjectServiceGetResponse. + * Use `create(ProjectServiceGetResponseSchema)` to create a new message. + */ +export const ProjectServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 6); +/** + * Describes the message metalstack.api.v2.ProjectServiceCreateRequest. + * Use `create(ProjectServiceCreateRequestSchema)` to create a new message. + */ +export const ProjectServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 7); +/** + * Describes the message metalstack.api.v2.ProjectServiceCreateResponse. + * Use `create(ProjectServiceCreateResponseSchema)` to create a new message. + */ +export const ProjectServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 8); +/** + * Describes the message metalstack.api.v2.ProjectServiceDeleteRequest. + * Use `create(ProjectServiceDeleteRequestSchema)` to create a new message. + */ +export const ProjectServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 9); +/** + * Describes the message metalstack.api.v2.ProjectServiceDeleteResponse. + * Use `create(ProjectServiceDeleteResponseSchema)` to create a new message. + */ +export const ProjectServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 10); +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateRequest. + * Use `create(ProjectServiceUpdateRequestSchema)` to create a new message. + */ +export const ProjectServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 11); +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateResponse. + * Use `create(ProjectServiceUpdateResponseSchema)` to create a new message. + */ +export const ProjectServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 12); +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteRequest. + * Use `create(ProjectServiceInviteRequestSchema)` to create a new message. + */ +export const ProjectServiceInviteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 13); +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteResponse. + * Use `create(ProjectServiceInviteResponseSchema)` to create a new message. + */ +export const ProjectServiceInviteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 14); +/** + * Describes the message metalstack.api.v2.ProjectServiceInvitesListRequest. + * Use `create(ProjectServiceInvitesListRequestSchema)` to create a new message. + */ +export const ProjectServiceInvitesListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 15); +/** + * Describes the message metalstack.api.v2.ProjectServiceInvitesListResponse. + * Use `create(ProjectServiceInvitesListResponseSchema)` to create a new message. + */ +export const ProjectServiceInvitesListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 16); +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteGetRequest. + * Use `create(ProjectServiceInviteGetRequestSchema)` to create a new message. + */ +export const ProjectServiceInviteGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 17); +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteGetResponse. + * Use `create(ProjectServiceInviteGetResponseSchema)` to create a new message. + */ +export const ProjectServiceInviteGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 18); +/** + * Describes the message metalstack.api.v2.ProjectServiceLeaveRequest. + * Use `create(ProjectServiceLeaveRequestSchema)` to create a new message. + */ +export const ProjectServiceLeaveRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 19); +/** + * Describes the message metalstack.api.v2.ProjectServiceLeaveResponse. + * Use `create(ProjectServiceLeaveResponseSchema)` to create a new message. + */ +export const ProjectServiceLeaveResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 20); +/** + * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberRequest. + * Use `create(ProjectServiceRemoveMemberRequestSchema)` to create a new message. + */ +export const ProjectServiceRemoveMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 21); +/** + * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberResponse. + * Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message. + */ +export const ProjectServiceRemoveMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 22); +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberRequest. + * Use `create(ProjectServiceUpdateMemberRequestSchema)` to create a new message. + */ +export const ProjectServiceUpdateMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 23); +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberResponse. + * Use `create(ProjectServiceUpdateMemberResponseSchema)` to create a new message. + */ +export const ProjectServiceUpdateMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 24); +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteAcceptRequest. + * Use `create(ProjectServiceInviteAcceptRequestSchema)` to create a new message. + */ +export const ProjectServiceInviteAcceptRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 25); +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteAcceptResponse. + * Use `create(ProjectServiceInviteAcceptResponseSchema)` to create a new message. + */ +export const ProjectServiceInviteAcceptResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 26); +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteDeleteRequest. + * Use `create(ProjectServiceInviteDeleteRequestSchema)` to create a new message. + */ +export const ProjectServiceInviteDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 27); +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteDeleteResponse. + * Use `create(ProjectServiceInviteDeleteResponseSchema)` to create a new message. + */ +export const ProjectServiceInviteDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_project, 28); +/** + * ProjectService serves project related functions + * + * @generated from service metalstack.api.v2.ProjectService + */ +export const ProjectService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_project, 0); diff --git a/js/metalstack/api/v2/project_pb.ts b/js/metalstack/api/v2/project_pb.ts new file mode 100644 index 00000000..57958d81 --- /dev/null +++ b/js/metalstack/api/v2/project_pb.ts @@ -0,0 +1,1001 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/project.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Labels, Meta, ProjectRole, UpdateLabels, UpdateMeta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/project.proto. + */ +export const file_metalstack_api_v2_project: GenFile = /*@__PURE__*/ + fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiKzAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSFwoKYXZhdGFyX3VybBgGIAEoCUgAiAEBQg0KC19hdmF0YXJfdXJsIqEBCg1Qcm9qZWN0TWVtYmVyEgoKAmlkGAEgASgJEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESHAoUaW5oZXJpdGVkX21lbWJlcnNoaXAYAyABKAgSLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAikgIKDVByb2plY3RJbnZpdGUSDgoGc2VjcmV0GAEgASgJEg8KB3Byb2plY3QYAiABKAkSNgoEcm9sZRgDIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSFAoMcHJvamVjdF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsMBChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIfCgZ0ZW5hbnQYAyABKAlCCrpIB3IFEAIYgAFIAogBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIFCgNfaWRCBwoFX25hbWVCCQoHX3RlbmFudEIJCgdfbGFiZWxzIkoKGlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCHByb2plY3RzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCI1ChhQcm9qZWN0U2VydmljZUdldFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEigwEKGVByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QSOQoPcHJvamVjdF9tZW1iZXJzGAIgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdE1lbWJlciLIAQobUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKBWxvZ2luGAEgASgJQgq6SAdyBRACGIABEhkKBG5hbWUYAiABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARIXCgphdmF0YXJfdXJsGAQgASgJSACIAQESKQoGbGFiZWxzGAUgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzQg0KC19hdmF0YXJfdXJsIksKHFByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiOAobUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIksKHFByb2plY3RTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QivQIKG1Byb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEhcKCmF2YXRhcl91cmwYBSABKAlIAogBARI0CgZsYWJlbHMYBiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIA4gBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDQoLX2F2YXRhcl91cmxCCQoHX2xhYmVscyJLChxQcm9qZWN0U2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0InAKG1Byb2plY3RTZXJ2aWNlSW52aXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIlAKHFByb2plY3RTZXJ2aWNlSW52aXRlUmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI9CiBQcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASJWCiFQcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2USMQoHaW52aXRlcxgBIAMoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RJbnZpdGUiMAoeUHJvamVjdFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJTCh9Qcm9qZWN0U2VydmljZUludml0ZUdldFJlc3BvbnNlEjAKBmludml0ZRgBIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RJbnZpdGUiNwoaUHJvamVjdFNlcnZpY2VMZWF2ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiHQobUHJvamVjdFNlcnZpY2VMZWF2ZVJlc3BvbnNlIk4KIVByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZtZW1iZXIYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSKGAQohUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCRI2CgRyb2xlGAMgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVCCLpIBYIBAhABIl4KIlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2USOAoOcHJvamVjdF9tZW1iZXIYBSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0TWVtYmVyIjMKIVByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSwoiUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZRIPCgdwcm9qZWN0GAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCSJOCiFQcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGc2VjcmV0GAIgASgJIiQKIlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2Uy4gwKDlByb2plY3RTZXJ2aWNlEm0KBExpc3QSLC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGAPg8xgCEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsLzGAIBAuDzGAESdAoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZSIJyvMYAQHg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScQoFTGVhdmUSLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBouLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXNwb25zZSIJyvMYAQPg8xgBEoYBCgxSZW1vdmVNZW1iZXISNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnK8xgBAeDzGAEShgEKDFVwZGF0ZU1lbWJlchI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlVXBkYXRlTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARJ0CgZJbnZpdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZVJlc3BvbnNlIgnK8xgBAeDzGAEShQEKDEludml0ZUFjY2VwdBI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2UiCNjzGAPg8xgBEoYBCgxJbnZpdGVEZWxldGUSNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlcXVlc3QaNS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESgwEKC0ludml0ZXNMaXN0EjMubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVzTGlzdFJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVzcG9uc2UiCcrzGAEB4PMYAhJ8CglJbnZpdGVHZXQSMS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QaMi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlc3BvbnNlIgjY8xgD4PMYAkLCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxQcm9qZWN0UHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + +/** + * Project defines a group of resources belonging to a tenant + * a tenant can have multiple projects + * + * @generated from message metalstack.api.v2.Project + */ +export type Project = Message<"metalstack.api.v2.Project"> & { + /** + * Uuid of this project + * + * @generated from field: string uuid = 1; + */ + uuid: string; + + /** + * Meta for this project + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + + /** + * Name of this project must be unique per tenant + * + * @generated from field: string name = 3; + */ + name: string; + + /** + * Description of this project + * + * @generated from field: string description = 4; + */ + description: string; + + /** + * Tenant this project belongs to + * + * @generated from field: string tenant = 5; + */ + tenant: string; + + /** + * AvatarUrl of the Project + * + * @generated from field: optional string avatar_url = 6; + */ + avatarUrl?: string; +}; + +/** + * Describes the message metalstack.api.v2.Project. + * Use `create(ProjectSchema)` to create a new message. + */ +export const ProjectSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 0); + +/** + * ProjectMember defines a user that participates at a project + * + * @generated from message metalstack.api.v2.ProjectMember + */ +export type ProjectMember = Message<"metalstack.api.v2.ProjectMember"> & { + /** + * Id is the user id of the member + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Role is the role of the member + * + * @generated from field: metalstack.api.v2.ProjectRole role = 2; + */ + role: ProjectRole; + + /** + * InheritedMembership indicates that this member has implicit permissions on the project through his membership within the tenant. + * This member does not have direct project membership but gains permissions on this project from the role he has in the tenant. + * Inherited memberships are not included in member lists for users with guest permission but only for direct tenant members. + * + * @generated from field: bool inherited_membership = 3; + */ + inheritedMembership: boolean; + + /** + * CreatedAt the date when the member was added to the project + * + * @generated from field: google.protobuf.Timestamp created_at = 10; + */ + createdAt?: Timestamp; +}; + +/** + * Describes the message metalstack.api.v2.ProjectMember. + * Use `create(ProjectMemberSchema)` to create a new message. + */ +export const ProjectMemberSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 1); + +/** + * ProjectInvite defines invite to project + * + * @generated from message metalstack.api.v2.ProjectInvite + */ +export type ProjectInvite = Message<"metalstack.api.v2.ProjectInvite"> & { + /** + * Secret is the secret part of the invite, typically part of the url + * + * @generated from field: string secret = 1; + */ + secret: string; + + /** + * Project is the project id for which this invite was created + * + * @generated from field: string project = 2; + */ + project: string; + + /** + * Role is the role in this project the user will get after accepting the invitation + * + * @generated from field: metalstack.api.v2.ProjectRole role = 3; + */ + role: ProjectRole; + + /** + * Joined is false as long as a user has not accepted the invite + * + * @generated from field: bool joined = 4; + */ + joined: boolean; + + /** + * ProjectName is the project name for which this invite was created + * + * @generated from field: string project_name = 5; + */ + projectName: string; + + /** + * Tenant is the login of tenant who invites to join this project + * + * @generated from field: string tenant = 6; + */ + tenant: string; + + /** + * TenantName is the name of tenant who invites to join this project + * + * @generated from field: string tenant_name = 7; + */ + tenantName: string; + + /** + * ExpiresAt the date when this invite expires + * + * @generated from field: google.protobuf.Timestamp expires_at = 10; + */ + expiresAt?: Timestamp; + + /** + * JoinedAt the date when the member accepted this invite + * + * @generated from field: google.protobuf.Timestamp joined_at = 11; + */ + joinedAt?: Timestamp; +}; + +/** + * Describes the message metalstack.api.v2.ProjectInvite. + * Use `create(ProjectInviteSchema)` to create a new message. + */ +export const ProjectInviteSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 2); + +/** + * ProjectServiceListRequest is the request payload to list all projects + * + * @generated from message metalstack.api.v2.ProjectServiceListRequest + */ +export type ProjectServiceListRequest = Message<"metalstack.api.v2.ProjectServiceListRequest"> & { + /** + * Id lists only projects with this id + * + * @generated from field: optional string id = 1; + */ + id?: string; + + /** + * Name lists only projects with this name + * + * @generated from field: optional string name = 2; + */ + name?: string; + + /** + * Tenant lists only projects of this tenant + * + * @generated from field: optional string tenant = 3; + */ + tenant?: string; + + /** + * Labels lists only projects containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 6; + */ + labels?: Labels; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceListRequest. + * Use `create(ProjectServiceListRequestSchema)` to create a new message. + */ +export const ProjectServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 3); + +/** + * ProjectServiceListResponse is the response payload to list all projects + * + * @generated from message metalstack.api.v2.ProjectServiceListResponse + */ +export type ProjectServiceListResponse = Message<"metalstack.api.v2.ProjectServiceListResponse"> & { + /** + * Projects is a list of all your projects + * + * @generated from field: repeated metalstack.api.v2.Project projects = 1; + */ + projects: Project[]; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceListResponse. + * Use `create(ProjectServiceListResponseSchema)` to create a new message. + */ +export const ProjectServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 4); + +/** + * ProjectServiceGetRequest is the request payload to get a project + * + * @generated from message metalstack.api.v2.ProjectServiceGetRequest + */ +export type ProjectServiceGetRequest = Message<"metalstack.api.v2.ProjectServiceGetRequest"> & { + /** + * Project is the uuid of the project to get + * + * @generated from field: string project = 1; + */ + project: string; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceGetRequest. + * Use `create(ProjectServiceGetRequestSchema)` to create a new message. + */ +export const ProjectServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 5); + +/** + * ProjectServiceGetResponse is the response payload to get a projects + * + * @generated from message metalstack.api.v2.ProjectServiceGetResponse + */ +export type ProjectServiceGetResponse = Message<"metalstack.api.v2.ProjectServiceGetResponse"> & { + /** + * Project is the project + * + * @generated from field: metalstack.api.v2.Project project = 1; + */ + project?: Project; + + /** + * ProjectMembers in this project, projects guests will only see direct project members and not implicit memberships from tenant permissions + * + * @generated from field: repeated metalstack.api.v2.ProjectMember project_members = 2; + */ + projectMembers: ProjectMember[]; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceGetResponse. + * Use `create(ProjectServiceGetResponseSchema)` to create a new message. + */ +export const ProjectServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 6); + +/** + * ProjectServiceCreateRequest is the request payload to Create a project + * + * @generated from message metalstack.api.v2.ProjectServiceCreateRequest + */ +export type ProjectServiceCreateRequest = Message<"metalstack.api.v2.ProjectServiceCreateRequest"> & { + /** + * Login is the tenant of this project + * TODO: is login really a good name? + * + * @generated from field: string login = 1; + */ + login: string; + + /** + * Name of this project, unique per tenant + * + * @generated from field: string name = 2; + */ + name: string; + + /** + * Description of this project + * + * @generated from field: string description = 3; + */ + description: string; + + /** + * Avatar URL of the project + * + * @generated from field: optional string avatar_url = 4; + */ + avatarUrl?: string; + + /** + * Labels on the project + * + * @generated from field: metalstack.api.v2.Labels labels = 5; + */ + labels?: Labels; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceCreateRequest. + * Use `create(ProjectServiceCreateRequestSchema)` to create a new message. + */ +export const ProjectServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 7); + +/** + * ProjectServiceCreateResponse is the response payload of creation of a project + * + * @generated from message metalstack.api.v2.ProjectServiceCreateResponse + */ +export type ProjectServiceCreateResponse = Message<"metalstack.api.v2.ProjectServiceCreateResponse"> & { + /** + * Project is the project + * + * @generated from field: metalstack.api.v2.Project project = 1; + */ + project?: Project; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceCreateResponse. + * Use `create(ProjectServiceCreateResponseSchema)` to create a new message. + */ +export const ProjectServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 8); + +/** + * ProjectServiceDeleteRequest is the request payload to delete a project + * + * @generated from message metalstack.api.v2.ProjectServiceDeleteRequest + */ +export type ProjectServiceDeleteRequest = Message<"metalstack.api.v2.ProjectServiceDeleteRequest"> & { + /** + * Project is the uuid of the project to get + * + * @generated from field: string project = 1; + */ + project: string; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceDeleteRequest. + * Use `create(ProjectServiceDeleteRequestSchema)` to create a new message. + */ +export const ProjectServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 9); + +/** + * ProjectServiceDeleteResponse is the response payload to delete a project + * + * @generated from message metalstack.api.v2.ProjectServiceDeleteResponse + */ +export type ProjectServiceDeleteResponse = Message<"metalstack.api.v2.ProjectServiceDeleteResponse"> & { + /** + * Project is the project + * + * @generated from field: metalstack.api.v2.Project project = 1; + */ + project?: Project; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceDeleteResponse. + * Use `create(ProjectServiceDeleteResponseSchema)` to create a new message. + */ +export const ProjectServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 10); + +/** + * ProjectServiceUpdateRequest is the request payload to update a project + * + * @generated from message metalstack.api.v2.ProjectServiceUpdateRequest + */ +export type ProjectServiceUpdateRequest = Message<"metalstack.api.v2.ProjectServiceUpdateRequest"> & { + /** + * Project is the uuid of the project to get + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * Name of this project unique per tenant + * + * @generated from field: optional string name = 3; + */ + name?: string; + + /** + * Description of this project + * + * @generated from field: optional string description = 4; + */ + description?: string; + + /** + * Avatar URL of the project + * + * @generated from field: optional string avatar_url = 5; + */ + avatarUrl?: string; + + /** + * Labels on this project + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 6; + */ + labels?: UpdateLabels; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateRequest. + * Use `create(ProjectServiceUpdateRequestSchema)` to create a new message. + */ +export const ProjectServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 11); + +/** + * ProjectServiceUpdateResponse is the response payload to update a project + * + * @generated from message metalstack.api.v2.ProjectServiceUpdateResponse + */ +export type ProjectServiceUpdateResponse = Message<"metalstack.api.v2.ProjectServiceUpdateResponse"> & { + /** + * Project is the project + * + * @generated from field: metalstack.api.v2.Project project = 1; + */ + project?: Project; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateResponse. + * Use `create(ProjectServiceUpdateResponseSchema)` to create a new message. + */ +export const ProjectServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 12); + +/** + * ProjectServiceInviteRequest is used to invite a member to a project + * + * @generated from message metalstack.api.v2.ProjectServiceInviteRequest + */ +export type ProjectServiceInviteRequest = Message<"metalstack.api.v2.ProjectServiceInviteRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * Role of this user in this project + * + * @generated from field: metalstack.api.v2.ProjectRole role = 3; + */ + role: ProjectRole; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteRequest. + * Use `create(ProjectServiceInviteRequestSchema)` to create a new message. + */ +export const ProjectServiceInviteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 13); + +/** + * ProjectServiceInviteRequest is the response payload to a invite member request + * + * @generated from message metalstack.api.v2.ProjectServiceInviteResponse + */ +export type ProjectServiceInviteResponse = Message<"metalstack.api.v2.ProjectServiceInviteResponse"> & { + /** + * Inviter contains a secret which can be sent to a potential user + * can be appended to the invitation endpoint at our cloud console like + * console.metalstack.cloud/invite/ + * + * @generated from field: metalstack.api.v2.ProjectInvite invite = 1; + */ + invite?: ProjectInvite; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteResponse. + * Use `create(ProjectServiceInviteResponseSchema)` to create a new message. + */ +export const ProjectServiceInviteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 14); + +/** + * ProjectServiceInvitesListRequest is the request payload to a list invites request + * + * @generated from message metalstack.api.v2.ProjectServiceInvitesListRequest + */ +export type ProjectServiceInvitesListRequest = Message<"metalstack.api.v2.ProjectServiceInvitesListRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceInvitesListRequest. + * Use `create(ProjectServiceInvitesListRequestSchema)` to create a new message. + */ +export const ProjectServiceInvitesListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 15); + +/** + * ProjectServiceInvitesListResponse is the response payload to a list invites request + * + * @generated from message metalstack.api.v2.ProjectServiceInvitesListResponse + */ +export type ProjectServiceInvitesListResponse = Message<"metalstack.api.v2.ProjectServiceInvitesListResponse"> & { + /** + * Invites not already accepted the invitation to this project + * + * @generated from field: repeated metalstack.api.v2.ProjectInvite invites = 1; + */ + invites: ProjectInvite[]; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceInvitesListResponse. + * Use `create(ProjectServiceInvitesListResponseSchema)` to create a new message. + */ +export const ProjectServiceInvitesListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 16); + +/** + * ProjectServiceInviteGetRequest is the request payload to get a invite + * + * @generated from message metalstack.api.v2.ProjectServiceInviteGetRequest + */ +export type ProjectServiceInviteGetRequest = Message<"metalstack.api.v2.ProjectServiceInviteGetRequest"> & { + /** + * Secret of the invite to list + * + * @generated from field: string secret = 1; + */ + secret: string; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteGetRequest. + * Use `create(ProjectServiceInviteGetRequestSchema)` to create a new message. + */ +export const ProjectServiceInviteGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 17); + +/** + * ProjectServiceInviteGetResponse is the response payload to a get invite request + * + * @generated from message metalstack.api.v2.ProjectServiceInviteGetResponse + */ +export type ProjectServiceInviteGetResponse = Message<"metalstack.api.v2.ProjectServiceInviteGetResponse"> & { + /** + * Invite is the invite + * + * @generated from field: metalstack.api.v2.ProjectInvite invite = 1; + */ + invite?: ProjectInvite; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteGetResponse. + * Use `create(ProjectServiceInviteGetResponseSchema)` to create a new message. + */ +export const ProjectServiceInviteGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 18); + +/** + * ProjectServiceLeaveRequest is used to leave a project + * + * @generated from message metalstack.api.v2.ProjectServiceLeaveRequest + */ +export type ProjectServiceLeaveRequest = Message<"metalstack.api.v2.ProjectServiceLeaveRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceLeaveRequest. + * Use `create(ProjectServiceLeaveRequestSchema)` to create a new message. + */ +export const ProjectServiceLeaveRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 19); + +/** + * ProjectServiceLeaveResponse is the response payload to a leave project request + * + * @generated from message metalstack.api.v2.ProjectServiceLeaveResponse + */ +export type ProjectServiceLeaveResponse = Message<"metalstack.api.v2.ProjectServiceLeaveResponse"> & { +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceLeaveResponse. + * Use `create(ProjectServiceLeaveResponseSchema)` to create a new message. + */ +export const ProjectServiceLeaveResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 20); + +/** + * ProjectServiceRemoveMemberRequest is used to remove a member from a project + * + * @generated from message metalstack.api.v2.ProjectServiceRemoveMemberRequest + */ +export type ProjectServiceRemoveMemberRequest = Message<"metalstack.api.v2.ProjectServiceRemoveMemberRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * Member is the id of the member to remove from this project + * + * @generated from field: string member = 2; + */ + member: string; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberRequest. + * Use `create(ProjectServiceRemoveMemberRequestSchema)` to create a new message. + */ +export const ProjectServiceRemoveMemberRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 21); + +/** + * ProjectServiceRemoveMemberResponse is the response payload to a remove member request + * + * @generated from message metalstack.api.v2.ProjectServiceRemoveMemberResponse + */ +export type ProjectServiceRemoveMemberResponse = Message<"metalstack.api.v2.ProjectServiceRemoveMemberResponse"> & { +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceRemoveMemberResponse. + * Use `create(ProjectServiceRemoveMemberResponseSchema)` to create a new message. + */ +export const ProjectServiceRemoveMemberResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 22); + +/** + * ProjectServiceUpdateMemberRequest is used to update a member of a project + * + * @generated from message metalstack.api.v2.ProjectServiceUpdateMemberRequest + */ +export type ProjectServiceUpdateMemberRequest = Message<"metalstack.api.v2.ProjectServiceUpdateMemberRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * Member is the id of the member to remove from this project + * + * @generated from field: string member = 2; + */ + member: string; + + /** + * Role is the role in this project the user will get after the update + * + * @generated from field: metalstack.api.v2.ProjectRole role = 3; + */ + role: ProjectRole; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberRequest. + * Use `create(ProjectServiceUpdateMemberRequestSchema)` to create a new message. + */ +export const ProjectServiceUpdateMemberRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 23); + +/** + * ProjectServiceUpdateMemberResponse is the response payload to a update member request + * + * @generated from message metalstack.api.v2.ProjectServiceUpdateMemberResponse + */ +export type ProjectServiceUpdateMemberResponse = Message<"metalstack.api.v2.ProjectServiceUpdateMemberResponse"> & { + /** + * ProjectMember is the updated project member + * + * @generated from field: metalstack.api.v2.ProjectMember project_member = 5; + */ + projectMember?: ProjectMember; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceUpdateMemberResponse. + * Use `create(ProjectServiceUpdateMemberResponseSchema)` to create a new message. + */ +export const ProjectServiceUpdateMemberResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 24); + +/** + * ProjectServiceInviteAcceptRequest is the request payload to a accept invite request + * + * @generated from message metalstack.api.v2.ProjectServiceInviteAcceptRequest + */ +export type ProjectServiceInviteAcceptRequest = Message<"metalstack.api.v2.ProjectServiceInviteAcceptRequest"> & { + /** + * Secret is the invitation secret part of the invitation url + * + * @generated from field: string secret = 1; + */ + secret: string; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteAcceptRequest. + * Use `create(ProjectServiceInviteAcceptRequestSchema)` to create a new message. + */ +export const ProjectServiceInviteAcceptRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 25); + +/** + * ProjectServiceInvitesListResponse is the response payload to a accept invite request + * + * @generated from message metalstack.api.v2.ProjectServiceInviteAcceptResponse + */ +export type ProjectServiceInviteAcceptResponse = Message<"metalstack.api.v2.ProjectServiceInviteAcceptResponse"> & { + /** + * Project ID of the project joined + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * ProjectName if the project joined + * + * @generated from field: string project_name = 2; + */ + projectName: string; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteAcceptResponse. + * Use `create(ProjectServiceInviteAcceptResponseSchema)` to create a new message. + */ +export const ProjectServiceInviteAcceptResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 26); + +/** + * ProjectServiceInviteDeleteRequest is the request payload to a delete invite + * + * @generated from message metalstack.api.v2.ProjectServiceInviteDeleteRequest + */ +export type ProjectServiceInviteDeleteRequest = Message<"metalstack.api.v2.ProjectServiceInviteDeleteRequest"> & { + /** + * Project is the uuid of the project + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * Secret of the invite to delete + * + * @generated from field: string secret = 2; + */ + secret: string; +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteDeleteRequest. + * Use `create(ProjectServiceInviteDeleteRequestSchema)` to create a new message. + */ +export const ProjectServiceInviteDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 27); + +/** + * ProjectServiceInviteDeleteResponse is the response payload of a delete invite request + * + * @generated from message metalstack.api.v2.ProjectServiceInviteDeleteResponse + */ +export type ProjectServiceInviteDeleteResponse = Message<"metalstack.api.v2.ProjectServiceInviteDeleteResponse"> & { +}; + +/** + * Describes the message metalstack.api.v2.ProjectServiceInviteDeleteResponse. + * Use `create(ProjectServiceInviteDeleteResponseSchema)` to create a new message. + */ +export const ProjectServiceInviteDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_project, 28); + +/** + * ProjectService serves project related functions + * + * @generated from service metalstack.api.v2.ProjectService + */ +export const ProjectService: GenService<{ + /** + * List all accessible projects + * + * @generated from rpc metalstack.api.v2.ProjectService.List + */ + list: { + methodKind: "unary"; + input: typeof ProjectServiceListRequestSchema; + output: typeof ProjectServiceListResponseSchema; + }, + /** + * Get a project + * + * @generated from rpc metalstack.api.v2.ProjectService.Get + */ + get: { + methodKind: "unary"; + input: typeof ProjectServiceGetRequestSchema; + output: typeof ProjectServiceGetResponseSchema; + }, + /** + * Create a project + * + * @generated from rpc metalstack.api.v2.ProjectService.Create + */ + create: { + methodKind: "unary"; + input: typeof ProjectServiceCreateRequestSchema; + output: typeof ProjectServiceCreateResponseSchema; + }, + /** + * Delete a project + * + * @generated from rpc metalstack.api.v2.ProjectService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof ProjectServiceDeleteRequestSchema; + output: typeof ProjectServiceDeleteResponseSchema; + }, + /** + * Update a project + * + * @generated from rpc metalstack.api.v2.ProjectService.Update + */ + update: { + methodKind: "unary"; + input: typeof ProjectServiceUpdateRequestSchema; + output: typeof ProjectServiceUpdateResponseSchema; + }, + /** + * Leave project + * + * @generated from rpc metalstack.api.v2.ProjectService.Leave + */ + leave: { + methodKind: "unary"; + input: typeof ProjectServiceLeaveRequestSchema; + output: typeof ProjectServiceLeaveResponseSchema; + }, + /** + * RemoveMember remove a user from a project + * + * @generated from rpc metalstack.api.v2.ProjectService.RemoveMember + */ + removeMember: { + methodKind: "unary"; + input: typeof ProjectServiceRemoveMemberRequestSchema; + output: typeof ProjectServiceRemoveMemberResponseSchema; + }, + /** + * UpdateMember update a user for a project + * + * @generated from rpc metalstack.api.v2.ProjectService.UpdateMember + */ + updateMember: { + methodKind: "unary"; + input: typeof ProjectServiceUpdateMemberRequestSchema; + output: typeof ProjectServiceUpdateMemberResponseSchema; + }, + /** + * Invite a user to a project + * + * @generated from rpc metalstack.api.v2.ProjectService.Invite + */ + invite: { + methodKind: "unary"; + input: typeof ProjectServiceInviteRequestSchema; + output: typeof ProjectServiceInviteResponseSchema; + }, + /** + * InviteAccept is called from a user to accept a invitation + * + * @generated from rpc metalstack.api.v2.ProjectService.InviteAccept + */ + inviteAccept: { + methodKind: "unary"; + input: typeof ProjectServiceInviteAcceptRequestSchema; + output: typeof ProjectServiceInviteAcceptResponseSchema; + }, + /** + * InviteDelete deletes a pending invitation + * + * @generated from rpc metalstack.api.v2.ProjectService.InviteDelete + */ + inviteDelete: { + methodKind: "unary"; + input: typeof ProjectServiceInviteDeleteRequestSchema; + output: typeof ProjectServiceInviteDeleteResponseSchema; + }, + /** + * InvitesList list all invites to a project + * + * @generated from rpc metalstack.api.v2.ProjectService.InvitesList + */ + invitesList: { + methodKind: "unary"; + input: typeof ProjectServiceInvitesListRequestSchema; + output: typeof ProjectServiceInvitesListResponseSchema; + }, + /** + * InviteGet get an invite + * + * @generated from rpc metalstack.api.v2.ProjectService.InviteGet + */ + inviteGet: { + methodKind: "unary"; + input: typeof ProjectServiceInviteGetRequestSchema; + output: typeof ProjectServiceInviteGetResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_project, 0); + diff --git a/js/metalstack/api/v2/size_pb.d.ts b/js/metalstack/api/v2/size_pb.d.ts new file mode 100644 index 00000000..547971d0 --- /dev/null +++ b/js/metalstack/api/v2/size_pb.d.ts @@ -0,0 +1,261 @@ +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Labels, Meta } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/size.proto. + */ +export declare const file_metalstack_api_v2_size: GenFile; +/** + * SizeServiceGetRequest is the request payload for a size get request + * + * @generated from message metalstack.api.v2.SizeServiceGetRequest + */ +export type SizeServiceGetRequest = Message<"metalstack.api.v2.SizeServiceGetRequest"> & { + /** + * ID of the size to get + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.api.v2.SizeServiceGetRequest. + * Use `create(SizeServiceGetRequestSchema)` to create a new message. + */ +export declare const SizeServiceGetRequestSchema: GenMessage; +/** + * SizeServiceListRequest is the request payload for a size list request + * + * @generated from message metalstack.api.v2.SizeServiceListRequest + */ +export type SizeServiceListRequest = Message<"metalstack.api.v2.SizeServiceListRequest"> & { + /** + * Query for sizes + * + * @generated from field: metalstack.api.v2.SizeQuery query = 1; + */ + query?: SizeQuery; +}; +/** + * Describes the message metalstack.api.v2.SizeServiceListRequest. + * Use `create(SizeServiceListRequestSchema)` to create a new message. + */ +export declare const SizeServiceListRequestSchema: GenMessage; +/** + * SizeServiceGetResponse is the response payload for a size get request + * + * @generated from message metalstack.api.v2.SizeServiceGetResponse + */ +export type SizeServiceGetResponse = Message<"metalstack.api.v2.SizeServiceGetResponse"> & { + /** + * Size the size + * + * @generated from field: metalstack.api.v2.Size size = 1; + */ + size?: Size; +}; +/** + * Describes the message metalstack.api.v2.SizeServiceGetResponse. + * Use `create(SizeServiceGetResponseSchema)` to create a new message. + */ +export declare const SizeServiceGetResponseSchema: GenMessage; +/** + * SizeServiceListResponse is the response payload for a size list request + * + * @generated from message metalstack.api.v2.SizeServiceListResponse + */ +export type SizeServiceListResponse = Message<"metalstack.api.v2.SizeServiceListResponse"> & { + /** + * Sizes the sizes + * + * @generated from field: repeated metalstack.api.v2.Size sizes = 1; + */ + sizes: Size[]; +}; +/** + * Describes the message metalstack.api.v2.SizeServiceListResponse. + * Use `create(SizeServiceListResponseSchema)` to create a new message. + */ +export declare const SizeServiceListResponseSchema: GenMessage; +/** + * Size + * + * @generated from message metalstack.api.v2.Size + */ +export type Size = Message<"metalstack.api.v2.Size"> & { + /** + * Id of this size + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Meta for this size + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + /** + * Name of this size + * + * @generated from field: optional string name = 4; + */ + name?: string; + /** + * Description of this size + * + * @generated from field: optional string description = 5; + */ + description?: string; + /** + * Constraints which must match that a specific machine is considered of this size + * + * @generated from field: repeated metalstack.api.v2.SizeConstraint constraints = 6; + */ + constraints: SizeConstraint[]; +}; +/** + * Describes the message metalstack.api.v2.Size. + * Use `create(SizeSchema)` to create a new message. + */ +export declare const SizeSchema: GenMessage; +/** + * SizeConstraint defines the boundaries for certain type of machine property which must match to identify this machine as this size. + * + * @generated from message metalstack.api.v2.SizeConstraint + */ +export type SizeConstraint = Message<"metalstack.api.v2.SizeConstraint"> & { + /** + * Type a machine matches to a size in order to make them easier to categorize + * + * @generated from field: metalstack.api.v2.SizeConstraintType type = 1; + */ + type: SizeConstraintType; + /** + * Min the minimum value of the constraint + * + * @generated from field: uint64 min = 2; + */ + min: bigint; + /** + * Max the maximum value of the constraint + * + * @generated from field: uint64 max = 3; + */ + max: bigint; + /** + * Identifier glob pattern which matches to the given type, for example gpu pci id + * + * @generated from field: optional string identifier = 4; + */ + identifier?: string; +}; +/** + * Describes the message metalstack.api.v2.SizeConstraint. + * Use `create(SizeConstraintSchema)` to create a new message. + */ +export declare const SizeConstraintSchema: GenMessage; +/** + * SizeQuery is used to search sizes + * + * @generated from message metalstack.api.v2.SizeQuery + */ +export type SizeQuery = Message<"metalstack.api.v2.SizeQuery"> & { + /** + * ID of the size to get + * + * @generated from field: optional string id = 1; + */ + id?: string; + /** + * Name of the size to query + * + * @generated from field: optional string name = 2; + */ + name?: string; + /** + * Description of the size to query + * + * @generated from field: optional string description = 3; + */ + description?: string; + /** + * Labels lists only sizes containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 4; + */ + labels?: Labels; +}; +/** + * Describes the message metalstack.api.v2.SizeQuery. + * Use `create(SizeQuerySchema)` to create a new message. + */ +export declare const SizeQuerySchema: GenMessage; +/** + * SizeConstraintType defines the property for which a constraint is defined + * + * @generated from enum metalstack.api.v2.SizeConstraintType + */ +export declare enum SizeConstraintType { + /** + * SIZE_CONSTRAINT_TYPE_UNSPECIFIED type is not specified + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * SIZE_CONSTRAINT_TYPE_CORES defines the number of cores as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_CORES = 1; + */ + CORES = 1, + /** + * SIZE_CONSTRAINT_TYPE_MEMORY defines the amount of memory as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_MEMORY = 2; + */ + MEMORY = 2, + /** + * SIZE_CONSTRAINT_TYPE_STORAGE defines the amount of storage as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_STORAGE = 3; + */ + STORAGE = 3, + /** + * SIZE_CONSTRAINT_TYPE_GPU defines the number of gpus as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_GPU = 4; + */ + GPU = 4 +} +/** + * Describes the enum metalstack.api.v2.SizeConstraintType. + */ +export declare const SizeConstraintTypeSchema: GenEnum; +/** + * SizeService serves size related functions + * + * @generated from service metalstack.api.v2.SizeService + */ +export declare const SizeService: GenService<{ + /** + * Get a size + * + * @generated from rpc metalstack.api.v2.SizeService.Get + */ + get: { + methodKind: "unary"; + input: typeof SizeServiceGetRequestSchema; + output: typeof SizeServiceGetResponseSchema; + }; + /** + * List all sizes + * + * @generated from rpc metalstack.api.v2.SizeService.List + */ + list: { + methodKind: "unary"; + input: typeof SizeServiceListRequestSchema; + output: typeof SizeServiceListResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/size_pb.js b/js/metalstack/api/v2/size_pb.js new file mode 100644 index 00000000..0f33cac3 --- /dev/null +++ b/js/metalstack/api/v2/size_pb.js @@ -0,0 +1,94 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/size.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +/** + * Describes the file metalstack/api/v2/size.proto. + */ +export const file_metalstack_api_v2_size = /*@__PURE__*/ fileDesc("ChxtZXRhbHN0YWNrL2FwaS92Mi9zaXplLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiIvChVTaXplU2VydmljZUdldFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiRQoWU2l6ZVNlcnZpY2VMaXN0UmVxdWVzdBIrCgVxdWVyeRgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlNpemVRdWVyeSI/ChZTaXplU2VydmljZUdldFJlc3BvbnNlEiUKBHNpemUYASABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplIkEKF1NpemVTZXJ2aWNlTGlzdFJlc3BvbnNlEiYKBXNpemVzGAEgAygLMhcubWV0YWxzdGFjay5hcGkudjIuU2l6ZSLdAQoEU2l6ZRIWCgJpZBgBIAEoCUIKukgHcgUQAhiAARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIeCgRuYW1lGAQgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgBiAEBEjYKC2NvbnN0cmFpbnRzGAYgAygLMiEubWV0YWxzdGFjay5hcGkudjIuU2l6ZUNvbnN0cmFpbnRCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uIp0BCg5TaXplQ29uc3RyYWludBI9CgR0eXBlGAEgASgOMiUubWV0YWxzdGFjay5hcGkudjIuU2l6ZUNvbnN0cmFpbnRUeXBlQgi6SAWCAQIQARILCgNtaW4YAiABKAQSCwoDbWF4GAMgASgEEiMKCmlkZW50aWZpZXIYBCABKAlCCrpIB3IFEAAYgAFIAIgBAUINCgtfaWRlbnRpZmllciLKAQoJU2l6ZVF1ZXJ5EhsKAmlkGAEgASgJQgq6SAdyBRACGIABSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIFCgNfaWRCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMq6AEKElNpemVDb25zdHJhaW50VHlwZRIkCiBTSVpFX0NPTlNUUkFJTlRfVFlQRV9VTlNQRUNJRklFRBAAEikKGlNJWkVfQ09OU1RSQUlOVF9UWVBFX0NPUkVTEAEaCYKyGQVjb3JlcxIrChtTSVpFX0NPTlNUUkFJTlRfVFlQRV9NRU1PUlkQAhoKgrIZBm1lbW9yeRItChxTSVpFX0NPTlNUUkFJTlRfVFlQRV9TVE9SQUdFEAMaC4KyGQdzdG9yYWdlEiUKGFNJWkVfQ09OU1RSQUlOVF9UWVBFX0dQVRAEGgeCshkDZ3B1MtwBCgtTaXplU2VydmljZRJkCgNHZXQSKC5tZXRhbHN0YWNrLmFwaS52Mi5TaXplU2VydmljZUdldFJlcXVlc3QaKS5tZXRhbHN0YWNrLmFwaS52Mi5TaXplU2VydmljZUdldFJlc3BvbnNlIgjY8xgD4PMYAhJnCgRMaXN0EikubWV0YWxzdGFjay5hcGkudjIuU2l6ZVNlcnZpY2VMaXN0UmVxdWVzdBoqLm1ldGFsc3RhY2suYXBpLnYyLlNpemVTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgD4PMYAkK/AQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQglTaXplUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.api.v2.SizeServiceGetRequest. + * Use `create(SizeServiceGetRequestSchema)` to create a new message. + */ +export const SizeServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size, 0); +/** + * Describes the message metalstack.api.v2.SizeServiceListRequest. + * Use `create(SizeServiceListRequestSchema)` to create a new message. + */ +export const SizeServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size, 1); +/** + * Describes the message metalstack.api.v2.SizeServiceGetResponse. + * Use `create(SizeServiceGetResponseSchema)` to create a new message. + */ +export const SizeServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size, 2); +/** + * Describes the message metalstack.api.v2.SizeServiceListResponse. + * Use `create(SizeServiceListResponseSchema)` to create a new message. + */ +export const SizeServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size, 3); +/** + * Describes the message metalstack.api.v2.Size. + * Use `create(SizeSchema)` to create a new message. + */ +export const SizeSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size, 4); +/** + * Describes the message metalstack.api.v2.SizeConstraint. + * Use `create(SizeConstraintSchema)` to create a new message. + */ +export const SizeConstraintSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size, 5); +/** + * Describes the message metalstack.api.v2.SizeQuery. + * Use `create(SizeQuerySchema)` to create a new message. + */ +export const SizeQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size, 6); +/** + * SizeConstraintType defines the property for which a constraint is defined + * + * @generated from enum metalstack.api.v2.SizeConstraintType + */ +export var SizeConstraintType; +(function (SizeConstraintType) { + /** + * SIZE_CONSTRAINT_TYPE_UNSPECIFIED type is not specified + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_UNSPECIFIED = 0; + */ + SizeConstraintType[SizeConstraintType["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * SIZE_CONSTRAINT_TYPE_CORES defines the number of cores as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_CORES = 1; + */ + SizeConstraintType[SizeConstraintType["CORES"] = 1] = "CORES"; + /** + * SIZE_CONSTRAINT_TYPE_MEMORY defines the amount of memory as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_MEMORY = 2; + */ + SizeConstraintType[SizeConstraintType["MEMORY"] = 2] = "MEMORY"; + /** + * SIZE_CONSTRAINT_TYPE_STORAGE defines the amount of storage as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_STORAGE = 3; + */ + SizeConstraintType[SizeConstraintType["STORAGE"] = 3] = "STORAGE"; + /** + * SIZE_CONSTRAINT_TYPE_GPU defines the number of gpus as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_GPU = 4; + */ + SizeConstraintType[SizeConstraintType["GPU"] = 4] = "GPU"; +})(SizeConstraintType || (SizeConstraintType = {})); +/** + * Describes the enum metalstack.api.v2.SizeConstraintType. + */ +export const SizeConstraintTypeSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_size, 0); +/** + * SizeService serves size related functions + * + * @generated from service metalstack.api.v2.SizeService + */ +export const SizeService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_size, 0); diff --git a/js/metalstack/api/v2/size_pb.ts b/js/metalstack/api/v2/size_pb.ts new file mode 100644 index 00000000..103972e8 --- /dev/null +++ b/js/metalstack/api/v2/size_pb.ts @@ -0,0 +1,312 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/size.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Labels, Meta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/size.proto. + */ +export const file_metalstack_api_v2_size: GenFile = /*@__PURE__*/ + fileDesc("ChxtZXRhbHN0YWNrL2FwaS92Mi9zaXplLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiIvChVTaXplU2VydmljZUdldFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiRQoWU2l6ZVNlcnZpY2VMaXN0UmVxdWVzdBIrCgVxdWVyeRgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlNpemVRdWVyeSI/ChZTaXplU2VydmljZUdldFJlc3BvbnNlEiUKBHNpemUYASABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplIkEKF1NpemVTZXJ2aWNlTGlzdFJlc3BvbnNlEiYKBXNpemVzGAEgAygLMhcubWV0YWxzdGFjay5hcGkudjIuU2l6ZSLdAQoEU2l6ZRIWCgJpZBgBIAEoCUIKukgHcgUQAhiAARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIeCgRuYW1lGAQgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgBiAEBEjYKC2NvbnN0cmFpbnRzGAYgAygLMiEubWV0YWxzdGFjay5hcGkudjIuU2l6ZUNvbnN0cmFpbnRCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uIp0BCg5TaXplQ29uc3RyYWludBI9CgR0eXBlGAEgASgOMiUubWV0YWxzdGFjay5hcGkudjIuU2l6ZUNvbnN0cmFpbnRUeXBlQgi6SAWCAQIQARILCgNtaW4YAiABKAQSCwoDbWF4GAMgASgEEiMKCmlkZW50aWZpZXIYBCABKAlCCrpIB3IFEAAYgAFIAIgBAUINCgtfaWRlbnRpZmllciLKAQoJU2l6ZVF1ZXJ5EhsKAmlkGAEgASgJQgq6SAdyBRACGIABSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIuCgZsYWJlbHMYBCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIA4gBAUIFCgNfaWRCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMq6AEKElNpemVDb25zdHJhaW50VHlwZRIkCiBTSVpFX0NPTlNUUkFJTlRfVFlQRV9VTlNQRUNJRklFRBAAEikKGlNJWkVfQ09OU1RSQUlOVF9UWVBFX0NPUkVTEAEaCYKyGQVjb3JlcxIrChtTSVpFX0NPTlNUUkFJTlRfVFlQRV9NRU1PUlkQAhoKgrIZBm1lbW9yeRItChxTSVpFX0NPTlNUUkFJTlRfVFlQRV9TVE9SQUdFEAMaC4KyGQdzdG9yYWdlEiUKGFNJWkVfQ09OU1RSQUlOVF9UWVBFX0dQVRAEGgeCshkDZ3B1MtwBCgtTaXplU2VydmljZRJkCgNHZXQSKC5tZXRhbHN0YWNrLmFwaS52Mi5TaXplU2VydmljZUdldFJlcXVlc3QaKS5tZXRhbHN0YWNrLmFwaS52Mi5TaXplU2VydmljZUdldFJlc3BvbnNlIgjY8xgD4PMYAhJnCgRMaXN0EikubWV0YWxzdGFjay5hcGkudjIuU2l6ZVNlcnZpY2VMaXN0UmVxdWVzdBoqLm1ldGFsc3RhY2suYXBpLnYyLlNpemVTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgD4PMYAkK/AQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQglTaXplUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + +/** + * SizeServiceGetRequest is the request payload for a size get request + * + * @generated from message metalstack.api.v2.SizeServiceGetRequest + */ +export type SizeServiceGetRequest = Message<"metalstack.api.v2.SizeServiceGetRequest"> & { + /** + * ID of the size to get + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.api.v2.SizeServiceGetRequest. + * Use `create(SizeServiceGetRequestSchema)` to create a new message. + */ +export const SizeServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size, 0); + +/** + * SizeServiceListRequest is the request payload for a size list request + * + * @generated from message metalstack.api.v2.SizeServiceListRequest + */ +export type SizeServiceListRequest = Message<"metalstack.api.v2.SizeServiceListRequest"> & { + /** + * Query for sizes + * + * @generated from field: metalstack.api.v2.SizeQuery query = 1; + */ + query?: SizeQuery; +}; + +/** + * Describes the message metalstack.api.v2.SizeServiceListRequest. + * Use `create(SizeServiceListRequestSchema)` to create a new message. + */ +export const SizeServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size, 1); + +/** + * SizeServiceGetResponse is the response payload for a size get request + * + * @generated from message metalstack.api.v2.SizeServiceGetResponse + */ +export type SizeServiceGetResponse = Message<"metalstack.api.v2.SizeServiceGetResponse"> & { + /** + * Size the size + * + * @generated from field: metalstack.api.v2.Size size = 1; + */ + size?: Size; +}; + +/** + * Describes the message metalstack.api.v2.SizeServiceGetResponse. + * Use `create(SizeServiceGetResponseSchema)` to create a new message. + */ +export const SizeServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size, 2); + +/** + * SizeServiceListResponse is the response payload for a size list request + * + * @generated from message metalstack.api.v2.SizeServiceListResponse + */ +export type SizeServiceListResponse = Message<"metalstack.api.v2.SizeServiceListResponse"> & { + /** + * Sizes the sizes + * + * @generated from field: repeated metalstack.api.v2.Size sizes = 1; + */ + sizes: Size[]; +}; + +/** + * Describes the message metalstack.api.v2.SizeServiceListResponse. + * Use `create(SizeServiceListResponseSchema)` to create a new message. + */ +export const SizeServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size, 3); + +/** + * Size + * + * @generated from message metalstack.api.v2.Size + */ +export type Size = Message<"metalstack.api.v2.Size"> & { + /** + * Id of this size + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Meta for this size + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + + /** + * Name of this size + * + * @generated from field: optional string name = 4; + */ + name?: string; + + /** + * Description of this size + * + * @generated from field: optional string description = 5; + */ + description?: string; + + /** + * Constraints which must match that a specific machine is considered of this size + * + * @generated from field: repeated metalstack.api.v2.SizeConstraint constraints = 6; + */ + constraints: SizeConstraint[]; +}; + +/** + * Describes the message metalstack.api.v2.Size. + * Use `create(SizeSchema)` to create a new message. + */ +export const SizeSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size, 4); + +/** + * SizeConstraint defines the boundaries for certain type of machine property which must match to identify this machine as this size. + * + * @generated from message metalstack.api.v2.SizeConstraint + */ +export type SizeConstraint = Message<"metalstack.api.v2.SizeConstraint"> & { + /** + * Type a machine matches to a size in order to make them easier to categorize + * + * @generated from field: metalstack.api.v2.SizeConstraintType type = 1; + */ + type: SizeConstraintType; + + /** + * Min the minimum value of the constraint + * + * @generated from field: uint64 min = 2; + */ + min: bigint; + + /** + * Max the maximum value of the constraint + * + * @generated from field: uint64 max = 3; + */ + max: bigint; + + /** + * Identifier glob pattern which matches to the given type, for example gpu pci id + * + * @generated from field: optional string identifier = 4; + */ + identifier?: string; +}; + +/** + * Describes the message metalstack.api.v2.SizeConstraint. + * Use `create(SizeConstraintSchema)` to create a new message. + */ +export const SizeConstraintSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size, 5); + +/** + * SizeQuery is used to search sizes + * + * @generated from message metalstack.api.v2.SizeQuery + */ +export type SizeQuery = Message<"metalstack.api.v2.SizeQuery"> & { + /** + * ID of the size to get + * + * @generated from field: optional string id = 1; + */ + id?: string; + + /** + * Name of the size to query + * + * @generated from field: optional string name = 2; + */ + name?: string; + + /** + * Description of the size to query + * + * @generated from field: optional string description = 3; + */ + description?: string; + + /** + * Labels lists only sizes containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 4; + */ + labels?: Labels; +}; + +/** + * Describes the message metalstack.api.v2.SizeQuery. + * Use `create(SizeQuerySchema)` to create a new message. + */ +export const SizeQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_size, 6); + +/** + * SizeConstraintType defines the property for which a constraint is defined + * + * @generated from enum metalstack.api.v2.SizeConstraintType + */ +export enum SizeConstraintType { + /** + * SIZE_CONSTRAINT_TYPE_UNSPECIFIED type is not specified + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * SIZE_CONSTRAINT_TYPE_CORES defines the number of cores as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_CORES = 1; + */ + CORES = 1, + + /** + * SIZE_CONSTRAINT_TYPE_MEMORY defines the amount of memory as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_MEMORY = 2; + */ + MEMORY = 2, + + /** + * SIZE_CONSTRAINT_TYPE_STORAGE defines the amount of storage as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_STORAGE = 3; + */ + STORAGE = 3, + + /** + * SIZE_CONSTRAINT_TYPE_GPU defines the number of gpus as property + * + * @generated from enum value: SIZE_CONSTRAINT_TYPE_GPU = 4; + */ + GPU = 4, +} + +/** + * Describes the enum metalstack.api.v2.SizeConstraintType. + */ +export const SizeConstraintTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_size, 0); + +/** + * SizeService serves size related functions + * + * @generated from service metalstack.api.v2.SizeService + */ +export const SizeService: GenService<{ + /** + * Get a size + * + * @generated from rpc metalstack.api.v2.SizeService.Get + */ + get: { + methodKind: "unary"; + input: typeof SizeServiceGetRequestSchema; + output: typeof SizeServiceGetResponseSchema; + }, + /** + * List all sizes + * + * @generated from rpc metalstack.api.v2.SizeService.List + */ + list: { + methodKind: "unary"; + input: typeof SizeServiceListRequestSchema; + output: typeof SizeServiceListResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_size, 0); + diff --git a/js/metalstack/api/v2/switch_pb.d.ts b/js/metalstack/api/v2/switch_pb.d.ts new file mode 100644 index 00000000..e4d38a3a --- /dev/null +++ b/js/metalstack/api/v2/switch_pb.d.ts @@ -0,0 +1,508 @@ +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import type { Meta } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/switch.proto. + */ +export declare const file_metalstack_api_v2_switch: GenFile; +/** + * Switch represents a network switch. + * + * @generated from message metalstack.api.v2.Switch + */ +export type Switch = Message<"metalstack.api.v2.Switch"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Meta for this switch. + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + /** + * Description of the switch. + * + * @generated from field: string description = 3; + */ + description: string; + /** + * Rack ID if the switch resides in a rack. + * + * @generated from field: optional string rack = 4; + */ + rack?: string; + /** + * Partition the switch belongs to. + * + * @generated from field: string partition = 5; + */ + partition: string; + /** + * ReplaceMode is used to mark a switch ready for replacement. + * + * @generated from field: metalstack.api.v2.SwitchReplaceMode replace_mode = 6; + */ + replaceMode: SwitchReplaceMode; + /** + * ManagementIp is the switch's IP for management access. + * + * @generated from field: string management_ip = 7; + */ + managementIp: string; + /** + * ManagementUser is the user name to use for management access. + * + * @generated from field: optional string management_user = 8; + */ + managementUser?: string; + /** + * ConsoleCommand is the command for accessing the switch's console. + * + * @generated from field: optional string console_command = 9; + */ + consoleCommand?: string; + /** + * Nics are the front panel ports of the switch. + * + * @generated from field: repeated metalstack.api.v2.SwitchNic nics = 10; + */ + nics: SwitchNic[]; + /** + * SwitchOs is the OS running on the switch. + * + * @generated from field: metalstack.api.v2.SwitchOS os = 11; + */ + os?: SwitchOS; + /** + * MachineConnections map machines to the nics they are connected to. + * + * @generated from field: repeated metalstack.api.v2.MachineConnection machine_connections = 12; + */ + machineConnections: MachineConnection[]; +}; +/** + * Describes the message metalstack.api.v2.Switch. + * Use `create(SwitchSchema)` to create a new message. + */ +export declare const SwitchSchema: GenMessage; +/** + * SwitchOS holds information about the NOS and versions running on the switch. + * + * @generated from message metalstack.api.v2.SwitchOS + */ +export type SwitchOS = Message<"metalstack.api.v2.SwitchOS"> & { + /** + * Vendor identifies what NOS distribution is running on the switch, e.g. SONiC. + * + * @generated from field: metalstack.api.v2.SwitchOSVendor vendor = 1; + */ + vendor: SwitchOSVendor; + /** + * Version specifies what NOS version is currently installed on the switch. + * + * @generated from field: string version = 2; + */ + version: string; + /** + * MetalCoreVersion is the currently running version of the metal-core. + * + * @generated from field: string metal_core_version = 3; + */ + metalCoreVersion: string; +}; +/** + * Describes the message metalstack.api.v2.SwitchOS. + * Use `create(SwitchOSSchema)` to create a new message. + */ +export declare const SwitchOSSchema: GenMessage; +/** + * SwitchNic represents a front panel port and its configuration. + * + * @generated from message metalstack.api.v2.SwitchNic + */ +export type SwitchNic = Message<"metalstack.api.v2.SwitchNic"> & { + /** + * Name of the switch port + * + * @generated from field: string name = 1; + */ + name: string; + /** + * Identifier of the port + * + * @generated from field: string identifier = 2; + */ + identifier: string; + /** + * MAC address of the port + * + * @generated from field: string mac = 3; + */ + mac: string; + /** + * VRF name if the port is bound in one + * + * @generated from field: optional string vrf = 4; + */ + vrf?: string; + /** + * NicState describes the current state of the switch port. + * + * @generated from field: optional metalstack.api.v2.NicState state = 5; + */ + state?: NicState; + /** + * BGPFilter optionally configured on a port. + * + * @generated from field: optional metalstack.api.v2.BGPFilter bgp_filter = 6; + */ + bgpFilter?: BGPFilter; + /** + * BGPPortState represents the current BGP status of the port. + * + * @generated from field: optional metalstack.api.v2.SwitchBGPPortState bgp_port_state = 7; + */ + bgpPortState?: SwitchBGPPortState; +}; +/** + * Describes the message metalstack.api.v2.SwitchNic. + * Use `create(SwitchNicSchema)` to create a new message. + */ +export declare const SwitchNicSchema: GenMessage; +/** + * BGPFilter can be used to restrict BGP based on CIDRs and VNIs. + * + * @generated from message metalstack.api.v2.BGPFilter + */ +export type BGPFilter = Message<"metalstack.api.v2.BGPFilter"> & { + /** + * CIDRs for which to allow BGP + * + * @generated from field: repeated string cidrs = 1; + */ + cidrs: string[]; + /** + * VNIs for which to allow BGP + * + * @generated from field: repeated string vnis = 2; + */ + vnis: string[]; +}; +/** + * Describes the message metalstack.api.v2.BGPFilter. + * Use `create(BGPFilterSchema)` to create a new message. + */ +export declare const BGPFilterSchema: GenMessage; +/** + * SwitchBGPPortState holds information about the BGP state of a port. + * + * @generated from message metalstack.api.v2.SwitchBGPPortState + */ +export type SwitchBGPPortState = Message<"metalstack.api.v2.SwitchBGPPortState"> & { + /** + * Neighbor of this port. + * + * @generated from field: string neighbor = 1; + */ + neighbor: string; + /** + * PeerGroup of this port. + * + * @generated from field: string peer_group = 2; + */ + peerGroup: string; + /** + * VrfName of the VRF this port is bound to. + * + * @generated from field: string vrf_name = 3; + */ + vrfName: string; + /** + * BgpState of the connection on this port. + * + * @generated from field: metalstack.api.v2.BGPState bgp_state = 4; + */ + bgpState: BGPState; + /** + * BgpTimerUpEstablished reports when this port's BGP connection was established. + * + * @generated from field: google.protobuf.Timestamp bgp_timer_up_established = 5; + */ + bgpTimerUpEstablished?: Timestamp; + /** + * SentPrefixCounter counts the prefixes sent by the switch on this port. + * + * @generated from field: uint64 sent_prefix_counter = 6; + */ + sentPrefixCounter: bigint; + /** + * AcceptedPrefixCounter counts the prefixes received on this port. + * + * @generated from field: uint64 accepted_prefix_counter = 7; + */ + acceptedPrefixCounter: bigint; +}; +/** + * Describes the message metalstack.api.v2.SwitchBGPPortState. + * Use `create(SwitchBGPPortStateSchema)` to create a new message. + */ +export declare const SwitchBGPPortStateSchema: GenMessage; +/** + * NicState represents the current state of a switch port. + * + * @generated from message metalstack.api.v2.NicState + */ +export type NicState = Message<"metalstack.api.v2.NicState"> & { + /** + * Desired is the desired port state. + * + * @generated from field: optional metalstack.api.v2.SwitchPortStatus desired = 1; + */ + desired?: SwitchPortStatus; + /** + * Actual is the actual port state. + * + * @generated from field: metalstack.api.v2.SwitchPortStatus actual = 2; + */ + actual: SwitchPortStatus; +}; +/** + * Describes the message metalstack.api.v2.NicState. + * Use `create(NicStateSchema)` to create a new message. + */ +export declare const NicStateSchema: GenMessage; +/** + * MachineConnection associates a machine with the corresponding switch nic. + * + * @generated from message metalstack.api.v2.MachineConnection + */ +export type MachineConnection = Message<"metalstack.api.v2.MachineConnection"> & { + /** + * MachineId of the machine connected to the nic. + * + * @generated from field: string machine_id = 1; + */ + machineId: string; + /** + * Nic the machine is connected to. + * + * @generated from field: metalstack.api.v2.SwitchNic nic = 2; + */ + nic?: SwitchNic; +}; +/** + * Describes the message metalstack.api.v2.MachineConnection. + * Use `create(MachineConnectionSchema)` to create a new message. + */ +export declare const MachineConnectionSchema: GenMessage; +/** + * SwitchQuery can be used to query a switch or a list of switches. + * + * @generated from message metalstack.api.v2.SwitchQuery + */ +export type SwitchQuery = Message<"metalstack.api.v2.SwitchQuery"> & { + /** + * Id of the switch to list. + * + * @generated from field: optional string id = 1; + */ + id?: string; + /** + * Partition of the switches to list. + * + * @generated from field: optional string partition = 2; + */ + partition?: string; + /** + * Rack of the switches to list. + * + * @generated from field: optional string rack = 3; + */ + rack?: string; + /** + * Switch OS specific queries. + * + * @generated from field: optional metalstack.api.v2.SwitchOSQuery os = 4; + */ + os?: SwitchOSQuery; +}; +/** + * Describes the message metalstack.api.v2.SwitchQuery. + * Use `create(SwitchQuerySchema)` to create a new message. + */ +export declare const SwitchQuerySchema: GenMessage; +/** + * SwitchOSQuery holds OS specific query parameters. + * + * @generated from message metalstack.api.v2.SwitchOSQuery + */ +export type SwitchOSQuery = Message<"metalstack.api.v2.SwitchOSQuery"> & { + /** + * OsVendor of the switch OS by which to filter the switches. + * + * @generated from field: optional metalstack.api.v2.SwitchOSVendor vendor = 1; + */ + vendor?: SwitchOSVendor; + /** + * OsVersion of the OS by which to filter the switches. + * + * @generated from field: optional string version = 2; + */ + version?: string; +}; +/** + * Describes the message metalstack.api.v2.SwitchOSQuery. + * Use `create(SwitchOSQuerySchema)` to create a new message. + */ +export declare const SwitchOSQuerySchema: GenMessage; +/** + * BGPState represents the state of a BGP session. + * + * @generated from enum metalstack.api.v2.BGPState + */ +export declare enum BGPState { + /** + * BGP_STATE_UNSPECIFIED is not specified. + * + * @generated from enum value: BGP_STATE_UNSPECIFIED = 0; + */ + BGP_STATE_UNSPECIFIED = 0, + /** + * BGP_STATE_IDLE is the Idle state of a BGP session. + * + * @generated from enum value: BGP_STATE_IDLE = 1; + */ + BGP_STATE_IDLE = 1, + /** + * BGP_STATE_CONNECT is the Connect state of a BGP session. + * + * @generated from enum value: BGP_STATE_CONNECT = 2; + */ + BGP_STATE_CONNECT = 2, + /** + * BGP_STATE_ACTIVE is the Active state of a BGP session. + * + * @generated from enum value: BGP_STATE_ACTIVE = 3; + */ + BGP_STATE_ACTIVE = 3, + /** + * BGP_STATE_OPEN_SENT is the OpenSent state of a BGP session. + * + * @generated from enum value: BGP_STATE_OPEN_SENT = 4; + */ + BGP_STATE_OPEN_SENT = 4, + /** + * BGP_STATE_OPEN_CONFIRM is the OpenConfirm state of a BGP session. + * + * @generated from enum value: BGP_STATE_OPEN_CONFIRM = 5; + */ + BGP_STATE_OPEN_CONFIRM = 5, + /** + * BGP_STATE_ESTABLISHED is the Established state of a BGP session. + * + * @generated from enum value: BGP_STATE_ESTABLISHED = 6; + */ + BGP_STATE_ESTABLISHED = 6 +} +/** + * Describes the enum metalstack.api.v2.BGPState. + */ +export declare const BGPStateSchema: GenEnum; +/** + * SwitchReplaceMode is used to mark a switch ready for replacement. + * + * @generated from enum metalstack.api.v2.SwitchReplaceMode + */ +export declare enum SwitchReplaceMode { + /** + * SWITCH_REPLACE_MODE_UNSPECIFIED is not specified. + * + * @generated from enum value: SWITCH_REPLACE_MODE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * SWITCH_REPLACE_MODE_REPLACE means this switch is waiting to be replaced. + * + * @generated from enum value: SWITCH_REPLACE_MODE_REPLACE = 1; + */ + REPLACE = 1, + /** + * SWITCH_REPLACE_MODE_OPERATIONAL means this switch is operational and cannot be replaced. + * + * @generated from enum value: SWITCH_REPLACE_MODE_OPERATIONAL = 2; + */ + OPERATIONAL = 2 +} +/** + * Describes the enum metalstack.api.v2.SwitchReplaceMode. + */ +export declare const SwitchReplaceModeSchema: GenEnum; +/** + * SwitchOSVendor represents a NOS distribution. + * + * @generated from enum metalstack.api.v2.SwitchOSVendor + */ +export declare enum SwitchOSVendor { + /** + * SWITCH_OS_VENDOR_UNSPECIFIED is not specified. + * + * @generated from enum value: SWITCH_OS_VENDOR_UNSPECIFIED = 0; + */ + SWITCH_OS_VENDOR_UNSPECIFIED = 0, + /** + * SWITCH_OS_VENDOR_CUMULUS means this switch is running on Cumulus Linux. + * + * @generated from enum value: SWITCH_OS_VENDOR_CUMULUS = 1; + */ + SWITCH_OS_VENDOR_CUMULUS = 1, + /** + * SWITCH_OS_VENDOR_SONIC means this switch is running on SONiC NOS. + * + * @generated from enum value: SWITCH_OS_VENDOR_SONIC = 2; + */ + SWITCH_OS_VENDOR_SONIC = 2 +} +/** + * Describes the enum metalstack.api.v2.SwitchOSVendor. + */ +export declare const SwitchOSVendorSchema: GenEnum; +/** + * SwitchPortStatus specifies the state of a switch port. + * + * @generated from enum metalstack.api.v2.SwitchPortStatus + */ +export declare enum SwitchPortStatus { + /** + * SWITCH_PORT_STATUS_UNSPECIFIED is not specified. + * + * @generated from enum value: SWITCH_PORT_STATUS_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * SWITCH_PORT_STATUS_UP means this port is up. + * + * @generated from enum value: SWITCH_PORT_STATUS_UP = 1; + */ + UP = 1, + /** + * SWITCH_PORT_STATUS_DOWN means this port is down. + * + * @generated from enum value: SWITCH_PORT_STATUS_DOWN = 2; + */ + DOWN = 2, + /** + * SWITCH_PORT_STATUS_UNKNOWN means the status of this port is unknown. + * + * @generated from enum value: SWITCH_PORT_STATUS_UNKNOWN = 3; + */ + UNKNOWN = 3 +} +/** + * Describes the enum metalstack.api.v2.SwitchPortStatus. + */ +export declare const SwitchPortStatusSchema: GenEnum; diff --git a/js/metalstack/api/v2/switch_pb.js b/js/metalstack/api/v2/switch_pb.js new file mode 100644 index 00000000..26a92913 --- /dev/null +++ b/js/metalstack/api/v2/switch_pb.js @@ -0,0 +1,207 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/switch.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +/** + * Describes the file metalstack/api/v2/switch.proto. + */ +export const file_metalstack_api_v2_switch = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9zd2l0Y2gucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIq8ECgZTd2l0Y2gSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEh4KBHJhY2sYBCABKAlCC7pICHIGwLOusQIBSACIAQESHgoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECARJECgxyZXBsYWNlX21vZGUYBiABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hSZXBsYWNlTW9kZUIIukgFggECEAESHgoNbWFuYWdlbWVudF9pcBgHIAEoCUIHukgEcgJwARIoCg9tYW5hZ2VtZW50X3VzZXIYCCABKAlCCrpIB3IFEAIYgAFIAYgBARIoCg9jb25zb2xlX2NvbW1hbmQYCSABKAlCCrpIB3IFEAIYgAFIAogBARIqCgRuaWNzGAogAygLMhwubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoTmljEicKAm9zGAsgASgLMhsubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1MSQQoTbWFjaGluZV9jb25uZWN0aW9ucxgMIAMoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDb25uZWN0aW9uQgcKBV9yYWNrQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZCKOAQoIU3dpdGNoT1MSOwoGdmVuZG9yGAEgASgOMiEubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NWZW5kb3JCCLpIBYIBAhABEhwKB3ZlcnNpb24YAiABKAlCC7pICHIGwLOusQIBEicKEm1ldGFsX2NvcmVfdmVyc2lvbhgDIAEoCUILukgIcgbAs66xAgEi4AIKCVN3aXRjaE5pYxIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIfCgppZGVudGlmaWVyGAIgASgJQgu6SAhyBsCzrrECARIYCgNtYWMYAyABKAlCC7pICHIGuLOusQIBEh0KA3ZyZhgEIAEoCUILukgIcgbAs66xAgFIAIgBARIvCgVzdGF0ZRgFIAEoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk5pY1N0YXRlSAGIAQESNQoKYmdwX2ZpbHRlchgGIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLkJHUEZpbHRlckgCiAEBEkIKDmJncF9wb3J0X3N0YXRlGAcgASgLMiUubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoQkdQUG9ydFN0YXRlSAOIAQFCBgoEX3ZyZkIICgZfc3RhdGVCDQoLX2JncF9maWx0ZXJCEQoPX2JncF9wb3J0X3N0YXRlIkcKCUJHUEZpbHRlchIbCgVjaWRycxgBIAMoCUIMukgJkgEG4LOusQIBEh0KBHZuaXMYAiADKAlCD7pIDJIBCSIHcgUQAhiAASKpAgoSU3dpdGNoQkdQUG9ydFN0YXRlEh0KCG5laWdoYm9yGAEgASgJQgu6SAhyBsCzrrECARIfCgpwZWVyX2dyb3VwGAIgASgJQgu6SAhyBsCzrrECARIdCgh2cmZfbmFtZRgDIAEoCUILukgIcgbAs66xAgESOAoJYmdwX3N0YXRlGAQgASgOMhsubWV0YWxzdGFjay5hcGkudjIuQkdQU3RhdGVCCLpIBYIBAhABEjwKGGJncF90aW1lcl91cF9lc3RhYmxpc2hlZBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoTc2VudF9wcmVmaXhfY291bnRlchgGIAEoBBIfChdhY2NlcHRlZF9wcmVmaXhfY291bnRlchgHIAEoBCKaAQoITmljU3RhdGUSQwoHZGVzaXJlZBgBIAEoDjIjLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFBvcnRTdGF0dXNCCLpIBYIBAhABSACIAQESPQoGYWN0dWFsGAIgASgOMiMubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydFN0YXR1c0IIukgFggECEAFCCgoIX2Rlc2lyZWQiUgoRTWFjaGluZUNvbm5lY3Rpb24SEgoKbWFjaGluZV9pZBgBIAEoCRIpCgNuaWMYAiABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMiygEKC1N3aXRjaFF1ZXJ5Eh4KAmlkGAEgASgJQg26SApyCMCzrrECAWgBSACIAQESIwoJcGFydGl0aW9uGAIgASgJQgu6SAhyBtCzrrECAUgBiAEBEh4KBHJhY2sYAyABKAlCC7pICHIGwLOusQIBSAKIAQESMQoCb3MYBCABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU1F1ZXJ5SAOIAQFCBQoDX2lkQgwKCl9wYXJ0aXRpb25CBwoFX3JhY2tCBQoDX29zIosBCg1Td2l0Y2hPU1F1ZXJ5EkAKBnZlbmRvchgBIAEoDjIhLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaE9TVmVuZG9yQgi6SAWCAQIQAUgAiAEBEiEKB3ZlcnNpb24YAiABKAlCC7pICHIGwLOusQIBSAGIAQFCCQoHX3ZlbmRvckIKCghfdmVyc2lvbiqLAgoIQkdQU3RhdGUSGQoVQkdQX1NUQVRFX1VOU1BFQ0lGSUVEEAASHAoOQkdQX1NUQVRFX0lETEUQARoIgrIZBGlkbGUSIgoRQkdQX1NUQVRFX0NPTk5FQ1QQAhoLgrIZB2Nvbm5lY3QSIAoQQkdQX1NUQVRFX0FDVElWRRADGgqCshkGYWN0aXZlEiYKE0JHUF9TVEFURV9PUEVOX1NFTlQQBBoNgrIZCW9wZW4tc2VudBIsChZCR1BfU1RBVEVfT1BFTl9DT05GSVJNEAUaEIKyGQxvcGVuLWNvbmZpcm0SKgoVQkdQX1NUQVRFX0VTVEFCTElTSEVEEAYaD4KyGQtlc3RhYmxpc2hlZCqcAQoRU3dpdGNoUmVwbGFjZU1vZGUSIwofU1dJVENIX1JFUExBQ0VfTU9ERV9VTlNQRUNJRklFRBAAEiwKG1NXSVRDSF9SRVBMQUNFX01PREVfUkVQTEFDRRABGguCshkHcmVwbGFjZRI0Ch9TV0lUQ0hfUkVQTEFDRV9NT0RFX09QRVJBVElPTkFMEAIaD4KyGQtvcGVyYXRpb25hbCqEAQoOU3dpdGNoT1NWZW5kb3ISIAocU1dJVENIX09TX1ZFTkRPUl9VTlNQRUNJRklFRBAAEikKGFNXSVRDSF9PU19WRU5ET1JfQ1VNVUxVUxABGguCshkHQ3VtdWx1cxIlChZTV0lUQ0hfT1NfVkVORE9SX1NPTklDEAIaCYKyGQVTT05pQyqtAQoQU3dpdGNoUG9ydFN0YXR1cxIiCh5TV0lUQ0hfUE9SVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIhChVTV0lUQ0hfUE9SVF9TVEFUVVNfVVAQARoGgrIZAnVwEiUKF1NXSVRDSF9QT1JUX1NUQVRVU19ET1dOEAIaCIKyGQRkb3duEisKGlNXSVRDSF9QT1JUX1NUQVRVU19VTktOT1dOEAMaC4KyGQd1bmtub3duQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC1N3aXRjaFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.api.v2.Switch. + * Use `create(SwitchSchema)` to create a new message. + */ +export const SwitchSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_switch, 0); +/** + * Describes the message metalstack.api.v2.SwitchOS. + * Use `create(SwitchOSSchema)` to create a new message. + */ +export const SwitchOSSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_switch, 1); +/** + * Describes the message metalstack.api.v2.SwitchNic. + * Use `create(SwitchNicSchema)` to create a new message. + */ +export const SwitchNicSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_switch, 2); +/** + * Describes the message metalstack.api.v2.BGPFilter. + * Use `create(BGPFilterSchema)` to create a new message. + */ +export const BGPFilterSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_switch, 3); +/** + * Describes the message metalstack.api.v2.SwitchBGPPortState. + * Use `create(SwitchBGPPortStateSchema)` to create a new message. + */ +export const SwitchBGPPortStateSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_switch, 4); +/** + * Describes the message metalstack.api.v2.NicState. + * Use `create(NicStateSchema)` to create a new message. + */ +export const NicStateSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_switch, 5); +/** + * Describes the message metalstack.api.v2.MachineConnection. + * Use `create(MachineConnectionSchema)` to create a new message. + */ +export const MachineConnectionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_switch, 6); +/** + * Describes the message metalstack.api.v2.SwitchQuery. + * Use `create(SwitchQuerySchema)` to create a new message. + */ +export const SwitchQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_switch, 7); +/** + * Describes the message metalstack.api.v2.SwitchOSQuery. + * Use `create(SwitchOSQuerySchema)` to create a new message. + */ +export const SwitchOSQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_switch, 8); +/** + * BGPState represents the state of a BGP session. + * + * @generated from enum metalstack.api.v2.BGPState + */ +export var BGPState; +(function (BGPState) { + /** + * BGP_STATE_UNSPECIFIED is not specified. + * + * @generated from enum value: BGP_STATE_UNSPECIFIED = 0; + */ + BGPState[BGPState["BGP_STATE_UNSPECIFIED"] = 0] = "BGP_STATE_UNSPECIFIED"; + /** + * BGP_STATE_IDLE is the Idle state of a BGP session. + * + * @generated from enum value: BGP_STATE_IDLE = 1; + */ + BGPState[BGPState["BGP_STATE_IDLE"] = 1] = "BGP_STATE_IDLE"; + /** + * BGP_STATE_CONNECT is the Connect state of a BGP session. + * + * @generated from enum value: BGP_STATE_CONNECT = 2; + */ + BGPState[BGPState["BGP_STATE_CONNECT"] = 2] = "BGP_STATE_CONNECT"; + /** + * BGP_STATE_ACTIVE is the Active state of a BGP session. + * + * @generated from enum value: BGP_STATE_ACTIVE = 3; + */ + BGPState[BGPState["BGP_STATE_ACTIVE"] = 3] = "BGP_STATE_ACTIVE"; + /** + * BGP_STATE_OPEN_SENT is the OpenSent state of a BGP session. + * + * @generated from enum value: BGP_STATE_OPEN_SENT = 4; + */ + BGPState[BGPState["BGP_STATE_OPEN_SENT"] = 4] = "BGP_STATE_OPEN_SENT"; + /** + * BGP_STATE_OPEN_CONFIRM is the OpenConfirm state of a BGP session. + * + * @generated from enum value: BGP_STATE_OPEN_CONFIRM = 5; + */ + BGPState[BGPState["BGP_STATE_OPEN_CONFIRM"] = 5] = "BGP_STATE_OPEN_CONFIRM"; + /** + * BGP_STATE_ESTABLISHED is the Established state of a BGP session. + * + * @generated from enum value: BGP_STATE_ESTABLISHED = 6; + */ + BGPState[BGPState["BGP_STATE_ESTABLISHED"] = 6] = "BGP_STATE_ESTABLISHED"; +})(BGPState || (BGPState = {})); +/** + * Describes the enum metalstack.api.v2.BGPState. + */ +export const BGPStateSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_switch, 0); +/** + * SwitchReplaceMode is used to mark a switch ready for replacement. + * + * @generated from enum metalstack.api.v2.SwitchReplaceMode + */ +export var SwitchReplaceMode; +(function (SwitchReplaceMode) { + /** + * SWITCH_REPLACE_MODE_UNSPECIFIED is not specified. + * + * @generated from enum value: SWITCH_REPLACE_MODE_UNSPECIFIED = 0; + */ + SwitchReplaceMode[SwitchReplaceMode["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * SWITCH_REPLACE_MODE_REPLACE means this switch is waiting to be replaced. + * + * @generated from enum value: SWITCH_REPLACE_MODE_REPLACE = 1; + */ + SwitchReplaceMode[SwitchReplaceMode["REPLACE"] = 1] = "REPLACE"; + /** + * SWITCH_REPLACE_MODE_OPERATIONAL means this switch is operational and cannot be replaced. + * + * @generated from enum value: SWITCH_REPLACE_MODE_OPERATIONAL = 2; + */ + SwitchReplaceMode[SwitchReplaceMode["OPERATIONAL"] = 2] = "OPERATIONAL"; +})(SwitchReplaceMode || (SwitchReplaceMode = {})); +/** + * Describes the enum metalstack.api.v2.SwitchReplaceMode. + */ +export const SwitchReplaceModeSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_switch, 1); +/** + * SwitchOSVendor represents a NOS distribution. + * + * @generated from enum metalstack.api.v2.SwitchOSVendor + */ +export var SwitchOSVendor; +(function (SwitchOSVendor) { + /** + * SWITCH_OS_VENDOR_UNSPECIFIED is not specified. + * + * @generated from enum value: SWITCH_OS_VENDOR_UNSPECIFIED = 0; + */ + SwitchOSVendor[SwitchOSVendor["SWITCH_OS_VENDOR_UNSPECIFIED"] = 0] = "SWITCH_OS_VENDOR_UNSPECIFIED"; + /** + * SWITCH_OS_VENDOR_CUMULUS means this switch is running on Cumulus Linux. + * + * @generated from enum value: SWITCH_OS_VENDOR_CUMULUS = 1; + */ + SwitchOSVendor[SwitchOSVendor["SWITCH_OS_VENDOR_CUMULUS"] = 1] = "SWITCH_OS_VENDOR_CUMULUS"; + /** + * SWITCH_OS_VENDOR_SONIC means this switch is running on SONiC NOS. + * + * @generated from enum value: SWITCH_OS_VENDOR_SONIC = 2; + */ + SwitchOSVendor[SwitchOSVendor["SWITCH_OS_VENDOR_SONIC"] = 2] = "SWITCH_OS_VENDOR_SONIC"; +})(SwitchOSVendor || (SwitchOSVendor = {})); +/** + * Describes the enum metalstack.api.v2.SwitchOSVendor. + */ +export const SwitchOSVendorSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_switch, 2); +/** + * SwitchPortStatus specifies the state of a switch port. + * + * @generated from enum metalstack.api.v2.SwitchPortStatus + */ +export var SwitchPortStatus; +(function (SwitchPortStatus) { + /** + * SWITCH_PORT_STATUS_UNSPECIFIED is not specified. + * + * @generated from enum value: SWITCH_PORT_STATUS_UNSPECIFIED = 0; + */ + SwitchPortStatus[SwitchPortStatus["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * SWITCH_PORT_STATUS_UP means this port is up. + * + * @generated from enum value: SWITCH_PORT_STATUS_UP = 1; + */ + SwitchPortStatus[SwitchPortStatus["UP"] = 1] = "UP"; + /** + * SWITCH_PORT_STATUS_DOWN means this port is down. + * + * @generated from enum value: SWITCH_PORT_STATUS_DOWN = 2; + */ + SwitchPortStatus[SwitchPortStatus["DOWN"] = 2] = "DOWN"; + /** + * SWITCH_PORT_STATUS_UNKNOWN means the status of this port is unknown. + * + * @generated from enum value: SWITCH_PORT_STATUS_UNKNOWN = 3; + */ + SwitchPortStatus[SwitchPortStatus["UNKNOWN"] = 3] = "UNKNOWN"; +})(SwitchPortStatus || (SwitchPortStatus = {})); +/** + * Describes the enum metalstack.api.v2.SwitchPortStatus. + */ +export const SwitchPortStatusSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_switch, 3); diff --git a/js/metalstack/api/v2/switch_pb.ts b/js/metalstack/api/v2/switch_pb.ts new file mode 100644 index 00000000..15c74e45 --- /dev/null +++ b/js/metalstack/api/v2/switch_pb.ts @@ -0,0 +1,604 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/switch.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Meta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/switch.proto. + */ +export const file_metalstack_api_v2_switch: GenFile = /*@__PURE__*/ + fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9zd2l0Y2gucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIq8ECgZTd2l0Y2gSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEh4KBHJhY2sYBCABKAlCC7pICHIGwLOusQIBSACIAQESHgoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECARJECgxyZXBsYWNlX21vZGUYBiABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hSZXBsYWNlTW9kZUIIukgFggECEAESHgoNbWFuYWdlbWVudF9pcBgHIAEoCUIHukgEcgJwARIoCg9tYW5hZ2VtZW50X3VzZXIYCCABKAlCCrpIB3IFEAIYgAFIAYgBARIoCg9jb25zb2xlX2NvbW1hbmQYCSABKAlCCrpIB3IFEAIYgAFIAogBARIqCgRuaWNzGAogAygLMhwubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoTmljEicKAm9zGAsgASgLMhsubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1MSQQoTbWFjaGluZV9jb25uZWN0aW9ucxgMIAMoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDb25uZWN0aW9uQgcKBV9yYWNrQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZCKOAQoIU3dpdGNoT1MSOwoGdmVuZG9yGAEgASgOMiEubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NWZW5kb3JCCLpIBYIBAhABEhwKB3ZlcnNpb24YAiABKAlCC7pICHIGwLOusQIBEicKEm1ldGFsX2NvcmVfdmVyc2lvbhgDIAEoCUILukgIcgbAs66xAgEi4AIKCVN3aXRjaE5pYxIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIfCgppZGVudGlmaWVyGAIgASgJQgu6SAhyBsCzrrECARIYCgNtYWMYAyABKAlCC7pICHIGuLOusQIBEh0KA3ZyZhgEIAEoCUILukgIcgbAs66xAgFIAIgBARIvCgVzdGF0ZRgFIAEoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk5pY1N0YXRlSAGIAQESNQoKYmdwX2ZpbHRlchgGIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLkJHUEZpbHRlckgCiAEBEkIKDmJncF9wb3J0X3N0YXRlGAcgASgLMiUubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoQkdQUG9ydFN0YXRlSAOIAQFCBgoEX3ZyZkIICgZfc3RhdGVCDQoLX2JncF9maWx0ZXJCEQoPX2JncF9wb3J0X3N0YXRlIkcKCUJHUEZpbHRlchIbCgVjaWRycxgBIAMoCUIMukgJkgEG4LOusQIBEh0KBHZuaXMYAiADKAlCD7pIDJIBCSIHcgUQAhiAASKpAgoSU3dpdGNoQkdQUG9ydFN0YXRlEh0KCG5laWdoYm9yGAEgASgJQgu6SAhyBsCzrrECARIfCgpwZWVyX2dyb3VwGAIgASgJQgu6SAhyBsCzrrECARIdCgh2cmZfbmFtZRgDIAEoCUILukgIcgbAs66xAgESOAoJYmdwX3N0YXRlGAQgASgOMhsubWV0YWxzdGFjay5hcGkudjIuQkdQU3RhdGVCCLpIBYIBAhABEjwKGGJncF90aW1lcl91cF9lc3RhYmxpc2hlZBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoTc2VudF9wcmVmaXhfY291bnRlchgGIAEoBBIfChdhY2NlcHRlZF9wcmVmaXhfY291bnRlchgHIAEoBCKaAQoITmljU3RhdGUSQwoHZGVzaXJlZBgBIAEoDjIjLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFBvcnRTdGF0dXNCCLpIBYIBAhABSACIAQESPQoGYWN0dWFsGAIgASgOMiMubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydFN0YXR1c0IIukgFggECEAFCCgoIX2Rlc2lyZWQiUgoRTWFjaGluZUNvbm5lY3Rpb24SEgoKbWFjaGluZV9pZBgBIAEoCRIpCgNuaWMYAiABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMiygEKC1N3aXRjaFF1ZXJ5Eh4KAmlkGAEgASgJQg26SApyCMCzrrECAWgBSACIAQESIwoJcGFydGl0aW9uGAIgASgJQgu6SAhyBtCzrrECAUgBiAEBEh4KBHJhY2sYAyABKAlCC7pICHIGwLOusQIBSAKIAQESMQoCb3MYBCABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU1F1ZXJ5SAOIAQFCBQoDX2lkQgwKCl9wYXJ0aXRpb25CBwoFX3JhY2tCBQoDX29zIosBCg1Td2l0Y2hPU1F1ZXJ5EkAKBnZlbmRvchgBIAEoDjIhLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaE9TVmVuZG9yQgi6SAWCAQIQAUgAiAEBEiEKB3ZlcnNpb24YAiABKAlCC7pICHIGwLOusQIBSAGIAQFCCQoHX3ZlbmRvckIKCghfdmVyc2lvbiqLAgoIQkdQU3RhdGUSGQoVQkdQX1NUQVRFX1VOU1BFQ0lGSUVEEAASHAoOQkdQX1NUQVRFX0lETEUQARoIgrIZBGlkbGUSIgoRQkdQX1NUQVRFX0NPTk5FQ1QQAhoLgrIZB2Nvbm5lY3QSIAoQQkdQX1NUQVRFX0FDVElWRRADGgqCshkGYWN0aXZlEiYKE0JHUF9TVEFURV9PUEVOX1NFTlQQBBoNgrIZCW9wZW4tc2VudBIsChZCR1BfU1RBVEVfT1BFTl9DT05GSVJNEAUaEIKyGQxvcGVuLWNvbmZpcm0SKgoVQkdQX1NUQVRFX0VTVEFCTElTSEVEEAYaD4KyGQtlc3RhYmxpc2hlZCqcAQoRU3dpdGNoUmVwbGFjZU1vZGUSIwofU1dJVENIX1JFUExBQ0VfTU9ERV9VTlNQRUNJRklFRBAAEiwKG1NXSVRDSF9SRVBMQUNFX01PREVfUkVQTEFDRRABGguCshkHcmVwbGFjZRI0Ch9TV0lUQ0hfUkVQTEFDRV9NT0RFX09QRVJBVElPTkFMEAIaD4KyGQtvcGVyYXRpb25hbCqEAQoOU3dpdGNoT1NWZW5kb3ISIAocU1dJVENIX09TX1ZFTkRPUl9VTlNQRUNJRklFRBAAEikKGFNXSVRDSF9PU19WRU5ET1JfQ1VNVUxVUxABGguCshkHQ3VtdWx1cxIlChZTV0lUQ0hfT1NfVkVORE9SX1NPTklDEAIaCYKyGQVTT05pQyqtAQoQU3dpdGNoUG9ydFN0YXR1cxIiCh5TV0lUQ0hfUE9SVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIhChVTV0lUQ0hfUE9SVF9TVEFUVVNfVVAQARoGgrIZAnVwEiUKF1NXSVRDSF9QT1JUX1NUQVRVU19ET1dOEAIaCIKyGQRkb3duEisKGlNXSVRDSF9QT1JUX1NUQVRVU19VTktOT1dOEAMaC4KyGQd1bmtub3duQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC1N3aXRjaFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + +/** + * Switch represents a network switch. + * + * @generated from message metalstack.api.v2.Switch + */ +export type Switch = Message<"metalstack.api.v2.Switch"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Meta for this switch. + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + + /** + * Description of the switch. + * + * @generated from field: string description = 3; + */ + description: string; + + /** + * Rack ID if the switch resides in a rack. + * + * @generated from field: optional string rack = 4; + */ + rack?: string; + + /** + * Partition the switch belongs to. + * + * @generated from field: string partition = 5; + */ + partition: string; + + /** + * ReplaceMode is used to mark a switch ready for replacement. + * + * @generated from field: metalstack.api.v2.SwitchReplaceMode replace_mode = 6; + */ + replaceMode: SwitchReplaceMode; + + /** + * ManagementIp is the switch's IP for management access. + * + * @generated from field: string management_ip = 7; + */ + managementIp: string; + + /** + * ManagementUser is the user name to use for management access. + * + * @generated from field: optional string management_user = 8; + */ + managementUser?: string; + + /** + * ConsoleCommand is the command for accessing the switch's console. + * + * @generated from field: optional string console_command = 9; + */ + consoleCommand?: string; + + /** + * Nics are the front panel ports of the switch. + * + * @generated from field: repeated metalstack.api.v2.SwitchNic nics = 10; + */ + nics: SwitchNic[]; + + /** + * SwitchOs is the OS running on the switch. + * + * @generated from field: metalstack.api.v2.SwitchOS os = 11; + */ + os?: SwitchOS; + + /** + * MachineConnections map machines to the nics they are connected to. + * + * @generated from field: repeated metalstack.api.v2.MachineConnection machine_connections = 12; + */ + machineConnections: MachineConnection[]; +}; + +/** + * Describes the message metalstack.api.v2.Switch. + * Use `create(SwitchSchema)` to create a new message. + */ +export const SwitchSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_switch, 0); + +/** + * SwitchOS holds information about the NOS and versions running on the switch. + * + * @generated from message metalstack.api.v2.SwitchOS + */ +export type SwitchOS = Message<"metalstack.api.v2.SwitchOS"> & { + /** + * Vendor identifies what NOS distribution is running on the switch, e.g. SONiC. + * + * @generated from field: metalstack.api.v2.SwitchOSVendor vendor = 1; + */ + vendor: SwitchOSVendor; + + /** + * Version specifies what NOS version is currently installed on the switch. + * + * @generated from field: string version = 2; + */ + version: string; + + /** + * MetalCoreVersion is the currently running version of the metal-core. + * + * @generated from field: string metal_core_version = 3; + */ + metalCoreVersion: string; +}; + +/** + * Describes the message metalstack.api.v2.SwitchOS. + * Use `create(SwitchOSSchema)` to create a new message. + */ +export const SwitchOSSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_switch, 1); + +/** + * SwitchNic represents a front panel port and its configuration. + * + * @generated from message metalstack.api.v2.SwitchNic + */ +export type SwitchNic = Message<"metalstack.api.v2.SwitchNic"> & { + /** + * Name of the switch port + * + * @generated from field: string name = 1; + */ + name: string; + + /** + * Identifier of the port + * + * @generated from field: string identifier = 2; + */ + identifier: string; + + /** + * MAC address of the port + * + * @generated from field: string mac = 3; + */ + mac: string; + + /** + * VRF name if the port is bound in one + * + * @generated from field: optional string vrf = 4; + */ + vrf?: string; + + /** + * NicState describes the current state of the switch port. + * + * @generated from field: optional metalstack.api.v2.NicState state = 5; + */ + state?: NicState; + + /** + * BGPFilter optionally configured on a port. + * + * @generated from field: optional metalstack.api.v2.BGPFilter bgp_filter = 6; + */ + bgpFilter?: BGPFilter; + + /** + * BGPPortState represents the current BGP status of the port. + * + * @generated from field: optional metalstack.api.v2.SwitchBGPPortState bgp_port_state = 7; + */ + bgpPortState?: SwitchBGPPortState; +}; + +/** + * Describes the message metalstack.api.v2.SwitchNic. + * Use `create(SwitchNicSchema)` to create a new message. + */ +export const SwitchNicSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_switch, 2); + +/** + * BGPFilter can be used to restrict BGP based on CIDRs and VNIs. + * + * @generated from message metalstack.api.v2.BGPFilter + */ +export type BGPFilter = Message<"metalstack.api.v2.BGPFilter"> & { + /** + * CIDRs for which to allow BGP + * + * @generated from field: repeated string cidrs = 1; + */ + cidrs: string[]; + + /** + * VNIs for which to allow BGP + * + * @generated from field: repeated string vnis = 2; + */ + vnis: string[]; +}; + +/** + * Describes the message metalstack.api.v2.BGPFilter. + * Use `create(BGPFilterSchema)` to create a new message. + */ +export const BGPFilterSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_switch, 3); + +/** + * SwitchBGPPortState holds information about the BGP state of a port. + * + * @generated from message metalstack.api.v2.SwitchBGPPortState + */ +export type SwitchBGPPortState = Message<"metalstack.api.v2.SwitchBGPPortState"> & { + /** + * Neighbor of this port. + * + * @generated from field: string neighbor = 1; + */ + neighbor: string; + + /** + * PeerGroup of this port. + * + * @generated from field: string peer_group = 2; + */ + peerGroup: string; + + /** + * VrfName of the VRF this port is bound to. + * + * @generated from field: string vrf_name = 3; + */ + vrfName: string; + + /** + * BgpState of the connection on this port. + * + * @generated from field: metalstack.api.v2.BGPState bgp_state = 4; + */ + bgpState: BGPState; + + /** + * BgpTimerUpEstablished reports when this port's BGP connection was established. + * + * @generated from field: google.protobuf.Timestamp bgp_timer_up_established = 5; + */ + bgpTimerUpEstablished?: Timestamp; + + /** + * SentPrefixCounter counts the prefixes sent by the switch on this port. + * + * @generated from field: uint64 sent_prefix_counter = 6; + */ + sentPrefixCounter: bigint; + + /** + * AcceptedPrefixCounter counts the prefixes received on this port. + * + * @generated from field: uint64 accepted_prefix_counter = 7; + */ + acceptedPrefixCounter: bigint; +}; + +/** + * Describes the message metalstack.api.v2.SwitchBGPPortState. + * Use `create(SwitchBGPPortStateSchema)` to create a new message. + */ +export const SwitchBGPPortStateSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_switch, 4); + +/** + * NicState represents the current state of a switch port. + * + * @generated from message metalstack.api.v2.NicState + */ +export type NicState = Message<"metalstack.api.v2.NicState"> & { + /** + * Desired is the desired port state. + * + * @generated from field: optional metalstack.api.v2.SwitchPortStatus desired = 1; + */ + desired?: SwitchPortStatus; + + /** + * Actual is the actual port state. + * + * @generated from field: metalstack.api.v2.SwitchPortStatus actual = 2; + */ + actual: SwitchPortStatus; +}; + +/** + * Describes the message metalstack.api.v2.NicState. + * Use `create(NicStateSchema)` to create a new message. + */ +export const NicStateSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_switch, 5); + +/** + * MachineConnection associates a machine with the corresponding switch nic. + * + * @generated from message metalstack.api.v2.MachineConnection + */ +export type MachineConnection = Message<"metalstack.api.v2.MachineConnection"> & { + /** + * MachineId of the machine connected to the nic. + * + * @generated from field: string machine_id = 1; + */ + machineId: string; + + /** + * Nic the machine is connected to. + * + * @generated from field: metalstack.api.v2.SwitchNic nic = 2; + */ + nic?: SwitchNic; +}; + +/** + * Describes the message metalstack.api.v2.MachineConnection. + * Use `create(MachineConnectionSchema)` to create a new message. + */ +export const MachineConnectionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_switch, 6); + +/** + * SwitchQuery can be used to query a switch or a list of switches. + * + * @generated from message metalstack.api.v2.SwitchQuery + */ +export type SwitchQuery = Message<"metalstack.api.v2.SwitchQuery"> & { + /** + * Id of the switch to list. + * + * @generated from field: optional string id = 1; + */ + id?: string; + + /** + * Partition of the switches to list. + * + * @generated from field: optional string partition = 2; + */ + partition?: string; + + /** + * Rack of the switches to list. + * + * @generated from field: optional string rack = 3; + */ + rack?: string; + + /** + * Switch OS specific queries. + * + * @generated from field: optional metalstack.api.v2.SwitchOSQuery os = 4; + */ + os?: SwitchOSQuery; +}; + +/** + * Describes the message metalstack.api.v2.SwitchQuery. + * Use `create(SwitchQuerySchema)` to create a new message. + */ +export const SwitchQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_switch, 7); + +/** + * SwitchOSQuery holds OS specific query parameters. + * + * @generated from message metalstack.api.v2.SwitchOSQuery + */ +export type SwitchOSQuery = Message<"metalstack.api.v2.SwitchOSQuery"> & { + /** + * OsVendor of the switch OS by which to filter the switches. + * + * @generated from field: optional metalstack.api.v2.SwitchOSVendor vendor = 1; + */ + vendor?: SwitchOSVendor; + + /** + * OsVersion of the OS by which to filter the switches. + * + * @generated from field: optional string version = 2; + */ + version?: string; +}; + +/** + * Describes the message metalstack.api.v2.SwitchOSQuery. + * Use `create(SwitchOSQuerySchema)` to create a new message. + */ +export const SwitchOSQuerySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_switch, 8); + +/** + * BGPState represents the state of a BGP session. + * + * @generated from enum metalstack.api.v2.BGPState + */ +export enum BGPState { + /** + * BGP_STATE_UNSPECIFIED is not specified. + * + * @generated from enum value: BGP_STATE_UNSPECIFIED = 0; + */ + BGP_STATE_UNSPECIFIED = 0, + + /** + * BGP_STATE_IDLE is the Idle state of a BGP session. + * + * @generated from enum value: BGP_STATE_IDLE = 1; + */ + BGP_STATE_IDLE = 1, + + /** + * BGP_STATE_CONNECT is the Connect state of a BGP session. + * + * @generated from enum value: BGP_STATE_CONNECT = 2; + */ + BGP_STATE_CONNECT = 2, + + /** + * BGP_STATE_ACTIVE is the Active state of a BGP session. + * + * @generated from enum value: BGP_STATE_ACTIVE = 3; + */ + BGP_STATE_ACTIVE = 3, + + /** + * BGP_STATE_OPEN_SENT is the OpenSent state of a BGP session. + * + * @generated from enum value: BGP_STATE_OPEN_SENT = 4; + */ + BGP_STATE_OPEN_SENT = 4, + + /** + * BGP_STATE_OPEN_CONFIRM is the OpenConfirm state of a BGP session. + * + * @generated from enum value: BGP_STATE_OPEN_CONFIRM = 5; + */ + BGP_STATE_OPEN_CONFIRM = 5, + + /** + * BGP_STATE_ESTABLISHED is the Established state of a BGP session. + * + * @generated from enum value: BGP_STATE_ESTABLISHED = 6; + */ + BGP_STATE_ESTABLISHED = 6, +} + +/** + * Describes the enum metalstack.api.v2.BGPState. + */ +export const BGPStateSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_switch, 0); + +/** + * SwitchReplaceMode is used to mark a switch ready for replacement. + * + * @generated from enum metalstack.api.v2.SwitchReplaceMode + */ +export enum SwitchReplaceMode { + /** + * SWITCH_REPLACE_MODE_UNSPECIFIED is not specified. + * + * @generated from enum value: SWITCH_REPLACE_MODE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * SWITCH_REPLACE_MODE_REPLACE means this switch is waiting to be replaced. + * + * @generated from enum value: SWITCH_REPLACE_MODE_REPLACE = 1; + */ + REPLACE = 1, + + /** + * SWITCH_REPLACE_MODE_OPERATIONAL means this switch is operational and cannot be replaced. + * + * @generated from enum value: SWITCH_REPLACE_MODE_OPERATIONAL = 2; + */ + OPERATIONAL = 2, +} + +/** + * Describes the enum metalstack.api.v2.SwitchReplaceMode. + */ +export const SwitchReplaceModeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_switch, 1); + +/** + * SwitchOSVendor represents a NOS distribution. + * + * @generated from enum metalstack.api.v2.SwitchOSVendor + */ +export enum SwitchOSVendor { + /** + * SWITCH_OS_VENDOR_UNSPECIFIED is not specified. + * + * @generated from enum value: SWITCH_OS_VENDOR_UNSPECIFIED = 0; + */ + SWITCH_OS_VENDOR_UNSPECIFIED = 0, + + /** + * SWITCH_OS_VENDOR_CUMULUS means this switch is running on Cumulus Linux. + * + * @generated from enum value: SWITCH_OS_VENDOR_CUMULUS = 1; + */ + SWITCH_OS_VENDOR_CUMULUS = 1, + + /** + * SWITCH_OS_VENDOR_SONIC means this switch is running on SONiC NOS. + * + * @generated from enum value: SWITCH_OS_VENDOR_SONIC = 2; + */ + SWITCH_OS_VENDOR_SONIC = 2, +} + +/** + * Describes the enum metalstack.api.v2.SwitchOSVendor. + */ +export const SwitchOSVendorSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_switch, 2); + +/** + * SwitchPortStatus specifies the state of a switch port. + * + * @generated from enum metalstack.api.v2.SwitchPortStatus + */ +export enum SwitchPortStatus { + /** + * SWITCH_PORT_STATUS_UNSPECIFIED is not specified. + * + * @generated from enum value: SWITCH_PORT_STATUS_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * SWITCH_PORT_STATUS_UP means this port is up. + * + * @generated from enum value: SWITCH_PORT_STATUS_UP = 1; + */ + UP = 1, + + /** + * SWITCH_PORT_STATUS_DOWN means this port is down. + * + * @generated from enum value: SWITCH_PORT_STATUS_DOWN = 2; + */ + DOWN = 2, + + /** + * SWITCH_PORT_STATUS_UNKNOWN means the status of this port is unknown. + * + * @generated from enum value: SWITCH_PORT_STATUS_UNKNOWN = 3; + */ + UNKNOWN = 3, +} + +/** + * Describes the enum metalstack.api.v2.SwitchPortStatus. + */ +export const SwitchPortStatusSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_switch, 3); + diff --git a/js/metalstack/api/v2/tenant_pb.d.ts b/js/metalstack/api/v2/tenant_pb.d.ts new file mode 100644 index 00000000..93fbab0a --- /dev/null +++ b/js/metalstack/api/v2/tenant_pb.d.ts @@ -0,0 +1,864 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import type { Labels, Meta, TenantRole, UpdateLabels, UpdateMeta } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/tenant.proto. + */ +export declare const file_metalstack_api_v2_tenant: GenFile; +/** + * Tenant is a customer of the platform + * + * @generated from message metalstack.api.v2.Tenant + */ +export type Tenant = Message<"metalstack.api.v2.Tenant"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + /** + * Meta for this tenant + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + /** + * Name of the tenant + * + * @generated from field: string name = 3; + */ + name: string; + /** + * Email of the tenant + * + * @generated from field: string email = 4; + */ + email: string; + /** + * Description of this tenant + * + * @generated from field: string description = 5; + */ + description: string; + /** + * AvatarUrl of the tenant + * + * @generated from field: string avatar_url = 6; + */ + avatarUrl: string; + /** + * CreatedBy stores who created this tenant + * + * @generated from field: string created_by = 15; + */ + createdBy: string; +}; +/** + * Describes the message metalstack.api.v2.Tenant. + * Use `create(TenantSchema)` to create a new message. + */ +export declare const TenantSchema: GenMessage; +/** + * TenantMember defines a user that participates at a tenant + * + * @generated from message metalstack.api.v2.TenantMember + */ +export type TenantMember = Message<"metalstack.api.v2.TenantMember"> & { + /** + * Id is the user id of the member + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Role is the role of the member + * + * @generated from field: metalstack.api.v2.TenantRole role = 2; + */ + role: TenantRole; + /** + * Projects for the projects in which a user is a direct member + * + * @generated from field: repeated string projects = 4; + */ + projects: string[]; + /** + * CreatedAt the date when the member was added to the tenant + * + * @generated from field: google.protobuf.Timestamp created_at = 10; + */ + createdAt?: Timestamp; +}; +/** + * Describes the message metalstack.api.v2.TenantMember. + * Use `create(TenantMemberSchema)` to create a new message. + */ +export declare const TenantMemberSchema: GenMessage; +/** + * TenantInvite defines invite to tenant + * + * @generated from message metalstack.api.v2.TenantInvite + */ +export type TenantInvite = Message<"metalstack.api.v2.TenantInvite"> & { + /** + * Secret is the secret part of the invite, typically part of the url + * + * @generated from field: string secret = 1; + */ + secret: string; + /** + * TargetTenant is the tenant id for which this invite was created + * + * @generated from field: string target_tenant = 2; + */ + targetTenant: string; + /** + * Role is the role in this tenant the user will get after accepting the invitation + * + * @generated from field: metalstack.api.v2.TenantRole role = 3; + */ + role: TenantRole; + /** + * Joined is false as long as a user has not accepted the invite + * + * @generated from field: bool joined = 4; + */ + joined: boolean; + /** + * TargetTenantName is the tenant name for which this invite was created + * + * @generated from field: string target_tenant_name = 5; + */ + targetTenantName: string; + /** + * Tenant is the login of tenant who invites to join this tenant + * + * @generated from field: string tenant = 6; + */ + tenant: string; + /** + * TenantName is the name of tenant who invites to join this tenant + * + * @generated from field: string tenant_name = 7; + */ + tenantName: string; + /** + * ExpiresAt the date when this invite expires + * + * @generated from field: google.protobuf.Timestamp expires_at = 10; + */ + expiresAt?: Timestamp; + /** + * JoinedAt the date when the member accepted this invite + * + * @generated from field: google.protobuf.Timestamp joined_at = 11; + */ + joinedAt?: Timestamp; +}; +/** + * Describes the message metalstack.api.v2.TenantInvite. + * Use `create(TenantInviteSchema)` to create a new message. + */ +export declare const TenantInviteSchema: GenMessage; +/** + * TenantServiceListRequest is the request payload of the tenant list request + * + * @generated from message metalstack.api.v2.TenantServiceListRequest + */ +export type TenantServiceListRequest = Message<"metalstack.api.v2.TenantServiceListRequest"> & { + /** + * Id filters tenants by id + * + * @generated from field: optional string id = 1; + */ + id?: string; + /** + * Name filters tenants by name + * + * @generated from field: optional string name = 2; + */ + name?: string; + /** + * Labels lists only projects containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 3; + */ + labels?: Labels; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceListRequest. + * Use `create(TenantServiceListRequestSchema)` to create a new message. + */ +export declare const TenantServiceListRequestSchema: GenMessage; +/** + * TenantServiceGetRequest is the request payload of the tenant get request + * + * @generated from message metalstack.api.v2.TenantServiceGetRequest + */ +export type TenantServiceGetRequest = Message<"metalstack.api.v2.TenantServiceGetRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceGetRequest. + * Use `create(TenantServiceGetRequestSchema)` to create a new message. + */ +export declare const TenantServiceGetRequestSchema: GenMessage; +/** + * TenantServiceCreateRequest is the request payload of the tenant create request + * + * @generated from message metalstack.api.v2.TenantServiceCreateRequest + */ +export type TenantServiceCreateRequest = Message<"metalstack.api.v2.TenantServiceCreateRequest"> & { + /** + * Name of this tenant + * + * @generated from field: string name = 1; + */ + name: string; + /** + * Description of this tenant + * + * @generated from field: optional string description = 2; + */ + description?: string; + /** + * Email of the tenant, if not set will be inherited from the creator + * + * @generated from field: optional string email = 3; + */ + email?: string; + /** + * AvatarUrl of the tenant + * + * @generated from field: optional string avatar_url = 4; + */ + avatarUrl?: string; + /** + * Labels on the tenant + * + * @generated from field: metalstack.api.v2.Labels labels = 5; + */ + labels?: Labels; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceCreateRequest. + * Use `create(TenantServiceCreateRequestSchema)` to create a new message. + */ +export declare const TenantServiceCreateRequestSchema: GenMessage; +/** + * TenantServiceUpdateRequest is the request payload of the tenant update request + * + * @generated from message metalstack.api.v2.TenantServiceUpdateRequest + */ +export type TenantServiceUpdateRequest = Message<"metalstack.api.v2.TenantServiceUpdateRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * Name of the tenant + * + * @generated from field: optional string name = 3; + */ + name?: string; + /** + * Email of the tenant + * + * @generated from field: optional string email = 4; + */ + email?: string; + /** + * Description of this tenant + * + * @generated from field: optional string description = 5; + */ + description?: string; + /** + * AvatarUrl of the tenant + * + * @generated from field: optional string avatar_url = 6; + */ + avatarUrl?: string; + /** + * Labels on the tenant + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 7; + */ + labels?: UpdateLabels; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateRequest. + * Use `create(TenantServiceUpdateRequestSchema)` to create a new message. + */ +export declare const TenantServiceUpdateRequestSchema: GenMessage; +/** + * TenantServiceDeleteRequest is the request payload of the tenant delete request + * + * @generated from message metalstack.api.v2.TenantServiceDeleteRequest + */ +export type TenantServiceDeleteRequest = Message<"metalstack.api.v2.TenantServiceDeleteRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceDeleteRequest. + * Use `create(TenantServiceDeleteRequestSchema)` to create a new message. + */ +export declare const TenantServiceDeleteRequestSchema: GenMessage; +/** + * TenantServiceGetResponse is the response payload of the tenant get request + * + * @generated from message metalstack.api.v2.TenantServiceGetResponse + */ +export type TenantServiceGetResponse = Message<"metalstack.api.v2.TenantServiceGetResponse"> & { + /** + * Tenant is the tenant + * + * @generated from field: metalstack.api.v2.Tenant tenant = 1; + */ + tenant?: Tenant; + /** + * TenantMembers of this tenant + * + * @generated from field: repeated metalstack.api.v2.TenantMember tenant_members = 2; + */ + tenantMembers: TenantMember[]; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceGetResponse. + * Use `create(TenantServiceGetResponseSchema)` to create a new message. + */ +export declare const TenantServiceGetResponseSchema: GenMessage; +/** + * TenantServiceListResponse is the response payload of the tenant list request + * + * @generated from message metalstack.api.v2.TenantServiceListResponse + */ +export type TenantServiceListResponse = Message<"metalstack.api.v2.TenantServiceListResponse"> & { + /** + * Tenants is the list of tenants + * + * @generated from field: repeated metalstack.api.v2.Tenant tenants = 1; + */ + tenants: Tenant[]; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceListResponse. + * Use `create(TenantServiceListResponseSchema)` to create a new message. + */ +export declare const TenantServiceListResponseSchema: GenMessage; +/** + * TenantServiceCreateResponse is the response payload of the tenant create request + * + * @generated from message metalstack.api.v2.TenantServiceCreateResponse + */ +export type TenantServiceCreateResponse = Message<"metalstack.api.v2.TenantServiceCreateResponse"> & { + /** + * Tenant is the tenant + * + * @generated from field: metalstack.api.v2.Tenant tenant = 1; + */ + tenant?: Tenant; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceCreateResponse. + * Use `create(TenantServiceCreateResponseSchema)` to create a new message. + */ +export declare const TenantServiceCreateResponseSchema: GenMessage; +/** + * TenantServiceUpdateResponse is the response payload of the tenant update request + * + * @generated from message metalstack.api.v2.TenantServiceUpdateResponse + */ +export type TenantServiceUpdateResponse = Message<"metalstack.api.v2.TenantServiceUpdateResponse"> & { + /** + * Tenant is the tenant + * + * @generated from field: metalstack.api.v2.Tenant tenant = 1; + */ + tenant?: Tenant; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateResponse. + * Use `create(TenantServiceUpdateResponseSchema)` to create a new message. + */ +export declare const TenantServiceUpdateResponseSchema: GenMessage; +/** + * TenantServiceDeleteResponse is the response payload of the tenant delete request + * + * @generated from message metalstack.api.v2.TenantServiceDeleteResponse + */ +export type TenantServiceDeleteResponse = Message<"metalstack.api.v2.TenantServiceDeleteResponse"> & { + /** + * Tenant is the tenant + * + * @generated from field: metalstack.api.v2.Tenant tenant = 1; + */ + tenant?: Tenant; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceDeleteResponse. + * Use `create(TenantServiceDeleteResponseSchema)` to create a new message. + */ +export declare const TenantServiceDeleteResponseSchema: GenMessage; +/** + * TenantServiceInviteRequest is used to invite a member to a tenant + * + * @generated from message metalstack.api.v2.TenantServiceInviteRequest + */ +export type TenantServiceInviteRequest = Message<"metalstack.api.v2.TenantServiceInviteRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + /** + * Role of this user in this tenant + * + * @generated from field: metalstack.api.v2.TenantRole role = 2; + */ + role: TenantRole; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceInviteRequest. + * Use `create(TenantServiceInviteRequestSchema)` to create a new message. + */ +export declare const TenantServiceInviteRequestSchema: GenMessage; +/** + * TenantServiceInviteRequest is the response payload to a invite member request + * + * @generated from message metalstack.api.v2.TenantServiceInviteResponse + */ +export type TenantServiceInviteResponse = Message<"metalstack.api.v2.TenantServiceInviteResponse"> & { + /** + * Invite contains a secret which can be sent to a potential user + * can be appended to the invitation endpoint at our cloud console like + * console.metalstack.cloud/invite/ + * + * @generated from field: metalstack.api.v2.TenantInvite invite = 1; + */ + invite?: TenantInvite; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceInviteResponse. + * Use `create(TenantServiceInviteResponseSchema)` to create a new message. + */ +export declare const TenantServiceInviteResponseSchema: GenMessage; +/** + * TenantServiceInvitesListRequest is the request payload to a list invites request + * + * @generated from message metalstack.api.v2.TenantServiceInvitesListRequest + */ +export type TenantServiceInvitesListRequest = Message<"metalstack.api.v2.TenantServiceInvitesListRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceInvitesListRequest. + * Use `create(TenantServiceInvitesListRequestSchema)` to create a new message. + */ +export declare const TenantServiceInvitesListRequestSchema: GenMessage; +/** + * TenantServiceInvitesListResponse is the response payload to a list invites request + * + * @generated from message metalstack.api.v2.TenantServiceInvitesListResponse + */ +export type TenantServiceInvitesListResponse = Message<"metalstack.api.v2.TenantServiceInvitesListResponse"> & { + /** + * Invites not already accepted the invitation to this tenant + * + * @generated from field: repeated metalstack.api.v2.TenantInvite invites = 1; + */ + invites: TenantInvite[]; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceInvitesListResponse. + * Use `create(TenantServiceInvitesListResponseSchema)` to create a new message. + */ +export declare const TenantServiceInvitesListResponseSchema: GenMessage; +/** + * TenantServiceInviteGetRequest is the request payload to get a invite + * + * @generated from message metalstack.api.v2.TenantServiceInviteGetRequest + */ +export type TenantServiceInviteGetRequest = Message<"metalstack.api.v2.TenantServiceInviteGetRequest"> & { + /** + * Secret of the invite to get + * + * @generated from field: string secret = 1; + */ + secret: string; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceInviteGetRequest. + * Use `create(TenantServiceInviteGetRequestSchema)` to create a new message. + */ +export declare const TenantServiceInviteGetRequestSchema: GenMessage; +/** + * TenantServiceInviteGetResponse is the response payload to a get invite request + * + * @generated from message metalstack.api.v2.TenantServiceInviteGetResponse + */ +export type TenantServiceInviteGetResponse = Message<"metalstack.api.v2.TenantServiceInviteGetResponse"> & { + /** + * Invite is the invite + * + * @generated from field: metalstack.api.v2.TenantInvite invite = 1; + */ + invite?: TenantInvite; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceInviteGetResponse. + * Use `create(TenantServiceInviteGetResponseSchema)` to create a new message. + */ +export declare const TenantServiceInviteGetResponseSchema: GenMessage; +/** + * TenantServiceRemoveMemberRequest is used to remove a member from a tenant + * + * @generated from message metalstack.api.v2.TenantServiceRemoveMemberRequest + */ +export type TenantServiceRemoveMemberRequest = Message<"metalstack.api.v2.TenantServiceRemoveMemberRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + /** + * Member is the id of the member to remove from this tenant + * + * @generated from field: string member = 2; + */ + member: string; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceRemoveMemberRequest. + * Use `create(TenantServiceRemoveMemberRequestSchema)` to create a new message. + */ +export declare const TenantServiceRemoveMemberRequestSchema: GenMessage; +/** + * TenantServiceLeaveTenantRequest is used to leave a tenant + * + * @generated from message metalstack.api.v2.TenantServiceLeaveRequest + */ +export type TenantServiceLeaveRequest = Message<"metalstack.api.v2.TenantServiceLeaveRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceLeaveRequest. + * Use `create(TenantServiceLeaveRequestSchema)` to create a new message. + */ +export declare const TenantServiceLeaveRequestSchema: GenMessage; +/** + * TenantServiceLeaveTenantResponse is the response payload to a leave tenant request + * + * @generated from message metalstack.api.v2.TenantServiceLeaveResponse + */ +export type TenantServiceLeaveResponse = Message<"metalstack.api.v2.TenantServiceLeaveResponse"> & {}; +/** + * Describes the message metalstack.api.v2.TenantServiceLeaveResponse. + * Use `create(TenantServiceLeaveResponseSchema)` to create a new message. + */ +export declare const TenantServiceLeaveResponseSchema: GenMessage; +/** + * TenantServiceRemoveMemberResponse is the response payload to a remove member request + * + * @generated from message metalstack.api.v2.TenantServiceRemoveMemberResponse + */ +export type TenantServiceRemoveMemberResponse = Message<"metalstack.api.v2.TenantServiceRemoveMemberResponse"> & {}; +/** + * Describes the message metalstack.api.v2.TenantServiceRemoveMemberResponse. + * Use `create(TenantServiceRemoveMemberResponseSchema)` to create a new message. + */ +export declare const TenantServiceRemoveMemberResponseSchema: GenMessage; +/** + * TenantServiceInviteAcceptRequest is the request payload to a accept invite request + * + * @generated from message metalstack.api.v2.TenantServiceInviteAcceptRequest + */ +export type TenantServiceInviteAcceptRequest = Message<"metalstack.api.v2.TenantServiceInviteAcceptRequest"> & { + /** + * Secret is the invitation secret part of the invitation url + * + * @generated from field: string secret = 1; + */ + secret: string; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceInviteAcceptRequest. + * Use `create(TenantServiceInviteAcceptRequestSchema)` to create a new message. + */ +export declare const TenantServiceInviteAcceptRequestSchema: GenMessage; +/** + * TenantServiceInvitesListResponse is the response payload to a accept invite request + * + * @generated from message metalstack.api.v2.TenantServiceInviteAcceptResponse + */ +export type TenantServiceInviteAcceptResponse = Message<"metalstack.api.v2.TenantServiceInviteAcceptResponse"> & { + /** + * Tenant ID of the joined tenant + * + * @generated from field: string tenant = 1; + */ + tenant: string; + /** + * TenantName of the joined tenant + * + * @generated from field: string tenant_name = 2; + */ + tenantName: string; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceInviteAcceptResponse. + * Use `create(TenantServiceInviteAcceptResponseSchema)` to create a new message. + */ +export declare const TenantServiceInviteAcceptResponseSchema: GenMessage; +/** + * TenantServiceInviteDeleteRequest is the request payload to a delete invite + * + * @generated from message metalstack.api.v2.TenantServiceInviteDeleteRequest + */ +export type TenantServiceInviteDeleteRequest = Message<"metalstack.api.v2.TenantServiceInviteDeleteRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + /** + * Secret of the invite to delete + * + * @generated from field: string secret = 2; + */ + secret: string; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceInviteDeleteRequest. + * Use `create(TenantServiceInviteDeleteRequestSchema)` to create a new message. + */ +export declare const TenantServiceInviteDeleteRequestSchema: GenMessage; +/** + * TenantServiceInviteDeleteResponse is the response payload of a delete invite request + * + * @generated from message metalstack.api.v2.TenantServiceInviteDeleteResponse + */ +export type TenantServiceInviteDeleteResponse = Message<"metalstack.api.v2.TenantServiceInviteDeleteResponse"> & {}; +/** + * Describes the message metalstack.api.v2.TenantServiceInviteDeleteResponse. + * Use `create(TenantServiceInviteDeleteResponseSchema)` to create a new message. + */ +export declare const TenantServiceInviteDeleteResponseSchema: GenMessage; +/** + * TenantServiceUpdateMemberRequest is used to update a member from a tenant + * + * @generated from message metalstack.api.v2.TenantServiceUpdateMemberRequest + */ +export type TenantServiceUpdateMemberRequest = Message<"metalstack.api.v2.TenantServiceUpdateMemberRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + /** + * Member is the id of the member to update in this tenant + * + * @generated from field: string member = 2; + */ + member: string; + /** + * Role of this user in this tenant + * + * @generated from field: metalstack.api.v2.TenantRole role = 3; + */ + role: TenantRole; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateMemberRequest. + * Use `create(TenantServiceUpdateMemberRequestSchema)` to create a new message. + */ +export declare const TenantServiceUpdateMemberRequestSchema: GenMessage; +/** + * TenantServiceUpdateMemberResponse is the response payload to a update member request + * + * @generated from message metalstack.api.v2.TenantServiceUpdateMemberResponse + */ +export type TenantServiceUpdateMemberResponse = Message<"metalstack.api.v2.TenantServiceUpdateMemberResponse"> & { + /** + * TenantMember is the updated membership + * + * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1; + */ + tenantMember?: TenantMember; +}; +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateMemberResponse. + * Use `create(TenantServiceUpdateMemberResponseSchema)` to create a new message. + */ +export declare const TenantServiceUpdateMemberResponseSchema: GenMessage; +/** + * TenantService serves tenant related functions + * + * @generated from service metalstack.api.v2.TenantService + */ +export declare const TenantService: GenService<{ + /** + * Create a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Create + */ + create: { + methodKind: "unary"; + input: typeof TenantServiceCreateRequestSchema; + output: typeof TenantServiceCreateResponseSchema; + }; + /** + * List tenants + * + * @generated from rpc metalstack.api.v2.TenantService.List + */ + list: { + methodKind: "unary"; + input: typeof TenantServiceListRequestSchema; + output: typeof TenantServiceListResponseSchema; + }; + /** + * Get a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Get + */ + get: { + methodKind: "unary"; + input: typeof TenantServiceGetRequestSchema; + output: typeof TenantServiceGetResponseSchema; + }; + /** + * Update a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Update + */ + update: { + methodKind: "unary"; + input: typeof TenantServiceUpdateRequestSchema; + output: typeof TenantServiceUpdateResponseSchema; + }; + /** + * Delete a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof TenantServiceDeleteRequestSchema; + output: typeof TenantServiceDeleteResponseSchema; + }; + /** + * Leave remove a member of a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Leave + */ + leave: { + methodKind: "unary"; + input: typeof TenantServiceLeaveRequestSchema; + output: typeof TenantServiceLeaveResponseSchema; + }; + /** + * RemoveMember remove a member of a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.RemoveMember + */ + removeMember: { + methodKind: "unary"; + input: typeof TenantServiceRemoveMemberRequestSchema; + output: typeof TenantServiceRemoveMemberResponseSchema; + }; + /** + * UpdateMember update a member of a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.UpdateMember + */ + updateMember: { + methodKind: "unary"; + input: typeof TenantServiceUpdateMemberRequestSchema; + output: typeof TenantServiceUpdateMemberResponseSchema; + }; + /** + * Invite a user to a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Invite + */ + invite: { + methodKind: "unary"; + input: typeof TenantServiceInviteRequestSchema; + output: typeof TenantServiceInviteResponseSchema; + }; + /** + * InviteAccept is called from a user to accept an invitation + * + * @generated from rpc metalstack.api.v2.TenantService.InviteAccept + */ + inviteAccept: { + methodKind: "unary"; + input: typeof TenantServiceInviteAcceptRequestSchema; + output: typeof TenantServiceInviteAcceptResponseSchema; + }; + /** + * InviteDelete deletes a pending invitation + * + * @generated from rpc metalstack.api.v2.TenantService.InviteDelete + */ + inviteDelete: { + methodKind: "unary"; + input: typeof TenantServiceInviteDeleteRequestSchema; + output: typeof TenantServiceInviteDeleteResponseSchema; + }; + /** + * InvitesList list all invites to a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.InvitesList + */ + invitesList: { + methodKind: "unary"; + input: typeof TenantServiceInvitesListRequestSchema; + output: typeof TenantServiceInvitesListResponseSchema; + }; + /** + * InviteGet get an invite + * + * @generated from rpc metalstack.api.v2.TenantService.InviteGet + */ + inviteGet: { + methodKind: "unary"; + input: typeof TenantServiceInviteGetRequestSchema; + output: typeof TenantServiceInviteGetResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/tenant_pb.js b/js/metalstack/api/v2/tenant_pb.js new file mode 100644 index 00000000..22e17587 --- /dev/null +++ b/js/metalstack/api/v2/tenant_pb.js @@ -0,0 +1,163 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/tenant.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +/** + * Describes the file metalstack/api/v2/tenant.proto. + */ +export const file_metalstack_api_v2_tenant = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIrIBCgZUZW5hbnQSDQoFbG9naW4YASABKAkSJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESDQoFZW1haWwYBCABKAkSIAoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBEhIKCmF2YXRhcl91cmwYBiABKAkSEgoKY3JlYXRlZF9ieRgPIAEoCSKTAQoMVGVuYW50TWVtYmVyEgoKAmlkGAEgASgJEjUKBHJvbGUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIQCghwcm9qZWN0cxgEIAMoCRIuCgpjcmVhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKcAgoMVGVuYW50SW52aXRlEg4KBnNlY3JldBgBIAEoCRIVCg10YXJnZXRfdGVuYW50GAIgASgJEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSGgoSdGFyZ2V0X3RlbmFudF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIpYBChhUZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QSDwoCaWQYASABKAlIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEi4KBmxhYmVscxgDIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gCiAEBQgUKA19pZEIHCgVfbmFtZUIJCgdfbGFiZWxzIigKF1RlbmFudFNlcnZpY2VHZXRSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIugBChpUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIlCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgFIAIgBARIbCgVlbWFpbBgDIAEoCUIHukgEcgJgAUgBiAEBEhcKCmF2YXRhcl91cmwYBCABKAlIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDgoMX2Rlc2NyaXB0aW9uQggKBl9lbWFpbEINCgtfYXZhdGFyX3VybCLXAgoaVGVuYW50U2VydmljZVVwZGF0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEhcKCmF2YXRhcl91cmwYBiABKAlIA4gBARI0CgZsYWJlbHMYByABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIBIgBAUIHCgVfbmFtZUIICgZfZW1haWxCDgoMX2Rlc2NyaXB0aW9uQg0KC19hdmF0YXJfdXJsQgkKB19sYWJlbHMiKwoaVGVuYW50U2VydmljZURlbGV0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkifgoYVGVuYW50U2VydmljZUdldFJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBI3Cg50ZW5hbnRfbWVtYmVycxgCIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlciJHChlUZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEioKB3RlbmFudHMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSAobVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJIChtUZW5hbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkgKG1RlbmFudFNlcnZpY2VEZWxldGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiYgoaVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIk4KG1RlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZRIvCgZpbnZpdGUYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRJbnZpdGUiMAofVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSJUCiBUZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIwCgdpbnZpdGVzGAEgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIi8KHVRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJRCh5UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USLwoGaW52aXRlGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIkEKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCSIqChlUZW5hbnRTZXJ2aWNlTGVhdmVSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIhwKGlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIiMKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIyCiBUZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSAohVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg4KBnRlbmFudBgBIAEoCRITCgt0ZW5hbnRfbmFtZRgCIAEoCSJBCiBUZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBINCgVsb2dpbhgBIAEoCRIOCgZzZWNyZXQYAiABKAkiIwohVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIngKIFRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCRI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWwohVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIyxwwKDVRlbmFudFNlcnZpY2UScQoGQ3JlYXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCNjzGAPg8xgBEmsKBExpc3QSKy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgD4PMYAhJsCgNHZXQSKi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VHZXRSZXNwb25zZSIMwvMYBAECAwTg8xgCEnMKBlVwZGF0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEnMKBkRlbGV0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZURlbGV0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEm8KBUxlYXZlEiwubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxlYXZlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnC8xgBA+DzGAEShAEKDFJlbW92ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEShAEKDFVwZGF0ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEScgoGSW52aXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcLzGAEB4PMYARKDAQoMSW52aXRlQWNjZXB0EjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2UiCNjzGAPg8xgBEoQBCgxJbnZpdGVEZWxldGUSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJwvMYAQHg8xgBEoEBCgtJbnZpdGVzTGlzdBIyLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVzTGlzdFJlcXVlc3QaMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJwvMYAQHg8xgCEnoKCUludml0ZUdldBIwLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjEubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUdldFJlc3BvbnNlIgjY8xgD4PMYAkLBAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgtUZW5hbnRQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.api.v2.Tenant. + * Use `create(TenantSchema)` to create a new message. + */ +export const TenantSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 0); +/** + * Describes the message metalstack.api.v2.TenantMember. + * Use `create(TenantMemberSchema)` to create a new message. + */ +export const TenantMemberSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 1); +/** + * Describes the message metalstack.api.v2.TenantInvite. + * Use `create(TenantInviteSchema)` to create a new message. + */ +export const TenantInviteSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 2); +/** + * Describes the message metalstack.api.v2.TenantServiceListRequest. + * Use `create(TenantServiceListRequestSchema)` to create a new message. + */ +export const TenantServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 3); +/** + * Describes the message metalstack.api.v2.TenantServiceGetRequest. + * Use `create(TenantServiceGetRequestSchema)` to create a new message. + */ +export const TenantServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 4); +/** + * Describes the message metalstack.api.v2.TenantServiceCreateRequest. + * Use `create(TenantServiceCreateRequestSchema)` to create a new message. + */ +export const TenantServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 5); +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateRequest. + * Use `create(TenantServiceUpdateRequestSchema)` to create a new message. + */ +export const TenantServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 6); +/** + * Describes the message metalstack.api.v2.TenantServiceDeleteRequest. + * Use `create(TenantServiceDeleteRequestSchema)` to create a new message. + */ +export const TenantServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 7); +/** + * Describes the message metalstack.api.v2.TenantServiceGetResponse. + * Use `create(TenantServiceGetResponseSchema)` to create a new message. + */ +export const TenantServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 8); +/** + * Describes the message metalstack.api.v2.TenantServiceListResponse. + * Use `create(TenantServiceListResponseSchema)` to create a new message. + */ +export const TenantServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 9); +/** + * Describes the message metalstack.api.v2.TenantServiceCreateResponse. + * Use `create(TenantServiceCreateResponseSchema)` to create a new message. + */ +export const TenantServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 10); +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateResponse. + * Use `create(TenantServiceUpdateResponseSchema)` to create a new message. + */ +export const TenantServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 11); +/** + * Describes the message metalstack.api.v2.TenantServiceDeleteResponse. + * Use `create(TenantServiceDeleteResponseSchema)` to create a new message. + */ +export const TenantServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 12); +/** + * Describes the message metalstack.api.v2.TenantServiceInviteRequest. + * Use `create(TenantServiceInviteRequestSchema)` to create a new message. + */ +export const TenantServiceInviteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 13); +/** + * Describes the message metalstack.api.v2.TenantServiceInviteResponse. + * Use `create(TenantServiceInviteResponseSchema)` to create a new message. + */ +export const TenantServiceInviteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 14); +/** + * Describes the message metalstack.api.v2.TenantServiceInvitesListRequest. + * Use `create(TenantServiceInvitesListRequestSchema)` to create a new message. + */ +export const TenantServiceInvitesListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 15); +/** + * Describes the message metalstack.api.v2.TenantServiceInvitesListResponse. + * Use `create(TenantServiceInvitesListResponseSchema)` to create a new message. + */ +export const TenantServiceInvitesListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 16); +/** + * Describes the message metalstack.api.v2.TenantServiceInviteGetRequest. + * Use `create(TenantServiceInviteGetRequestSchema)` to create a new message. + */ +export const TenantServiceInviteGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 17); +/** + * Describes the message metalstack.api.v2.TenantServiceInviteGetResponse. + * Use `create(TenantServiceInviteGetResponseSchema)` to create a new message. + */ +export const TenantServiceInviteGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 18); +/** + * Describes the message metalstack.api.v2.TenantServiceRemoveMemberRequest. + * Use `create(TenantServiceRemoveMemberRequestSchema)` to create a new message. + */ +export const TenantServiceRemoveMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 19); +/** + * Describes the message metalstack.api.v2.TenantServiceLeaveRequest. + * Use `create(TenantServiceLeaveRequestSchema)` to create a new message. + */ +export const TenantServiceLeaveRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 20); +/** + * Describes the message metalstack.api.v2.TenantServiceLeaveResponse. + * Use `create(TenantServiceLeaveResponseSchema)` to create a new message. + */ +export const TenantServiceLeaveResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 21); +/** + * Describes the message metalstack.api.v2.TenantServiceRemoveMemberResponse. + * Use `create(TenantServiceRemoveMemberResponseSchema)` to create a new message. + */ +export const TenantServiceRemoveMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 22); +/** + * Describes the message metalstack.api.v2.TenantServiceInviteAcceptRequest. + * Use `create(TenantServiceInviteAcceptRequestSchema)` to create a new message. + */ +export const TenantServiceInviteAcceptRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 23); +/** + * Describes the message metalstack.api.v2.TenantServiceInviteAcceptResponse. + * Use `create(TenantServiceInviteAcceptResponseSchema)` to create a new message. + */ +export const TenantServiceInviteAcceptResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 24); +/** + * Describes the message metalstack.api.v2.TenantServiceInviteDeleteRequest. + * Use `create(TenantServiceInviteDeleteRequestSchema)` to create a new message. + */ +export const TenantServiceInviteDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 25); +/** + * Describes the message metalstack.api.v2.TenantServiceInviteDeleteResponse. + * Use `create(TenantServiceInviteDeleteResponseSchema)` to create a new message. + */ +export const TenantServiceInviteDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 26); +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateMemberRequest. + * Use `create(TenantServiceUpdateMemberRequestSchema)` to create a new message. + */ +export const TenantServiceUpdateMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 27); +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateMemberResponse. + * Use `create(TenantServiceUpdateMemberResponseSchema)` to create a new message. + */ +export const TenantServiceUpdateMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_tenant, 28); +/** + * TenantService serves tenant related functions + * + * @generated from service metalstack.api.v2.TenantService + */ +export const TenantService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_tenant, 0); diff --git a/js/metalstack/api/v2/tenant_pb.ts b/js/metalstack/api/v2/tenant_pb.ts new file mode 100644 index 00000000..5eecf1e2 --- /dev/null +++ b/js/metalstack/api/v2/tenant_pb.ts @@ -0,0 +1,1004 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/tenant.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Labels, Meta, TenantRole, UpdateLabels, UpdateMeta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/tenant.proto. + */ +export const file_metalstack_api_v2_tenant: GenFile = /*@__PURE__*/ + fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi90ZW5hbnQucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIrIBCgZUZW5hbnQSDQoFbG9naW4YASABKAkSJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESDQoFZW1haWwYBCABKAkSIAoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBEhIKCmF2YXRhcl91cmwYBiABKAkSEgoKY3JlYXRlZF9ieRgPIAEoCSKTAQoMVGVuYW50TWVtYmVyEgoKAmlkGAEgASgJEjUKBHJvbGUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIQCghwcm9qZWN0cxgEIAMoCRIuCgpjcmVhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKcAgoMVGVuYW50SW52aXRlEg4KBnNlY3JldBgBIAEoCRIVCg10YXJnZXRfdGVuYW50GAIgASgJEjUKBHJvbGUYAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSGgoSdGFyZ2V0X3RlbmFudF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIpYBChhUZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QSDwoCaWQYASABKAlIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEi4KBmxhYmVscxgDIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gCiAEBQgUKA19pZEIHCgVfbmFtZUIJCgdfbGFiZWxzIigKF1RlbmFudFNlcnZpY2VHZXRSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIugBChpUZW5hbnRTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIlCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgFIAIgBARIbCgVlbWFpbBgDIAEoCUIHukgEcgJgAUgBiAEBEhcKCmF2YXRhcl91cmwYBCABKAlIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDgoMX2Rlc2NyaXB0aW9uQggKBl9lbWFpbEINCgtfYXZhdGFyX3VybCLXAgoaVGVuYW50U2VydmljZVVwZGF0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEhcKCmF2YXRhcl91cmwYBiABKAlIA4gBARI0CgZsYWJlbHMYByABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVMYWJlbHNIBIgBAUIHCgVfbmFtZUIICgZfZW1haWxCDgoMX2Rlc2NyaXB0aW9uQg0KC19hdmF0YXJfdXJsQgkKB19sYWJlbHMiKwoaVGVuYW50U2VydmljZURlbGV0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkifgoYVGVuYW50U2VydmljZUdldFJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudBI3Cg50ZW5hbnRfbWVtYmVycxgCIAMoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudE1lbWJlciJHChlUZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEioKB3RlbmFudHMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiSAobVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlEikKBnRlbmFudBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudCJIChtUZW5hbnRTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKQoGdGVuYW50GAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IkgKG1RlbmFudFNlcnZpY2VEZWxldGVSZXNwb25zZRIpCgZ0ZW5hbnQYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQiYgoaVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSNQoEcm9sZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVCCLpIBYIBAhABIk4KG1RlbmFudFNlcnZpY2VJbnZpdGVSZXNwb25zZRIvCgZpbnZpdGUYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRJbnZpdGUiMAofVGVuYW50U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSJUCiBUZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIwCgdpbnZpdGVzGAEgAygLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIi8KHVRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJRCh5UZW5hbnRTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USLwoGaW52aXRlGAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50SW52aXRlIkEKIFRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCSIqChlUZW5hbnRTZXJ2aWNlTGVhdmVSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIhwKGlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIiMKIVRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXNwb25zZSIyCiBUZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVxdWVzdBIOCgZzZWNyZXQYASABKAkiSAohVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg4KBnRlbmFudBgBIAEoCRITCgt0ZW5hbnRfbmFtZRgCIAEoCSJBCiBUZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBINCgVsb2dpbhgBIAEoCRIOCgZzZWNyZXQYAiABKAkiIwohVGVuYW50U2VydmljZUludml0ZURlbGV0ZVJlc3BvbnNlIngKIFRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEg4KBm1lbWJlchgCIAEoCRI1CgRyb2xlGAMgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZUIIukgFggECEAEiWwohVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlEjYKDXRlbmFudF9tZW1iZXIYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRNZW1iZXIyxwwKDVRlbmFudFNlcnZpY2UScQoGQ3JlYXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCNjzGAPg8xgBEmsKBExpc3QSKy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgD4PMYAhJsCgNHZXQSKi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VHZXRSZXNwb25zZSIMwvMYBAECAwTg8xgCEnMKBlVwZGF0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEnMKBkRlbGV0ZRItLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZURlbGV0ZVJlc3BvbnNlIgrC8xgCAQLg8xgBEm8KBUxlYXZlEiwubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUxlYXZlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnC8xgBA+DzGAEShAEKDFJlbW92ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEShAEKDFVwZGF0ZU1lbWJlchIzLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjQubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZVVwZGF0ZU1lbWJlclJlc3BvbnNlIgnC8xgBAeDzGAEScgoGSW52aXRlEi0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcLzGAEB4PMYARKDAQoMSW52aXRlQWNjZXB0EjMubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUFjY2VwdFJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlQWNjZXB0UmVzcG9uc2UiCNjzGAPg8xgBEoQBCgxJbnZpdGVEZWxldGUSMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZSIJwvMYAQHg8xgBEoEBCgtJbnZpdGVzTGlzdBIyLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVzTGlzdFJlcXVlc3QaMy5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJwvMYAQHg8xgCEnoKCUludml0ZUdldBIwLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFNlcnZpY2VJbnZpdGVHZXRSZXF1ZXN0GjEubWV0YWxzdGFjay5hcGkudjIuVGVuYW50U2VydmljZUludml0ZUdldFJlc3BvbnNlIgjY8xgD4PMYAkLBAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgtUZW5hbnRQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + +/** + * Tenant is a customer of the platform + * + * @generated from message metalstack.api.v2.Tenant + */ +export type Tenant = Message<"metalstack.api.v2.Tenant"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + + /** + * Meta for this tenant + * + * @generated from field: metalstack.api.v2.Meta meta = 2; + */ + meta?: Meta; + + /** + * Name of the tenant + * + * @generated from field: string name = 3; + */ + name: string; + + /** + * Email of the tenant + * + * @generated from field: string email = 4; + */ + email: string; + + /** + * Description of this tenant + * + * @generated from field: string description = 5; + */ + description: string; + + /** + * AvatarUrl of the tenant + * + * @generated from field: string avatar_url = 6; + */ + avatarUrl: string; + + /** + * CreatedBy stores who created this tenant + * + * @generated from field: string created_by = 15; + */ + createdBy: string; +}; + +/** + * Describes the message metalstack.api.v2.Tenant. + * Use `create(TenantSchema)` to create a new message. + */ +export const TenantSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 0); + +/** + * TenantMember defines a user that participates at a tenant + * + * @generated from message metalstack.api.v2.TenantMember + */ +export type TenantMember = Message<"metalstack.api.v2.TenantMember"> & { + /** + * Id is the user id of the member + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Role is the role of the member + * + * @generated from field: metalstack.api.v2.TenantRole role = 2; + */ + role: TenantRole; + + /** + * Projects for the projects in which a user is a direct member + * + * @generated from field: repeated string projects = 4; + */ + projects: string[]; + + /** + * CreatedAt the date when the member was added to the tenant + * + * @generated from field: google.protobuf.Timestamp created_at = 10; + */ + createdAt?: Timestamp; +}; + +/** + * Describes the message metalstack.api.v2.TenantMember. + * Use `create(TenantMemberSchema)` to create a new message. + */ +export const TenantMemberSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 1); + +/** + * TenantInvite defines invite to tenant + * + * @generated from message metalstack.api.v2.TenantInvite + */ +export type TenantInvite = Message<"metalstack.api.v2.TenantInvite"> & { + /** + * Secret is the secret part of the invite, typically part of the url + * + * @generated from field: string secret = 1; + */ + secret: string; + + /** + * TargetTenant is the tenant id for which this invite was created + * + * @generated from field: string target_tenant = 2; + */ + targetTenant: string; + + /** + * Role is the role in this tenant the user will get after accepting the invitation + * + * @generated from field: metalstack.api.v2.TenantRole role = 3; + */ + role: TenantRole; + + /** + * Joined is false as long as a user has not accepted the invite + * + * @generated from field: bool joined = 4; + */ + joined: boolean; + + /** + * TargetTenantName is the tenant name for which this invite was created + * + * @generated from field: string target_tenant_name = 5; + */ + targetTenantName: string; + + /** + * Tenant is the login of tenant who invites to join this tenant + * + * @generated from field: string tenant = 6; + */ + tenant: string; + + /** + * TenantName is the name of tenant who invites to join this tenant + * + * @generated from field: string tenant_name = 7; + */ + tenantName: string; + + /** + * ExpiresAt the date when this invite expires + * + * @generated from field: google.protobuf.Timestamp expires_at = 10; + */ + expiresAt?: Timestamp; + + /** + * JoinedAt the date when the member accepted this invite + * + * @generated from field: google.protobuf.Timestamp joined_at = 11; + */ + joinedAt?: Timestamp; +}; + +/** + * Describes the message metalstack.api.v2.TenantInvite. + * Use `create(TenantInviteSchema)` to create a new message. + */ +export const TenantInviteSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 2); + +/** + * TenantServiceListRequest is the request payload of the tenant list request + * + * @generated from message metalstack.api.v2.TenantServiceListRequest + */ +export type TenantServiceListRequest = Message<"metalstack.api.v2.TenantServiceListRequest"> & { + /** + * Id filters tenants by id + * + * @generated from field: optional string id = 1; + */ + id?: string; + + /** + * Name filters tenants by name + * + * @generated from field: optional string name = 2; + */ + name?: string; + + /** + * Labels lists only projects containing the given labels + * + * @generated from field: optional metalstack.api.v2.Labels labels = 3; + */ + labels?: Labels; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceListRequest. + * Use `create(TenantServiceListRequestSchema)` to create a new message. + */ +export const TenantServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 3); + +/** + * TenantServiceGetRequest is the request payload of the tenant get request + * + * @generated from message metalstack.api.v2.TenantServiceGetRequest + */ +export type TenantServiceGetRequest = Message<"metalstack.api.v2.TenantServiceGetRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceGetRequest. + * Use `create(TenantServiceGetRequestSchema)` to create a new message. + */ +export const TenantServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 4); + +/** + * TenantServiceCreateRequest is the request payload of the tenant create request + * + * @generated from message metalstack.api.v2.TenantServiceCreateRequest + */ +export type TenantServiceCreateRequest = Message<"metalstack.api.v2.TenantServiceCreateRequest"> & { + /** + * Name of this tenant + * + * @generated from field: string name = 1; + */ + name: string; + + /** + * Description of this tenant + * + * @generated from field: optional string description = 2; + */ + description?: string; + + /** + * Email of the tenant, if not set will be inherited from the creator + * + * @generated from field: optional string email = 3; + */ + email?: string; + + /** + * AvatarUrl of the tenant + * + * @generated from field: optional string avatar_url = 4; + */ + avatarUrl?: string; + + /** + * Labels on the tenant + * + * @generated from field: metalstack.api.v2.Labels labels = 5; + */ + labels?: Labels; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceCreateRequest. + * Use `create(TenantServiceCreateRequestSchema)` to create a new message. + */ +export const TenantServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 5); + +/** + * TenantServiceUpdateRequest is the request payload of the tenant update request + * + * @generated from message metalstack.api.v2.TenantServiceUpdateRequest + */ +export type TenantServiceUpdateRequest = Message<"metalstack.api.v2.TenantServiceUpdateRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * Name of the tenant + * + * @generated from field: optional string name = 3; + */ + name?: string; + + /** + * Email of the tenant + * + * @generated from field: optional string email = 4; + */ + email?: string; + + /** + * Description of this tenant + * + * @generated from field: optional string description = 5; + */ + description?: string; + + /** + * AvatarUrl of the tenant + * + * @generated from field: optional string avatar_url = 6; + */ + avatarUrl?: string; + + /** + * Labels on the tenant + * + * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 7; + */ + labels?: UpdateLabels; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateRequest. + * Use `create(TenantServiceUpdateRequestSchema)` to create a new message. + */ +export const TenantServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 6); + +/** + * TenantServiceDeleteRequest is the request payload of the tenant delete request + * + * @generated from message metalstack.api.v2.TenantServiceDeleteRequest + */ +export type TenantServiceDeleteRequest = Message<"metalstack.api.v2.TenantServiceDeleteRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceDeleteRequest. + * Use `create(TenantServiceDeleteRequestSchema)` to create a new message. + */ +export const TenantServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 7); + +/** + * TenantServiceGetResponse is the response payload of the tenant get request + * + * @generated from message metalstack.api.v2.TenantServiceGetResponse + */ +export type TenantServiceGetResponse = Message<"metalstack.api.v2.TenantServiceGetResponse"> & { + /** + * Tenant is the tenant + * + * @generated from field: metalstack.api.v2.Tenant tenant = 1; + */ + tenant?: Tenant; + + /** + * TenantMembers of this tenant + * + * @generated from field: repeated metalstack.api.v2.TenantMember tenant_members = 2; + */ + tenantMembers: TenantMember[]; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceGetResponse. + * Use `create(TenantServiceGetResponseSchema)` to create a new message. + */ +export const TenantServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 8); + +/** + * TenantServiceListResponse is the response payload of the tenant list request + * + * @generated from message metalstack.api.v2.TenantServiceListResponse + */ +export type TenantServiceListResponse = Message<"metalstack.api.v2.TenantServiceListResponse"> & { + /** + * Tenants is the list of tenants + * + * @generated from field: repeated metalstack.api.v2.Tenant tenants = 1; + */ + tenants: Tenant[]; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceListResponse. + * Use `create(TenantServiceListResponseSchema)` to create a new message. + */ +export const TenantServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 9); + +/** + * TenantServiceCreateResponse is the response payload of the tenant create request + * + * @generated from message metalstack.api.v2.TenantServiceCreateResponse + */ +export type TenantServiceCreateResponse = Message<"metalstack.api.v2.TenantServiceCreateResponse"> & { + /** + * Tenant is the tenant + * + * @generated from field: metalstack.api.v2.Tenant tenant = 1; + */ + tenant?: Tenant; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceCreateResponse. + * Use `create(TenantServiceCreateResponseSchema)` to create a new message. + */ +export const TenantServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 10); + +/** + * TenantServiceUpdateResponse is the response payload of the tenant update request + * + * @generated from message metalstack.api.v2.TenantServiceUpdateResponse + */ +export type TenantServiceUpdateResponse = Message<"metalstack.api.v2.TenantServiceUpdateResponse"> & { + /** + * Tenant is the tenant + * + * @generated from field: metalstack.api.v2.Tenant tenant = 1; + */ + tenant?: Tenant; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateResponse. + * Use `create(TenantServiceUpdateResponseSchema)` to create a new message. + */ +export const TenantServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 11); + +/** + * TenantServiceDeleteResponse is the response payload of the tenant delete request + * + * @generated from message metalstack.api.v2.TenantServiceDeleteResponse + */ +export type TenantServiceDeleteResponse = Message<"metalstack.api.v2.TenantServiceDeleteResponse"> & { + /** + * Tenant is the tenant + * + * @generated from field: metalstack.api.v2.Tenant tenant = 1; + */ + tenant?: Tenant; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceDeleteResponse. + * Use `create(TenantServiceDeleteResponseSchema)` to create a new message. + */ +export const TenantServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 12); + +/** + * TenantServiceInviteRequest is used to invite a member to a tenant + * + * @generated from message metalstack.api.v2.TenantServiceInviteRequest + */ +export type TenantServiceInviteRequest = Message<"metalstack.api.v2.TenantServiceInviteRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + + /** + * Role of this user in this tenant + * + * @generated from field: metalstack.api.v2.TenantRole role = 2; + */ + role: TenantRole; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceInviteRequest. + * Use `create(TenantServiceInviteRequestSchema)` to create a new message. + */ +export const TenantServiceInviteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 13); + +/** + * TenantServiceInviteRequest is the response payload to a invite member request + * + * @generated from message metalstack.api.v2.TenantServiceInviteResponse + */ +export type TenantServiceInviteResponse = Message<"metalstack.api.v2.TenantServiceInviteResponse"> & { + /** + * Invite contains a secret which can be sent to a potential user + * can be appended to the invitation endpoint at our cloud console like + * console.metalstack.cloud/invite/ + * + * @generated from field: metalstack.api.v2.TenantInvite invite = 1; + */ + invite?: TenantInvite; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceInviteResponse. + * Use `create(TenantServiceInviteResponseSchema)` to create a new message. + */ +export const TenantServiceInviteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 14); + +/** + * TenantServiceInvitesListRequest is the request payload to a list invites request + * + * @generated from message metalstack.api.v2.TenantServiceInvitesListRequest + */ +export type TenantServiceInvitesListRequest = Message<"metalstack.api.v2.TenantServiceInvitesListRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceInvitesListRequest. + * Use `create(TenantServiceInvitesListRequestSchema)` to create a new message. + */ +export const TenantServiceInvitesListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 15); + +/** + * TenantServiceInvitesListResponse is the response payload to a list invites request + * + * @generated from message metalstack.api.v2.TenantServiceInvitesListResponse + */ +export type TenantServiceInvitesListResponse = Message<"metalstack.api.v2.TenantServiceInvitesListResponse"> & { + /** + * Invites not already accepted the invitation to this tenant + * + * @generated from field: repeated metalstack.api.v2.TenantInvite invites = 1; + */ + invites: TenantInvite[]; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceInvitesListResponse. + * Use `create(TenantServiceInvitesListResponseSchema)` to create a new message. + */ +export const TenantServiceInvitesListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 16); + +/** + * TenantServiceInviteGetRequest is the request payload to get a invite + * + * @generated from message metalstack.api.v2.TenantServiceInviteGetRequest + */ +export type TenantServiceInviteGetRequest = Message<"metalstack.api.v2.TenantServiceInviteGetRequest"> & { + /** + * Secret of the invite to get + * + * @generated from field: string secret = 1; + */ + secret: string; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceInviteGetRequest. + * Use `create(TenantServiceInviteGetRequestSchema)` to create a new message. + */ +export const TenantServiceInviteGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 17); + +/** + * TenantServiceInviteGetResponse is the response payload to a get invite request + * + * @generated from message metalstack.api.v2.TenantServiceInviteGetResponse + */ +export type TenantServiceInviteGetResponse = Message<"metalstack.api.v2.TenantServiceInviteGetResponse"> & { + /** + * Invite is the invite + * + * @generated from field: metalstack.api.v2.TenantInvite invite = 1; + */ + invite?: TenantInvite; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceInviteGetResponse. + * Use `create(TenantServiceInviteGetResponseSchema)` to create a new message. + */ +export const TenantServiceInviteGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 18); + +/** + * TenantServiceRemoveMemberRequest is used to remove a member from a tenant + * + * @generated from message metalstack.api.v2.TenantServiceRemoveMemberRequest + */ +export type TenantServiceRemoveMemberRequest = Message<"metalstack.api.v2.TenantServiceRemoveMemberRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + + /** + * Member is the id of the member to remove from this tenant + * + * @generated from field: string member = 2; + */ + member: string; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceRemoveMemberRequest. + * Use `create(TenantServiceRemoveMemberRequestSchema)` to create a new message. + */ +export const TenantServiceRemoveMemberRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 19); + +/** + * TenantServiceLeaveTenantRequest is used to leave a tenant + * + * @generated from message metalstack.api.v2.TenantServiceLeaveRequest + */ +export type TenantServiceLeaveRequest = Message<"metalstack.api.v2.TenantServiceLeaveRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceLeaveRequest. + * Use `create(TenantServiceLeaveRequestSchema)` to create a new message. + */ +export const TenantServiceLeaveRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 20); + +/** + * TenantServiceLeaveTenantResponse is the response payload to a leave tenant request + * + * @generated from message metalstack.api.v2.TenantServiceLeaveResponse + */ +export type TenantServiceLeaveResponse = Message<"metalstack.api.v2.TenantServiceLeaveResponse"> & { +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceLeaveResponse. + * Use `create(TenantServiceLeaveResponseSchema)` to create a new message. + */ +export const TenantServiceLeaveResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 21); + +/** + * TenantServiceRemoveMemberResponse is the response payload to a remove member request + * + * @generated from message metalstack.api.v2.TenantServiceRemoveMemberResponse + */ +export type TenantServiceRemoveMemberResponse = Message<"metalstack.api.v2.TenantServiceRemoveMemberResponse"> & { +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceRemoveMemberResponse. + * Use `create(TenantServiceRemoveMemberResponseSchema)` to create a new message. + */ +export const TenantServiceRemoveMemberResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 22); + +/** + * TenantServiceInviteAcceptRequest is the request payload to a accept invite request + * + * @generated from message metalstack.api.v2.TenantServiceInviteAcceptRequest + */ +export type TenantServiceInviteAcceptRequest = Message<"metalstack.api.v2.TenantServiceInviteAcceptRequest"> & { + /** + * Secret is the invitation secret part of the invitation url + * + * @generated from field: string secret = 1; + */ + secret: string; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceInviteAcceptRequest. + * Use `create(TenantServiceInviteAcceptRequestSchema)` to create a new message. + */ +export const TenantServiceInviteAcceptRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 23); + +/** + * TenantServiceInvitesListResponse is the response payload to a accept invite request + * + * @generated from message metalstack.api.v2.TenantServiceInviteAcceptResponse + */ +export type TenantServiceInviteAcceptResponse = Message<"metalstack.api.v2.TenantServiceInviteAcceptResponse"> & { + /** + * Tenant ID of the joined tenant + * + * @generated from field: string tenant = 1; + */ + tenant: string; + + /** + * TenantName of the joined tenant + * + * @generated from field: string tenant_name = 2; + */ + tenantName: string; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceInviteAcceptResponse. + * Use `create(TenantServiceInviteAcceptResponseSchema)` to create a new message. + */ +export const TenantServiceInviteAcceptResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 24); + +/** + * TenantServiceInviteDeleteRequest is the request payload to a delete invite + * + * @generated from message metalstack.api.v2.TenantServiceInviteDeleteRequest + */ +export type TenantServiceInviteDeleteRequest = Message<"metalstack.api.v2.TenantServiceInviteDeleteRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + + /** + * Secret of the invite to delete + * + * @generated from field: string secret = 2; + */ + secret: string; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceInviteDeleteRequest. + * Use `create(TenantServiceInviteDeleteRequestSchema)` to create a new message. + */ +export const TenantServiceInviteDeleteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 25); + +/** + * TenantServiceInviteDeleteResponse is the response payload of a delete invite request + * + * @generated from message metalstack.api.v2.TenantServiceInviteDeleteResponse + */ +export type TenantServiceInviteDeleteResponse = Message<"metalstack.api.v2.TenantServiceInviteDeleteResponse"> & { +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceInviteDeleteResponse. + * Use `create(TenantServiceInviteDeleteResponseSchema)` to create a new message. + */ +export const TenantServiceInviteDeleteResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 26); + +/** + * TenantServiceUpdateMemberRequest is used to update a member from a tenant + * + * @generated from message metalstack.api.v2.TenantServiceUpdateMemberRequest + */ +export type TenantServiceUpdateMemberRequest = Message<"metalstack.api.v2.TenantServiceUpdateMemberRequest"> & { + /** + * Login of the tenant + * + * @generated from field: string login = 1; + */ + login: string; + + /** + * Member is the id of the member to update in this tenant + * + * @generated from field: string member = 2; + */ + member: string; + + /** + * Role of this user in this tenant + * + * @generated from field: metalstack.api.v2.TenantRole role = 3; + */ + role: TenantRole; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateMemberRequest. + * Use `create(TenantServiceUpdateMemberRequestSchema)` to create a new message. + */ +export const TenantServiceUpdateMemberRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 27); + +/** + * TenantServiceUpdateMemberResponse is the response payload to a update member request + * + * @generated from message metalstack.api.v2.TenantServiceUpdateMemberResponse + */ +export type TenantServiceUpdateMemberResponse = Message<"metalstack.api.v2.TenantServiceUpdateMemberResponse"> & { + /** + * TenantMember is the updated membership + * + * @generated from field: metalstack.api.v2.TenantMember tenant_member = 1; + */ + tenantMember?: TenantMember; +}; + +/** + * Describes the message metalstack.api.v2.TenantServiceUpdateMemberResponse. + * Use `create(TenantServiceUpdateMemberResponseSchema)` to create a new message. + */ +export const TenantServiceUpdateMemberResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_tenant, 28); + +/** + * TenantService serves tenant related functions + * + * @generated from service metalstack.api.v2.TenantService + */ +export const TenantService: GenService<{ + /** + * Create a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Create + */ + create: { + methodKind: "unary"; + input: typeof TenantServiceCreateRequestSchema; + output: typeof TenantServiceCreateResponseSchema; + }, + /** + * List tenants + * + * @generated from rpc metalstack.api.v2.TenantService.List + */ + list: { + methodKind: "unary"; + input: typeof TenantServiceListRequestSchema; + output: typeof TenantServiceListResponseSchema; + }, + /** + * Get a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Get + */ + get: { + methodKind: "unary"; + input: typeof TenantServiceGetRequestSchema; + output: typeof TenantServiceGetResponseSchema; + }, + /** + * Update a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Update + */ + update: { + methodKind: "unary"; + input: typeof TenantServiceUpdateRequestSchema; + output: typeof TenantServiceUpdateResponseSchema; + }, + /** + * Delete a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Delete + */ + delete: { + methodKind: "unary"; + input: typeof TenantServiceDeleteRequestSchema; + output: typeof TenantServiceDeleteResponseSchema; + }, + /** + * Leave remove a member of a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Leave + */ + leave: { + methodKind: "unary"; + input: typeof TenantServiceLeaveRequestSchema; + output: typeof TenantServiceLeaveResponseSchema; + }, + /** + * RemoveMember remove a member of a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.RemoveMember + */ + removeMember: { + methodKind: "unary"; + input: typeof TenantServiceRemoveMemberRequestSchema; + output: typeof TenantServiceRemoveMemberResponseSchema; + }, + /** + * UpdateMember update a member of a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.UpdateMember + */ + updateMember: { + methodKind: "unary"; + input: typeof TenantServiceUpdateMemberRequestSchema; + output: typeof TenantServiceUpdateMemberResponseSchema; + }, + /** + * Invite a user to a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.Invite + */ + invite: { + methodKind: "unary"; + input: typeof TenantServiceInviteRequestSchema; + output: typeof TenantServiceInviteResponseSchema; + }, + /** + * InviteAccept is called from a user to accept an invitation + * + * @generated from rpc metalstack.api.v2.TenantService.InviteAccept + */ + inviteAccept: { + methodKind: "unary"; + input: typeof TenantServiceInviteAcceptRequestSchema; + output: typeof TenantServiceInviteAcceptResponseSchema; + }, + /** + * InviteDelete deletes a pending invitation + * + * @generated from rpc metalstack.api.v2.TenantService.InviteDelete + */ + inviteDelete: { + methodKind: "unary"; + input: typeof TenantServiceInviteDeleteRequestSchema; + output: typeof TenantServiceInviteDeleteResponseSchema; + }, + /** + * InvitesList list all invites to a tenant + * + * @generated from rpc metalstack.api.v2.TenantService.InvitesList + */ + invitesList: { + methodKind: "unary"; + input: typeof TenantServiceInvitesListRequestSchema; + output: typeof TenantServiceInvitesListResponseSchema; + }, + /** + * InviteGet get an invite + * + * @generated from rpc metalstack.api.v2.TenantService.InviteGet + */ + inviteGet: { + methodKind: "unary"; + input: typeof TenantServiceInviteGetRequestSchema; + output: typeof TenantServiceInviteGetResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_tenant, 0); + diff --git a/js/metalstack/api/v2/token_pb.d.ts b/js/metalstack/api/v2/token_pb.d.ts new file mode 100644 index 00000000..5a7366a2 --- /dev/null +++ b/js/metalstack/api/v2/token_pb.d.ts @@ -0,0 +1,540 @@ +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Duration, Timestamp } from "@bufbuild/protobuf/wkt"; +import type { AdminRole, InfraRole, Labels, Meta, ProjectRole, TenantRole, UpdateLabels, UpdateMeta } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/token.proto. + */ +export declare const file_metalstack_api_v2_token: GenFile; +/** + * Token generates a jwt authentication token to access the api + * + * There are two different types of tokens, api- and user- tokens + * + * A user token is used to authenticate end user requests for example from a cli. + * The configured roles in a user token are expanded in the api server + * based on the memberships in other projects and tenants based on the role granted there. + * User tokens will never contain permissions. + * Permissions are always derived from the tenant and project roles and memberships. + * + * The api token should be used to authenticate services. + * In contrast to a user token, the api token permissions and roles apply as configured during the token create process. + * + * @generated from message metalstack.api.v2.Token + */ +export type Token = Message<"metalstack.api.v2.Token"> & { + /** + * Uuid of the jwt token, used to reference it by revoke + * + * @generated from field: string uuid = 1; + */ + uuid: string; + /** + * User who created this token + * + * @generated from field: string user = 2; + */ + user: string; + /** + * Meta for this token + * + * @generated from field: metalstack.api.v2.Meta meta = 3; + */ + meta?: Meta; + /** + * Description is a user given description of this token. + * + * @generated from field: string description = 4; + */ + description: string; + /** + * Permissions is a list of service methods this token can be used for + * + * @generated from field: repeated metalstack.api.v2.MethodPermission permissions = 5; + */ + permissions: MethodPermission[]; + /** + * Expires gives the date in the future after which this token can not be used anymore + * + * @generated from field: google.protobuf.Timestamp expires = 6; + */ + expires?: Timestamp; + /** + * IssuedAt gives the date when this token was created + * + * @generated from field: google.protobuf.Timestamp issued_at = 7; + */ + issuedAt?: Timestamp; + /** + * TokenType describes the type of this token + * + * @generated from field: metalstack.api.v2.TokenType token_type = 8; + */ + tokenType: TokenType; + /** + * ProjectRoles associates a project id with the corresponding role of the token owner + * + * @generated from field: map project_roles = 9; + */ + projectRoles: { + [key: string]: ProjectRole; + }; + /** + * TenantRoles associates a tenant id with the corresponding role of the token owner + * + * @generated from field: map tenant_roles = 10; + */ + tenantRoles: { + [key: string]: TenantRole; + }; + /** + * AdminRole defines the admin role of the token owner + * + * @generated from field: optional metalstack.api.v2.AdminRole admin_role = 11; + */ + adminRole?: AdminRole; + /** + * InfraRole defines the infrastructure role of the token owner + * + * @generated from field: optional metalstack.api.v2.InfraRole infra_role = 12; + */ + infraRole?: InfraRole; +}; +/** + * Describes the message metalstack.api.v2.Token. + * Use `create(TokenSchema)` to create a new message. + */ +export declare const TokenSchema: GenMessage; +/** + * TokenServiceCreateRequest is the request payload to create a token + * + * @generated from message metalstack.api.v2.TokenServiceCreateRequest + */ +export type TokenServiceCreateRequest = Message<"metalstack.api.v2.TokenServiceCreateRequest"> & { + /** + * Description of the token + * + * @generated from field: string description = 1; + */ + description: string; + /** + * Permissions is a list of service methods this token can be used for + * + * @generated from field: repeated metalstack.api.v2.MethodPermission permissions = 2; + */ + permissions: MethodPermission[]; + /** + * Expires gives the duration since now, after which this token can not be used anymore + * + * @generated from field: google.protobuf.Duration expires = 4; + */ + expires?: Duration; + /** + * ProjectRoles associates a project id with the corresponding role of the token owner + * + * @generated from field: map project_roles = 5; + */ + projectRoles: { + [key: string]: ProjectRole; + }; + /** + * TenantRoles associates a tenant id with the corresponding role of the token owner + * + * @generated from field: map tenant_roles = 6; + */ + tenantRoles: { + [key: string]: TenantRole; + }; + /** + * AdminRole defines the admin role of the token owner + * + * @generated from field: optional metalstack.api.v2.AdminRole admin_role = 7; + */ + adminRole?: AdminRole; + /** + * InfraRole defines the infrastructure role of the token owner + * + * @generated from field: optional metalstack.api.v2.InfraRole infra_role = 8; + */ + infraRole?: InfraRole; + /** + * Labels on this token + * + * @generated from field: metalstack.api.v2.Labels labels = 9; + */ + labels?: Labels; +}; +/** + * Describes the message metalstack.api.v2.TokenServiceCreateRequest. + * Use `create(TokenServiceCreateRequestSchema)` to create a new message. + */ +export declare const TokenServiceCreateRequestSchema: GenMessage; +/** + * MethodPermission is a mapping from a subject/project to a service method + * + * @generated from message metalstack.api.v2.MethodPermission + */ +export type MethodPermission = Message<"metalstack.api.v2.MethodPermission"> & { + /** + * Subject maybe either the project or the tenant + * for which the methods should be allowed + * + * asterisk (*) can be specified to match any subject + * empty string ("") can be specified for requests that do not require a subject, e.g. partition list + * otherwise either a projectid or a tenant login should be specified + * + * @generated from field: string subject = 1; + */ + subject: string; + /** + * Methods which should be accessible + * + * @generated from field: repeated string methods = 2; + */ + methods: string[]; +}; +/** + * Describes the message metalstack.api.v2.MethodPermission. + * Use `create(MethodPermissionSchema)` to create a new message. + */ +export declare const MethodPermissionSchema: GenMessage; +/** + * TokenServiceCreateResponse is the response payload of a token create request + * + * @generated from message metalstack.api.v2.TokenServiceCreateResponse + */ +export type TokenServiceCreateResponse = Message<"metalstack.api.v2.TokenServiceCreateResponse"> & { + /** + * Token which was created + * + * @generated from field: metalstack.api.v2.Token token = 1; + */ + token?: Token; + /** + * Secret is the body if the jwt token, should be used in api requests as bearer token + * + * @generated from field: string secret = 2; + */ + secret: string; +}; +/** + * Describes the message metalstack.api.v2.TokenServiceCreateResponse. + * Use `create(TokenServiceCreateResponseSchema)` to create a new message. + */ +export declare const TokenServiceCreateResponseSchema: GenMessage; +/** + * TokenServiceListRequest is the request payload to list tokens + * + * @generated from message metalstack.api.v2.TokenServiceListRequest + */ +export type TokenServiceListRequest = Message<"metalstack.api.v2.TokenServiceListRequest"> & {}; +/** + * Describes the message metalstack.api.v2.TokenServiceListRequest. + * Use `create(TokenServiceListRequestSchema)` to create a new message. + */ +export declare const TokenServiceListRequestSchema: GenMessage; +/** + * TokenServiceListResponse is the response payload of a token list request + * + * @generated from message metalstack.api.v2.TokenServiceListResponse + */ +export type TokenServiceListResponse = Message<"metalstack.api.v2.TokenServiceListResponse"> & { + /** + * Tokens is a list of tokens without the secrets + * + * @generated from field: repeated metalstack.api.v2.Token tokens = 1; + */ + tokens: Token[]; +}; +/** + * Describes the message metalstack.api.v2.TokenServiceListResponse. + * Use `create(TokenServiceListResponseSchema)` to create a new message. + */ +export declare const TokenServiceListResponseSchema: GenMessage; +/** + * TokenServiceRevokeRequest is the request payload of a token revoke request + * + * @generated from message metalstack.api.v2.TokenServiceRevokeRequest + */ +export type TokenServiceRevokeRequest = Message<"metalstack.api.v2.TokenServiceRevokeRequest"> & { + /** + * Uuid of the token to revoke + * + * @generated from field: string uuid = 1; + */ + uuid: string; +}; +/** + * Describes the message metalstack.api.v2.TokenServiceRevokeRequest. + * Use `create(TokenServiceRevokeRequestSchema)` to create a new message. + */ +export declare const TokenServiceRevokeRequestSchema: GenMessage; +/** + * TokenServiceRevokeResponse is the response payload of a token revoke request + * + * @generated from message metalstack.api.v2.TokenServiceRevokeResponse + */ +export type TokenServiceRevokeResponse = Message<"metalstack.api.v2.TokenServiceRevokeResponse"> & {}; +/** + * Describes the message metalstack.api.v2.TokenServiceRevokeResponse. + * Use `create(TokenServiceRevokeResponseSchema)` to create a new message. + */ +export declare const TokenServiceRevokeResponseSchema: GenMessage; +/** + * TokenServiceUpdateRequest is the request payload of a token update request + * + * @generated from message metalstack.api.v2.TokenServiceUpdateRequest + */ +export type TokenServiceUpdateRequest = Message<"metalstack.api.v2.TokenServiceUpdateRequest"> & { + /** + * Uuid of the token to update + * + * @generated from field: string uuid = 1; + */ + uuid: string; + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * TokenUpdate is not guarded with optlock in the backend + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + /** + * Description is a user given description of this token. + * + * @generated from field: optional string description = 3; + */ + description?: string; + /** + * Permissions is a list of service methods this token can be used for + * + * @generated from field: repeated metalstack.api.v2.MethodPermission permissions = 4; + */ + permissions: MethodPermission[]; + /** + * ProjectRoles associates a project id with the corresponding role of the token owner + * + * @generated from field: map project_roles = 5; + */ + projectRoles: { + [key: string]: ProjectRole; + }; + /** + * TenantRoles associates a tenant id with the corresponding role of the token owner + * + * @generated from field: map tenant_roles = 6; + */ + tenantRoles: { + [key: string]: TenantRole; + }; + /** + * AdminRole defines the admin role of the token owner + * + * @generated from field: optional metalstack.api.v2.AdminRole admin_role = 7; + */ + adminRole?: AdminRole; + /** + * InfraRole defines the infrastructure role of the token owner + * + * @generated from field: optional metalstack.api.v2.InfraRole infra_role = 8; + */ + infraRole?: InfraRole; + /** + * Labels on this token + * + * @generated from field: metalstack.api.v2.UpdateLabels labels = 9; + */ + labels?: UpdateLabels; +}; +/** + * Describes the message metalstack.api.v2.TokenServiceUpdateRequest. + * Use `create(TokenServiceUpdateRequestSchema)` to create a new message. + */ +export declare const TokenServiceUpdateRequestSchema: GenMessage; +/** + * TokenServiceUpdateResponse is the response payload of a token update request + * + * @generated from message metalstack.api.v2.TokenServiceUpdateResponse + */ +export type TokenServiceUpdateResponse = Message<"metalstack.api.v2.TokenServiceUpdateResponse"> & { + /** + * Token is the updated token + * + * @generated from field: metalstack.api.v2.Token token = 1; + */ + token?: Token; +}; +/** + * Describes the message metalstack.api.v2.TokenServiceUpdateResponse. + * Use `create(TokenServiceUpdateResponseSchema)` to create a new message. + */ +export declare const TokenServiceUpdateResponseSchema: GenMessage; +/** + * TokenServiceGetRequest is the request payload of a token get request + * + * @generated from message metalstack.api.v2.TokenServiceGetRequest + */ +export type TokenServiceGetRequest = Message<"metalstack.api.v2.TokenServiceGetRequest"> & { + /** + * Uuid of the token to get + * + * @generated from field: string uuid = 1; + */ + uuid: string; +}; +/** + * Describes the message metalstack.api.v2.TokenServiceGetRequest. + * Use `create(TokenServiceGetRequestSchema)` to create a new message. + */ +export declare const TokenServiceGetRequestSchema: GenMessage; +/** + * TokenServiceGetResponse is the response payload of a token get request + * + * @generated from message metalstack.api.v2.TokenServiceGetResponse + */ +export type TokenServiceGetResponse = Message<"metalstack.api.v2.TokenServiceGetResponse"> & { + /** + * Token is the token + * + * @generated from field: metalstack.api.v2.Token token = 1; + */ + token?: Token; +}; +/** + * Describes the message metalstack.api.v2.TokenServiceGetResponse. + * Use `create(TokenServiceGetResponseSchema)` to create a new message. + */ +export declare const TokenServiceGetResponseSchema: GenMessage; +/** + * TokenServiceRefreshRequest is the request payload of a token refresh request + * Permissions, Roles and Expiration duration and all other properties are inherited from the calling token. + * The expiration duration will be calculated from the existing token (exp - iat) + * + * @generated from message metalstack.api.v2.TokenServiceRefreshRequest + */ +export type TokenServiceRefreshRequest = Message<"metalstack.api.v2.TokenServiceRefreshRequest"> & {}; +/** + * Describes the message metalstack.api.v2.TokenServiceRefreshRequest. + * Use `create(TokenServiceRefreshRequestSchema)` to create a new message. + */ +export declare const TokenServiceRefreshRequestSchema: GenMessage; +/** + * TokenServiceRefreshResponse is the response payload of a token refresh request + * + * @generated from message metalstack.api.v2.TokenServiceRefreshResponse + */ +export type TokenServiceRefreshResponse = Message<"metalstack.api.v2.TokenServiceRefreshResponse"> & { + /** + * Token which was refreshed + * + * @generated from field: metalstack.api.v2.Token token = 1; + */ + token?: Token; + /** + * Secret is the body if the jwt token, should be used in api requests as bearer token + * + * @generated from field: string secret = 2; + */ + secret: string; +}; +/** + * Describes the message metalstack.api.v2.TokenServiceRefreshResponse. + * Use `create(TokenServiceRefreshResponseSchema)` to create a new message. + */ +export declare const TokenServiceRefreshResponseSchema: GenMessage; +/** + * TokenType specifies different use cases of tokens + * + * @generated from enum metalstack.api.v2.TokenType + */ +export declare enum TokenType { + /** + * TOKEN_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: TOKEN_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * TOKEN_TYPE_API is a token for api usage + * + * @generated from enum value: TOKEN_TYPE_API = 1; + */ + API = 1, + /** + * TOKEN_TYPE_USER is a token to access the api with cli, a web application or other user induced actions. + * + * @generated from enum value: TOKEN_TYPE_USER = 2; + */ + USER = 2 +} +/** + * Describes the enum metalstack.api.v2.TokenType. + */ +export declare const TokenTypeSchema: GenEnum; +/** + * TokenService serves token related functions + * + * @generated from service metalstack.api.v2.TokenService + */ +export declare const TokenService: GenService<{ + /** + * Get a token + * + * @generated from rpc metalstack.api.v2.TokenService.Get + */ + get: { + methodKind: "unary"; + input: typeof TokenServiceGetRequestSchema; + output: typeof TokenServiceGetResponseSchema; + }; + /** + * Create a token to authenticate against the platform, the secret will be only visible in the response. + * + * @generated from rpc metalstack.api.v2.TokenService.Create + */ + create: { + methodKind: "unary"; + input: typeof TokenServiceCreateRequestSchema; + output: typeof TokenServiceCreateResponseSchema; + }; + /** + * Update a token + * + * @generated from rpc metalstack.api.v2.TokenService.Update + */ + update: { + methodKind: "unary"; + input: typeof TokenServiceUpdateRequestSchema; + output: typeof TokenServiceUpdateResponseSchema; + }; + /** + * List all your tokens + * + * @generated from rpc metalstack.api.v2.TokenService.List + */ + list: { + methodKind: "unary"; + input: typeof TokenServiceListRequestSchema; + output: typeof TokenServiceListResponseSchema; + }; + /** + * Revoke a token, no further usage is possible afterwards + * + * @generated from rpc metalstack.api.v2.TokenService.Revoke + */ + revoke: { + methodKind: "unary"; + input: typeof TokenServiceRevokeRequestSchema; + output: typeof TokenServiceRevokeResponseSchema; + }; + /** + * Refresh a token, this will create a new token with the exact same permissions as the calling token contains + * + * @generated from rpc metalstack.api.v2.TokenService.Refresh + */ + refresh: { + methodKind: "unary"; + input: typeof TokenServiceRefreshRequestSchema; + output: typeof TokenServiceRefreshResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/token_pb.js b/js/metalstack/api/v2/token_pb.js new file mode 100644 index 00000000..bfe309cf --- /dev/null +++ b/js/metalstack/api/v2/token_pb.js @@ -0,0 +1,118 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/token.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +/** + * Describes the file metalstack/api/v2/token.proto. + */ +export const file_metalstack_api_v2_token = /*@__PURE__*/ fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi90b2tlbi5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIizQcKBVRva2VuEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhgKBHVzZXIYAiABKAlCCrpIB3IFEAIYgAQSJQoEbWV0YRgDIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEkMKC3Blcm1pc3Npb25zGAUgAygLMiMubWV0YWxzdGFjay5hcGkudjIuTWV0aG9kUGVybWlzc2lvbkIJukgGkgEDEPQDEisKB2V4cGlyZXMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWlzc3VlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOgoKdG9rZW5fdHlwZRgIIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuVHlwZUIIukgFggECEAESQQoNcHJvamVjdF9yb2xlcxgJIAMoCzIqLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuLlByb2plY3RSb2xlc0VudHJ5Ej8KDHRlbmFudF9yb2xlcxgKIAMoCzIpLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuLlRlbmFudFJvbGVzRW50cnkSPwoKYWRtaW5fcm9sZRgLIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZUIIukgFggECEAFIAIgBARI/CgppbmZyYV9yb2xlGAwgASgOMhwubWV0YWxzdGFjay5hcGkudjIuSW5mcmFSb2xlQgi6SAWCAQIQAUgBiAEBGlMKEVByb2plY3RSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlOgI4ARpRChBUZW5hbnRSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGU6AjgBOp8BukibARqYAQobdG9rZW4ucGVybWlzc2lvbnMudXNlcnRva2VuEil0b2tlbiB0eXBlIHVzZXIgbXVzdCBub3QgaGF2ZSBwZXJtaXNzaW9ucxpOKHRoaXMudG9rZW5fdHlwZSA9PSAyICYmIHRoaXMucGVybWlzc2lvbnMuc2l6ZSgpID09IDApIHx8IHRoaXMudG9rZW5fdHlwZSAhPSAyQg0KC19hZG1pbl9yb2xlQg0KC19pbmZyYV9yb2xlIo4GChlUb2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0EiAKC2Rlc2NyaXB0aW9uGAEgASgJQgu6SAhyBsizrrECARJCCgtwZXJtaXNzaW9ucxgCIAMoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFBlcm1pc3Npb25CCLpIBZIBAhBkEj4KB2V4cGlyZXMYBCABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CErpID6oBDBoFCIHnhA8yAwjYBBJrCg1wcm9qZWN0X3JvbGVzGAUgAygLMj4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdC5Qcm9qZWN0Um9sZXNFbnRyeUIUukgRmgEOIgVyA7ABASoFggECEAESawoMdGVuYW50X3JvbGVzGAYgAygLMj0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdC5UZW5hbnRSb2xlc0VudHJ5Qha6SBOaARAiB3IFEAMYgAEqBYIBAhABEj8KCmFkbWluX3JvbGUYByABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVCCLpIBYIBAhABSACIAQESPwoKaW5mcmFfcm9sZRgIIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZUIIukgFggECEAFIAYgBARIpCgZsYWJlbHMYCSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMaUwoRUHJvamVjdFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGU6AjgBGlEKEFRlbmFudFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZToCOAFCDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUiSQoQTWV0aG9kUGVybWlzc2lvbhIZCgdzdWJqZWN0GAEgASgJQgi6SAVyAxiAAhIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiVQoaVG9rZW5TZXJ2aWNlQ3JlYXRlUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbhIOCgZzZWNyZXQYAiABKAkiGQoXVG9rZW5TZXJ2aWNlTGlzdFJlcXVlc3QiRAoYVG9rZW5TZXJ2aWNlTGlzdFJlc3BvbnNlEigKBnRva2VucxgBIAMoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuIjMKGVRva2VuU2VydmljZVJldm9rZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQEiHAoaVG9rZW5TZXJ2aWNlUmV2b2tlUmVzcG9uc2UiswYKGVRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQASJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSACIAQESOAoLcGVybWlzc2lvbnMYBCADKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRob2RQZXJtaXNzaW9uEmsKDXByb2plY3Rfcm9sZXMYBSADKAsyPi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0LlByb2plY3RSb2xlc0VudHJ5QhS6SBGaAQ4iBXIDsAEBKgWCAQIQARJrCgx0ZW5hbnRfcm9sZXMYBiADKAsyPS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0LlRlbmFudFJvbGVzRW50cnlCFrpIE5oBECIHcgUQAxiAASoFggECEAESPwoKYWRtaW5fcm9sZRgHIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZUIIukgFggECEAFIAYgBARI/CgppbmZyYV9yb2xlGAggASgOMhwubWV0YWxzdGFjay5hcGkudjIuSW5mcmFSb2xlQgi6SAWCAQIQAUgCiAEBEi8KBmxhYmVscxgJIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVscxpTChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZToCOAEaUQoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlOgI4AUIOCgxfZGVzY3JpcHRpb25CDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUiRQoaVG9rZW5TZXJ2aWNlVXBkYXRlUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbiIwChZUb2tlblNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIkIKF1Rva2VuU2VydmljZUdldFJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4iHAoaVG9rZW5TZXJ2aWNlUmVmcmVzaFJlcXVlc3QiVgobVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4SDgoGc2VjcmV0GAIgASgJKlAKCVRva2VuVHlwZRIaChZUT0tFTl9UWVBFX1VOU1BFQ0lGSUVEEAASEgoOVE9LRU5fVFlQRV9BUEkQARITCg9UT0tFTl9UWVBFX1VTRVIQAjKQBQoMVG9rZW5TZXJ2aWNlEmIKA0dldBIpLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUdldFJlcXVlc3QaKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VHZXRSZXNwb25zZSIE2PMYAxJrCgZDcmVhdGUSLC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBNjzGAMSawoGVXBkYXRlEiwubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVVwZGF0ZVJlc3BvbnNlIgTY8xgDEmUKBExpc3QSKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VMaXN0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUxpc3RSZXNwb25zZSIE2PMYAxJrCgZSZXZva2USLC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VSZXZva2VSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmV2b2tlUmVzcG9uc2UiBNjzGAMSbgoHUmVmcmVzaBItLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVJlZnJlc2hSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlIgTY8xgDQsABChVjb20ubWV0YWxzdGFjay5hcGkudjJCClRva2VuUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); +/** + * Describes the message metalstack.api.v2.Token. + * Use `create(TokenSchema)` to create a new message. + */ +export const TokenSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 0); +/** + * Describes the message metalstack.api.v2.TokenServiceCreateRequest. + * Use `create(TokenServiceCreateRequestSchema)` to create a new message. + */ +export const TokenServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 1); +/** + * Describes the message metalstack.api.v2.MethodPermission. + * Use `create(MethodPermissionSchema)` to create a new message. + */ +export const MethodPermissionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 2); +/** + * Describes the message metalstack.api.v2.TokenServiceCreateResponse. + * Use `create(TokenServiceCreateResponseSchema)` to create a new message. + */ +export const TokenServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 3); +/** + * Describes the message metalstack.api.v2.TokenServiceListRequest. + * Use `create(TokenServiceListRequestSchema)` to create a new message. + */ +export const TokenServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 4); +/** + * Describes the message metalstack.api.v2.TokenServiceListResponse. + * Use `create(TokenServiceListResponseSchema)` to create a new message. + */ +export const TokenServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 5); +/** + * Describes the message metalstack.api.v2.TokenServiceRevokeRequest. + * Use `create(TokenServiceRevokeRequestSchema)` to create a new message. + */ +export const TokenServiceRevokeRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 6); +/** + * Describes the message metalstack.api.v2.TokenServiceRevokeResponse. + * Use `create(TokenServiceRevokeResponseSchema)` to create a new message. + */ +export const TokenServiceRevokeResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 7); +/** + * Describes the message metalstack.api.v2.TokenServiceUpdateRequest. + * Use `create(TokenServiceUpdateRequestSchema)` to create a new message. + */ +export const TokenServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 8); +/** + * Describes the message metalstack.api.v2.TokenServiceUpdateResponse. + * Use `create(TokenServiceUpdateResponseSchema)` to create a new message. + */ +export const TokenServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 9); +/** + * Describes the message metalstack.api.v2.TokenServiceGetRequest. + * Use `create(TokenServiceGetRequestSchema)` to create a new message. + */ +export const TokenServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 10); +/** + * Describes the message metalstack.api.v2.TokenServiceGetResponse. + * Use `create(TokenServiceGetResponseSchema)` to create a new message. + */ +export const TokenServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 11); +/** + * Describes the message metalstack.api.v2.TokenServiceRefreshRequest. + * Use `create(TokenServiceRefreshRequestSchema)` to create a new message. + */ +export const TokenServiceRefreshRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 12); +/** + * Describes the message metalstack.api.v2.TokenServiceRefreshResponse. + * Use `create(TokenServiceRefreshResponseSchema)` to create a new message. + */ +export const TokenServiceRefreshResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_token, 13); +/** + * TokenType specifies different use cases of tokens + * + * @generated from enum metalstack.api.v2.TokenType + */ +export var TokenType; +(function (TokenType) { + /** + * TOKEN_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: TOKEN_TYPE_UNSPECIFIED = 0; + */ + TokenType[TokenType["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * TOKEN_TYPE_API is a token for api usage + * + * @generated from enum value: TOKEN_TYPE_API = 1; + */ + TokenType[TokenType["API"] = 1] = "API"; + /** + * TOKEN_TYPE_USER is a token to access the api with cli, a web application or other user induced actions. + * + * @generated from enum value: TOKEN_TYPE_USER = 2; + */ + TokenType[TokenType["USER"] = 2] = "USER"; +})(TokenType || (TokenType = {})); +/** + * Describes the enum metalstack.api.v2.TokenType. + */ +export const TokenTypeSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_token, 0); +/** + * TokenService serves token related functions + * + * @generated from service metalstack.api.v2.TokenService + */ +export const TokenService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_token, 0); diff --git a/js/metalstack/api/v2/token_pb.ts b/js/metalstack/api/v2/token_pb.ts new file mode 100644 index 00000000..041a11de --- /dev/null +++ b/js/metalstack/api/v2/token_pb.ts @@ -0,0 +1,621 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/token.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Duration, Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { AdminRole, InfraRole, Labels, Meta, ProjectRole, TenantRole, UpdateLabels, UpdateMeta } from "./common_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/token.proto. + */ +export const file_metalstack_api_v2_token: GenFile = /*@__PURE__*/ + fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi90b2tlbi5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIizQcKBVRva2VuEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhgKBHVzZXIYAiABKAlCCrpIB3IFEAIYgAQSJQoEbWV0YRgDIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEkMKC3Blcm1pc3Npb25zGAUgAygLMiMubWV0YWxzdGFjay5hcGkudjIuTWV0aG9kUGVybWlzc2lvbkIJukgGkgEDEPQDEisKB2V4cGlyZXMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWlzc3VlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOgoKdG9rZW5fdHlwZRgIIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuVHlwZUIIukgFggECEAESQQoNcHJvamVjdF9yb2xlcxgJIAMoCzIqLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuLlByb2plY3RSb2xlc0VudHJ5Ej8KDHRlbmFudF9yb2xlcxgKIAMoCzIpLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuLlRlbmFudFJvbGVzRW50cnkSPwoKYWRtaW5fcm9sZRgLIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZUIIukgFggECEAFIAIgBARI/CgppbmZyYV9yb2xlGAwgASgOMhwubWV0YWxzdGFjay5hcGkudjIuSW5mcmFSb2xlQgi6SAWCAQIQAUgBiAEBGlMKEVByb2plY3RSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlOgI4ARpRChBUZW5hbnRSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGU6AjgBOp8BukibARqYAQobdG9rZW4ucGVybWlzc2lvbnMudXNlcnRva2VuEil0b2tlbiB0eXBlIHVzZXIgbXVzdCBub3QgaGF2ZSBwZXJtaXNzaW9ucxpOKHRoaXMudG9rZW5fdHlwZSA9PSAyICYmIHRoaXMucGVybWlzc2lvbnMuc2l6ZSgpID09IDApIHx8IHRoaXMudG9rZW5fdHlwZSAhPSAyQg0KC19hZG1pbl9yb2xlQg0KC19pbmZyYV9yb2xlIo4GChlUb2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0EiAKC2Rlc2NyaXB0aW9uGAEgASgJQgu6SAhyBsizrrECARJCCgtwZXJtaXNzaW9ucxgCIAMoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFBlcm1pc3Npb25CCLpIBZIBAhBkEj4KB2V4cGlyZXMYBCABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CErpID6oBDBoFCIHnhA8yAwjYBBJrCg1wcm9qZWN0X3JvbGVzGAUgAygLMj4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdC5Qcm9qZWN0Um9sZXNFbnRyeUIUukgRmgEOIgVyA7ABASoFggECEAESawoMdGVuYW50X3JvbGVzGAYgAygLMj0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdC5UZW5hbnRSb2xlc0VudHJ5Qha6SBOaARAiB3IFEAMYgAEqBYIBAhABEj8KCmFkbWluX3JvbGUYByABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVCCLpIBYIBAhABSACIAQESPwoKaW5mcmFfcm9sZRgIIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZUIIukgFggECEAFIAYgBARIpCgZsYWJlbHMYCSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMaUwoRUHJvamVjdFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGU6AjgBGlEKEFRlbmFudFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZToCOAFCDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUiSQoQTWV0aG9kUGVybWlzc2lvbhIZCgdzdWJqZWN0GAEgASgJQgi6SAVyAxiAAhIaCgdtZXRob2RzGAIgAygJQgm6SAaSAQMQ9AMiVQoaVG9rZW5TZXJ2aWNlQ3JlYXRlUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbhIOCgZzZWNyZXQYAiABKAkiGQoXVG9rZW5TZXJ2aWNlTGlzdFJlcXVlc3QiRAoYVG9rZW5TZXJ2aWNlTGlzdFJlc3BvbnNlEigKBnRva2VucxgBIAMoCzIYLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuIjMKGVRva2VuU2VydmljZVJldm9rZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQEiHAoaVG9rZW5TZXJ2aWNlUmV2b2tlUmVzcG9uc2UiswYKGVRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQASJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSACIAQESOAoLcGVybWlzc2lvbnMYBCADKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRob2RQZXJtaXNzaW9uEmsKDXByb2plY3Rfcm9sZXMYBSADKAsyPi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0LlByb2plY3RSb2xlc0VudHJ5QhS6SBGaAQ4iBXIDsAEBKgWCAQIQARJrCgx0ZW5hbnRfcm9sZXMYBiADKAsyPS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0LlRlbmFudFJvbGVzRW50cnlCFrpIE5oBECIHcgUQAxiAASoFggECEAESPwoKYWRtaW5fcm9sZRgHIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZUIIukgFggECEAFIAYgBARI/CgppbmZyYV9yb2xlGAggASgOMhwubWV0YWxzdGFjay5hcGkudjIuSW5mcmFSb2xlQgi6SAWCAQIQAUgCiAEBEi8KBmxhYmVscxgJIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVscxpTChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZToCOAEaUQoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlOgI4AUIOCgxfZGVzY3JpcHRpb25CDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUiRQoaVG9rZW5TZXJ2aWNlVXBkYXRlUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbiIwChZUb2tlblNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIkIKF1Rva2VuU2VydmljZUdldFJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4iHAoaVG9rZW5TZXJ2aWNlUmVmcmVzaFJlcXVlc3QiVgobVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4SDgoGc2VjcmV0GAIgASgJKlAKCVRva2VuVHlwZRIaChZUT0tFTl9UWVBFX1VOU1BFQ0lGSUVEEAASEgoOVE9LRU5fVFlQRV9BUEkQARITCg9UT0tFTl9UWVBFX1VTRVIQAjKQBQoMVG9rZW5TZXJ2aWNlEmIKA0dldBIpLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUdldFJlcXVlc3QaKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VHZXRSZXNwb25zZSIE2PMYAxJrCgZDcmVhdGUSLC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBNjzGAMSawoGVXBkYXRlEiwubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVVwZGF0ZVJlc3BvbnNlIgTY8xgDEmUKBExpc3QSKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VMaXN0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUxpc3RSZXNwb25zZSIE2PMYAxJrCgZSZXZva2USLC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VSZXZva2VSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmV2b2tlUmVzcG9uc2UiBNjzGAMSbgoHUmVmcmVzaBItLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVJlZnJlc2hSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlIgTY8xgDQsABChVjb20ubWV0YWxzdGFjay5hcGkudjJCClRva2VuUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]); + +/** + * Token generates a jwt authentication token to access the api + * + * There are two different types of tokens, api- and user- tokens + * + * A user token is used to authenticate end user requests for example from a cli. + * The configured roles in a user token are expanded in the api server + * based on the memberships in other projects and tenants based on the role granted there. + * User tokens will never contain permissions. + * Permissions are always derived from the tenant and project roles and memberships. + * + * The api token should be used to authenticate services. + * In contrast to a user token, the api token permissions and roles apply as configured during the token create process. + * + * @generated from message metalstack.api.v2.Token + */ +export type Token = Message<"metalstack.api.v2.Token"> & { + /** + * Uuid of the jwt token, used to reference it by revoke + * + * @generated from field: string uuid = 1; + */ + uuid: string; + + /** + * User who created this token + * + * @generated from field: string user = 2; + */ + user: string; + + /** + * Meta for this token + * + * @generated from field: metalstack.api.v2.Meta meta = 3; + */ + meta?: Meta; + + /** + * Description is a user given description of this token. + * + * @generated from field: string description = 4; + */ + description: string; + + /** + * Permissions is a list of service methods this token can be used for + * + * @generated from field: repeated metalstack.api.v2.MethodPermission permissions = 5; + */ + permissions: MethodPermission[]; + + /** + * Expires gives the date in the future after which this token can not be used anymore + * + * @generated from field: google.protobuf.Timestamp expires = 6; + */ + expires?: Timestamp; + + /** + * IssuedAt gives the date when this token was created + * + * @generated from field: google.protobuf.Timestamp issued_at = 7; + */ + issuedAt?: Timestamp; + + /** + * TokenType describes the type of this token + * + * @generated from field: metalstack.api.v2.TokenType token_type = 8; + */ + tokenType: TokenType; + + /** + * ProjectRoles associates a project id with the corresponding role of the token owner + * + * @generated from field: map project_roles = 9; + */ + projectRoles: { [key: string]: ProjectRole }; + + /** + * TenantRoles associates a tenant id with the corresponding role of the token owner + * + * @generated from field: map tenant_roles = 10; + */ + tenantRoles: { [key: string]: TenantRole }; + + /** + * AdminRole defines the admin role of the token owner + * + * @generated from field: optional metalstack.api.v2.AdminRole admin_role = 11; + */ + adminRole?: AdminRole; + + /** + * InfraRole defines the infrastructure role of the token owner + * + * @generated from field: optional metalstack.api.v2.InfraRole infra_role = 12; + */ + infraRole?: InfraRole; +}; + +/** + * Describes the message metalstack.api.v2.Token. + * Use `create(TokenSchema)` to create a new message. + */ +export const TokenSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 0); + +/** + * TokenServiceCreateRequest is the request payload to create a token + * + * @generated from message metalstack.api.v2.TokenServiceCreateRequest + */ +export type TokenServiceCreateRequest = Message<"metalstack.api.v2.TokenServiceCreateRequest"> & { + /** + * Description of the token + * + * @generated from field: string description = 1; + */ + description: string; + + /** + * Permissions is a list of service methods this token can be used for + * + * @generated from field: repeated metalstack.api.v2.MethodPermission permissions = 2; + */ + permissions: MethodPermission[]; + + /** + * Expires gives the duration since now, after which this token can not be used anymore + * + * @generated from field: google.protobuf.Duration expires = 4; + */ + expires?: Duration; + + /** + * ProjectRoles associates a project id with the corresponding role of the token owner + * + * @generated from field: map project_roles = 5; + */ + projectRoles: { [key: string]: ProjectRole }; + + /** + * TenantRoles associates a tenant id with the corresponding role of the token owner + * + * @generated from field: map tenant_roles = 6; + */ + tenantRoles: { [key: string]: TenantRole }; + + /** + * AdminRole defines the admin role of the token owner + * + * @generated from field: optional metalstack.api.v2.AdminRole admin_role = 7; + */ + adminRole?: AdminRole; + + /** + * InfraRole defines the infrastructure role of the token owner + * + * @generated from field: optional metalstack.api.v2.InfraRole infra_role = 8; + */ + infraRole?: InfraRole; + + /** + * Labels on this token + * + * @generated from field: metalstack.api.v2.Labels labels = 9; + */ + labels?: Labels; +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceCreateRequest. + * Use `create(TokenServiceCreateRequestSchema)` to create a new message. + */ +export const TokenServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 1); + +/** + * MethodPermission is a mapping from a subject/project to a service method + * + * @generated from message metalstack.api.v2.MethodPermission + */ +export type MethodPermission = Message<"metalstack.api.v2.MethodPermission"> & { + /** + * Subject maybe either the project or the tenant + * for which the methods should be allowed + * + * asterisk (*) can be specified to match any subject + * empty string ("") can be specified for requests that do not require a subject, e.g. partition list + * otherwise either a projectid or a tenant login should be specified + * + * @generated from field: string subject = 1; + */ + subject: string; + + /** + * Methods which should be accessible + * + * @generated from field: repeated string methods = 2; + */ + methods: string[]; +}; + +/** + * Describes the message metalstack.api.v2.MethodPermission. + * Use `create(MethodPermissionSchema)` to create a new message. + */ +export const MethodPermissionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 2); + +/** + * TokenServiceCreateResponse is the response payload of a token create request + * + * @generated from message metalstack.api.v2.TokenServiceCreateResponse + */ +export type TokenServiceCreateResponse = Message<"metalstack.api.v2.TokenServiceCreateResponse"> & { + /** + * Token which was created + * + * @generated from field: metalstack.api.v2.Token token = 1; + */ + token?: Token; + + /** + * Secret is the body if the jwt token, should be used in api requests as bearer token + * + * @generated from field: string secret = 2; + */ + secret: string; +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceCreateResponse. + * Use `create(TokenServiceCreateResponseSchema)` to create a new message. + */ +export const TokenServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 3); + +/** + * TokenServiceListRequest is the request payload to list tokens + * + * @generated from message metalstack.api.v2.TokenServiceListRequest + */ +export type TokenServiceListRequest = Message<"metalstack.api.v2.TokenServiceListRequest"> & { +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceListRequest. + * Use `create(TokenServiceListRequestSchema)` to create a new message. + */ +export const TokenServiceListRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 4); + +/** + * TokenServiceListResponse is the response payload of a token list request + * + * @generated from message metalstack.api.v2.TokenServiceListResponse + */ +export type TokenServiceListResponse = Message<"metalstack.api.v2.TokenServiceListResponse"> & { + /** + * Tokens is a list of tokens without the secrets + * + * @generated from field: repeated metalstack.api.v2.Token tokens = 1; + */ + tokens: Token[]; +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceListResponse. + * Use `create(TokenServiceListResponseSchema)` to create a new message. + */ +export const TokenServiceListResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 5); + +/** + * TokenServiceRevokeRequest is the request payload of a token revoke request + * + * @generated from message metalstack.api.v2.TokenServiceRevokeRequest + */ +export type TokenServiceRevokeRequest = Message<"metalstack.api.v2.TokenServiceRevokeRequest"> & { + /** + * Uuid of the token to revoke + * + * @generated from field: string uuid = 1; + */ + uuid: string; +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceRevokeRequest. + * Use `create(TokenServiceRevokeRequestSchema)` to create a new message. + */ +export const TokenServiceRevokeRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 6); + +/** + * TokenServiceRevokeResponse is the response payload of a token revoke request + * + * @generated from message metalstack.api.v2.TokenServiceRevokeResponse + */ +export type TokenServiceRevokeResponse = Message<"metalstack.api.v2.TokenServiceRevokeResponse"> & { +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceRevokeResponse. + * Use `create(TokenServiceRevokeResponseSchema)` to create a new message. + */ +export const TokenServiceRevokeResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 7); + +/** + * TokenServiceUpdateRequest is the request payload of a token update request + * + * @generated from message metalstack.api.v2.TokenServiceUpdateRequest + */ +export type TokenServiceUpdateRequest = Message<"metalstack.api.v2.TokenServiceUpdateRequest"> & { + /** + * Uuid of the token to update + * + * @generated from field: string uuid = 1; + */ + uuid: string; + + /** + * UpdateMeta contains the timestamp and strategy to be used in this update request + * TokenUpdate is not guarded with optlock in the backend + * + * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 2; + */ + updateMeta?: UpdateMeta; + + /** + * Description is a user given description of this token. + * + * @generated from field: optional string description = 3; + */ + description?: string; + + /** + * Permissions is a list of service methods this token can be used for + * + * @generated from field: repeated metalstack.api.v2.MethodPermission permissions = 4; + */ + permissions: MethodPermission[]; + + /** + * ProjectRoles associates a project id with the corresponding role of the token owner + * + * @generated from field: map project_roles = 5; + */ + projectRoles: { [key: string]: ProjectRole }; + + /** + * TenantRoles associates a tenant id with the corresponding role of the token owner + * + * @generated from field: map tenant_roles = 6; + */ + tenantRoles: { [key: string]: TenantRole }; + + /** + * AdminRole defines the admin role of the token owner + * + * @generated from field: optional metalstack.api.v2.AdminRole admin_role = 7; + */ + adminRole?: AdminRole; + + /** + * InfraRole defines the infrastructure role of the token owner + * + * @generated from field: optional metalstack.api.v2.InfraRole infra_role = 8; + */ + infraRole?: InfraRole; + + /** + * Labels on this token + * + * @generated from field: metalstack.api.v2.UpdateLabels labels = 9; + */ + labels?: UpdateLabels; +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceUpdateRequest. + * Use `create(TokenServiceUpdateRequestSchema)` to create a new message. + */ +export const TokenServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 8); + +/** + * TokenServiceUpdateResponse is the response payload of a token update request + * + * @generated from message metalstack.api.v2.TokenServiceUpdateResponse + */ +export type TokenServiceUpdateResponse = Message<"metalstack.api.v2.TokenServiceUpdateResponse"> & { + /** + * Token is the updated token + * + * @generated from field: metalstack.api.v2.Token token = 1; + */ + token?: Token; +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceUpdateResponse. + * Use `create(TokenServiceUpdateResponseSchema)` to create a new message. + */ +export const TokenServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 9); + +/** + * TokenServiceGetRequest is the request payload of a token get request + * + * @generated from message metalstack.api.v2.TokenServiceGetRequest + */ +export type TokenServiceGetRequest = Message<"metalstack.api.v2.TokenServiceGetRequest"> & { + /** + * Uuid of the token to get + * + * @generated from field: string uuid = 1; + */ + uuid: string; +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceGetRequest. + * Use `create(TokenServiceGetRequestSchema)` to create a new message. + */ +export const TokenServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 10); + +/** + * TokenServiceGetResponse is the response payload of a token get request + * + * @generated from message metalstack.api.v2.TokenServiceGetResponse + */ +export type TokenServiceGetResponse = Message<"metalstack.api.v2.TokenServiceGetResponse"> & { + /** + * Token is the token + * + * @generated from field: metalstack.api.v2.Token token = 1; + */ + token?: Token; +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceGetResponse. + * Use `create(TokenServiceGetResponseSchema)` to create a new message. + */ +export const TokenServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 11); + +/** + * TokenServiceRefreshRequest is the request payload of a token refresh request + * Permissions, Roles and Expiration duration and all other properties are inherited from the calling token. + * The expiration duration will be calculated from the existing token (exp - iat) + * + * @generated from message metalstack.api.v2.TokenServiceRefreshRequest + */ +export type TokenServiceRefreshRequest = Message<"metalstack.api.v2.TokenServiceRefreshRequest"> & { +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceRefreshRequest. + * Use `create(TokenServiceRefreshRequestSchema)` to create a new message. + */ +export const TokenServiceRefreshRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 12); + +/** + * TokenServiceRefreshResponse is the response payload of a token refresh request + * + * @generated from message metalstack.api.v2.TokenServiceRefreshResponse + */ +export type TokenServiceRefreshResponse = Message<"metalstack.api.v2.TokenServiceRefreshResponse"> & { + /** + * Token which was refreshed + * + * @generated from field: metalstack.api.v2.Token token = 1; + */ + token?: Token; + + /** + * Secret is the body if the jwt token, should be used in api requests as bearer token + * + * @generated from field: string secret = 2; + */ + secret: string; +}; + +/** + * Describes the message metalstack.api.v2.TokenServiceRefreshResponse. + * Use `create(TokenServiceRefreshResponseSchema)` to create a new message. + */ +export const TokenServiceRefreshResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_token, 13); + +/** + * TokenType specifies different use cases of tokens + * + * @generated from enum metalstack.api.v2.TokenType + */ +export enum TokenType { + /** + * TOKEN_TYPE_UNSPECIFIED is not specified + * + * @generated from enum value: TOKEN_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * TOKEN_TYPE_API is a token for api usage + * + * @generated from enum value: TOKEN_TYPE_API = 1; + */ + API = 1, + + /** + * TOKEN_TYPE_USER is a token to access the api with cli, a web application or other user induced actions. + * + * @generated from enum value: TOKEN_TYPE_USER = 2; + */ + USER = 2, +} + +/** + * Describes the enum metalstack.api.v2.TokenType. + */ +export const TokenTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_api_v2_token, 0); + +/** + * TokenService serves token related functions + * + * @generated from service metalstack.api.v2.TokenService + */ +export const TokenService: GenService<{ + /** + * Get a token + * + * @generated from rpc metalstack.api.v2.TokenService.Get + */ + get: { + methodKind: "unary"; + input: typeof TokenServiceGetRequestSchema; + output: typeof TokenServiceGetResponseSchema; + }, + /** + * Create a token to authenticate against the platform, the secret will be only visible in the response. + * + * @generated from rpc metalstack.api.v2.TokenService.Create + */ + create: { + methodKind: "unary"; + input: typeof TokenServiceCreateRequestSchema; + output: typeof TokenServiceCreateResponseSchema; + }, + /** + * Update a token + * + * @generated from rpc metalstack.api.v2.TokenService.Update + */ + update: { + methodKind: "unary"; + input: typeof TokenServiceUpdateRequestSchema; + output: typeof TokenServiceUpdateResponseSchema; + }, + /** + * List all your tokens + * + * @generated from rpc metalstack.api.v2.TokenService.List + */ + list: { + methodKind: "unary"; + input: typeof TokenServiceListRequestSchema; + output: typeof TokenServiceListResponseSchema; + }, + /** + * Revoke a token, no further usage is possible afterwards + * + * @generated from rpc metalstack.api.v2.TokenService.Revoke + */ + revoke: { + methodKind: "unary"; + input: typeof TokenServiceRevokeRequestSchema; + output: typeof TokenServiceRevokeResponseSchema; + }, + /** + * Refresh a token, this will create a new token with the exact same permissions as the calling token contains + * + * @generated from rpc metalstack.api.v2.TokenService.Refresh + */ + refresh: { + methodKind: "unary"; + input: typeof TokenServiceRefreshRequestSchema; + output: typeof TokenServiceRefreshResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_token, 0); + diff --git a/js/metalstack/api/v2/user_pb.d.ts b/js/metalstack/api/v2/user_pb.d.ts new file mode 100644 index 00000000..8cbff9d1 --- /dev/null +++ b/js/metalstack/api/v2/user_pb.d.ts @@ -0,0 +1,108 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Project } from "./project_pb"; +import type { Tenant } from "./tenant_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/user.proto. + */ +export declare const file_metalstack_api_v2_user: GenFile; +/** + * User is a end user of the platform + * + * @generated from message metalstack.api.v2.User + */ +export type User = Message<"metalstack.api.v2.User"> & { + /** + * Login the login at the provider + * + * @generated from field: string login = 1; + */ + login: string; + /** + * Name of the user + * + * @generated from field: string name = 2; + */ + name: string; + /** + * Email of the user + * + * @generated from field: string email = 3; + */ + email: string; + /** + * AvatarUrl of the user + * + * @generated from field: string avatar_url = 5; + */ + avatarUrl: string; + /** + * Tenants the user belongs to + * + * @generated from field: repeated metalstack.api.v2.Tenant tenants = 8; + */ + tenants: Tenant[]; + /** + * Projects the user belongs to + * + * @generated from field: repeated metalstack.api.v2.Project projects = 9; + */ + projects: Project[]; + /** + * DefaultTenant this user belongs to + * + * @generated from field: metalstack.api.v2.Tenant default_tenant = 10; + */ + defaultTenant?: Tenant; +}; +/** + * Describes the message metalstack.api.v2.User. + * Use `create(UserSchema)` to create a new message. + */ +export declare const UserSchema: GenMessage; +/** + * UserServiceGetRequest is the request to get the user + * + * @generated from message metalstack.api.v2.UserServiceGetRequest + */ +export type UserServiceGetRequest = Message<"metalstack.api.v2.UserServiceGetRequest"> & {}; +/** + * Describes the message metalstack.api.v2.UserServiceGetRequest. + * Use `create(UserServiceGetRequestSchema)` to create a new message. + */ +export declare const UserServiceGetRequestSchema: GenMessage; +/** + * UserServiceGetResponse the response when userservice get request was called + * + * @generated from message metalstack.api.v2.UserServiceGetResponse + */ +export type UserServiceGetResponse = Message<"metalstack.api.v2.UserServiceGetResponse"> & { + /** + * User is the user + * + * @generated from field: metalstack.api.v2.User user = 1; + */ + user?: User; +}; +/** + * Describes the message metalstack.api.v2.UserServiceGetResponse. + * Use `create(UserServiceGetResponseSchema)` to create a new message. + */ +export declare const UserServiceGetResponseSchema: GenMessage; +/** + * UserService exposes rpc calls for users + * + * @generated from service metalstack.api.v2.UserService + */ +export declare const UserService: GenService<{ + /** + * Get a User + * + * @generated from rpc metalstack.api.v2.UserService.Get + */ + get: { + methodKind: "unary"; + input: typeof UserServiceGetRequestSchema; + output: typeof UserServiceGetResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/user_pb.js b/js/metalstack/api/v2/user_pb.js new file mode 100644 index 00000000..d32f7263 --- /dev/null +++ b/js/metalstack/api/v2/user_pb.js @@ -0,0 +1,34 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/user.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import { file_metalstack_api_v2_project } from "./project_pb"; +import { file_metalstack_api_v2_tenant } from "./tenant_pb"; +/** + * Describes the file metalstack/api/v2/user.proto. + */ +export const file_metalstack_api_v2_user = /*@__PURE__*/ fileDesc("ChxtZXRhbHN0YWNrL2FwaS92Mi91c2VyLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLgAQoEVXNlchINCgVsb2dpbhgBIAEoCRIZCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECARINCgVlbWFpbBgDIAEoCRISCgphdmF0YXJfdXJsGAUgASgJEioKB3RlbmFudHMYCCADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQSLAoIcHJvamVjdHMYCSADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0EjEKDmRlZmF1bHRfdGVuYW50GAogASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IhcKFVVzZXJTZXJ2aWNlR2V0UmVxdWVzdCI/ChZVc2VyU2VydmljZUdldFJlc3BvbnNlEiUKBHVzZXIYASABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5Vc2VyMnMKC1VzZXJTZXJ2aWNlEmQKA0dldBIoLm1ldGFsc3RhY2suYXBpLnYyLlVzZXJTZXJ2aWNlR2V0UmVxdWVzdBopLm1ldGFsc3RhY2suYXBpLnYyLlVzZXJTZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgBQr8BChVjb20ubWV0YWxzdGFjay5hcGkudjJCCVVzZXJQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_project, file_metalstack_api_v2_tenant]); +/** + * Describes the message metalstack.api.v2.User. + * Use `create(UserSchema)` to create a new message. + */ +export const UserSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_user, 0); +/** + * Describes the message metalstack.api.v2.UserServiceGetRequest. + * Use `create(UserServiceGetRequestSchema)` to create a new message. + */ +export const UserServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_user, 1); +/** + * Describes the message metalstack.api.v2.UserServiceGetResponse. + * Use `create(UserServiceGetResponseSchema)` to create a new message. + */ +export const UserServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_user, 2); +/** + * UserService exposes rpc calls for users + * + * @generated from service metalstack.api.v2.UserService + */ +export const UserService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_user, 0); diff --git a/js/metalstack/api/v2/user_pb.ts b/js/metalstack/api/v2/user_pb.ts new file mode 100644 index 00000000..78457853 --- /dev/null +++ b/js/metalstack/api/v2/user_pb.ts @@ -0,0 +1,139 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/user.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb"; +import type { Project } from "./project_pb"; +import { file_metalstack_api_v2_project } from "./project_pb"; +import type { Tenant } from "./tenant_pb"; +import { file_metalstack_api_v2_tenant } from "./tenant_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/user.proto. + */ +export const file_metalstack_api_v2_user: GenFile = /*@__PURE__*/ + fileDesc("ChxtZXRhbHN0YWNrL2FwaS92Mi91c2VyLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiLgAQoEVXNlchINCgVsb2dpbhgBIAEoCRIZCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECARINCgVlbWFpbBgDIAEoCRISCgphdmF0YXJfdXJsGAUgASgJEioKB3RlbmFudHMYCCADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnQSLAoIcHJvamVjdHMYCSADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0EjEKDmRlZmF1bHRfdGVuYW50GAogASgLMhkubWV0YWxzdGFjay5hcGkudjIuVGVuYW50IhcKFVVzZXJTZXJ2aWNlR2V0UmVxdWVzdCI/ChZVc2VyU2VydmljZUdldFJlc3BvbnNlEiUKBHVzZXIYASABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5Vc2VyMnMKC1VzZXJTZXJ2aWNlEmQKA0dldBIoLm1ldGFsc3RhY2suYXBpLnYyLlVzZXJTZXJ2aWNlR2V0UmVxdWVzdBopLm1ldGFsc3RhY2suYXBpLnYyLlVzZXJTZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgBQr8BChVjb20ubWV0YWxzdGFjay5hcGkudjJCCVVzZXJQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_project, file_metalstack_api_v2_tenant]); + +/** + * User is a end user of the platform + * + * @generated from message metalstack.api.v2.User + */ +export type User = Message<"metalstack.api.v2.User"> & { + /** + * Login the login at the provider + * + * @generated from field: string login = 1; + */ + login: string; + + /** + * Name of the user + * + * @generated from field: string name = 2; + */ + name: string; + + /** + * Email of the user + * + * @generated from field: string email = 3; + */ + email: string; + + /** + * AvatarUrl of the user + * + * @generated from field: string avatar_url = 5; + */ + avatarUrl: string; + + /** + * Tenants the user belongs to + * + * @generated from field: repeated metalstack.api.v2.Tenant tenants = 8; + */ + tenants: Tenant[]; + + /** + * Projects the user belongs to + * + * @generated from field: repeated metalstack.api.v2.Project projects = 9; + */ + projects: Project[]; + + /** + * DefaultTenant this user belongs to + * + * @generated from field: metalstack.api.v2.Tenant default_tenant = 10; + */ + defaultTenant?: Tenant; +}; + +/** + * Describes the message metalstack.api.v2.User. + * Use `create(UserSchema)` to create a new message. + */ +export const UserSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_user, 0); + +/** + * UserServiceGetRequest is the request to get the user + * + * @generated from message metalstack.api.v2.UserServiceGetRequest + */ +export type UserServiceGetRequest = Message<"metalstack.api.v2.UserServiceGetRequest"> & { +}; + +/** + * Describes the message metalstack.api.v2.UserServiceGetRequest. + * Use `create(UserServiceGetRequestSchema)` to create a new message. + */ +export const UserServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_user, 1); + +/** + * UserServiceGetResponse the response when userservice get request was called + * + * @generated from message metalstack.api.v2.UserServiceGetResponse + */ +export type UserServiceGetResponse = Message<"metalstack.api.v2.UserServiceGetResponse"> & { + /** + * User is the user + * + * @generated from field: metalstack.api.v2.User user = 1; + */ + user?: User; +}; + +/** + * Describes the message metalstack.api.v2.UserServiceGetResponse. + * Use `create(UserServiceGetResponseSchema)` to create a new message. + */ +export const UserServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_user, 2); + +/** + * UserService exposes rpc calls for users + * + * @generated from service metalstack.api.v2.UserService + */ +export const UserService: GenService<{ + /** + * Get a User + * + * @generated from rpc metalstack.api.v2.UserService.Get + */ + get: { + methodKind: "unary"; + input: typeof UserServiceGetRequestSchema; + output: typeof UserServiceGetResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_user, 0); + diff --git a/js/metalstack/api/v2/version_pb.d.ts b/js/metalstack/api/v2/version_pb.d.ts new file mode 100644 index 00000000..bffdc82c --- /dev/null +++ b/js/metalstack/api/v2/version_pb.d.ts @@ -0,0 +1,88 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/api/v2/version.proto. + */ +export declare const file_metalstack_api_v2_version: GenFile; +/** + * Version of the application + * + * @generated from message metalstack.api.v2.Version + */ +export type Version = Message<"metalstack.api.v2.Version"> & { + /** + * Version of the application + * + * @generated from field: string version = 1; + */ + version: string; + /** + * Revision of the application + * + * @generated from field: string revision = 2; + */ + revision: string; + /** + * GitSHA1 of the application + * + * @generated from field: string git_sha1 = 3; + */ + gitSha1: string; + /** + * BuildDate of the application + * + * @generated from field: string build_date = 4; + */ + buildDate: string; +}; +/** + * Describes the message metalstack.api.v2.Version. + * Use `create(VersionSchema)` to create a new message. + */ +export declare const VersionSchema: GenMessage; +/** + * VersionServiceGetRequest is the request payload to get the version + * + * @generated from message metalstack.api.v2.VersionServiceGetRequest + */ +export type VersionServiceGetRequest = Message<"metalstack.api.v2.VersionServiceGetRequest"> & {}; +/** + * Describes the message metalstack.api.v2.VersionServiceGetRequest. + * Use `create(VersionServiceGetRequestSchema)` to create a new message. + */ +export declare const VersionServiceGetRequestSchema: GenMessage; +/** + * VersionServiceGetResponse is the response payload with the version + * + * @generated from message metalstack.api.v2.VersionServiceGetResponse + */ +export type VersionServiceGetResponse = Message<"metalstack.api.v2.VersionServiceGetResponse"> & { + /** + * Version of the application + * + * @generated from field: metalstack.api.v2.Version version = 1; + */ + version?: Version; +}; +/** + * Describes the message metalstack.api.v2.VersionServiceGetResponse. + * Use `create(VersionServiceGetResponseSchema)` to create a new message. + */ +export declare const VersionServiceGetResponseSchema: GenMessage; +/** + * VersionService serves version related functions + * + * @generated from service metalstack.api.v2.VersionService + */ +export declare const VersionService: GenService<{ + /** + * Get the version + * + * @generated from rpc metalstack.api.v2.VersionService.Get + */ + get: { + methodKind: "unary"; + input: typeof VersionServiceGetRequestSchema; + output: typeof VersionServiceGetResponseSchema; + }; +}>; diff --git a/js/metalstack/api/v2/version_pb.js b/js/metalstack/api/v2/version_pb.js new file mode 100644 index 00000000..f2e50f4c --- /dev/null +++ b/js/metalstack/api/v2/version_pb.js @@ -0,0 +1,30 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/version.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_metalstack_api_v2_common } from "./common_pb"; +/** + * Describes the file metalstack/api/v2/version.proto. + */ +export const file_metalstack_api_v2_version = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi92ZXJzaW9uLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJSCgdWZXJzaW9uEg8KB3ZlcnNpb24YASABKAkSEAoIcmV2aXNpb24YAiABKAkSEAoIZ2l0X3NoYTEYAyABKAkSEgoKYnVpbGRfZGF0ZRgEIAEoCSIaChhWZXJzaW9uU2VydmljZUdldFJlcXVlc3QiSAoZVmVyc2lvblNlcnZpY2VHZXRSZXNwb25zZRIrCgd2ZXJzaW9uGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuVmVyc2lvbjJ8Cg5WZXJzaW9uU2VydmljZRJqCgNHZXQSKy5tZXRhbHN0YWNrLmFwaS52Mi5WZXJzaW9uU2VydmljZUdldFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5WZXJzaW9uU2VydmljZUdldFJlc3BvbnNlIgjY8xgB4PMYAkLCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxWZXJzaW9uUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_metalstack_api_v2_common]); +/** + * Describes the message metalstack.api.v2.Version. + * Use `create(VersionSchema)` to create a new message. + */ +export const VersionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_version, 0); +/** + * Describes the message metalstack.api.v2.VersionServiceGetRequest. + * Use `create(VersionServiceGetRequestSchema)` to create a new message. + */ +export const VersionServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_version, 1); +/** + * Describes the message metalstack.api.v2.VersionServiceGetResponse. + * Use `create(VersionServiceGetResponseSchema)` to create a new message. + */ +export const VersionServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_version, 2); +/** + * VersionService serves version related functions + * + * @generated from service metalstack.api.v2.VersionService + */ +export const VersionService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_version, 0); diff --git a/js/metalstack/api/v2/version_pb.ts b/js/metalstack/api/v2/version_pb.ts new file mode 100644 index 00000000..d924a450 --- /dev/null +++ b/js/metalstack/api/v2/version_pb.ts @@ -0,0 +1,112 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/api/v2/version.proto (package metalstack.api.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_metalstack_api_v2_common } from "./common_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/api/v2/version.proto. + */ +export const file_metalstack_api_v2_version: GenFile = /*@__PURE__*/ + fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi92ZXJzaW9uLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJSCgdWZXJzaW9uEg8KB3ZlcnNpb24YASABKAkSEAoIcmV2aXNpb24YAiABKAkSEAoIZ2l0X3NoYTEYAyABKAkSEgoKYnVpbGRfZGF0ZRgEIAEoCSIaChhWZXJzaW9uU2VydmljZUdldFJlcXVlc3QiSAoZVmVyc2lvblNlcnZpY2VHZXRSZXNwb25zZRIrCgd2ZXJzaW9uGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuVmVyc2lvbjJ8Cg5WZXJzaW9uU2VydmljZRJqCgNHZXQSKy5tZXRhbHN0YWNrLmFwaS52Mi5WZXJzaW9uU2VydmljZUdldFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5WZXJzaW9uU2VydmljZUdldFJlc3BvbnNlIgjY8xgB4PMYAkLCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxWZXJzaW9uUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_metalstack_api_v2_common]); + +/** + * Version of the application + * + * @generated from message metalstack.api.v2.Version + */ +export type Version = Message<"metalstack.api.v2.Version"> & { + /** + * Version of the application + * + * @generated from field: string version = 1; + */ + version: string; + + /** + * Revision of the application + * + * @generated from field: string revision = 2; + */ + revision: string; + + /** + * GitSHA1 of the application + * + * @generated from field: string git_sha1 = 3; + */ + gitSha1: string; + + /** + * BuildDate of the application + * + * @generated from field: string build_date = 4; + */ + buildDate: string; +}; + +/** + * Describes the message metalstack.api.v2.Version. + * Use `create(VersionSchema)` to create a new message. + */ +export const VersionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_version, 0); + +/** + * VersionServiceGetRequest is the request payload to get the version + * + * @generated from message metalstack.api.v2.VersionServiceGetRequest + */ +export type VersionServiceGetRequest = Message<"metalstack.api.v2.VersionServiceGetRequest"> & { +}; + +/** + * Describes the message metalstack.api.v2.VersionServiceGetRequest. + * Use `create(VersionServiceGetRequestSchema)` to create a new message. + */ +export const VersionServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_version, 1); + +/** + * VersionServiceGetResponse is the response payload with the version + * + * @generated from message metalstack.api.v2.VersionServiceGetResponse + */ +export type VersionServiceGetResponse = Message<"metalstack.api.v2.VersionServiceGetResponse"> & { + /** + * Version of the application + * + * @generated from field: metalstack.api.v2.Version version = 1; + */ + version?: Version; +}; + +/** + * Describes the message metalstack.api.v2.VersionServiceGetResponse. + * Use `create(VersionServiceGetResponseSchema)` to create a new message. + */ +export const VersionServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_api_v2_version, 2); + +/** + * VersionService serves version related functions + * + * @generated from service metalstack.api.v2.VersionService + */ +export const VersionService: GenService<{ + /** + * Get the version + * + * @generated from rpc metalstack.api.v2.VersionService.Get + */ + get: { + methodKind: "unary"; + input: typeof VersionServiceGetRequestSchema; + output: typeof VersionServiceGetResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_api_v2_version, 0); + diff --git a/js/metalstack/infra/v2/bmc_pb.d.ts b/js/metalstack/infra/v2/bmc_pb.d.ts new file mode 100644 index 00000000..a977cd8f --- /dev/null +++ b/js/metalstack/infra/v2/bmc_pb.d.ts @@ -0,0 +1,45 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/infra/v2/bmc.proto. + */ +export declare const file_metalstack_infra_v2_bmc: GenFile; +/** + * UpdateBMCInfoRequest + * + * @generated from message metalstack.infra.v2.UpdateBMCInfoRequest + */ +export type UpdateBMCInfoRequest = Message<"metalstack.infra.v2.UpdateBMCInfoRequest"> & {}; +/** + * Describes the message metalstack.infra.v2.UpdateBMCInfoRequest. + * Use `create(UpdateBMCInfoRequestSchema)` to create a new message. + */ +export declare const UpdateBMCInfoRequestSchema: GenMessage; +/** + * UpdateBMCInfoResponse + * + * @generated from message metalstack.infra.v2.UpdateBMCInfoResponse + */ +export type UpdateBMCInfoResponse = Message<"metalstack.infra.v2.UpdateBMCInfoResponse"> & {}; +/** + * Describes the message metalstack.infra.v2.UpdateBMCInfoResponse. + * Use `create(UpdateBMCInfoResponseSchema)` to create a new message. + */ +export declare const UpdateBMCInfoResponseSchema: GenMessage; +/** + * BMCService serves bmc related functions + * + * @generated from service metalstack.infra.v2.BMCService + */ +export declare const BMCService: GenService<{ + /** + * UpdateBMCInfo + * + * @generated from rpc metalstack.infra.v2.BMCService.UpdateBMCInfo + */ + updateBMCInfo: { + methodKind: "unary"; + input: typeof UpdateBMCInfoRequestSchema; + output: typeof UpdateBMCInfoResponseSchema; + }; +}>; diff --git a/js/metalstack/infra/v2/bmc_pb.js b/js/metalstack/infra/v2/bmc_pb.js new file mode 100644 index 00000000..1c322fd2 --- /dev/null +++ b/js/metalstack/infra/v2/bmc_pb.js @@ -0,0 +1,25 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/infra/v2/bmc.proto (package metalstack.infra.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +/** + * Describes the file metalstack/infra/v2/bmc.proto. + */ +export const file_metalstack_infra_v2_bmc = /*@__PURE__*/ fileDesc("Ch1tZXRhbHN0YWNrL2luZnJhL3YyL2JtYy5wcm90bxITbWV0YWxzdGFjay5pbmZyYS52MiIWChRVcGRhdGVCTUNJbmZvUmVxdWVzdCIXChVVcGRhdGVCTUNJbmZvUmVzcG9uc2UyfwoKQk1DU2VydmljZRJxCg1VcGRhdGVCTUNJbmZvEikubWV0YWxzdGFjay5pbmZyYS52Mi5VcGRhdGVCTUNJbmZvUmVxdWVzdBoqLm1ldGFsc3RhY2suaW5mcmEudjIuVXBkYXRlQk1DSW5mb1Jlc3BvbnNlIgng8xgC6vMYAQFCzAEKF2NvbS5tZXRhbHN0YWNrLmluZnJhLnYyQghCbWNQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2luZnJhL3YyO2luZnJhdjKiAgNNSViqAhNNZXRhbHN0YWNrLkluZnJhLlYyygITTWV0YWxzdGFja1xJbmZyYVxWMuICH01ldGFsc3RhY2tcSW5mcmFcVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpJbmZyYTo6VjJiBnByb3RvMw", [file_metalstack_api_v2_common]); +/** + * Describes the message metalstack.infra.v2.UpdateBMCInfoRequest. + * Use `create(UpdateBMCInfoRequestSchema)` to create a new message. + */ +export const UpdateBMCInfoRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_bmc, 0); +/** + * Describes the message metalstack.infra.v2.UpdateBMCInfoResponse. + * Use `create(UpdateBMCInfoResponseSchema)` to create a new message. + */ +export const UpdateBMCInfoResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_bmc, 1); +/** + * BMCService serves bmc related functions + * + * @generated from service metalstack.infra.v2.BMCService + */ +export const BMCService = /*@__PURE__*/ serviceDesc(file_metalstack_infra_v2_bmc, 0); diff --git a/js/metalstack/infra/v2/bmc_pb.ts b/js/metalstack/infra/v2/bmc_pb.ts new file mode 100644 index 00000000..e7e27b44 --- /dev/null +++ b/js/metalstack/infra/v2/bmc_pb.ts @@ -0,0 +1,64 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/infra/v2/bmc.proto (package metalstack.infra.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/infra/v2/bmc.proto. + */ +export const file_metalstack_infra_v2_bmc: GenFile = /*@__PURE__*/ + fileDesc("Ch1tZXRhbHN0YWNrL2luZnJhL3YyL2JtYy5wcm90bxITbWV0YWxzdGFjay5pbmZyYS52MiIWChRVcGRhdGVCTUNJbmZvUmVxdWVzdCIXChVVcGRhdGVCTUNJbmZvUmVzcG9uc2UyfwoKQk1DU2VydmljZRJxCg1VcGRhdGVCTUNJbmZvEikubWV0YWxzdGFjay5pbmZyYS52Mi5VcGRhdGVCTUNJbmZvUmVxdWVzdBoqLm1ldGFsc3RhY2suaW5mcmEudjIuVXBkYXRlQk1DSW5mb1Jlc3BvbnNlIgng8xgC6vMYAQFCzAEKF2NvbS5tZXRhbHN0YWNrLmluZnJhLnYyQghCbWNQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2luZnJhL3YyO2luZnJhdjKiAgNNSViqAhNNZXRhbHN0YWNrLkluZnJhLlYyygITTWV0YWxzdGFja1xJbmZyYVxWMuICH01ldGFsc3RhY2tcSW5mcmFcVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpJbmZyYTo6VjJiBnByb3RvMw", [file_metalstack_api_v2_common]); + +/** + * UpdateBMCInfoRequest + * + * @generated from message metalstack.infra.v2.UpdateBMCInfoRequest + */ +export type UpdateBMCInfoRequest = Message<"metalstack.infra.v2.UpdateBMCInfoRequest"> & { +}; + +/** + * Describes the message metalstack.infra.v2.UpdateBMCInfoRequest. + * Use `create(UpdateBMCInfoRequestSchema)` to create a new message. + */ +export const UpdateBMCInfoRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_bmc, 0); + +/** + * UpdateBMCInfoResponse + * + * @generated from message metalstack.infra.v2.UpdateBMCInfoResponse + */ +export type UpdateBMCInfoResponse = Message<"metalstack.infra.v2.UpdateBMCInfoResponse"> & { +}; + +/** + * Describes the message metalstack.infra.v2.UpdateBMCInfoResponse. + * Use `create(UpdateBMCInfoResponseSchema)` to create a new message. + */ +export const UpdateBMCInfoResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_bmc, 1); + +/** + * BMCService serves bmc related functions + * + * @generated from service metalstack.infra.v2.BMCService + */ +export const BMCService: GenService<{ + /** + * UpdateBMCInfo + * + * @generated from rpc metalstack.infra.v2.BMCService.UpdateBMCInfo + */ + updateBMCInfo: { + methodKind: "unary"; + input: typeof UpdateBMCInfoRequestSchema; + output: typeof UpdateBMCInfoResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_infra_v2_bmc, 0); + diff --git a/js/metalstack/infra/v2/switch_pb.d.ts b/js/metalstack/infra/v2/switch_pb.d.ts new file mode 100644 index 00000000..fc4d3e89 --- /dev/null +++ b/js/metalstack/infra/v2/switch_pb.d.ts @@ -0,0 +1,223 @@ +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import type { Duration, Timestamp } from "@bufbuild/protobuf/wkt"; +import type { Switch, SwitchBGPPortState, SwitchPortStatus } from "../../api/v2/switch_pb"; +import type { Message } from "@bufbuild/protobuf"; +/** + * Describes the file metalstack/infra/v2/switch.proto. + */ +export declare const file_metalstack_infra_v2_switch: GenFile; +/** + * SwitchServiceGetRequest. + * + * @generated from message metalstack.infra.v2.SwitchServiceGetRequest + */ +export type SwitchServiceGetRequest = Message<"metalstack.infra.v2.SwitchServiceGetRequest"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; +}; +/** + * Describes the message metalstack.infra.v2.SwitchServiceGetRequest. + * Use `create(SwitchServiceGetRequestSchema)` to create a new message. + */ +export declare const SwitchServiceGetRequestSchema: GenMessage; +/** + * SwitchServiceGetResponse. + * + * @generated from message metalstack.infra.v2.SwitchServiceGetResponse + */ +export type SwitchServiceGetResponse = Message<"metalstack.infra.v2.SwitchServiceGetResponse"> & { + /** + * Switch that was requested. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; +/** + * Describes the message metalstack.infra.v2.SwitchServiceGetResponse. + * Use `create(SwitchServiceGetResponseSchema)` to create a new message. + */ +export declare const SwitchServiceGetResponseSchema: GenMessage; +/** + * SwitchServiceRegisterRequest. + * + * @generated from message metalstack.infra.v2.SwitchServiceRegisterRequest + */ +export type SwitchServiceRegisterRequest = Message<"metalstack.infra.v2.SwitchServiceRegisterRequest"> & { + /** + * Switch to register. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; +/** + * Describes the message metalstack.infra.v2.SwitchServiceRegisterRequest. + * Use `create(SwitchServiceRegisterRequestSchema)` to create a new message. + */ +export declare const SwitchServiceRegisterRequestSchema: GenMessage; +/** + * SwitchServiceRegisterResponse. + * + * @generated from message metalstack.infra.v2.SwitchServiceRegisterResponse + */ +export type SwitchServiceRegisterResponse = Message<"metalstack.infra.v2.SwitchServiceRegisterResponse"> & { + /** + * Switch that was registered. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; +/** + * Describes the message metalstack.infra.v2.SwitchServiceRegisterResponse. + * Use `create(SwitchServiceRegisterResponseSchema)` to create a new message. + */ +export declare const SwitchServiceRegisterResponseSchema: GenMessage; +/** + * SwitchServiceHeartbeatRequest. + * + * @generated from message metalstack.infra.v2.SwitchServiceHeartbeatRequest + */ +export type SwitchServiceHeartbeatRequest = Message<"metalstack.infra.v2.SwitchServiceHeartbeatRequest"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + /** + * Duration of the sync. + * + * @generated from field: google.protobuf.Duration duration = 2; + */ + duration?: Duration; + /** + * Error if any occurred during the sync. + * + * @generated from field: optional string error = 3; + */ + error?: string; + /** + * PortStates maps port identifiers to the respective port's operational state. + * + * @generated from field: map port_states = 4; + */ + portStates: { + [key: string]: SwitchPortStatus; + }; + /** + * BgpPortStates maps port identifiers to the respective port's BGP state. + * + * @generated from field: map bgp_port_states = 5; + */ + bgpPortStates: { + [key: string]: SwitchBGPPortState; + }; +}; +/** + * Describes the message metalstack.infra.v2.SwitchServiceHeartbeatRequest. + * Use `create(SwitchServiceHeartbeatRequestSchema)` to create a new message. + */ +export declare const SwitchServiceHeartbeatRequestSchema: GenMessage; +/** + * SwitchServiceHeartbeatResponse. + * + * @generated from message metalstack.infra.v2.SwitchServiceHeartbeatResponse + */ +export type SwitchServiceHeartbeatResponse = Message<"metalstack.infra.v2.SwitchServiceHeartbeatResponse"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + /** + * LastSync holds information about the last sync. + * + * @generated from field: metalstack.infra.v2.SwitchSync last_sync = 2; + */ + lastSync?: SwitchSync; + /** + * LastSyncError holds information about the last erroneous sync. + * + * @generated from field: metalstack.infra.v2.SwitchSync last_sync_error = 3; + */ + lastSyncError?: SwitchSync; +}; +/** + * Describes the message metalstack.infra.v2.SwitchServiceHeartbeatResponse. + * Use `create(SwitchServiceHeartbeatResponseSchema)` to create a new message. + */ +export declare const SwitchServiceHeartbeatResponseSchema: GenMessage; +/** + * SwitchSync summarizes information about a switch sync. + * + * @generated from message metalstack.infra.v2.SwitchSync + */ +export type SwitchSync = Message<"metalstack.infra.v2.SwitchSync"> & { + /** + * Time of the sync. + * + * @generated from field: google.protobuf.Timestamp time = 1; + */ + time?: Timestamp; + /** + * Duration of the sync. + * + * @generated from field: google.protobuf.Duration duration = 2; + */ + duration?: Duration; + /** + * Error if any occurred. + * + * @generated from field: optional string error = 3; + */ + error?: string; +}; +/** + * Describes the message metalstack.infra.v2.SwitchSync. + * Use `create(SwitchSyncSchema)` to create a new message. + */ +export declare const SwitchSyncSchema: GenMessage; +/** + * SwitchService serves switch related functions. + * + * @generated from service metalstack.infra.v2.SwitchService + */ +export declare const SwitchService: GenService<{ + /** + * Get a switch by ID. + * + * @generated from rpc metalstack.infra.v2.SwitchService.Get + */ + get: { + methodKind: "unary"; + input: typeof SwitchServiceGetRequestSchema; + output: typeof SwitchServiceGetResponseSchema; + }; + /** + * Register a switch. + * + * @generated from rpc metalstack.infra.v2.SwitchService.Register + */ + register: { + methodKind: "unary"; + input: typeof SwitchServiceRegisterRequestSchema; + output: typeof SwitchServiceRegisterResponseSchema; + }; + /** + * Heartbeat a switch. + * + * @generated from rpc metalstack.infra.v2.SwitchService.Heartbeat + */ + heartbeat: { + methodKind: "unary"; + input: typeof SwitchServiceHeartbeatRequestSchema; + output: typeof SwitchServiceHeartbeatResponseSchema; + }; +}>; diff --git a/js/metalstack/infra/v2/switch_pb.js b/js/metalstack/infra/v2/switch_pb.js new file mode 100644 index 00000000..9ecca2bf --- /dev/null +++ b/js/metalstack/infra/v2/switch_pb.js @@ -0,0 +1,54 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/infra/v2/switch.proto (package metalstack.infra.v2, syntax proto3) +/* eslint-disable */ +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import { file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import { file_metalstack_api_v2_switch } from "../../api/v2/switch_pb"; +/** + * Describes the file metalstack/infra/v2/switch.proto. + */ +export const file_metalstack_infra_v2_switch = /*@__PURE__*/ fileDesc("CiBtZXRhbHN0YWNrL2luZnJhL3YyL3N3aXRjaC5wcm90bxITbWV0YWxzdGFjay5pbmZyYS52MiI0ChdTd2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoASJFChhTd2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkkKHFN3aXRjaFNlcnZpY2VSZWdpc3RlclJlcXVlc3QSKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkoKHVN3aXRjaFNlcnZpY2VSZWdpc3RlclJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCLzAwodU3dpdGNoU2VydmljZUhlYXJ0YmVhdFJlcXVlc3QSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESKwoIZHVyYXRpb24YAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SEgoFZXJyb3IYAyABKAlIAIgBARJXCgtwb3J0X3N0YXRlcxgEIAMoCzJCLm1ldGFsc3RhY2suaW5mcmEudjIuU3dpdGNoU2VydmljZUhlYXJ0YmVhdFJlcXVlc3QuUG9ydFN0YXRlc0VudHJ5El4KD2JncF9wb3J0X3N0YXRlcxgFIAMoCzJFLm1ldGFsc3RhY2suaW5mcmEudjIuU3dpdGNoU2VydmljZUhlYXJ0YmVhdFJlcXVlc3QuQmdwUG9ydFN0YXRlc0VudHJ5GlYKD1BvcnRTdGF0ZXNFbnRyeRILCgNrZXkYASABKAkSMgoFdmFsdWUYAiABKA4yIy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hQb3J0U3RhdHVzOgI4ARpbChJCZ3BQb3J0U3RhdGVzRW50cnkSCwoDa2V5GAEgASgJEjQKBXZhbHVlGAIgASgLMiUubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoQkdQUG9ydFN0YXRlOgI4AUIICgZfZXJyb3IimgEKHlN3aXRjaFNlcnZpY2VIZWFydGJlYXRSZXNwb25zZRIKCgJpZBgBIAEoCRIyCglsYXN0X3N5bmMYAiABKAsyHy5tZXRhbHN0YWNrLmluZnJhLnYyLlN3aXRjaFN5bmMSOAoPbGFzdF9zeW5jX2Vycm9yGAMgASgLMh8ubWV0YWxzdGFjay5pbmZyYS52Mi5Td2l0Y2hTeW5jIoEBCgpTd2l0Y2hTeW5jEigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKCGR1cmF0aW9uGAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEhIKBWVycm9yGAMgASgJSACIAQFCCAoGX2Vycm9yMv4CCg1Td2l0Y2hTZXJ2aWNlEm4KA0dldBIsLm1ldGFsc3RhY2suaW5mcmEudjIuU3dpdGNoU2VydmljZUdldFJlcXVlc3QaLS5tZXRhbHN0YWNrLmluZnJhLnYyLlN3aXRjaFNlcnZpY2VHZXRSZXNwb25zZSIK4PMYAurzGAIBAhJ8CghSZWdpc3RlchIxLm1ldGFsc3RhY2suaW5mcmEudjIuU3dpdGNoU2VydmljZVJlZ2lzdGVyUmVxdWVzdBoyLm1ldGFsc3RhY2suaW5mcmEudjIuU3dpdGNoU2VydmljZVJlZ2lzdGVyUmVzcG9uc2UiCeDzGALq8xgBARJ/CglIZWFydGJlYXQSMi5tZXRhbHN0YWNrLmluZnJhLnYyLlN3aXRjaFNlcnZpY2VIZWFydGJlYXRSZXF1ZXN0GjMubWV0YWxzdGFjay5pbmZyYS52Mi5Td2l0Y2hTZXJ2aWNlSGVhcnRiZWF0UmVzcG9uc2UiCeDzGALq8xgBAULPAQoXY29tLm1ldGFsc3RhY2suaW5mcmEudjJCC1N3aXRjaFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svaW5mcmEvdjI7aW5mcmF2MqICA01JWKoCE01ldGFsc3RhY2suSW5mcmEuVjLKAhNNZXRhbHN0YWNrXEluZnJhXFYy4gIfTWV0YWxzdGFja1xJbmZyYVxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkluZnJhOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]); +/** + * Describes the message metalstack.infra.v2.SwitchServiceGetRequest. + * Use `create(SwitchServiceGetRequestSchema)` to create a new message. + */ +export const SwitchServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_switch, 0); +/** + * Describes the message metalstack.infra.v2.SwitchServiceGetResponse. + * Use `create(SwitchServiceGetResponseSchema)` to create a new message. + */ +export const SwitchServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_switch, 1); +/** + * Describes the message metalstack.infra.v2.SwitchServiceRegisterRequest. + * Use `create(SwitchServiceRegisterRequestSchema)` to create a new message. + */ +export const SwitchServiceRegisterRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_switch, 2); +/** + * Describes the message metalstack.infra.v2.SwitchServiceRegisterResponse. + * Use `create(SwitchServiceRegisterResponseSchema)` to create a new message. + */ +export const SwitchServiceRegisterResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_switch, 3); +/** + * Describes the message metalstack.infra.v2.SwitchServiceHeartbeatRequest. + * Use `create(SwitchServiceHeartbeatRequestSchema)` to create a new message. + */ +export const SwitchServiceHeartbeatRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_switch, 4); +/** + * Describes the message metalstack.infra.v2.SwitchServiceHeartbeatResponse. + * Use `create(SwitchServiceHeartbeatResponseSchema)` to create a new message. + */ +export const SwitchServiceHeartbeatResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_switch, 5); +/** + * Describes the message metalstack.infra.v2.SwitchSync. + * Use `create(SwitchSyncSchema)` to create a new message. + */ +export const SwitchSyncSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_switch, 6); +/** + * SwitchService serves switch related functions. + * + * @generated from service metalstack.infra.v2.SwitchService + */ +export const SwitchService = /*@__PURE__*/ serviceDesc(file_metalstack_infra_v2_switch, 0); diff --git a/js/metalstack/infra/v2/switch_pb.ts b/js/metalstack/infra/v2/switch_pb.ts new file mode 100644 index 00000000..b85b2d87 --- /dev/null +++ b/js/metalstack/infra/v2/switch_pb.ts @@ -0,0 +1,263 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/infra/v2/switch.proto (package metalstack.infra.v2, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Duration, Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; +import type { Switch, SwitchBGPPortState, SwitchPortStatus } from "../../api/v2/switch_pb"; +import { file_metalstack_api_v2_switch } from "../../api/v2/switch_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/infra/v2/switch.proto. + */ +export const file_metalstack_infra_v2_switch: GenFile = /*@__PURE__*/ + fileDesc("CiBtZXRhbHN0YWNrL2luZnJhL3YyL3N3aXRjaC5wcm90bxITbWV0YWxzdGFjay5pbmZyYS52MiI0ChdTd2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoASJFChhTd2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkkKHFN3aXRjaFNlcnZpY2VSZWdpc3RlclJlcXVlc3QSKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkoKHVN3aXRjaFNlcnZpY2VSZWdpc3RlclJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCLzAwodU3dpdGNoU2VydmljZUhlYXJ0YmVhdFJlcXVlc3QSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESKwoIZHVyYXRpb24YAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SEgoFZXJyb3IYAyABKAlIAIgBARJXCgtwb3J0X3N0YXRlcxgEIAMoCzJCLm1ldGFsc3RhY2suaW5mcmEudjIuU3dpdGNoU2VydmljZUhlYXJ0YmVhdFJlcXVlc3QuUG9ydFN0YXRlc0VudHJ5El4KD2JncF9wb3J0X3N0YXRlcxgFIAMoCzJFLm1ldGFsc3RhY2suaW5mcmEudjIuU3dpdGNoU2VydmljZUhlYXJ0YmVhdFJlcXVlc3QuQmdwUG9ydFN0YXRlc0VudHJ5GlYKD1BvcnRTdGF0ZXNFbnRyeRILCgNrZXkYASABKAkSMgoFdmFsdWUYAiABKA4yIy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hQb3J0U3RhdHVzOgI4ARpbChJCZ3BQb3J0U3RhdGVzRW50cnkSCwoDa2V5GAEgASgJEjQKBXZhbHVlGAIgASgLMiUubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoQkdQUG9ydFN0YXRlOgI4AUIICgZfZXJyb3IimgEKHlN3aXRjaFNlcnZpY2VIZWFydGJlYXRSZXNwb25zZRIKCgJpZBgBIAEoCRIyCglsYXN0X3N5bmMYAiABKAsyHy5tZXRhbHN0YWNrLmluZnJhLnYyLlN3aXRjaFN5bmMSOAoPbGFzdF9zeW5jX2Vycm9yGAMgASgLMh8ubWV0YWxzdGFjay5pbmZyYS52Mi5Td2l0Y2hTeW5jIoEBCgpTd2l0Y2hTeW5jEigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKCGR1cmF0aW9uGAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEhIKBWVycm9yGAMgASgJSACIAQFCCAoGX2Vycm9yMv4CCg1Td2l0Y2hTZXJ2aWNlEm4KA0dldBIsLm1ldGFsc3RhY2suaW5mcmEudjIuU3dpdGNoU2VydmljZUdldFJlcXVlc3QaLS5tZXRhbHN0YWNrLmluZnJhLnYyLlN3aXRjaFNlcnZpY2VHZXRSZXNwb25zZSIK4PMYAurzGAIBAhJ8CghSZWdpc3RlchIxLm1ldGFsc3RhY2suaW5mcmEudjIuU3dpdGNoU2VydmljZVJlZ2lzdGVyUmVxdWVzdBoyLm1ldGFsc3RhY2suaW5mcmEudjIuU3dpdGNoU2VydmljZVJlZ2lzdGVyUmVzcG9uc2UiCeDzGALq8xgBARJ/CglIZWFydGJlYXQSMi5tZXRhbHN0YWNrLmluZnJhLnYyLlN3aXRjaFNlcnZpY2VIZWFydGJlYXRSZXF1ZXN0GjMubWV0YWxzdGFjay5pbmZyYS52Mi5Td2l0Y2hTZXJ2aWNlSGVhcnRiZWF0UmVzcG9uc2UiCeDzGALq8xgBAULPAQoXY29tLm1ldGFsc3RhY2suaW5mcmEudjJCC1N3aXRjaFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svaW5mcmEvdjI7aW5mcmF2MqICA01JWKoCE01ldGFsc3RhY2suSW5mcmEuVjLKAhNNZXRhbHN0YWNrXEluZnJhXFYy4gIfTWV0YWxzdGFja1xJbmZyYVxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkluZnJhOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]); + +/** + * SwitchServiceGetRequest. + * + * @generated from message metalstack.infra.v2.SwitchServiceGetRequest + */ +export type SwitchServiceGetRequest = Message<"metalstack.infra.v2.SwitchServiceGetRequest"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; +}; + +/** + * Describes the message metalstack.infra.v2.SwitchServiceGetRequest. + * Use `create(SwitchServiceGetRequestSchema)` to create a new message. + */ +export const SwitchServiceGetRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_switch, 0); + +/** + * SwitchServiceGetResponse. + * + * @generated from message metalstack.infra.v2.SwitchServiceGetResponse + */ +export type SwitchServiceGetResponse = Message<"metalstack.infra.v2.SwitchServiceGetResponse"> & { + /** + * Switch that was requested. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; + +/** + * Describes the message metalstack.infra.v2.SwitchServiceGetResponse. + * Use `create(SwitchServiceGetResponseSchema)` to create a new message. + */ +export const SwitchServiceGetResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_switch, 1); + +/** + * SwitchServiceRegisterRequest. + * + * @generated from message metalstack.infra.v2.SwitchServiceRegisterRequest + */ +export type SwitchServiceRegisterRequest = Message<"metalstack.infra.v2.SwitchServiceRegisterRequest"> & { + /** + * Switch to register. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; + +/** + * Describes the message metalstack.infra.v2.SwitchServiceRegisterRequest. + * Use `create(SwitchServiceRegisterRequestSchema)` to create a new message. + */ +export const SwitchServiceRegisterRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_switch, 2); + +/** + * SwitchServiceRegisterResponse. + * + * @generated from message metalstack.infra.v2.SwitchServiceRegisterResponse + */ +export type SwitchServiceRegisterResponse = Message<"metalstack.infra.v2.SwitchServiceRegisterResponse"> & { + /** + * Switch that was registered. + * + * @generated from field: metalstack.api.v2.Switch switch = 1; + */ + switch?: Switch; +}; + +/** + * Describes the message metalstack.infra.v2.SwitchServiceRegisterResponse. + * Use `create(SwitchServiceRegisterResponseSchema)` to create a new message. + */ +export const SwitchServiceRegisterResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_switch, 3); + +/** + * SwitchServiceHeartbeatRequest. + * + * @generated from message metalstack.infra.v2.SwitchServiceHeartbeatRequest + */ +export type SwitchServiceHeartbeatRequest = Message<"metalstack.infra.v2.SwitchServiceHeartbeatRequest"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * Duration of the sync. + * + * @generated from field: google.protobuf.Duration duration = 2; + */ + duration?: Duration; + + /** + * Error if any occurred during the sync. + * + * @generated from field: optional string error = 3; + */ + error?: string; + + /** + * PortStates maps port identifiers to the respective port's operational state. + * + * @generated from field: map port_states = 4; + */ + portStates: { [key: string]: SwitchPortStatus }; + + /** + * BgpPortStates maps port identifiers to the respective port's BGP state. + * + * @generated from field: map bgp_port_states = 5; + */ + bgpPortStates: { [key: string]: SwitchBGPPortState }; +}; + +/** + * Describes the message metalstack.infra.v2.SwitchServiceHeartbeatRequest. + * Use `create(SwitchServiceHeartbeatRequestSchema)` to create a new message. + */ +export const SwitchServiceHeartbeatRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_switch, 4); + +/** + * SwitchServiceHeartbeatResponse. + * + * @generated from message metalstack.infra.v2.SwitchServiceHeartbeatResponse + */ +export type SwitchServiceHeartbeatResponse = Message<"metalstack.infra.v2.SwitchServiceHeartbeatResponse"> & { + /** + * Id of the switch. + * + * @generated from field: string id = 1; + */ + id: string; + + /** + * LastSync holds information about the last sync. + * + * @generated from field: metalstack.infra.v2.SwitchSync last_sync = 2; + */ + lastSync?: SwitchSync; + + /** + * LastSyncError holds information about the last erroneous sync. + * + * @generated from field: metalstack.infra.v2.SwitchSync last_sync_error = 3; + */ + lastSyncError?: SwitchSync; +}; + +/** + * Describes the message metalstack.infra.v2.SwitchServiceHeartbeatResponse. + * Use `create(SwitchServiceHeartbeatResponseSchema)` to create a new message. + */ +export const SwitchServiceHeartbeatResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_switch, 5); + +/** + * SwitchSync summarizes information about a switch sync. + * + * @generated from message metalstack.infra.v2.SwitchSync + */ +export type SwitchSync = Message<"metalstack.infra.v2.SwitchSync"> & { + /** + * Time of the sync. + * + * @generated from field: google.protobuf.Timestamp time = 1; + */ + time?: Timestamp; + + /** + * Duration of the sync. + * + * @generated from field: google.protobuf.Duration duration = 2; + */ + duration?: Duration; + + /** + * Error if any occurred. + * + * @generated from field: optional string error = 3; + */ + error?: string; +}; + +/** + * Describes the message metalstack.infra.v2.SwitchSync. + * Use `create(SwitchSyncSchema)` to create a new message. + */ +export const SwitchSyncSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_switch, 6); + +/** + * SwitchService serves switch related functions. + * + * @generated from service metalstack.infra.v2.SwitchService + */ +export const SwitchService: GenService<{ + /** + * Get a switch by ID. + * + * @generated from rpc metalstack.infra.v2.SwitchService.Get + */ + get: { + methodKind: "unary"; + input: typeof SwitchServiceGetRequestSchema; + output: typeof SwitchServiceGetResponseSchema; + }, + /** + * Register a switch. + * + * @generated from rpc metalstack.infra.v2.SwitchService.Register + */ + register: { + methodKind: "unary"; + input: typeof SwitchServiceRegisterRequestSchema; + output: typeof SwitchServiceRegisterResponseSchema; + }, + /** + * Heartbeat a switch. + * + * @generated from rpc metalstack.infra.v2.SwitchService.Heartbeat + */ + heartbeat: { + methodKind: "unary"; + input: typeof SwitchServiceHeartbeatRequestSchema; + output: typeof SwitchServiceHeartbeatResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_infra_v2_switch, 0); + diff --git a/js/tsconfig.json b/js/tsconfig.json new file mode 100644 index 00000000..0bca684f --- /dev/null +++ b/js/tsconfig.json @@ -0,0 +1,70 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + "module": "esnext", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + + /* Module Resolution Options */ + "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true, /* Skip type checking of declaration files. */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + } +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 00000000..2441df1b --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "@metal-stack/api", + "description": "metal-stack api typescript client", + "repository": "https://github.com/metal-stack/api.git", + "scripts": { + "build": "tsc --project js/tsconfig.json", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "MIT", + "type": "module", + "dependencies": { + "@bufbuild/protobuf": "^2.10.1", + "@connectrpc/connect-web": "^2.1.1" + }, + "devDependencies": { + "typescript": "^5.9.3" + }, + "files": [ + "js/*" + ], + "version": "v0.0.0" +} \ No newline at end of file diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml index 2b8a18e8..8c466129 100644 --- a/proto/buf.gen.yaml +++ b/proto/buf.gen.yaml @@ -26,6 +26,11 @@ plugins: out: ../python - remote: buf.build/connectrpc/python:v0.5.0 out: ../python + # js + - remote: buf.build/bufbuild/es:v2.10.1 + include_imports: true + out: ../js + opt: target=ts # docs - remote: buf.build/community/pseudomuto-doc:v1.5.1 out: ../doc From dbbb01072fb3c35308e737935fac36bf744e0022 Mon Sep 17 00:00:00 2001 From: ostempel Date: Thu, 18 Dec 2025 15:50:09 +0100 Subject: [PATCH 2/4] add js client --- js/metalstack/admin/v2/switch_pb.ts | 11 +- js/metalstack/api/v2/machine_pb.ts | 9 +- js/metalstack/infra/v2/event_pb.ts | 218 ++++++++++++++++++++++++++++ 3 files changed, 235 insertions(+), 3 deletions(-) create mode 100644 js/metalstack/infra/v2/event_pb.ts diff --git a/js/metalstack/admin/v2/switch_pb.ts b/js/metalstack/admin/v2/switch_pb.ts index 7179400f..ea1a11cf 100644 --- a/js/metalstack/admin/v2/switch_pb.ts +++ b/js/metalstack/admin/v2/switch_pb.ts @@ -10,7 +10,7 @@ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; import type { UpdateMeta } from "../../api/v2/common_pb"; import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb"; -import type { Switch, SwitchNic, SwitchOS, SwitchPortStatus, SwitchQuery, SwitchReplaceMode } from "../../api/v2/switch_pb"; +import type { MachineConnection, Switch, SwitchNic, SwitchOS, SwitchPortStatus, SwitchQuery, SwitchReplaceMode } from "../../api/v2/switch_pb"; import { file_metalstack_api_v2_switch } from "../../api/v2/switch_pb"; import type { Message } from "@bufbuild/protobuf"; @@ -18,7 +18,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file metalstack/admin/v2/switch.proto. */ export const file_metalstack_admin_v2_switch: GenFile = /*@__PURE__*/ - fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3N3aXRjaC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiI0ChdTd2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoASJFChhTd2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkkKGFN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFF1ZXJ5IkgKGVN3aXRjaFNlcnZpY2VMaXN0UmVzcG9uc2USKwoIc3dpdGNoZXMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gizAQKGlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKAmlkGAEgASgJQg26SApyCMCzrrECAWgBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEkkKDHJlcGxhY2VfbW9kZRgFIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQAUgBiAEBEiMKDW1hbmFnZW1lbnRfaXAYBiABKAlCB7pIBHICcAFIAogBARIpCg9tYW5hZ2VtZW50X3VzZXIYByABKAlCC7pICHIGwLOusQIBSAOIAQESKQoPY29uc29sZV9jb21tYW5kGAggASgJQgu6SAhyBsizrrECAUgEiAEBEioKBG5pY3MYCSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSLAoCb3MYCiABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU0gFiAEBQg4KDF9kZXNjcmlwdGlvbkIPCg1fcmVwbGFjZV9tb2RlQhAKDl9tYW5hZ2VtZW50X2lwQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZEIFCgNfb3MiSAobU3dpdGNoU2VydmljZVVwZGF0ZVJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCJGChpTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARINCgVmb3JjZRgCIAEoCCJIChtTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoImMKG1N3aXRjaFNlcnZpY2VNaWdyYXRlUmVxdWVzdBIhCgpvbGRfc3dpdGNoGAEgASgJQg26SApyCMCzrrECAWgBEiEKCm5ld19zd2l0Y2gYAiABKAlCDbpICnIIwLOusQIBaAEiSQocU3dpdGNoU2VydmljZU1pZ3JhdGVSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gikwEKGFN3aXRjaFNlcnZpY2VQb3J0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARIdCghuaWNfbmFtZRgCIAEoCUILukgIcgbAs66xAgESPQoGc3RhdHVzGAMgASgOMiMubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydFN0YXR1c0IIukgFggECEAEiRgoZU3dpdGNoU2VydmljZVBvcnRSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gyvwUKDVN3aXRjaFNlcnZpY2USbgoDR2V0EiwubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBotLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUdldFJlc3BvbnNlIgrS8xgCAQLg8xgCEnEKBExpc3QSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAhJyCgZVcGRhdGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiBdLzGAEBEnIKBkRlbGV0ZRIvLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZURlbGV0ZVJlcXVlc3QaMC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VEZWxldGVSZXNwb25zZSIF0vMYAQESdQoHTWlncmF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZU1pZ3JhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlTWlncmF0ZVJlc3BvbnNlIgXS8xgBARJsCgRQb3J0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlUG9ydFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VQb3J0UmVzcG9uc2UiBdLzGAEBQs8BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkILU3dpdGNoUHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]); + fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3N3aXRjaC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiI0ChdTd2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoASJFChhTd2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkkKGFN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFF1ZXJ5IkgKGVN3aXRjaFNlcnZpY2VMaXN0UmVzcG9uc2USKwoIc3dpdGNoZXMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gijwUKGlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKAmlkGAEgASgJQg26SApyCMCzrrECAWgBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEkkKDHJlcGxhY2VfbW9kZRgFIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQAUgBiAEBEiMKDW1hbmFnZW1lbnRfaXAYBiABKAlCB7pIBHICcAFIAogBARIpCg9tYW5hZ2VtZW50X3VzZXIYByABKAlCC7pICHIGwLOusQIBSAOIAQESKQoPY29uc29sZV9jb21tYW5kGAggASgJQgu6SAhyBsizrrECAUgEiAEBEioKBG5pY3MYCSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSLAoCb3MYCiABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU0gFiAEBEkEKE21hY2hpbmVfY29ubmVjdGlvbnMYCyADKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29ubmVjdGlvbkIOCgxfZGVzY3JpcHRpb25CDwoNX3JlcGxhY2VfbW9kZUIQCg5fbWFuYWdlbWVudF9pcEISChBfbWFuYWdlbWVudF91c2VyQhIKEF9jb25zb2xlX2NvbW1hbmRCBQoDX29zIkgKG1N3aXRjaFNlcnZpY2VVcGRhdGVSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2giRgoaU3dpdGNoU2VydmljZURlbGV0ZVJlcXVlc3QSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESDQoFZm9yY2UYAiABKAgiSAobU3dpdGNoU2VydmljZURlbGV0ZVJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCJjChtTd2l0Y2hTZXJ2aWNlTWlncmF0ZVJlcXVlc3QSIQoKb2xkX3N3aXRjaBgBIAEoCUINukgKcgjAs66xAgFoARIhCgpuZXdfc3dpdGNoGAIgASgJQg26SApyCMCzrrECAWgBIkkKHFN3aXRjaFNlcnZpY2VNaWdyYXRlUmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIpMBChhTd2l0Y2hTZXJ2aWNlUG9ydFJlcXVlc3QSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESHQoIbmljX25hbWUYAiABKAlCC7pICHIGwLOusQIBEj0KBnN0YXR1cxgDIAEoDjIjLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFBvcnRTdGF0dXNCCLpIBYIBAhABIkYKGVN3aXRjaFNlcnZpY2VQb3J0UmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoMr8FCg1Td2l0Y2hTZXJ2aWNlEm4KA0dldBIsLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUdldFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VHZXRSZXNwb25zZSIK0vMYAgEC4PMYAhJxCgRMaXN0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlTGlzdFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VMaXN0UmVzcG9uc2UiCtLzGAIBAuDzGAIScgoGVXBkYXRlEi8ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlVXBkYXRlUmVxdWVzdBowLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZVVwZGF0ZVJlc3BvbnNlIgXS8xgBARJyCgZEZWxldGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VEZWxldGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiBdLzGAEBEnUKB01pZ3JhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VNaWdyYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZU1pZ3JhdGVSZXNwb25zZSIF0vMYAQESbAoEUG9ydBItLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZVBvcnRSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlUG9ydFJlc3BvbnNlIgXS8xgBAULPAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCC1N3aXRjaFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]); /** * SwitchServiceGetRequest. @@ -180,6 +180,13 @@ export type SwitchServiceUpdateRequest = Message<"metalstack.admin.v2.SwitchServ * @generated from field: optional metalstack.api.v2.SwitchOS os = 10; */ os?: SwitchOS; + + /** + * MachineConnections map machines to the nics they are connected to. + * + * @generated from field: repeated metalstack.api.v2.MachineConnection machine_connections = 11; + */ + machineConnections: MachineConnection[]; }; /** diff --git a/js/metalstack/api/v2/machine_pb.ts b/js/metalstack/api/v2/machine_pb.ts index 01930537..cc1f2157 100644 --- a/js/metalstack/api/v2/machine_pb.ts +++ b/js/metalstack/api/v2/machine_pb.ts @@ -26,7 +26,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file metalstack/api/v2/machine.proto. */ export const file_metalstack_api_v2_machine: GenFile = /*@__PURE__*/ - fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLZBgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIZCgNpcHMYDiADKAlCDLpICZIBBuizrrECARIWCg5wbGFjZW1lbnRfdGFncxgPIAMoCRI6CgpkbnNfc2VydmVyGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGBEgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChJLCg9hbGxvY2F0aW9uX3R5cGUYEiABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABEjYKDWZpcmV3YWxsX3NwZWMYEyABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFNwZWNCBwoFX3V1aWRCDgoMX2Rlc2NyaXB0aW9uQgsKCV9ob3N0bmFtZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX3VzZXJkYXRhIkgKDEZpcmV3YWxsU3BlYxI4Cg5maXJld2FsbF9ydWxlcxgTIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMiSwocTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKwAgobTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgGIAMoCUIRukgOkgELEDIiB3IFEAEYgEBCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJmChlNYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5IkoKGk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG1hY2hpbmVzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJQChtNYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLgAwoHTWFjaGluZRIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIvCglwYXJ0aXRpb24YAyABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24SFgoEcmFjaxgEIAEoCUIIukgFcgMYgAESJQoEc2l6ZRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUSNAoIaGFyZHdhcmUYBiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmUSLAoEYmlvcxgHIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCaW9zEjgKCmFsbG9jYXRpb24YCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbhIwCgZzdGF0dXMYCSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdHVzElYKGnJlY2VudF9wcm92aXNpb25pbmdfZXZlbnRzGAogASgLMjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cyLvAQoNTWFjaGluZVN0YXR1cxI2Cgljb25kaXRpb24YASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29uZGl0aW9uEkQKCWxlZF9zdGF0ZRgCIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRJCCgpsaXZlbGluZXNzGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUxpdmVsaW5lc3NCCLpIBYIBAhABEhwKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAQgASgJIogBChBNYWNoaW5lQ29uZGl0aW9uEjgKBXN0YXRlGAEgASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlQgi6SAWCAQIQARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgESGAoGaXNzdWVyGAMgASgJQgi6SAVyAxiAAiL1BQoRTWFjaGluZUFsbG9jYXRpb24SFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEhwKCmNyZWF0ZWRfYnkYBSABKAlCCLpIBXIDGIABEhkKB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBEicKBWltYWdlGAcgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYCCABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0EjMKCG5ldHdvcmtzGAkgAygLMiEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmsSGQoIaG9zdG5hbWUYCiABKAlCB7pIBHICaAESKgoPc3NoX3B1YmxpY19rZXlzGAsgAygJQhG6SA6SAQsQMiIHcgUQARiAQBIbCgh1c2VyZGF0YRgMIAEoCUIJukgGcgQYgIACEksKD2FsbG9jYXRpb25fdHlwZRgNIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESOAoOZmlyZXdhbGxfcnVsZXMYDiABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFJ1bGVzEjoKCmRuc19zZXJ2ZXIYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYECADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEioKA3ZwbhgRIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVWUE4iYwoYTWFjaGluZUFsbG9jYXRpb25OZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHwoSbm9fYXV0b19hY3F1aXJlX2lwGAIgASgISACIAQFCFQoTX25vX2F1dG9fYWNxdWlyZV9pcCJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQbgs66xAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBuCzrrECARIaCgRmcm9tGAQgAygJQgy6SAmSAQbgs66xAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQimgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBuCzrrECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEG4LOusQIBEhkKA2lwcxgEIAMoCUIMukgJkgEG6LOusQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0i2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACItMBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASJaCgtNYWNoaW5lQmlvcxIZCgd2ZXJzaW9uGAEgASgJQgi6SAVyAxiAAhIYCgZ2ZW5kb3IYAiABKAlCCLpIBXIDGIACEhYKBGRhdGUYAyABKAlCCLpIBXIDGIACIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJQCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgiwQYKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI2CgRpcG1pGAsgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUlQTUlRdWVyeUgKiAEBEjQKA2ZydRgMIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlVRdWVyeUgLiAEBEj4KCGhhcmR3YXJlGA0gASgLMicubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlUXVlcnlIDIgBARIzCgVzdGF0ZRgOIAEoDjIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0ZUgNiAEBQgcKBV91dWlkQgcKBV9uYW1lQgwKCl9wYXJ0aXRpb25CBwoFX3NpemVCBwoFX3JhY2tCCQoHX2xhYmVsc0INCgtfYWxsb2NhdGlvbkIKCghfbmV0d29ya0IGCgRfbmljQgcKBV9kaXNrQgcKBV9pcG1pQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZSLQAwoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQFCBwoFX3V1aWRCBwoFX25hbWVCCgoIX3Byb2plY3RCCAoGX2ltYWdlQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfaG9zdG5hbWVCEgoQX2FsbG9jYXRpb25fdHlwZUIJCgdfbGFiZWxzIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQbgs66xAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBuCzrrECARIZCgNpcHMYBCADKAlCDLpICZIBBuizrrECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiugEKEE1hY2hpbmVJUE1JUXVlcnkSHQoHYWRkcmVzcxgBIAEoCUIHukgEcgJwAUgAiAEBEh0KA21hYxgCIAEoCUILukgIcga4s66xAgFIAYgBARIbCgR1c2VyGAMgASgJQgi6SAVyAxiAAUgCiAEBEiAKCWludGVyZmFjZRgEIAEoCUIIukgFcgMYgAFIA4gBAUIKCghfYWRkcmVzc0IGCgRfbWFjQgcKBV91c2VyQgwKCl9pbnRlcmZhY2UigwQKD01hY2hpbmVGUlVRdWVyeRIqChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgi6SAVyAxiAAUgAiAEBEioKE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCCLpIBXIDGIABSAGIAQESIAoJYm9hcmRfbWZnGAMgASgJQgi6SAVyAxiAAUgCiAEBEiMKDGJvYXJkX3NlcmlhbBgEIAEoCUIIukgFcgMYgAFIA4gBARIoChFib2FyZF9wYXJ0X251bWJlchgFIAEoCUIIukgFcgMYgAFIBIgBARIrChRwcm9kdWN0X21hbnVmYWN0dXJlchgGIAEoCUIIukgFcgMYgAFIBYgBARIqChNwcm9kdWN0X3BhcnRfbnVtYmVyGAcgASgJQgi6SAVyAxiAAUgGiAEBEiUKDnByb2R1Y3Rfc2VyaWFsGAggASgJQgi6SAVyAxiAAUgHiAEBQhYKFF9jaGFzc2lzX3BhcnRfbnVtYmVyQhYKFF9jaGFzc2lzX3BhcnRfc2VyaWFsQgwKCl9ib2FyZF9tZmdCDwoNX2JvYXJkX3NlcmlhbEIUChJfYm9hcmRfcGFydF9udW1iZXJCFwoVX3Byb2R1Y3RfbWFudWZhY3R1cmVyQhYKFF9wcm9kdWN0X3BhcnRfbnVtYmVyQhEKD19wcm9kdWN0X3NlcmlhbCJcChRNYWNoaW5lSGFyZHdhcmVRdWVyeRITCgZtZW1vcnkYASABKARIAIgBARIWCgljcHVfY29yZXMYAiABKA1IAYgBAUIJCgdfbWVtb3J5QgwKCl9jcHVfY29yZXMqZQoKSVBQcm90b2NvbBIbChdJUF9QUk9UT0NPTF9VTlNQRUNJRklFRBAAEhwKD0lQX1BST1RPQ09MX1RDUBABGgeCshkDdGNwEhwKD0lQX1BST1RPQ09MX1VEUBACGgeCshkDdWRwKq8BCgxNYWNoaW5lU3RhdGUSIwoZTUFDSElORV9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEigKFk1BQ0hJTkVfU1RBVEVfUkVTRVJWRUQQARoMgrIZCHJlc2VydmVkEiQKFE1BQ0hJTkVfU1RBVEVfTE9DS0VEEAIaCoKyGQZsb2NrZWQSKgoXTUFDSElORV9TVEFURV9BVkFJTEFCTEUQAxoNgrIZCWF2YWlsYWJsZSrfAQodTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50U3RhdGUSNgosTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfU1RBVEVfVU5TUEVDSUZJRUQQABoEgrIZABI9CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9DUkFTSExPT1AQARoNgrIZCWNyYXNobG9vcBJHCi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9GQUlMRURfUkVDTEFJTRACGhKCshkOZmFpbGVkLXJlY2xhaW0qnwYKHE1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSLworTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEjQKJU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQUxJVkUQARoJgrIZBUFsaXZlEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQ1JBU0hFRBACGguCshkHQ3Jhc2hlZBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BYRV9CT09USU5HEAMaD4KyGQtQWEUgQm9vdGluZxJGCi5NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BMQU5ORURfUkVCT09UEAQaEoKyGQ5QbGFubmVkIFJlYm9vdBI8CilNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BSRVBBUklORxAFGg2CshkJUHJlcGFyaW5nEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUkVHSVNURVJJTkcQBhoPgrIZC1JlZ2lzdGVyaW5nEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfV0FJVElORxAHGguCshkHV2FpdGluZxI+CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0lOU1RBTExJTkcQCBoOgrIZCkluc3RhbGxpbmcSTgoyTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9CT09USU5HX05FV19LRVJORUwQCRoWgrIZEkJvb3RpbmcgTmV3IEtlcm5lbBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BIT05FRF9IT01FEAoaD4KyGQtQaG9uZWQgSG9tZRJICi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX01BQ0hJTkVfUkVDTEFJTRALGhOCshkPTWFjaGluZSBSZWNsYWltKroBChFNYWNoaW5lTGl2ZWxpbmVzcxIoCh5NQUNISU5FX0xJVkVMSU5FU1NfVU5TUEVDSUZJRUQQABoEgrIZABInChhNQUNISU5FX0xJVkVMSU5FU1NfQUxJVkUQARoJgrIZBWFsaXZlEiUKF01BQ0hJTkVfTElWRUxJTkVTU19ERUFEEAIaCIKyGQRkZWFkEisKGk1BQ0hJTkVfTElWRUxJTkVTU19VTktOT1dOEAMaC4KyGQd1bmtub3duKqwBChVNYWNoaW5lQWxsb2NhdGlvblR5cGUSLQojTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABoEgrIZABIwCh9NQUNISU5FX0FMTE9DQVRJT05fVFlQRV9NQUNISU5FEAEaC4KyGQdtYWNoaW5lEjIKIE1BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX0ZJUkVXQUxMEAIaDIKyGQhmaXJld2FsbDLKBAoOTWFjaGluZVNlcnZpY2USbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAIScQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZSIGyvMYAgECEnEKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiBsrzGAIBAhJwCgRMaXN0EiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlIgvK8xgDAQID4PMYAhJxCgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); + fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLZBgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIZCgNpcHMYDiADKAlCDLpICZIBBuizrrECARIWCg5wbGFjZW1lbnRfdGFncxgPIAMoCRI6CgpkbnNfc2VydmVyGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGBEgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChJLCg9hbGxvY2F0aW9uX3R5cGUYEiABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABEjYKDWZpcmV3YWxsX3NwZWMYEyABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFNwZWNCBwoFX3V1aWRCDgoMX2Rlc2NyaXB0aW9uQgsKCV9ob3N0bmFtZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX3VzZXJkYXRhIkgKDEZpcmV3YWxsU3BlYxI4Cg5maXJld2FsbF9ydWxlcxgTIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMiSwocTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKwAgobTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgGIAMoCUIRukgOkgELEDIiB3IFEAEYgEBCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJmChlNYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5IkoKGk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG1hY2hpbmVzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJQChtNYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLgAwoHTWFjaGluZRIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIvCglwYXJ0aXRpb24YAyABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24SFgoEcmFjaxgEIAEoCUIIukgFcgMYgAESJQoEc2l6ZRgFIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUSNAoIaGFyZHdhcmUYBiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmUSLAoEYmlvcxgHIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCaW9zEjgKCmFsbG9jYXRpb24YCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbhIwCgZzdGF0dXMYCSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdHVzElYKGnJlY2VudF9wcm92aXNpb25pbmdfZXZlbnRzGAogASgLMjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cyLvAQoNTWFjaGluZVN0YXR1cxI2Cgljb25kaXRpb24YASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29uZGl0aW9uEkQKCWxlZF9zdGF0ZRgCIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRJCCgpsaXZlbGluZXNzGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUxpdmVsaW5lc3NCCLpIBYIBAhABEhwKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAQgASgJIogBChBNYWNoaW5lQ29uZGl0aW9uEjgKBXN0YXRlGAEgASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlQgi6SAWCAQIQARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgESGAoGaXNzdWVyGAMgASgJQgi6SAVyAxiAAiL1BQoRTWFjaGluZUFsbG9jYXRpb24SFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEhwKCmNyZWF0ZWRfYnkYBSABKAlCCLpIBXIDGIABEhkKB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBEicKBWltYWdlGAcgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYCCABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0EjMKCG5ldHdvcmtzGAkgAygLMiEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmsSGQoIaG9zdG5hbWUYCiABKAlCB7pIBHICaAESKgoPc3NoX3B1YmxpY19rZXlzGAsgAygJQhG6SA6SAQsQMiIHcgUQARiAQBIbCgh1c2VyZGF0YRgMIAEoCUIJukgGcgQYgIACEksKD2FsbG9jYXRpb25fdHlwZRgNIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESOAoOZmlyZXdhbGxfcnVsZXMYDiABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFJ1bGVzEjoKCmRuc19zZXJ2ZXIYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYECADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEioKA3ZwbhgRIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVWUE4iYwoYTWFjaGluZUFsbG9jYXRpb25OZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHwoSbm9fYXV0b19hY3F1aXJlX2lwGAIgASgISACIAQFCFQoTX25vX2F1dG9fYWNxdWlyZV9pcCJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQbgs66xAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBuCzrrECARIaCgRmcm9tGAQgAygJQgy6SAmSAQbgs66xAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQimgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBuCzrrECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEG4LOusQIBEhkKA2lwcxgEIAMoCUIMukgJkgEG6LOusQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0i2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACIuUBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYxIQCghob3N0bmFtZRgIIAEoCSI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASJaCgtNYWNoaW5lQmlvcxIZCgd2ZXJzaW9uGAEgASgJQgi6SAVyAxiAAhIYCgZ2ZW5kb3IYAiABKAlCCLpIBXIDGIACEhYKBGRhdGUYAyABKAlCCLpIBXIDGIACIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJQCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgiwQYKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI2CgRpcG1pGAsgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUlQTUlRdWVyeUgKiAEBEjQKA2ZydRgMIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlVRdWVyeUgLiAEBEj4KCGhhcmR3YXJlGA0gASgLMicubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlUXVlcnlIDIgBARIzCgVzdGF0ZRgOIAEoDjIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0ZUgNiAEBQgcKBV91dWlkQgcKBV9uYW1lQgwKCl9wYXJ0aXRpb25CBwoFX3NpemVCBwoFX3JhY2tCCQoHX2xhYmVsc0INCgtfYWxsb2NhdGlvbkIKCghfbmV0d29ya0IGCgRfbmljQgcKBV9kaXNrQgcKBV9pcG1pQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZSLQAwoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQFCBwoFX3V1aWRCBwoFX25hbWVCCgoIX3Byb2plY3RCCAoGX2ltYWdlQhQKEl9maWxlc3lzdGVtX2xheW91dEILCglfaG9zdG5hbWVCEgoQX2FsbG9jYXRpb25fdHlwZUIJCgdfbGFiZWxzIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQbgs66xAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBuCzrrECARIZCgNpcHMYBCADKAlCDLpICZIBBuizrrECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiugEKEE1hY2hpbmVJUE1JUXVlcnkSHQoHYWRkcmVzcxgBIAEoCUIHukgEcgJwAUgAiAEBEh0KA21hYxgCIAEoCUILukgIcga4s66xAgFIAYgBARIbCgR1c2VyGAMgASgJQgi6SAVyAxiAAUgCiAEBEiAKCWludGVyZmFjZRgEIAEoCUIIukgFcgMYgAFIA4gBAUIKCghfYWRkcmVzc0IGCgRfbWFjQgcKBV91c2VyQgwKCl9pbnRlcmZhY2UigwQKD01hY2hpbmVGUlVRdWVyeRIqChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgi6SAVyAxiAAUgAiAEBEioKE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCCLpIBXIDGIABSAGIAQESIAoJYm9hcmRfbWZnGAMgASgJQgi6SAVyAxiAAUgCiAEBEiMKDGJvYXJkX3NlcmlhbBgEIAEoCUIIukgFcgMYgAFIA4gBARIoChFib2FyZF9wYXJ0X251bWJlchgFIAEoCUIIukgFcgMYgAFIBIgBARIrChRwcm9kdWN0X21hbnVmYWN0dXJlchgGIAEoCUIIukgFcgMYgAFIBYgBARIqChNwcm9kdWN0X3BhcnRfbnVtYmVyGAcgASgJQgi6SAVyAxiAAUgGiAEBEiUKDnByb2R1Y3Rfc2VyaWFsGAggASgJQgi6SAVyAxiAAUgHiAEBQhYKFF9jaGFzc2lzX3BhcnRfbnVtYmVyQhYKFF9jaGFzc2lzX3BhcnRfc2VyaWFsQgwKCl9ib2FyZF9tZmdCDwoNX2JvYXJkX3NlcmlhbEIUChJfYm9hcmRfcGFydF9udW1iZXJCFwoVX3Byb2R1Y3RfbWFudWZhY3R1cmVyQhYKFF9wcm9kdWN0X3BhcnRfbnVtYmVyQhEKD19wcm9kdWN0X3NlcmlhbCJcChRNYWNoaW5lSGFyZHdhcmVRdWVyeRITCgZtZW1vcnkYASABKARIAIgBARIWCgljcHVfY29yZXMYAiABKA1IAYgBAUIJCgdfbWVtb3J5QgwKCl9jcHVfY29yZXMqZQoKSVBQcm90b2NvbBIbChdJUF9QUk9UT0NPTF9VTlNQRUNJRklFRBAAEhwKD0lQX1BST1RPQ09MX1RDUBABGgeCshkDdGNwEhwKD0lQX1BST1RPQ09MX1VEUBACGgeCshkDdWRwKq8BCgxNYWNoaW5lU3RhdGUSIwoZTUFDSElORV9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEigKFk1BQ0hJTkVfU1RBVEVfUkVTRVJWRUQQARoMgrIZCHJlc2VydmVkEiQKFE1BQ0hJTkVfU1RBVEVfTE9DS0VEEAIaCoKyGQZsb2NrZWQSKgoXTUFDSElORV9TVEFURV9BVkFJTEFCTEUQAxoNgrIZCWF2YWlsYWJsZSrfAQodTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50U3RhdGUSNgosTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfU1RBVEVfVU5TUEVDSUZJRUQQABoEgrIZABI9CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9DUkFTSExPT1AQARoNgrIZCWNyYXNobG9vcBJHCi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9GQUlMRURfUkVDTEFJTRACGhKCshkOZmFpbGVkLXJlY2xhaW0qnwYKHE1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSLworTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEjQKJU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQUxJVkUQARoJgrIZBUFsaXZlEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQ1JBU0hFRBACGguCshkHQ3Jhc2hlZBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BYRV9CT09USU5HEAMaD4KyGQtQWEUgQm9vdGluZxJGCi5NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BMQU5ORURfUkVCT09UEAQaEoKyGQ5QbGFubmVkIFJlYm9vdBI8CilNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BSRVBBUklORxAFGg2CshkJUHJlcGFyaW5nEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUkVHSVNURVJJTkcQBhoPgrIZC1JlZ2lzdGVyaW5nEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfV0FJVElORxAHGguCshkHV2FpdGluZxI+CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0lOU1RBTExJTkcQCBoOgrIZCkluc3RhbGxpbmcSTgoyTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9CT09USU5HX05FV19LRVJORUwQCRoWgrIZEkJvb3RpbmcgTmV3IEtlcm5lbBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BIT05FRF9IT01FEAoaD4KyGQtQaG9uZWQgSG9tZRJICi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX01BQ0hJTkVfUkVDTEFJTRALGhOCshkPTWFjaGluZSBSZWNsYWltKroBChFNYWNoaW5lTGl2ZWxpbmVzcxIoCh5NQUNISU5FX0xJVkVMSU5FU1NfVU5TUEVDSUZJRUQQABoEgrIZABInChhNQUNISU5FX0xJVkVMSU5FU1NfQUxJVkUQARoJgrIZBWFsaXZlEiUKF01BQ0hJTkVfTElWRUxJTkVTU19ERUFEEAIaCIKyGQRkZWFkEisKGk1BQ0hJTkVfTElWRUxJTkVTU19VTktOT1dOEAMaC4KyGQd1bmtub3duKqwBChVNYWNoaW5lQWxsb2NhdGlvblR5cGUSLQojTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABoEgrIZABIwCh9NQUNISU5FX0FMTE9DQVRJT05fVFlQRV9NQUNISU5FEAEaC4KyGQdtYWNoaW5lEjIKIE1BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX0ZJUkVXQUxMEAIaDIKyGQhmaXJld2FsbDLKBAoOTWFjaGluZVNlcnZpY2USbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAIScQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZSIGyvMYAgECEnEKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiBsrzGAIBAhJwCgRMaXN0EiwubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlIgvK8xgDAQID4PMYAhJxCgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZURlbGV0ZVJlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_filesystem, file_metalstack_api_v2_image, file_metalstack_api_v2_network, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size]); /** * MachineServiceGetRequest is the request payload for a machine get request @@ -1132,6 +1132,13 @@ export type MachineNic = Message<"metalstack.api.v2.MachineNic"> & { * @generated from field: repeated metalstack.api.v2.MachineNic neighbors = 7; */ neighbors: MachineNic[]; + + /** + * Hostname the nic belongs to + * + * @generated from field: string hostname = 8; + */ + hostname: string; }; /** diff --git a/js/metalstack/infra/v2/event_pb.ts b/js/metalstack/infra/v2/event_pb.ts new file mode 100644 index 00000000..1ffe534c --- /dev/null +++ b/js/metalstack/infra/v2/event_pb.ts @@ -0,0 +1,218 @@ +// @generated by protoc-gen-es v2.10.1 with parameter "target=ts" +// @generated from file metalstack/infra/v2/event.proto (package metalstack.infra.v2, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_metalstack_api_v2_common } from "../../api/v2/common_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file metalstack/infra/v2/event.proto. + */ +export const file_metalstack_infra_v2_event: GenFile = /*@__PURE__*/ + fileDesc("Ch9tZXRhbHN0YWNrL2luZnJhL3YyL2V2ZW50LnByb3RvEhNtZXRhbHN0YWNrLmluZnJhLnYyIsEBChdFdmVudFNlcnZpY2VTZW5kUmVxdWVzdBJICgZldmVudHMYASADKAsyOC5tZXRhbHN0YWNrLmluZnJhLnYyLkV2ZW50U2VydmljZVNlbmRSZXF1ZXN0LkV2ZW50c0VudHJ5GlwKC0V2ZW50c0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLm1ldGFsc3RhY2suaW5mcmEudjIuTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50OgI4ASI6ChhFdmVudFNlcnZpY2VTZW5kUmVzcG9uc2USDgoGZXZlbnRzGAEgASgEEg4KBmZhaWxlZBgCIAMoCSKaAQoYTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50EigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkMKBWV2ZW50GAIgASgOMioubWV0YWxzdGFjay5pbmZyYS52Mi5Qcm92aXNpb25pbmdFdmVudFR5cGVCCLpIBYIBAhABEg8KB21lc3NhZ2UYAyABKAkquAUKFVByb3Zpc2lvbmluZ0V2ZW50VHlwZRInCiNQUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEiwKHVBST1ZJU0lPTklOR19FVkVOVF9UWVBFX0FMSVZFEAEaCYKyGQVBbGl2ZRIwCh9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9DUkFTSEVEEAIaC4KyGQdDcmFzaGVkEjgKI1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BYRV9CT09USU5HEAMaD4KyGQtQWEUgQm9vdGluZxI+CiZQUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9QTEFOTkVEX1JFQk9PVBAEGhKCshkOUGxhbm5lZCBSZWJvb3QSNAohUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFJFUEFSSU5HEAUaDYKyGQlQcmVwYXJpbmcSOAojUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUkVHSVNURVJJTkcQBhoPgrIZC1JlZ2lzdGVyaW5nEjAKH1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1dBSVRJTkcQBxoLgrIZB1dhaXRpbmcSNgoiUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfSU5TVEFMTElORxAIGg6CshkKSW5zdGFsbGluZxJGCipQUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9CT09USU5HX05FV19LRVJORUwQCRoWgrIZEkJvb3RpbmcgTmV3IEtlcm5lbBI4CiNQUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9QSE9ORURfSE9NRRAKGg+CshkLUGhvbmVkIEhvbWUSQAonUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfTUFDSElORV9SRUNMQUlNEAsaE4KyGQ9NYWNoaW5lIFJlY2xhaW0yfgoMRXZlbnRTZXJ2aWNlEm4KBFNlbmQSLC5tZXRhbHN0YWNrLmluZnJhLnYyLkV2ZW50U2VydmljZVNlbmRSZXF1ZXN0Gi0ubWV0YWxzdGFjay5pbmZyYS52Mi5FdmVudFNlcnZpY2VTZW5kUmVzcG9uc2UiCeDzGALq8xgBAULOAQoXY29tLm1ldGFsc3RhY2suaW5mcmEudjJCCkV2ZW50UHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9pbmZyYS92MjtpbmZyYXYyogIDTUlYqgITTWV0YWxzdGFjay5JbmZyYS5WMsoCE01ldGFsc3RhY2tcSW5mcmFcVjLiAh9NZXRhbHN0YWNrXEluZnJhXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6SW5mcmE6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common]); + +/** + * EventServiceSendRequest. + * + * @generated from message metalstack.infra.v2.EventServiceSendRequest + */ +export type EventServiceSendRequest = Message<"metalstack.infra.v2.EventServiceSendRequest"> & { + /** + * Events grouped by machine IDs. + * + * @generated from field: map events = 1; + */ + events: { [key: string]: MachineProvisioningEvent }; +}; + +/** + * Describes the message metalstack.infra.v2.EventServiceSendRequest. + * Use `create(EventServiceSendRequestSchema)` to create a new message. + */ +export const EventServiceSendRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_event, 0); + +/** + * EventServiceSendResponse. + * + * @generated from message metalstack.infra.v2.EventServiceSendResponse + */ +export type EventServiceSendResponse = Message<"metalstack.infra.v2.EventServiceSendResponse"> & { + /** + * Events counts the number of events successfully stored in the database. + * + * @generated from field: uint64 events = 1; + */ + events: bigint; + + /** + * Failed contains IDs of all machines whose events could not be stored in the database. + * + * @generated from field: repeated string failed = 2; + */ + failed: string[]; +}; + +/** + * Describes the message metalstack.infra.v2.EventServiceSendResponse. + * Use `create(EventServiceSendResponseSchema)` to create a new message. + */ +export const EventServiceSendResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_event, 1); + +/** + * MachineProvisioningEvent contains details about an event. + * + * @generated from message metalstack.infra.v2.MachineProvisioningEvent + */ +export type MachineProvisioningEvent = Message<"metalstack.infra.v2.MachineProvisioningEvent"> & { + /** + * Time the event occurred at. + * + * @generated from field: google.protobuf.Timestamp time = 1; + */ + time?: Timestamp; + + /** + * Event that occurred. + * + * @generated from field: metalstack.infra.v2.ProvisioningEventType event = 2; + */ + event: ProvisioningEventType; + + /** + * Message describing the event in more detail. + * + * @generated from field: string message = 3; + */ + message: string; +}; + +/** + * Describes the message metalstack.infra.v2.MachineProvisioningEvent. + * Use `create(MachineProvisioningEventSchema)` to create a new message. + */ +export const MachineProvisioningEventSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_metalstack_infra_v2_event, 2); + +/** + * ProvisioningEventType is a short description of a machine event. + * + * @generated from enum metalstack.infra.v2.ProvisioningEventType + */ +export enum ProvisioningEventType { + /** + * PROVISIONING_EVENT_TYPE_UNSPECIFIED is unspecified. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * PROVISIONING_EVENT_TYPE_ALIVE means the machine has reported itself to the API not long ago. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_ALIVE = 1; + */ + ALIVE = 1, + + /** + * PROVISIONING_EVENT_TYPE_CRASHED means an irregularity in the machine's lifecycle. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_CRASHED = 2; + */ + CRASHED = 2, + + /** + * PROVISIONING_EVENT_TYPE_PXE_BOOTING is sent when an unprovisioned machine requests a boot image via PXE. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_PXE_BOOTING = 3; + */ + PXE_BOOTING = 3, + + /** + * PROVISIONING_EVENT_TYPE_PLANNED_REBOOT means the machine was scheduled for reboot. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_PLANNED_REBOOT = 4; + */ + PLANNED_REBOOT = 4, + + /** + * PROVISIONING_EVENT_TYPE_PREPARING means the metal-hammer has started. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_PREPARING = 5; + */ + PREPARING = 5, + + /** + * PROVISIONING_EVENT_TYPE_REGISTERING means the metal-hammer is attempting to register the machine at the API. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_REGISTERING = 6; + */ + REGISTERING = 6, + + /** + * PROVISIONING_EVENT_TYPE_WAITING means the machine has successfully reached the state where it is waiting for allocation. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_WAITING = 7; + */ + WAITING = 7, + + /** + * PROVISIONING_EVENT_TYPE_INSTALLING means the machine was allocated and the requested OS is being installed. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_INSTALLING = 8; + */ + INSTALLING = 8, + + /** + * PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL means the machine has successfully been installed and is now booting into the new OS. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_BOOTING_NEW_KERNEL = 9; + */ + BOOTING_NEW_KERNEL = 9, + + /** + * PROVISIONING_EVENT_TYPE_PHONED_HOME is sent periodically by an allocated machine to indicate its liveliness. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_PHONED_HOME = 10; + */ + PHONED_HOME = 10, + + /** + * PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM means the machine was freed and is about to return into the pool of waiting machines. + * + * @generated from enum value: PROVISIONING_EVENT_TYPE_MACHINE_RECLAIM = 11; + */ + MACHINE_RECLAIM = 11, +} + +/** + * Describes the enum metalstack.infra.v2.ProvisioningEventType. + */ +export const ProvisioningEventTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_metalstack_infra_v2_event, 0); + +/** + * EventService serves event related functions. + * + * @generated from service metalstack.infra.v2.EventService + */ +export const EventService: GenService<{ + /** + * Send a series of machine provisioning events. + * + * @generated from rpc metalstack.infra.v2.EventService.Send + */ + send: { + methodKind: "unary"; + input: typeof EventServiceSendRequestSchema; + output: typeof EventServiceSendResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_metalstack_infra_v2_event, 0); + From ed1096688d91356aa923c19fa2531f6a93ef856c Mon Sep 17 00:00:00 2001 From: ostempel Date: Thu, 18 Dec 2025 16:22:37 +0100 Subject: [PATCH 3/4] fix typos --- _typos.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/_typos.toml b/_typos.toml index d77596ff..ce075228 100644 --- a/_typos.toml +++ b/_typos.toml @@ -12,4 +12,5 @@ extend-ignore-re = [ extend-exclude = [ "go.mod", "go.sum", + "./js/**/*", ] From 3d39be43ebadbadcb7fed2f08a6c5dda8796c70a Mon Sep 17 00:00:00 2001 From: ostempel Date: Thu, 18 Dec 2025 16:24:20 +0100 Subject: [PATCH 4/4] revert typos config --- _typos.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/_typos.toml b/_typos.toml index ce075228..d77596ff 100644 --- a/_typos.toml +++ b/_typos.toml @@ -12,5 +12,4 @@ extend-ignore-re = [ extend-exclude = [ "go.mod", "go.sum", - "./js/**/*", ]