diff --git a/doc/index.html b/doc/index.html
index 1600ebdf..a60e2082 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -1208,6 +1208,14 @@
Table of Contents
metalstack/admin/v2/partition.proto
+ -
+ MMachineSizeCapacity
+
+
+ -
+ MPartitionCapacity
+
+
-
MPartitionServiceCapacityRequest
@@ -10819,46 +10827,8 @@
-
- PartitionServiceListRequest is the request payload for a partition capacity request
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | id |
- string |
- optional |
- ID of the partition to get |
-
-
-
- | size |
- string |
- optional |
- Size of machines to show the capacity |
-
-
-
- | project |
- string |
- optional |
- Project of machines to show the capacity |
-
-
-
-
-
-
-
-
-
-
- PartitionServiceCapacityResponse is the response payload for a partition capacity request
+
+ ServerCapacity is the capacity of one server type, eg machine size
@@ -10982,6 +10952,99 @@ PartitionCapacity is the capacity of one partition
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | partition |
+ string |
+ |
+ Partition of which this capacity is reported. |
+
+
+
+ | machine_size_capacities |
+ MachineSizeCapacity |
+ repeated |
+ MachineSizeCapacities is the capacity per machine size. |
+
+
+
+
+
+
+
+
+
+ PartitionServiceCapacityRequest
+ PartitionServiceListRequest is the request payload for a partition capacity request
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | id |
+ string |
+ optional |
+ ID of the partition to get |
+
+
+
+ | size |
+ string |
+ optional |
+ Size of machines to show the capacity |
+
+
+
+ | project |
+ string |
+ optional |
+ Project of machines to show the capacity |
+
+
+
+
+
+
+
+
+
+ PartitionServiceCapacityResponse
+ PartitionServiceCapacityResponse is the response payload for a partition capacity request
+
+
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | partition_capacity |
+ PartitionCapacity |
+ repeated |
+ PartitionCapacity is a capacity report per partition |
+
+
+
+
+
+
+
+
+
PartitionServiceCreateRequest
PartitionServiceCreateRequest is the request payload for a partition create request
diff --git a/go/client/token-persistent-funcs_test.go b/go/client/token-persistent-funcs_test.go
index f4324c78..83323369 100644
--- a/go/client/token-persistent-funcs_test.go
+++ b/go/client/token-persistent-funcs_test.go
@@ -1,77 +1,28 @@
package client_test
import (
- "log/slog"
- "net/http"
- "net/http/httptest"
"os"
"path"
"testing"
- "time"
"github.com/metal-stack/api/go/client"
- apiv2 "github.com/metal-stack/api/go/metalstack/api/v2"
- "github.com/metal-stack/api/go/metalstack/api/v2/apiv2connect"
"github.com/stretchr/testify/require"
)
func TestNewFilesystemTokenPersiter(t *testing.T) {
- var (
- vs = &mockVersionService{}
- ts = &mockTokenService{}
- mux = http.NewServeMux()
- )
+ tokenPath := path.Join(t.TempDir(), "token")
- mux.Handle(apiv2connect.NewVersionServiceHandler(vs))
- mux.Handle(apiv2connect.NewTokenServiceHandler(ts))
- server := httptest.NewTLSServer(mux)
- server.EnableHTTP2 = true
- defer func() {
- server.Close()
- }()
-
- tokenString, err := generateToken(1 * time.Second)
- require.NoError(t, err)
-
- log := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelDebug}))
-
- tokenDir, err := os.MkdirTemp("/tmp", "token-")
- require.NoError(t, err)
- tokenPath := path.Join(tokenDir, "token")
-
- _, err = os.OpenFile(tokenPath, os.O_RDONLY|os.O_CREATE, 0600)
+ _, err := os.OpenFile(tokenPath, os.O_RDONLY|os.O_CREATE, 0600)
require.NoError(t, err)
filesystemPersister, err := client.NewFilesystemTokenPersister(tokenPath)
require.NoError(t, err)
- c, err := client.New(&client.DialConfig{
- BaseURL: server.URL,
- Token: tokenString,
- Transport: server.Client().Transport,
- TokenRenewal: &client.TokenRenewal{
- PersistTokenFn: filesystemPersister,
- },
- Log: log,
- })
- require.NoError(t, err)
- v, err := c.Apiv2().Version().Get(t.Context(), &apiv2.VersionServiceGetRequest{})
- require.NoError(t, err)
- require.NotNil(t, v)
- require.Equal(t, "1.0", v.Version.Version)
- require.False(t, ts.wasCalled)
- require.Equal(t, tokenString, vs.token)
+ token := "a-token"
- time.Sleep(2 * time.Second)
- v, err = c.Apiv2().Version().Get(t.Context(), &apiv2.VersionServiceGetRequest{})
+ err = filesystemPersister(token)
require.NoError(t, err)
- require.NotNil(t, v)
- require.Equal(t, "1.0", v.Version.Version)
- require.True(t, ts.wasCalled)
- require.NotEqual(t, tokenString, vs.token, "token must have changed")
-
tokenBytes, err := os.ReadFile(tokenPath)
require.NoError(t, err)
- require.Equal(t, string(tokenBytes), vs.token)
-
+ require.Equal(t, token, string(tokenBytes))
}
diff --git a/go/metalstack/admin/v2/partition.pb.go b/go/metalstack/admin/v2/partition.pb.go
index 68dcedd4..8b68debb 100644
--- a/go/metalstack/admin/v2/partition.pb.go
+++ b/go/metalstack/admin/v2/partition.pb.go
@@ -430,59 +430,160 @@ func (x *PartitionServiceCapacityRequest) GetProject() string {
// PartitionServiceCapacityResponse is the response payload for a partition capacity request
type PartitionServiceCapacityResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // PartitionCapacity is a capacity report per partition
+ PartitionCapacity []*PartitionCapacity `protobuf:"bytes,1,rep,name=partition_capacity,json=partitionCapacity,proto3" json:"partition_capacity,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *PartitionServiceCapacityResponse) Reset() {
+ *x = PartitionServiceCapacityResponse{}
+ mi := &file_metalstack_admin_v2_partition_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *PartitionServiceCapacityResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PartitionServiceCapacityResponse) ProtoMessage() {}
+
+func (x *PartitionServiceCapacityResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_partition_proto_msgTypes[7]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PartitionServiceCapacityResponse.ProtoReflect.Descriptor instead.
+func (*PartitionServiceCapacityResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_partition_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *PartitionServiceCapacityResponse) GetPartitionCapacity() []*PartitionCapacity {
+ if x != nil {
+ return x.PartitionCapacity
+ }
+ return nil
+}
+
+// PartitionCapacity is the capacity of one partition
+type PartitionCapacity struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Partition of which this capacity is reported.
+ Partition string `protobuf:"bytes,1,opt,name=partition,proto3" json:"partition,omitempty"`
+ // MachineSizeCapacities is the capacity per machine size.
+ MachineSizeCapacities []*MachineSizeCapacity `protobuf:"bytes,2,rep,name=machine_size_capacities,json=machineSizeCapacities,proto3" json:"machine_size_capacities,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *PartitionCapacity) Reset() {
+ *x = PartitionCapacity{}
+ mi := &file_metalstack_admin_v2_partition_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *PartitionCapacity) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PartitionCapacity) ProtoMessage() {}
+
+func (x *PartitionCapacity) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_partition_proto_msgTypes[8]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PartitionCapacity.ProtoReflect.Descriptor instead.
+func (*PartitionCapacity) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_partition_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *PartitionCapacity) GetPartition() string {
+ if x != nil {
+ return x.Partition
+ }
+ return ""
+}
+
+func (x *PartitionCapacity) GetMachineSizeCapacities() []*MachineSizeCapacity {
+ if x != nil {
+ return x.MachineSizeCapacities
+ }
+ return nil
+}
+
+// ServerCapacity is the capacity of one server type, eg machine size
+type MachineSizeCapacity struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Size is the size id correlating to all counts in this server capacity.
- Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"`
+ Size string `protobuf:"bytes,2,opt,name=size,proto3" json:"size,omitempty"`
// Total is the total amount of machines for this size.
- Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
+ Total int64 `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"`
// PhonedHome is the amount of machines that are currently in the provisioning state "phoned home".
- PhonedHome int64 `protobuf:"varint,3,opt,name=phoned_home,json=phonedHome,proto3" json:"phoned_home,omitempty"`
+ PhonedHome int64 `protobuf:"varint,4,opt,name=phoned_home,json=phonedHome,proto3" json:"phoned_home,omitempty"`
// Waiting is the amount of machines that are currently in the provisioning state "waiting".
- Waiting int64 `protobuf:"varint,4,opt,name=waiting,proto3" json:"waiting,omitempty"`
+ Waiting int64 `protobuf:"varint,5,opt,name=waiting,proto3" json:"waiting,omitempty"`
// Other is the amount of machines that are neither in the provisioning state waiting nor in phoned home but in another provisioning state.
- Other int64 `protobuf:"varint,5,opt,name=other,proto3" json:"other,omitempty"`
+ Other int64 `protobuf:"varint,6,opt,name=other,proto3" json:"other,omitempty"`
// OtherMachines contains the machine IDs for machines that were classified into "Other".
- OtherMachines []string `protobuf:"bytes,6,rep,name=other_machines,json=otherMachines,proto3" json:"other_machines,omitempty"`
+ OtherMachines []string `protobuf:"bytes,7,rep,name=other_machines,json=otherMachines,proto3" json:"other_machines,omitempty"`
// Allocated is the amount of machines that are currently allocated.
- Allocated int64 `protobuf:"varint,7,opt,name=allocated,proto3" json:"allocated,omitempty"`
+ Allocated int64 `protobuf:"varint,8,opt,name=allocated,proto3" json:"allocated,omitempty"`
// 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.
- Allocatable int64 `protobuf:"varint,8,opt,name=allocatable,proto3" json:"allocatable,omitempty"`
+ Allocatable int64 `protobuf:"varint,9,opt,name=allocatable,proto3" json:"allocatable,omitempty"`
// 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.
- Free int64 `protobuf:"varint,9,opt,name=free,proto3" json:"free,omitempty"`
+ Free int64 `protobuf:"varint,10,opt,name=free,proto3" json:"free,omitempty"`
// 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.
- Unavailable int64 `protobuf:"varint,10,opt,name=unavailable,proto3" json:"unavailable,omitempty"`
+ Unavailable int64 `protobuf:"varint,11,opt,name=unavailable,proto3" json:"unavailable,omitempty"`
// Faulty is the amount of machines that are neither allocated nor in the pool of available machines because they report an error.
- Faulty int64 `protobuf:"varint,11,opt,name=faulty,proto3" json:"faulty,omitempty"`
+ Faulty int64 `protobuf:"varint,12,opt,name=faulty,proto3" json:"faulty,omitempty"`
// FaultyMachines contains the machine IDs for machines that were classified into "Faulty".
- FaultyMachines []string `protobuf:"bytes,12,rep,name=faulty_machines,json=faultyMachines,proto3" json:"faulty_machines,omitempty"`
+ FaultyMachines []string `protobuf:"bytes,13,rep,name=faulty_machines,json=faultyMachines,proto3" json:"faulty_machines,omitempty"`
// Reservations is the amount of reservations made for this size.
- Reservations int64 `protobuf:"varint,13,opt,name=reservations,proto3" json:"reservations,omitempty"`
+ Reservations int64 `protobuf:"varint,14,opt,name=reservations,proto3" json:"reservations,omitempty"`
// UsedReservations is the amount of reservations already used up for this size.
- UsedReservations int64 `protobuf:"varint,14,opt,name=used_reservations,json=usedReservations,proto3" json:"used_reservations,omitempty"`
+ UsedReservations int64 `protobuf:"varint,15,opt,name=used_reservations,json=usedReservations,proto3" json:"used_reservations,omitempty"`
// RemainingReservations is the amount of reservations remaining for this size.
- RemainingReservations int64 `protobuf:"varint,15,opt,name=remaining_reservations,json=remainingReservations,proto3" json:"remaining_reservations,omitempty"`
+ RemainingReservations int64 `protobuf:"varint,16,opt,name=remaining_reservations,json=remainingReservations,proto3" json:"remaining_reservations,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
-func (x *PartitionServiceCapacityResponse) Reset() {
- *x = PartitionServiceCapacityResponse{}
- mi := &file_metalstack_admin_v2_partition_proto_msgTypes[7]
+func (x *MachineSizeCapacity) Reset() {
+ *x = MachineSizeCapacity{}
+ mi := &file_metalstack_admin_v2_partition_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
-func (x *PartitionServiceCapacityResponse) String() string {
+func (x *MachineSizeCapacity) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*PartitionServiceCapacityResponse) ProtoMessage() {}
+func (*MachineSizeCapacity) ProtoMessage() {}
-func (x *PartitionServiceCapacityResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_admin_v2_partition_proto_msgTypes[7]
+func (x *MachineSizeCapacity) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_partition_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -493,110 +594,110 @@ func (x *PartitionServiceCapacityResponse) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use PartitionServiceCapacityResponse.ProtoReflect.Descriptor instead.
-func (*PartitionServiceCapacityResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_admin_v2_partition_proto_rawDescGZIP(), []int{7}
+// Deprecated: Use MachineSizeCapacity.ProtoReflect.Descriptor instead.
+func (*MachineSizeCapacity) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_partition_proto_rawDescGZIP(), []int{9}
}
-func (x *PartitionServiceCapacityResponse) GetSize() string {
+func (x *MachineSizeCapacity) GetSize() string {
if x != nil {
return x.Size
}
return ""
}
-func (x *PartitionServiceCapacityResponse) GetTotal() int64 {
+func (x *MachineSizeCapacity) GetTotal() int64 {
if x != nil {
return x.Total
}
return 0
}
-func (x *PartitionServiceCapacityResponse) GetPhonedHome() int64 {
+func (x *MachineSizeCapacity) GetPhonedHome() int64 {
if x != nil {
return x.PhonedHome
}
return 0
}
-func (x *PartitionServiceCapacityResponse) GetWaiting() int64 {
+func (x *MachineSizeCapacity) GetWaiting() int64 {
if x != nil {
return x.Waiting
}
return 0
}
-func (x *PartitionServiceCapacityResponse) GetOther() int64 {
+func (x *MachineSizeCapacity) GetOther() int64 {
if x != nil {
return x.Other
}
return 0
}
-func (x *PartitionServiceCapacityResponse) GetOtherMachines() []string {
+func (x *MachineSizeCapacity) GetOtherMachines() []string {
if x != nil {
return x.OtherMachines
}
return nil
}
-func (x *PartitionServiceCapacityResponse) GetAllocated() int64 {
+func (x *MachineSizeCapacity) GetAllocated() int64 {
if x != nil {
return x.Allocated
}
return 0
}
-func (x *PartitionServiceCapacityResponse) GetAllocatable() int64 {
+func (x *MachineSizeCapacity) GetAllocatable() int64 {
if x != nil {
return x.Allocatable
}
return 0
}
-func (x *PartitionServiceCapacityResponse) GetFree() int64 {
+func (x *MachineSizeCapacity) GetFree() int64 {
if x != nil {
return x.Free
}
return 0
}
-func (x *PartitionServiceCapacityResponse) GetUnavailable() int64 {
+func (x *MachineSizeCapacity) GetUnavailable() int64 {
if x != nil {
return x.Unavailable
}
return 0
}
-func (x *PartitionServiceCapacityResponse) GetFaulty() int64 {
+func (x *MachineSizeCapacity) GetFaulty() int64 {
if x != nil {
return x.Faulty
}
return 0
}
-func (x *PartitionServiceCapacityResponse) GetFaultyMachines() []string {
+func (x *MachineSizeCapacity) GetFaultyMachines() []string {
if x != nil {
return x.FaultyMachines
}
return nil
}
-func (x *PartitionServiceCapacityResponse) GetReservations() int64 {
+func (x *MachineSizeCapacity) GetReservations() int64 {
if x != nil {
return x.Reservations
}
return 0
}
-func (x *PartitionServiceCapacityResponse) GetUsedReservations() int64 {
+func (x *MachineSizeCapacity) GetUsedReservations() int64 {
if x != nil {
return x.UsedReservations
}
return 0
}
-func (x *PartitionServiceCapacityResponse) GetRemainingReservations() int64 {
+func (x *MachineSizeCapacity) GetRemainingReservations() int64 {
if x != nil {
return x.RemainingReservations
}
@@ -640,25 +741,30 @@ const file_metalstack_admin_v2_partition_proto_rawDesc = "" +
"\x03_idB\a\n" +
"\x05_sizeB\n" +
"\n" +
- "\b_project\"\x83\x04\n" +
- " PartitionServiceCapacityResponse\x12\x12\n" +
- "\x04size\x18\x01 \x01(\tR\x04size\x12\x14\n" +
- "\x05total\x18\x02 \x01(\x03R\x05total\x12\x1f\n" +
- "\vphoned_home\x18\x03 \x01(\x03R\n" +
+ "\b_project\"y\n" +
+ " PartitionServiceCapacityResponse\x12U\n" +
+ "\x12partition_capacity\x18\x01 \x03(\v2&.metalstack.admin.v2.PartitionCapacityR\x11partitionCapacity\"\x93\x01\n" +
+ "\x11PartitionCapacity\x12\x1c\n" +
+ "\tpartition\x18\x01 \x01(\tR\tpartition\x12`\n" +
+ "\x17machine_size_capacities\x18\x02 \x03(\v2(.metalstack.admin.v2.MachineSizeCapacityR\x15machineSizeCapacities\"\xf6\x03\n" +
+ "\x13MachineSizeCapacity\x12\x12\n" +
+ "\x04size\x18\x02 \x01(\tR\x04size\x12\x14\n" +
+ "\x05total\x18\x03 \x01(\x03R\x05total\x12\x1f\n" +
+ "\vphoned_home\x18\x04 \x01(\x03R\n" +
"phonedHome\x12\x18\n" +
- "\awaiting\x18\x04 \x01(\x03R\awaiting\x12\x14\n" +
- "\x05other\x18\x05 \x01(\x03R\x05other\x12%\n" +
- "\x0eother_machines\x18\x06 \x03(\tR\rotherMachines\x12\x1c\n" +
- "\tallocated\x18\a \x01(\x03R\tallocated\x12 \n" +
- "\vallocatable\x18\b \x01(\x03R\vallocatable\x12\x12\n" +
- "\x04free\x18\t \x01(\x03R\x04free\x12 \n" +
- "\vunavailable\x18\n" +
- " \x01(\x03R\vunavailable\x12\x16\n" +
- "\x06faulty\x18\v \x01(\x03R\x06faulty\x12'\n" +
- "\x0ffaulty_machines\x18\f \x03(\tR\x0efaultyMachines\x12\"\n" +
- "\freservations\x18\r \x01(\x03R\freservations\x12+\n" +
- "\x11used_reservations\x18\x0e \x01(\x03R\x10usedReservations\x125\n" +
- "\x16remaining_reservations\x18\x0f \x01(\x03R\x15remainingReservations2\x92\x04\n" +
+ "\awaiting\x18\x05 \x01(\x03R\awaiting\x12\x14\n" +
+ "\x05other\x18\x06 \x01(\x03R\x05other\x12%\n" +
+ "\x0eother_machines\x18\a \x03(\tR\rotherMachines\x12\x1c\n" +
+ "\tallocated\x18\b \x01(\x03R\tallocated\x12 \n" +
+ "\vallocatable\x18\t \x01(\x03R\vallocatable\x12\x12\n" +
+ "\x04free\x18\n" +
+ " \x01(\x03R\x04free\x12 \n" +
+ "\vunavailable\x18\v \x01(\x03R\vunavailable\x12\x16\n" +
+ "\x06faulty\x18\f \x01(\x03R\x06faulty\x12'\n" +
+ "\x0ffaulty_machines\x18\r \x03(\tR\x0efaultyMachines\x12\"\n" +
+ "\freservations\x18\x0e \x01(\x03R\freservations\x12+\n" +
+ "\x11used_reservations\x18\x0f \x01(\x03R\x10usedReservations\x125\n" +
+ "\x16remaining_reservations\x18\x10 \x01(\x03R\x15remainingReservations2\x92\x04\n" +
"\x10PartitionService\x12|\n" +
"\x06Create\x122.metalstack.admin.v2.PartitionServiceCreateRequest\x1a3.metalstack.admin.v2.PartitionServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12|\n" +
"\x06Update\x122.metalstack.admin.v2.PartitionServiceUpdateRequest\x1a3.metalstack.admin.v2.PartitionServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12|\n" +
@@ -679,7 +785,7 @@ func file_metalstack_admin_v2_partition_proto_rawDescGZIP() []byte {
return file_metalstack_admin_v2_partition_proto_rawDescData
}
-var file_metalstack_admin_v2_partition_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_metalstack_admin_v2_partition_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_metalstack_admin_v2_partition_proto_goTypes = []any{
(*PartitionServiceCreateRequest)(nil), // 0: metalstack.admin.v2.PartitionServiceCreateRequest
(*PartitionServiceUpdateRequest)(nil), // 1: metalstack.admin.v2.PartitionServiceUpdateRequest
@@ -689,36 +795,40 @@ var file_metalstack_admin_v2_partition_proto_goTypes = []any{
(*PartitionServiceDeleteResponse)(nil), // 5: metalstack.admin.v2.PartitionServiceDeleteResponse
(*PartitionServiceCapacityRequest)(nil), // 6: metalstack.admin.v2.PartitionServiceCapacityRequest
(*PartitionServiceCapacityResponse)(nil), // 7: metalstack.admin.v2.PartitionServiceCapacityResponse
- (*v2.Partition)(nil), // 8: metalstack.api.v2.Partition
- (*v2.UpdateMeta)(nil), // 9: metalstack.api.v2.UpdateMeta
- (*v2.PartitionBootConfiguration)(nil), // 10: metalstack.api.v2.PartitionBootConfiguration
- (*v2.DNSServer)(nil), // 11: metalstack.api.v2.DNSServer
- (*v2.NTPServer)(nil), // 12: metalstack.api.v2.NTPServer
- (*v2.UpdateLabels)(nil), // 13: metalstack.api.v2.UpdateLabels
+ (*PartitionCapacity)(nil), // 8: metalstack.admin.v2.PartitionCapacity
+ (*MachineSizeCapacity)(nil), // 9: metalstack.admin.v2.MachineSizeCapacity
+ (*v2.Partition)(nil), // 10: metalstack.api.v2.Partition
+ (*v2.UpdateMeta)(nil), // 11: metalstack.api.v2.UpdateMeta
+ (*v2.PartitionBootConfiguration)(nil), // 12: metalstack.api.v2.PartitionBootConfiguration
+ (*v2.DNSServer)(nil), // 13: metalstack.api.v2.DNSServer
+ (*v2.NTPServer)(nil), // 14: metalstack.api.v2.NTPServer
+ (*v2.UpdateLabels)(nil), // 15: metalstack.api.v2.UpdateLabels
}
var file_metalstack_admin_v2_partition_proto_depIdxs = []int32{
- 8, // 0: metalstack.admin.v2.PartitionServiceCreateRequest.partition:type_name -> metalstack.api.v2.Partition
- 9, // 1: metalstack.admin.v2.PartitionServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
- 10, // 2: metalstack.admin.v2.PartitionServiceUpdateRequest.boot_configuration:type_name -> metalstack.api.v2.PartitionBootConfiguration
- 11, // 3: metalstack.admin.v2.PartitionServiceUpdateRequest.dns_server:type_name -> metalstack.api.v2.DNSServer
- 12, // 4: metalstack.admin.v2.PartitionServiceUpdateRequest.ntp_server:type_name -> metalstack.api.v2.NTPServer
- 13, // 5: metalstack.admin.v2.PartitionServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
- 8, // 6: metalstack.admin.v2.PartitionServiceCreateResponse.partition:type_name -> metalstack.api.v2.Partition
- 8, // 7: metalstack.admin.v2.PartitionServiceUpdateResponse.partition:type_name -> metalstack.api.v2.Partition
- 8, // 8: metalstack.admin.v2.PartitionServiceDeleteResponse.partition:type_name -> metalstack.api.v2.Partition
- 0, // 9: metalstack.admin.v2.PartitionService.Create:input_type -> metalstack.admin.v2.PartitionServiceCreateRequest
- 1, // 10: metalstack.admin.v2.PartitionService.Update:input_type -> metalstack.admin.v2.PartitionServiceUpdateRequest
- 2, // 11: metalstack.admin.v2.PartitionService.Delete:input_type -> metalstack.admin.v2.PartitionServiceDeleteRequest
- 6, // 12: metalstack.admin.v2.PartitionService.Capacity:input_type -> metalstack.admin.v2.PartitionServiceCapacityRequest
- 3, // 13: metalstack.admin.v2.PartitionService.Create:output_type -> metalstack.admin.v2.PartitionServiceCreateResponse
- 4, // 14: metalstack.admin.v2.PartitionService.Update:output_type -> metalstack.admin.v2.PartitionServiceUpdateResponse
- 5, // 15: metalstack.admin.v2.PartitionService.Delete:output_type -> metalstack.admin.v2.PartitionServiceDeleteResponse
- 7, // 16: metalstack.admin.v2.PartitionService.Capacity:output_type -> metalstack.admin.v2.PartitionServiceCapacityResponse
- 13, // [13:17] is the sub-list for method output_type
- 9, // [9:13] is the sub-list for method input_type
- 9, // [9:9] is the sub-list for extension type_name
- 9, // [9:9] is the sub-list for extension extendee
- 0, // [0:9] is the sub-list for field type_name
+ 10, // 0: metalstack.admin.v2.PartitionServiceCreateRequest.partition:type_name -> metalstack.api.v2.Partition
+ 11, // 1: metalstack.admin.v2.PartitionServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
+ 12, // 2: metalstack.admin.v2.PartitionServiceUpdateRequest.boot_configuration:type_name -> metalstack.api.v2.PartitionBootConfiguration
+ 13, // 3: metalstack.admin.v2.PartitionServiceUpdateRequest.dns_server:type_name -> metalstack.api.v2.DNSServer
+ 14, // 4: metalstack.admin.v2.PartitionServiceUpdateRequest.ntp_server:type_name -> metalstack.api.v2.NTPServer
+ 15, // 5: metalstack.admin.v2.PartitionServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
+ 10, // 6: metalstack.admin.v2.PartitionServiceCreateResponse.partition:type_name -> metalstack.api.v2.Partition
+ 10, // 7: metalstack.admin.v2.PartitionServiceUpdateResponse.partition:type_name -> metalstack.api.v2.Partition
+ 10, // 8: metalstack.admin.v2.PartitionServiceDeleteResponse.partition:type_name -> metalstack.api.v2.Partition
+ 8, // 9: metalstack.admin.v2.PartitionServiceCapacityResponse.partition_capacity:type_name -> metalstack.admin.v2.PartitionCapacity
+ 9, // 10: metalstack.admin.v2.PartitionCapacity.machine_size_capacities:type_name -> metalstack.admin.v2.MachineSizeCapacity
+ 0, // 11: metalstack.admin.v2.PartitionService.Create:input_type -> metalstack.admin.v2.PartitionServiceCreateRequest
+ 1, // 12: metalstack.admin.v2.PartitionService.Update:input_type -> metalstack.admin.v2.PartitionServiceUpdateRequest
+ 2, // 13: metalstack.admin.v2.PartitionService.Delete:input_type -> metalstack.admin.v2.PartitionServiceDeleteRequest
+ 6, // 14: metalstack.admin.v2.PartitionService.Capacity:input_type -> metalstack.admin.v2.PartitionServiceCapacityRequest
+ 3, // 15: metalstack.admin.v2.PartitionService.Create:output_type -> metalstack.admin.v2.PartitionServiceCreateResponse
+ 4, // 16: metalstack.admin.v2.PartitionService.Update:output_type -> metalstack.admin.v2.PartitionServiceUpdateResponse
+ 5, // 17: metalstack.admin.v2.PartitionService.Delete:output_type -> metalstack.admin.v2.PartitionServiceDeleteResponse
+ 7, // 18: metalstack.admin.v2.PartitionService.Capacity:output_type -> metalstack.admin.v2.PartitionServiceCapacityResponse
+ 15, // [15:19] is the sub-list for method output_type
+ 11, // [11:15] is the sub-list for method input_type
+ 11, // [11:11] is the sub-list for extension type_name
+ 11, // [11:11] is the sub-list for extension extendee
+ 0, // [0:11] is the sub-list for field type_name
}
func init() { file_metalstack_admin_v2_partition_proto_init() }
@@ -734,7 +844,7 @@ func file_metalstack_admin_v2_partition_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_admin_v2_partition_proto_rawDesc), len(file_metalstack_admin_v2_partition_proto_rawDesc)),
NumEnums: 0,
- NumMessages: 8,
+ NumMessages: 10,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/js/Makefile b/js/Makefile
index 67b37a75..2ab34125 100644
--- a/js/Makefile
+++ b/js/Makefile
@@ -2,6 +2,7 @@ VERSION_STRIPPED := $(patsubst v%,%,$(VERSION))
.PHONY: install
install:
+ bun upgrade
bun install -dd
.PHONY: clean
diff --git a/js/buf/validate/validate_pb.js b/js/buf/validate/validate_pb.js
index b2acbb4a..aa0c46ea 100644
--- a/js/buf/validate/validate_pb.js
+++ b/js/buf/validate/validate_pb.js
@@ -1,4 +1,4 @@
-// Copyright 2023-2025 Buf Technologies, Inc.
+// Copyright 2023-2026 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.
diff --git a/js/metalstack/admin/v2/filesystem_pb.js b/js/metalstack/admin/v2/filesystem_pb.js
index 0c417866..094f7f91 100644
--- a/js/metalstack/admin/v2/filesystem_pb.js
+++ b/js/metalstack/admin/v2/filesystem_pb.js
@@ -9,7 +9,7 @@ import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined
/**
* 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]);
+export const file_metalstack_admin_v2_filesystem = /*@__PURE__*/ fileDesc("CiRtZXRhbHN0YWNrL2FkbWluL3YyL2ZpbGVzeXN0ZW0ucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiYAoeRmlsZXN5c3RlbVNlcnZpY2VDcmVhdGVSZXF1ZXN0Ej4KEWZpbGVzeXN0ZW1fbGF5b3V0GAEgASgLMiMubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dCJhCh9GaWxlc3lzdGVtU2VydmljZUNyZWF0ZVJlc3BvbnNlEj4KEWZpbGVzeXN0ZW1fbGF5b3V0GAEgASgLMiMubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dCKPBAoeRmlsZXN5c3RlbVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEjIKC2ZpbGVzeXN0ZW1zGAUgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbRImCgVkaXNrcxgGIAMoCzIXLm1ldGFsc3RhY2suYXBpLnYyLkRpc2sSJQoEcmFpZBgHIAMoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlJhaWQSNQoNdm9sdW1lX2dyb3VwcxgIIAMoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlZvbHVtZUdyb3VwEjkKD2xvZ2ljYWxfdm9sdW1lcxgJIAMoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkxvZ2ljYWxWb2x1bWUSQwoLY29uc3RyYWludHMYCiABKAsyLi5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0Q29uc3RyYWludHNCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uImEKH0ZpbGVzeXN0ZW1TZXJ2aWNlVXBkYXRlUmVzcG9uc2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0IjkKHkZpbGVzeXN0ZW1TZXJ2aWNlRGVsZXRlUmVxdWVzdBIXCgJpZBgBIAEoCUILukgIcgbAs66xAgEiYQofRmlsZXN5c3RlbVNlcnZpY2VEZWxldGVSZXNwb25zZRI+ChFmaWxlc3lzdGVtX2xheW91dBgBIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQykwMKEUZpbGVzeXN0ZW1TZXJ2aWNlEn4KBkNyZWF0ZRIzLm1ldGFsc3RhY2suYWRtaW4udjIuRmlsZXN5c3RlbVNlcnZpY2VDcmVhdGVSZXF1ZXN0GjQubWV0YWxzdGFjay5hZG1pbi52Mi5GaWxlc3lzdGVtU2VydmljZUNyZWF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESfgoGVXBkYXRlEjMubWV0YWxzdGFjay5hZG1pbi52Mi5GaWxlc3lzdGVtU2VydmljZVVwZGF0ZVJlcXVlc3QaNC5tZXRhbHN0YWNrLmFkbWluLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJ+CgZEZWxldGUSMy5tZXRhbHN0YWNrLmFkbWluLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlRGVsZXRlUmVxdWVzdBo0Lm1ldGFsc3RhY2suYWRtaW4udjIuRmlsZXN5c3RlbVNlcnZpY2VEZWxldGVSZXNwb25zZSIJ0vMYAQHg8xgBQtMBChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIPRmlsZXN5c3RlbVByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [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.
diff --git a/js/metalstack/admin/v2/image_pb.js b/js/metalstack/admin/v2/image_pb.js
index c6a89e0e..463d4f9e 100644
--- a/js/metalstack/admin/v2/image_pb.js
+++ b/js/metalstack/admin/v2/image_pb.js
@@ -10,7 +10,7 @@ import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined
/**
* 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]);
+export const file_metalstack_admin_v2_image = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FkbWluL3YyL2ltYWdlLnByb3RvEhNtZXRhbHN0YWNrLmFkbWluLnYyIkQKGUltYWdlU2VydmljZUNyZWF0ZVJlcXVlc3QSJwoFaW1hZ2UYASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZSJFChpJbWFnZVNlcnZpY2VDcmVhdGVSZXNwb25zZRInCgVpbWFnZRgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlIrUDChlJbWFnZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIdCgN1cmwYAyABKAlCC7pICHIG4LOusQIBSACIAQESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAogBARJCCghmZWF0dXJlcxgGIAMoDjIfLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlRmVhdHVyZUIPukgMkgEJGAEiBYIBAhABEkgKDmNsYXNzaWZpY2F0aW9uGAcgASgOMiYubWV0YWxzdGFjay5hcGkudjIuSW1hZ2VDbGFzc2lmaWNhdGlvbkIIukgFggECEAESLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBgoEX3VybEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb24iRQoaSW1hZ2VTZXJ2aWNlVXBkYXRlUmVzcG9uc2USJwoFaW1hZ2UYASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZSI0ChlJbWFnZVNlcnZpY2VEZWxldGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECASJFChpJbWFnZVNlcnZpY2VEZWxldGVSZXNwb25zZRInCgVpbWFnZRgBIAEoCzIYLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlIkgKGEltYWdlU2VydmljZVVzYWdlUmVxdWVzdBIsCgVxdWVyeRgBIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlUXVlcnkiTwoZSW1hZ2VTZXJ2aWNlVXNhZ2VSZXNwb25zZRIyCgtpbWFnZV91c2FnZRgBIAMoCzIdLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlVXNhZ2Uy4AMKDEltYWdlU2VydmljZRJ0CgZDcmVhdGUSLi5tZXRhbHN0YWNrLmFkbWluLnYyLkltYWdlU2VydmljZUNyZWF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLkltYWdlU2VydmljZUNyZWF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESdAoGVXBkYXRlEi4ubWV0YWxzdGFjay5hZG1pbi52Mi5JbWFnZVNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5JbWFnZVNlcnZpY2VVcGRhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnQKBkRlbGV0ZRIuLm1ldGFsc3RhY2suYWRtaW4udjIuSW1hZ2VTZXJ2aWNlRGVsZXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYWRtaW4udjIuSW1hZ2VTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARJuCgVVc2FnZRItLm1ldGFsc3RhY2suYWRtaW4udjIuSW1hZ2VTZXJ2aWNlVXNhZ2VSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5JbWFnZVNlcnZpY2VVc2FnZVJlc3BvbnNlIgbS8xgCAQJCzgEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgpJbWFnZVByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [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.
diff --git a/js/metalstack/admin/v2/machine_pb.d.ts b/js/metalstack/admin/v2/machine_pb.d.ts
index e64f768e..3e8b6c14 100644
--- a/js/metalstack/admin/v2/machine_pb.d.ts
+++ b/js/metalstack/admin/v2/machine_pb.d.ts
@@ -1,5 +1,5 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
-import type { Machine, MachineQuery } from "../../api/v2/machine_pb";
+import type { Machine, MachineBMCCommand, MachineBMCQuery, MachineBMCReport, MachineQuery } from "../../api/v2/machine_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/admin/v2/machine.proto.
@@ -84,6 +84,170 @@ export type MachineServiceListResponse = Message<"metalstack.admin.v2.MachineSer
* Use `create(MachineServiceListResponseSchema)` to create a new message.
*/
export declare const MachineServiceListResponseSchema: GenMessage;
+/**
+ * MachineServiceBMCCommandRequest is the request payload for a machine bmc command
+ *
+ * @generated from message metalstack.admin.v2.MachineServiceBMCCommandRequest
+ */
+export type MachineServiceBMCCommandRequest = Message<"metalstack.admin.v2.MachineServiceBMCCommandRequest"> & {
+ /**
+ * UUID of the machine to send the command to
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+ /**
+ * Command to send to the bmc of the machine
+ *
+ * @generated from field: metalstack.api.v2.MachineBMCCommand command = 2;
+ */
+ command: MachineBMCCommand;
+};
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceBMCCommandRequest.
+ * Use `create(MachineServiceBMCCommandRequestSchema)` to create a new message.
+ */
+export declare const MachineServiceBMCCommandRequestSchema: GenMessage;
+/**
+ * MachineServiceBMCCommandResponse is the response payload for a machine bmc command
+ *
+ * @generated from message metalstack.admin.v2.MachineServiceBMCCommandResponse
+ */
+export type MachineServiceBMCCommandResponse = Message<"metalstack.admin.v2.MachineServiceBMCCommandResponse"> & {};
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceBMCCommandResponse.
+ * Use `create(MachineServiceBMCCommandResponseSchema)` to create a new message.
+ */
+export declare const MachineServiceBMCCommandResponseSchema: GenMessage;
+/**
+ * MachineServiceGetBMCRequest is the request payload for a machine getbmc request
+ *
+ * @generated from message metalstack.admin.v2.MachineServiceGetBMCRequest
+ */
+export type MachineServiceGetBMCRequest = Message<"metalstack.admin.v2.MachineServiceGetBMCRequest"> & {
+ /**
+ * UUID of the machine to get
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+};
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceGetBMCRequest.
+ * Use `create(MachineServiceGetBMCRequestSchema)` to create a new message.
+ */
+export declare const MachineServiceGetBMCRequestSchema: GenMessage;
+/**
+ * MachineServiceGetBMCResponse is the response payload for a machine getbmc request
+ *
+ * @generated from message metalstack.admin.v2.MachineServiceGetBMCResponse
+ */
+export type MachineServiceGetBMCResponse = Message<"metalstack.admin.v2.MachineServiceGetBMCResponse"> & {
+ /**
+ * UUID of the machine
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+ /**
+ * BMC contains the BMC details of this machine
+ *
+ * @generated from field: metalstack.api.v2.MachineBMCReport bmc = 2;
+ */
+ bmc?: MachineBMCReport;
+};
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceGetBMCResponse.
+ * Use `create(MachineServiceGetBMCResponseSchema)` to create a new message.
+ */
+export declare const MachineServiceGetBMCResponseSchema: GenMessage;
+/**
+ * MachineServiceListBMCRequest is the request payload for a machine listbmc request
+ *
+ * @generated from message metalstack.admin.v2.MachineServiceListBMCRequest
+ */
+export type MachineServiceListBMCRequest = Message<"metalstack.admin.v2.MachineServiceListBMCRequest"> & {
+ /**
+ * Query to list one ore more bmcs of more machines
+ *
+ * @generated from field: metalstack.api.v2.MachineBMCQuery query = 1;
+ */
+ query?: MachineBMCQuery;
+};
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceListBMCRequest.
+ * Use `create(MachineServiceListBMCRequestSchema)` to create a new message.
+ */
+export declare const MachineServiceListBMCRequestSchema: GenMessage;
+/**
+ * MachineServiceListBMCResponse is the response payload for a machine listbmc request
+ *
+ * @generated from message metalstack.admin.v2.MachineServiceListBMCResponse
+ */
+export type MachineServiceListBMCResponse = Message<"metalstack.admin.v2.MachineServiceListBMCResponse"> & {
+ /**
+ * BMCReports maps the bmc report per machine uuid
+ *
+ * @generated from field: map bmc_reports = 1;
+ */
+ bmcReports: {
+ [key: string]: MachineBMCReport;
+ };
+};
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceListBMCResponse.
+ * Use `create(MachineServiceListBMCResponseSchema)` to create a new message.
+ */
+export declare const MachineServiceListBMCResponseSchema: GenMessage;
+/**
+ * MachineServiceConsolePasswordRequest is the request to get the console password
+ *
+ * @generated from message metalstack.admin.v2.MachineServiceConsolePasswordRequest
+ */
+export type MachineServiceConsolePasswordRequest = Message<"metalstack.admin.v2.MachineServiceConsolePasswordRequest"> & {
+ /**
+ * UUID of the machine to get
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+ /**
+ * Reason must be provided why access to the console is requested.
+ * Reason is only forwarded to an audit sink
+ *
+ * @generated from field: string reason = 2;
+ */
+ reason: string;
+};
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceConsolePasswordRequest.
+ * Use `create(MachineServiceConsolePasswordRequestSchema)` to create a new message.
+ */
+export declare const MachineServiceConsolePasswordRequestSchema: GenMessage;
+/**
+ * MachineServiceConsolePasswordResponse is the response to the console password request
+ *
+ * @generated from message metalstack.admin.v2.MachineServiceConsolePasswordResponse
+ */
+export type MachineServiceConsolePasswordResponse = Message<"metalstack.admin.v2.MachineServiceConsolePasswordResponse"> & {
+ /**
+ * UUID of the machine to get
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+ /**
+ * Password to access the console
+ *
+ * @generated from field: string password = 2;
+ */
+ password: string;
+};
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceConsolePasswordResponse.
+ * Use `create(MachineServiceConsolePasswordResponseSchema)` to create a new message.
+ */
+export declare const MachineServiceConsolePasswordResponseSchema: GenMessage;
/**
* MachineService serves machine related functions
*
@@ -110,4 +274,44 @@ export declare const MachineService: GenService<{
input: typeof MachineServiceListRequestSchema;
output: typeof MachineServiceListResponseSchema;
};
+ /**
+ * BMCCommand send a command to the bmc of a machine
+ *
+ * @generated from rpc metalstack.admin.v2.MachineService.BMCCommand
+ */
+ bMCCommand: {
+ methodKind: "unary";
+ input: typeof MachineServiceBMCCommandRequestSchema;
+ output: typeof MachineServiceBMCCommandResponseSchema;
+ };
+ /**
+ * GetBMC returns the BMC details of a machine
+ *
+ * @generated from rpc metalstack.admin.v2.MachineService.GetBMC
+ */
+ getBMC: {
+ methodKind: "unary";
+ input: typeof MachineServiceGetBMCRequestSchema;
+ output: typeof MachineServiceGetBMCResponseSchema;
+ };
+ /**
+ * ListBMC returns the BMC details of many machines
+ *
+ * @generated from rpc metalstack.admin.v2.MachineService.ListBMC
+ */
+ listBMC: {
+ methodKind: "unary";
+ input: typeof MachineServiceListBMCRequestSchema;
+ output: typeof MachineServiceListBMCResponseSchema;
+ };
+ /**
+ * ConsolePassword returns the password to access the serial console of the machine
+ *
+ * @generated from rpc metalstack.admin.v2.MachineService.ConsolePassword
+ */
+ consolePassword: {
+ methodKind: "unary";
+ input: typeof MachineServiceConsolePasswordRequestSchema;
+ output: typeof MachineServiceConsolePasswordResponseSchema;
+ };
}>;
diff --git a/js/metalstack/admin/v2/machine_pb.js b/js/metalstack/admin/v2/machine_pb.js
index 6d75b85b..fec84223 100644
--- a/js/metalstack/admin/v2/machine_pb.js
+++ b/js/metalstack/admin/v2/machine_pb.js
@@ -9,7 +9,7 @@ import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined
/**
* 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]);
+export const file_metalstack_admin_v2_machine = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL21hY2hpbmUucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMgoYTWFjaGluZVNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIkgKGU1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbWFjaGluZRgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmUifgoZTWFjaGluZVNlcnZpY2VMaXN0UmVxdWVzdBIuCgVxdWVyeRgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVRdWVyeRIjCglwYXJ0aXRpb24YAiABKAlCC7pICHIG0LOusQIBSACIAQFCDAoKX3BhcnRpdGlvbiJKChpNYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZRIsCghtYWNoaW5lcxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmUiegofTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARI/Cgdjb21tYW5kGAIgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ0NvbW1hbmRCCLpIBYIBAhABIiIKIE1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlc3BvbnNlIjUKG01hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASJoChxNYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjAKA2JtYxgCIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNSZXBvcnQiUQocTWFjaGluZVNlcnZpY2VMaXN0Qk1DUmVxdWVzdBIxCgVxdWVyeRgBIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNRdWVyeSLfAQodTWFjaGluZVNlcnZpY2VMaXN0Qk1DUmVzcG9uc2USZgoLYm1jX3JlcG9ydHMYASADKAsyQi5tZXRhbHN0YWNrLmFkbWluLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdEJNQ1Jlc3BvbnNlLkJtY1JlcG9ydHNFbnRyeUINukgKmgEHIgVyA7ABARpWCg9CbWNSZXBvcnRzRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ1JlcG9ydDoCOAEiWgokTWFjaGluZVNlcnZpY2VDb25zb2xlUGFzc3dvcmRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhoKBnJlYXNvbhgCIAEoCUIKukgHcgUQChiABCJRCiVNYWNoaW5lU2VydmljZUNvbnNvbGVQYXNzd29yZFJlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhAKCHBhc3N3b3JkGAIgASgJMv4FCg5NYWNoaW5lU2VydmljZRJwCgNHZXQSLS5tZXRhbHN0YWNrLmFkbWluLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZSIK0vMYAgEC4PMYAhJzCgRMaXN0Ei4ubWV0YWxzdGFjay5hZG1pbi52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAhKAAQoKQk1DQ29tbWFuZBI0Lm1ldGFsc3RhY2suYWRtaW4udjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVxdWVzdBo1Lm1ldGFsc3RhY2suYWRtaW4udjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiBdLzGAEBEnUKBkdldEJNQxIwLm1ldGFsc3RhY2suYWRtaW4udjIuTWFjaGluZVNlcnZpY2VHZXRCTUNSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlIgbS8xgCAQISeAoHTGlzdEJNQxIxLm1ldGFsc3RhY2suYWRtaW4udjIuTWFjaGluZVNlcnZpY2VMaXN0Qk1DUmVxdWVzdBoyLm1ldGFsc3RhY2suYWRtaW4udjIuTWFjaGluZVNlcnZpY2VMaXN0Qk1DUmVzcG9uc2UiBtLzGAIBAhKQAQoPQ29uc29sZVBhc3N3b3JkEjkubWV0YWxzdGFjay5hZG1pbi52Mi5NYWNoaW5lU2VydmljZUNvbnNvbGVQYXNzd29yZFJlcXVlc3QaOi5tZXRhbHN0YWNrLmFkbWluLnYyLk1hY2hpbmVTZXJ2aWNlQ29uc29sZVBhc3N3b3JkUmVzcG9uc2UiBtLzGAIBAkLQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDE1hY2hpbmVQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [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.
@@ -30,6 +30,46 @@ export const MachineServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_me
* Use `create(MachineServiceListResponseSchema)` to create a new message.
*/
export const MachineServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 3);
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceBMCCommandRequest.
+ * Use `create(MachineServiceBMCCommandRequestSchema)` to create a new message.
+ */
+export const MachineServiceBMCCommandRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 4);
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceBMCCommandResponse.
+ * Use `create(MachineServiceBMCCommandResponseSchema)` to create a new message.
+ */
+export const MachineServiceBMCCommandResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 5);
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceGetBMCRequest.
+ * Use `create(MachineServiceGetBMCRequestSchema)` to create a new message.
+ */
+export const MachineServiceGetBMCRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 6);
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceGetBMCResponse.
+ * Use `create(MachineServiceGetBMCResponseSchema)` to create a new message.
+ */
+export const MachineServiceGetBMCResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 7);
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceListBMCRequest.
+ * Use `create(MachineServiceListBMCRequestSchema)` to create a new message.
+ */
+export const MachineServiceListBMCRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 8);
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceListBMCResponse.
+ * Use `create(MachineServiceListBMCResponseSchema)` to create a new message.
+ */
+export const MachineServiceListBMCResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 9);
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceConsolePasswordRequest.
+ * Use `create(MachineServiceConsolePasswordRequestSchema)` to create a new message.
+ */
+export const MachineServiceConsolePasswordRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 10);
+/**
+ * Describes the message metalstack.admin.v2.MachineServiceConsolePasswordResponse.
+ * Use `create(MachineServiceConsolePasswordResponseSchema)` to create a new message.
+ */
+export const MachineServiceConsolePasswordResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_machine, 11);
/**
* MachineService serves machine related functions
*
diff --git a/js/metalstack/admin/v2/network_pb.js b/js/metalstack/admin/v2/network_pb.js
index 1e87526a..31fc9b15 100644
--- a/js/metalstack/admin/v2/network_pb.js
+++ b/js/metalstack/admin/v2/network_pb.js
@@ -9,7 +9,7 @@ import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined
/**
* 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]);
+export const file_metalstack_admin_v2_network = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL25ldHdvcmsucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMwoYTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECASJIChlOZXR3b3JrU2VydmljZUdldFJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrItAHChtOZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIjCglwYXJ0aXRpb24YBCABKAlCC7pICHIG0LOusQIBSAOIAQESHgoHcHJvamVjdBgFIAEoCUIIukgFcgOwAQFIBIgBARI2CgR0eXBlGAYgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1R5cGVCCLpIBYIBAhABEi4KBmxhYmVscxgHIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjsKCG5hdF90eXBlGAwgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAFIBogBARIQCgN2cmYYDSABKA1IB4gBARIoCg5wYXJlbnRfbmV0d29yaxgOIAEoCUILukgIcgbAs66xAgFICIgBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGA8gAygJQgy6SAmSAQa4pLOxAgESOQoGbGVuZ3RoGBAgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhICYgBARJOCg5hZGRyZXNzX2ZhbWlseRgRIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgKiAEBQgUKA19pZEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX3BhcnRpdGlvbkIKCghfcHJvamVjdEIJCgdfbGFiZWxzQgsKCV9uYXRfdHlwZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSLEBQobTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gCiAEBEh4KCHByZWZpeGVzGAYgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYByADKAlCDLpICZIBBriks7ECARJOChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aEgDiAEBEkoKF21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoGAsgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARI7CghuYXRfdHlwZRgNIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAWIAQESMgocYWRkaXRpb25hbF9hbm5vdW5jYWJsZV9jaWRycxgQIAMoCUIMukgJkgEGuKSzsQIBEg0KBWZvcmNlGBQgASgIQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzQh4KHF9kZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGhCGgoYX21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoQgsKCV9uYXRfdHlwZSI2ChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBIksKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSLgoFcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkiSwocTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJLChxOZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsiSgoaTmV0d29ya1NlcnZpY2VMaXN0UmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrMuUECg5OZXR3b3JrU2VydmljZRJwCgNHZXQSLS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VHZXRSZXNwb25zZSIK0vMYAgEC4PMYAhJ4CgZDcmVhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEngKBlVwZGF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESeAoGRGVsZXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARJzCgRMaXN0Ei4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAkLQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDE5ldHdvcmtQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [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.
diff --git a/js/metalstack/admin/v2/partition_pb.d.ts b/js/metalstack/admin/v2/partition_pb.d.ts
index 183c109d..246e5510 100644
--- a/js/metalstack/admin/v2/partition_pb.d.ts
+++ b/js/metalstack/admin/v2/partition_pb.d.ts
@@ -69,6 +69,7 @@ export type PartitionServiceUpdateRequest = Message<"metalstack.admin.v2.Partiti
/**
* ManagementServiceAddresses defines where the management is reachable
* should be in the form :
+ * FIXME validation
*
* @generated from field: repeated string mgmt_service_addresses = 7;
*/
@@ -193,105 +194,147 @@ export declare const PartitionServiceCapacityRequestSchema: GenMessage & {
+ /**
+ * PartitionCapacity is a capacity report per partition
+ *
+ * @generated from field: repeated metalstack.admin.v2.PartitionCapacity partition_capacity = 1;
+ */
+ partitionCapacity: PartitionCapacity[];
+};
+/**
+ * Describes the message metalstack.admin.v2.PartitionServiceCapacityResponse.
+ * Use `create(PartitionServiceCapacityResponseSchema)` to create a new message.
+ */
+export declare const PartitionServiceCapacityResponseSchema: GenMessage;
+/**
+ * PartitionCapacity is the capacity of one partition
+ *
+ * @generated from message metalstack.admin.v2.PartitionCapacity
+ */
+export type PartitionCapacity = Message<"metalstack.admin.v2.PartitionCapacity"> & {
+ /**
+ * Partition of which this capacity is reported.
+ *
+ * @generated from field: string partition = 1;
+ */
+ partition: string;
+ /**
+ * MachineSizeCapacities is the capacity per machine size.
+ *
+ * @generated from field: repeated metalstack.admin.v2.MachineSizeCapacity machine_size_capacities = 2;
+ */
+ machineSizeCapacities: MachineSizeCapacity[];
+};
+/**
+ * Describes the message metalstack.admin.v2.PartitionCapacity.
+ * Use `create(PartitionCapacitySchema)` to create a new message.
+ */
+export declare const PartitionCapacitySchema: GenMessage;
+/**
+ * ServerCapacity is the capacity of one server type, eg machine size
+ *
+ * @generated from message metalstack.admin.v2.MachineSizeCapacity
+ */
+export type MachineSizeCapacity = Message<"metalstack.admin.v2.MachineSizeCapacity"> & {
/**
* Size is the size id correlating to all counts in this server capacity.
*
- * @generated from field: string size = 1;
+ * @generated from field: string size = 2;
*/
size: string;
/**
* Total is the total amount of machines for this size.
*
- * @generated from field: int64 total = 2;
+ * @generated from field: int64 total = 3;
*/
total: bigint;
/**
* PhonedHome is the amount of machines that are currently in the provisioning state "phoned home".
*
- * @generated from field: int64 phoned_home = 3;
+ * @generated from field: int64 phoned_home = 4;
*/
phonedHome: bigint;
/**
* Waiting is the amount of machines that are currently in the provisioning state "waiting".
*
- * @generated from field: int64 waiting = 4;
+ * @generated from field: int64 waiting = 5;
*/
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;
+ * @generated from field: int64 other = 6;
*/
other: bigint;
/**
* OtherMachines contains the machine IDs for machines that were classified into "Other".
*
- * @generated from field: repeated string other_machines = 6;
+ * @generated from field: repeated string other_machines = 7;
*/
otherMachines: string[];
/**
* Allocated is the amount of machines that are currently allocated.
*
- * @generated from field: int64 allocated = 7;
+ * @generated from field: int64 allocated = 8;
*/
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;
+ * @generated from field: int64 allocatable = 9;
*/
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;
+ * @generated from field: int64 free = 10;
*/
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;
+ * @generated from field: int64 unavailable = 11;
*/
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;
+ * @generated from field: int64 faulty = 12;
*/
faulty: bigint;
/**
* FaultyMachines contains the machine IDs for machines that were classified into "Faulty".
*
- * @generated from field: repeated string faulty_machines = 12;
+ * @generated from field: repeated string faulty_machines = 13;
*/
faultyMachines: string[];
/**
* Reservations is the amount of reservations made for this size.
*
- * @generated from field: int64 reservations = 13;
+ * @generated from field: int64 reservations = 14;
*/
reservations: bigint;
/**
* UsedReservations is the amount of reservations already used up for this size.
*
- * @generated from field: int64 used_reservations = 14;
+ * @generated from field: int64 used_reservations = 15;
*/
usedReservations: bigint;
/**
* RemainingReservations is the amount of reservations remaining for this size.
*
- * @generated from field: int64 remaining_reservations = 15;
+ * @generated from field: int64 remaining_reservations = 16;
*/
remainingReservations: bigint;
};
/**
- * Describes the message metalstack.admin.v2.PartitionServiceCapacityResponse.
- * Use `create(PartitionServiceCapacityResponseSchema)` to create a new message.
+ * Describes the message metalstack.admin.v2.MachineSizeCapacity.
+ * Use `create(MachineSizeCapacitySchema)` to create a new message.
*/
-export declare const PartitionServiceCapacityResponseSchema: GenMessage;
+export declare const MachineSizeCapacitySchema: GenMessage;
/**
* PartitionService serves partition address related functions
*
diff --git a/js/metalstack/admin/v2/partition_pb.js b/js/metalstack/admin/v2/partition_pb.js
index 26aedbbe..3f319d73 100644
--- a/js/metalstack/admin/v2/partition_pb.js
+++ b/js/metalstack/admin/v2/partition_pb.js
@@ -9,7 +9,7 @@ import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined
/**
* 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]);
+export const file_metalstack_admin_v2_partition = /*@__PURE__*/ fileDesc("CiNtZXRhbHN0YWNrL2FkbWluL3YyL3BhcnRpdGlvbi5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiJQCh1QYXJ0aXRpb25TZXJ2aWNlQ3JlYXRlUmVxdWVzdBIvCglwYXJ0aXRpb24YASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24izwMKHVBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBtCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAIgBARJJChJib290X2NvbmZpZ3VyYXRpb24YBCABKAsyLS5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25Cb290Q29uZmlndXJhdGlvbhI6CgpkbnNfc2VydmVyGAUgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGAYgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChIeChZtZ210X3NlcnZpY2VfYWRkcmVzc2VzGAcgAygJEjQKBmxhYmVscxgIIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzIjgKHVBhcnRpdGlvblNlcnZpY2VEZWxldGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBtCzrrECASJRCh5QYXJ0aXRpb25TZXJ2aWNlQ3JlYXRlUmVzcG9uc2USLwoJcGFydGl0aW9uGAEgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uIlEKHlBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXNwb25zZRIvCglwYXJ0aXRpb24YASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24iUQoeUGFydGl0aW9uU2VydmljZURlbGV0ZVJlc3BvbnNlEi8KCXBhcnRpdGlvbhgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbiKbAQofUGFydGl0aW9uU2VydmljZUNhcGFjaXR5UmVxdWVzdBIcCgJpZBgBIAEoCUILukgIcgbQs66xAgFIAIgBARIeCgRzaXplGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEh4KB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBSAKIAQFCBQoDX2lkQgcKBV9zaXplQgoKCF9wcm9qZWN0ImYKIFBhcnRpdGlvblNlcnZpY2VDYXBhY2l0eVJlc3BvbnNlEkIKEnBhcnRpdGlvbl9jYXBhY2l0eRgBIAMoCzImLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uQ2FwYWNpdHkicQoRUGFydGl0aW9uQ2FwYWNpdHkSEQoJcGFydGl0aW9uGAEgASgJEkkKF21hY2hpbmVfc2l6ZV9jYXBhY2l0aWVzGAIgAygLMigubWV0YWxzdGFjay5hZG1pbi52Mi5NYWNoaW5lU2l6ZUNhcGFjaXR5IsQCChNNYWNoaW5lU2l6ZUNhcGFjaXR5EgwKBHNpemUYAiABKAkSDQoFdG90YWwYAyABKAMSEwoLcGhvbmVkX2hvbWUYBCABKAMSDwoHd2FpdGluZxgFIAEoAxINCgVvdGhlchgGIAEoAxIWCg5vdGhlcl9tYWNoaW5lcxgHIAMoCRIRCglhbGxvY2F0ZWQYCCABKAMSEwoLYWxsb2NhdGFibGUYCSABKAMSDAoEZnJlZRgKIAEoAxITCgt1bmF2YWlsYWJsZRgLIAEoAxIOCgZmYXVsdHkYDCABKAMSFwoPZmF1bHR5X21hY2hpbmVzGA0gAygJEhQKDHJlc2VydmF0aW9ucxgOIAEoAxIZChF1c2VkX3Jlc2VydmF0aW9ucxgPIAEoAxIeChZyZW1haW5pbmdfcmVzZXJ2YXRpb25zGBAgASgDMpIEChBQYXJ0aXRpb25TZXJ2aWNlEnwKBkNyZWF0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNyZWF0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnwKBlVwZGF0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZVVwZGF0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnwKBkRlbGV0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZURlbGV0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VEZWxldGVSZXNwb25zZSIJ0vMYAQHg8xgBEoMBCghDYXBhY2l0eRI0Lm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNhcGFjaXR5UmVxdWVzdBo1Lm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNhcGFjaXR5UmVzcG9uc2UiCtLzGAICAeDzGAJC0gEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQg5QYXJ0aXRpb25Qcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [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.
@@ -50,6 +50,16 @@ export const PartitionServiceCapacityRequestSchema = /*@__PURE__*/ messageDesc(f
* Use `create(PartitionServiceCapacityResponseSchema)` to create a new message.
*/
export const PartitionServiceCapacityResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_partition, 7);
+/**
+ * Describes the message metalstack.admin.v2.PartitionCapacity.
+ * Use `create(PartitionCapacitySchema)` to create a new message.
+ */
+export const PartitionCapacitySchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_partition, 8);
+/**
+ * Describes the message metalstack.admin.v2.MachineSizeCapacity.
+ * Use `create(MachineSizeCapacitySchema)` to create a new message.
+ */
+export const MachineSizeCapacitySchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_partition, 9);
/**
* PartitionService serves partition address related functions
*
diff --git a/js/metalstack/admin/v2/partition_pb.ts b/js/metalstack/admin/v2/partition_pb.ts
index ced9e369..abd10d61 100644
--- a/js/metalstack/admin/v2/partition_pb.ts
+++ b/js/metalstack/admin/v2/partition_pb.ts
@@ -16,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/admin/v2/partition.proto.
*/
export const file_metalstack_admin_v2_partition: GenFile = /*@__PURE__*/
- fileDesc("CiNtZXRhbHN0YWNrL2FkbWluL3YyL3BhcnRpdGlvbi5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiJQCh1QYXJ0aXRpb25TZXJ2aWNlQ3JlYXRlUmVxdWVzdBIvCglwYXJ0aXRpb24YASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24izwMKHVBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBtCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAIgBARJJChJib290X2NvbmZpZ3VyYXRpb24YBCABKAsyLS5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25Cb290Q29uZmlndXJhdGlvbhI6CgpkbnNfc2VydmVyGAUgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGAYgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChIeChZtZ210X3NlcnZpY2VfYWRkcmVzc2VzGAcgAygJEjQKBmxhYmVscxgIIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzIjgKHVBhcnRpdGlvblNlcnZpY2VEZWxldGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBtCzrrECASJRCh5QYXJ0aXRpb25TZXJ2aWNlQ3JlYXRlUmVzcG9uc2USLwoJcGFydGl0aW9uGAEgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uIlEKHlBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXNwb25zZRIvCglwYXJ0aXRpb24YASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24iUQoeUGFydGl0aW9uU2VydmljZURlbGV0ZVJlc3BvbnNlEi8KCXBhcnRpdGlvbhgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbiKbAQofUGFydGl0aW9uU2VydmljZUNhcGFjaXR5UmVxdWVzdBIcCgJpZBgBIAEoCUILukgIcgbQs66xAgFIAIgBARIeCgRzaXplGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEh4KB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBSAKIAQFCBQoDX2lkQgcKBV9zaXplQgoKCF9wcm9qZWN0ItECCiBQYXJ0aXRpb25TZXJ2aWNlQ2FwYWNpdHlSZXNwb25zZRIMCgRzaXplGAEgASgJEg0KBXRvdGFsGAIgASgDEhMKC3Bob25lZF9ob21lGAMgASgDEg8KB3dhaXRpbmcYBCABKAMSDQoFb3RoZXIYBSABKAMSFgoOb3RoZXJfbWFjaGluZXMYBiADKAkSEQoJYWxsb2NhdGVkGAcgASgDEhMKC2FsbG9jYXRhYmxlGAggASgDEgwKBGZyZWUYCSABKAMSEwoLdW5hdmFpbGFibGUYCiABKAMSDgoGZmF1bHR5GAsgASgDEhcKD2ZhdWx0eV9tYWNoaW5lcxgMIAMoCRIUCgxyZXNlcnZhdGlvbnMYDSABKAMSGQoRdXNlZF9yZXNlcnZhdGlvbnMYDiABKAMSHgoWcmVtYWluaW5nX3Jlc2VydmF0aW9ucxgPIAEoAzKSBAoQUGFydGl0aW9uU2VydmljZRJ8CgZDcmVhdGUSMi5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VDcmVhdGVSZXF1ZXN0GjMubWV0YWxzdGFjay5hZG1pbi52Mi5QYXJ0aXRpb25TZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJ8CgZVcGRhdGUSMi5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXF1ZXN0GjMubWV0YWxzdGFjay5hZG1pbi52Mi5QYXJ0aXRpb25TZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJ8CgZEZWxldGUSMi5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VEZWxldGVSZXF1ZXN0GjMubWV0YWxzdGFjay5hZG1pbi52Mi5QYXJ0aXRpb25TZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARKDAQoIQ2FwYWNpdHkSNC5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VDYXBhY2l0eVJlcXVlc3QaNS5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VDYXBhY2l0eVJlc3BvbnNlIgrS8xgCAgHg8xgCQtIBChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIOUGFydGl0aW9uUHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_partition, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("CiNtZXRhbHN0YWNrL2FkbWluL3YyL3BhcnRpdGlvbi5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiJQCh1QYXJ0aXRpb25TZXJ2aWNlQ3JlYXRlUmVxdWVzdBIvCglwYXJ0aXRpb24YASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24izwMKHVBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBtCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAIgBARJJChJib290X2NvbmZpZ3VyYXRpb24YBCABKAsyLS5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25Cb290Q29uZmlndXJhdGlvbhI6CgpkbnNfc2VydmVyGAUgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGAYgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChIeChZtZ210X3NlcnZpY2VfYWRkcmVzc2VzGAcgAygJEjQKBmxhYmVscxgIIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzIjgKHVBhcnRpdGlvblNlcnZpY2VEZWxldGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBtCzrrECASJRCh5QYXJ0aXRpb25TZXJ2aWNlQ3JlYXRlUmVzcG9uc2USLwoJcGFydGl0aW9uGAEgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uIlEKHlBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXNwb25zZRIvCglwYXJ0aXRpb24YASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24iUQoeUGFydGl0aW9uU2VydmljZURlbGV0ZVJlc3BvbnNlEi8KCXBhcnRpdGlvbhgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbiKbAQofUGFydGl0aW9uU2VydmljZUNhcGFjaXR5UmVxdWVzdBIcCgJpZBgBIAEoCUILukgIcgbQs66xAgFIAIgBARIeCgRzaXplGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEh4KB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBSAKIAQFCBQoDX2lkQgcKBV9zaXplQgoKCF9wcm9qZWN0ImYKIFBhcnRpdGlvblNlcnZpY2VDYXBhY2l0eVJlc3BvbnNlEkIKEnBhcnRpdGlvbl9jYXBhY2l0eRgBIAMoCzImLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uQ2FwYWNpdHkicQoRUGFydGl0aW9uQ2FwYWNpdHkSEQoJcGFydGl0aW9uGAEgASgJEkkKF21hY2hpbmVfc2l6ZV9jYXBhY2l0aWVzGAIgAygLMigubWV0YWxzdGFjay5hZG1pbi52Mi5NYWNoaW5lU2l6ZUNhcGFjaXR5IsQCChNNYWNoaW5lU2l6ZUNhcGFjaXR5EgwKBHNpemUYAiABKAkSDQoFdG90YWwYAyABKAMSEwoLcGhvbmVkX2hvbWUYBCABKAMSDwoHd2FpdGluZxgFIAEoAxINCgVvdGhlchgGIAEoAxIWCg5vdGhlcl9tYWNoaW5lcxgHIAMoCRIRCglhbGxvY2F0ZWQYCCABKAMSEwoLYWxsb2NhdGFibGUYCSABKAMSDAoEZnJlZRgKIAEoAxITCgt1bmF2YWlsYWJsZRgLIAEoAxIOCgZmYXVsdHkYDCABKAMSFwoPZmF1bHR5X21hY2hpbmVzGA0gAygJEhQKDHJlc2VydmF0aW9ucxgOIAEoAxIZChF1c2VkX3Jlc2VydmF0aW9ucxgPIAEoAxIeChZyZW1haW5pbmdfcmVzZXJ2YXRpb25zGBAgASgDMpIEChBQYXJ0aXRpb25TZXJ2aWNlEnwKBkNyZWF0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNyZWF0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnwKBlVwZGF0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZVVwZGF0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VVcGRhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnwKBkRlbGV0ZRIyLm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZURlbGV0ZVJlcXVlc3QaMy5tZXRhbHN0YWNrLmFkbWluLnYyLlBhcnRpdGlvblNlcnZpY2VEZWxldGVSZXNwb25zZSIJ0vMYAQHg8xgBEoMBCghDYXBhY2l0eRI0Lm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNhcGFjaXR5UmVxdWVzdBo1Lm1ldGFsc3RhY2suYWRtaW4udjIuUGFydGl0aW9uU2VydmljZUNhcGFjaXR5UmVzcG9uc2UiCtLzGAICAeDzGAJC0gEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQg5QYXJ0aXRpb25Qcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [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
@@ -236,52 +236,101 @@ export const PartitionServiceCapacityRequestSchema: GenMessage & {
+ /**
+ * PartitionCapacity is a capacity report per partition
+ *
+ * @generated from field: repeated metalstack.admin.v2.PartitionCapacity partition_capacity = 1;
+ */
+ partitionCapacity: PartitionCapacity[];
+};
+
+/**
+ * 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);
+
+/**
+ * PartitionCapacity is the capacity of one partition
+ *
+ * @generated from message metalstack.admin.v2.PartitionCapacity
+ */
+export type PartitionCapacity = Message<"metalstack.admin.v2.PartitionCapacity"> & {
+ /**
+ * Partition of which this capacity is reported.
+ *
+ * @generated from field: string partition = 1;
+ */
+ partition: string;
+
+ /**
+ * MachineSizeCapacities is the capacity per machine size.
+ *
+ * @generated from field: repeated metalstack.admin.v2.MachineSizeCapacity machine_size_capacities = 2;
+ */
+ machineSizeCapacities: MachineSizeCapacity[];
+};
+
+/**
+ * Describes the message metalstack.admin.v2.PartitionCapacity.
+ * Use `create(PartitionCapacitySchema)` to create a new message.
+ */
+export const PartitionCapacitySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_partition, 8);
+
+/**
+ * ServerCapacity is the capacity of one server type, eg machine size
+ *
+ * @generated from message metalstack.admin.v2.MachineSizeCapacity
+ */
+export type MachineSizeCapacity = Message<"metalstack.admin.v2.MachineSizeCapacity"> & {
/**
* Size is the size id correlating to all counts in this server capacity.
*
- * @generated from field: string size = 1;
+ * @generated from field: string size = 2;
*/
size: string;
/**
* Total is the total amount of machines for this size.
*
- * @generated from field: int64 total = 2;
+ * @generated from field: int64 total = 3;
*/
total: bigint;
/**
* PhonedHome is the amount of machines that are currently in the provisioning state "phoned home".
*
- * @generated from field: int64 phoned_home = 3;
+ * @generated from field: int64 phoned_home = 4;
*/
phonedHome: bigint;
/**
* Waiting is the amount of machines that are currently in the provisioning state "waiting".
*
- * @generated from field: int64 waiting = 4;
+ * @generated from field: int64 waiting = 5;
*/
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;
+ * @generated from field: int64 other = 6;
*/
other: bigint;
/**
* OtherMachines contains the machine IDs for machines that were classified into "Other".
*
- * @generated from field: repeated string other_machines = 6;
+ * @generated from field: repeated string other_machines = 7;
*/
otherMachines: string[];
/**
* Allocated is the amount of machines that are currently allocated.
*
- * @generated from field: int64 allocated = 7;
+ * @generated from field: int64 allocated = 8;
*/
allocated: bigint;
@@ -289,7 +338,7 @@ export type PartitionServiceCapacityResponse = Message<"metalstack.admin.v2.Part
* 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;
+ * @generated from field: int64 allocatable = 9;
*/
allocatable: bigint;
@@ -297,7 +346,7 @@ export type PartitionServiceCapacityResponse = Message<"metalstack.admin.v2.Part
* 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;
+ * @generated from field: int64 free = 10;
*/
free: bigint;
@@ -305,52 +354,52 @@ export type PartitionServiceCapacityResponse = Message<"metalstack.admin.v2.Part
* 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;
+ * @generated from field: int64 unavailable = 11;
*/
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;
+ * @generated from field: int64 faulty = 12;
*/
faulty: bigint;
/**
* FaultyMachines contains the machine IDs for machines that were classified into "Faulty".
*
- * @generated from field: repeated string faulty_machines = 12;
+ * @generated from field: repeated string faulty_machines = 13;
*/
faultyMachines: string[];
/**
* Reservations is the amount of reservations made for this size.
*
- * @generated from field: int64 reservations = 13;
+ * @generated from field: int64 reservations = 14;
*/
reservations: bigint;
/**
* UsedReservations is the amount of reservations already used up for this size.
*
- * @generated from field: int64 used_reservations = 14;
+ * @generated from field: int64 used_reservations = 15;
*/
usedReservations: bigint;
/**
* RemainingReservations is the amount of reservations remaining for this size.
*
- * @generated from field: int64 remaining_reservations = 15;
+ * @generated from field: int64 remaining_reservations = 16;
*/
remainingReservations: bigint;
};
/**
- * Describes the message metalstack.admin.v2.PartitionServiceCapacityResponse.
- * Use `create(PartitionServiceCapacityResponseSchema)` to create a new message.
+ * Describes the message metalstack.admin.v2.MachineSizeCapacity.
+ * Use `create(MachineSizeCapacitySchema)` to create a new message.
*/
-export const PartitionServiceCapacityResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_admin_v2_partition, 7);
+export const MachineSizeCapacitySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_partition, 9);
/**
* PartitionService serves partition address related functions
diff --git a/js/metalstack/admin/v2/project_pb.js b/js/metalstack/admin/v2/project_pb.js
index fab44f4c..1e8b9f46 100644
--- a/js/metalstack/admin/v2/project_pb.js
+++ b/js/metalstack/admin/v2/project_pb.js
@@ -4,11 +4,12 @@
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_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]);
+export const file_metalstack_admin_v2_project = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL3Byb2plY3QucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIigwEKGVByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QSIAoGdGVuYW50GAEgASgJQgu6SAhyBsCzrrECAUgAiAEBEi4KBmxhYmVscxgCIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gBiAEBQgkKB190ZW5hbnRCCQoHX2xhYmVscyJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QyhQEKDlByb2plY3RTZXJ2aWNlEnMKBExpc3QSLi5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCQtABChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIMUHJvamVjdFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_project]);
/**
* Describes the message metalstack.admin.v2.ProjectServiceListRequest.
* Use `create(ProjectServiceListRequestSchema)` to create a new message.
diff --git a/js/metalstack/admin/v2/size_pb.js b/js/metalstack/admin/v2/size_pb.js
index 6de110a1..f870a5de 100644
--- a/js/metalstack/admin/v2/size_pb.js
+++ b/js/metalstack/admin/v2/size_pb.js
@@ -9,7 +9,7 @@ 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]);
+export const file_metalstack_admin_v2_size = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FkbWluL3YyL3NpemUucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiQQoYU2l6ZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EiUKBHNpemUYASABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplIkIKGVNpemVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USJQoEc2l6ZRgBIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUiyAIKGFNpemVTZXJ2aWNlVXBkYXRlUmVxdWVzdBIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESOgoLdXBkYXRlX21ldGEYAiABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARI2Cgtjb25zdHJhaW50cxgFIAMoCzIhLm1ldGFsc3RhY2suYXBpLnYyLlNpemVDb25zdHJhaW50EjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gCiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzIkIKGVNpemVTZXJ2aWNlVXBkYXRlUmVzcG9uc2USJQoEc2l6ZRgBIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLlNpemUiMwoYU2l6ZVNlcnZpY2VEZWxldGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECASJCChlTaXplU2VydmljZURlbGV0ZVJlc3BvbnNlEiUKBHNpemUYASABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplMt0CCgtTaXplU2VydmljZRJuCgZDcmVhdGUSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVTZXJ2aWNlQ3JlYXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuU2l6ZVNlcnZpY2VDcmVhdGVSZXNwb25zZSIF0vMYAQESbgoGVXBkYXRlEi0ubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplU2VydmljZVVwZGF0ZVJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiBdLzGAEBEm4KBkRlbGV0ZRItLm1ldGFsc3RhY2suYWRtaW4udjIuU2l6ZVNlcnZpY2VEZWxldGVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplU2VydmljZURlbGV0ZVJlc3BvbnNlIgXS8xgBAULNAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCCVNpemVQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [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.
diff --git a/js/metalstack/admin/v2/size_reservation_pb.d.ts b/js/metalstack/admin/v2/size_reservation_pb.d.ts
new file mode 100644
index 00000000..6dab55ff
--- /dev/null
+++ b/js/metalstack/admin/v2/size_reservation_pb.d.ts
@@ -0,0 +1,235 @@
+import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
+import type { UpdateLabels, UpdateMeta } from "../../api/v2/common_pb";
+import type { SizeReservation, SizeReservationQuery } from "../../api/v2/size_reservation_pb";
+import type { Message } from "@bufbuild/protobuf";
+/**
+ * Describes the file metalstack/admin/v2/size_reservation.proto.
+ */
+export declare const file_metalstack_admin_v2_size_reservation: GenFile;
+/**
+ * SizeReservationServiceCreateRequest is the request payload for a size reservation create request
+ *
+ * @generated from message metalstack.admin.v2.SizeReservationServiceCreateRequest
+ */
+export type SizeReservationServiceCreateRequest = Message<"metalstack.admin.v2.SizeReservationServiceCreateRequest"> & {
+ /**
+ * SizeReservation is the size reservation to create
+ *
+ * @generated from field: metalstack.api.v2.SizeReservation size_reservation = 1;
+ */
+ sizeReservation?: SizeReservation;
+};
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceCreateRequest.
+ * Use `create(SizeReservationServiceCreateRequestSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceCreateRequestSchema: GenMessage;
+/**
+ * SizeReservationServiceCreateResponse is the response payload for a size reservation create request
+ *
+ * @generated from message metalstack.admin.v2.SizeReservationServiceCreateResponse
+ */
+export type SizeReservationServiceCreateResponse = Message<"metalstack.admin.v2.SizeReservationServiceCreateResponse"> & {
+ /**
+ * SizeReservation the size reservation
+ *
+ * @generated from field: metalstack.api.v2.SizeReservation size_reservation = 1;
+ */
+ sizeReservation?: SizeReservation;
+};
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceCreateResponse.
+ * Use `create(SizeReservationServiceCreateResponseSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceCreateResponseSchema: GenMessage;
+/**
+ * SizeReservationServiceUpdateRequest is the request payload for a size reservation update request
+ *
+ * @generated from message metalstack.admin.v2.SizeReservationServiceUpdateRequest
+ */
+export type SizeReservationServiceUpdateRequest = Message<"metalstack.admin.v2.SizeReservationServiceUpdateRequest"> & {
+ /**
+ * Id of this size reservation
+ *
+ * @generated from field: string id = 1;
+ */
+ id: string;
+ /**
+ * Name of this size reservation
+ *
+ * @generated from field: optional string name = 2;
+ */
+ name?: string;
+ /**
+ * Description of this size reservation
+ *
+ * @generated from field: optional string description = 3;
+ */
+ description?: string;
+ /**
+ * UpdateMeta contains the timestamp and strategy to be used in this update request
+ *
+ * @generated from field: metalstack.api.v2.UpdateMeta update_meta = 4;
+ */
+ updateMeta?: UpdateMeta;
+ /**
+ * Partition ids of this size reservation
+ *
+ * @generated from field: repeated string partitions = 5;
+ */
+ partitions: string[];
+ /**
+ * Amount of reservations of this size reservation
+ *
+ * @generated from field: optional int32 amount = 6;
+ */
+ amount?: number;
+ /**
+ * Labels to update of this size reservation
+ *
+ * @generated from field: optional metalstack.api.v2.UpdateLabels labels = 7;
+ */
+ labels?: UpdateLabels;
+};
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceUpdateRequest.
+ * Use `create(SizeReservationServiceUpdateRequestSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceUpdateRequestSchema: GenMessage;
+/**
+ * SizeReservationServiceUpdateResponse is the response payload for a size reservation update request
+ *
+ * @generated from message metalstack.admin.v2.SizeReservationServiceUpdateResponse
+ */
+export type SizeReservationServiceUpdateResponse = Message<"metalstack.admin.v2.SizeReservationServiceUpdateResponse"> & {
+ /**
+ * SizeReservation the size reservation
+ *
+ * @generated from field: metalstack.api.v2.SizeReservation size_reservation = 1;
+ */
+ sizeReservation?: SizeReservation;
+};
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceUpdateResponse.
+ * Use `create(SizeReservationServiceUpdateResponseSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceUpdateResponseSchema: GenMessage;
+/**
+ * SizeReservationServiceDeleteRequest is the request payload for a size reservation delete request
+ *
+ * @generated from message metalstack.admin.v2.SizeReservationServiceDeleteRequest
+ */
+export type SizeReservationServiceDeleteRequest = Message<"metalstack.admin.v2.SizeReservationServiceDeleteRequest"> & {
+ /**
+ * ID of the size reservation to delete
+ *
+ * @generated from field: string id = 1;
+ */
+ id: string;
+};
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceDeleteRequest.
+ * Use `create(SizeReservationServiceDeleteRequestSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceDeleteRequestSchema: GenMessage;
+/**
+ * SizeReservationServiceDeleteResponse is the response payload for a size reservation delete request
+ *
+ * @generated from message metalstack.admin.v2.SizeReservationServiceDeleteResponse
+ */
+export type SizeReservationServiceDeleteResponse = Message<"metalstack.admin.v2.SizeReservationServiceDeleteResponse"> & {
+ /**
+ * SizeReservation the size reservation
+ *
+ * @generated from field: metalstack.api.v2.SizeReservation size_reservation = 1;
+ */
+ sizeReservation?: SizeReservation;
+};
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceDeleteResponse.
+ * Use `create(SizeReservationServiceDeleteResponseSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceDeleteResponseSchema: GenMessage;
+/**
+ * SizeReservationServiceListRequest is the request payload for a size list request
+ *
+ * @generated from message metalstack.admin.v2.SizeReservationServiceListRequest
+ */
+export type SizeReservationServiceListRequest = Message<"metalstack.admin.v2.SizeReservationServiceListRequest"> & {
+ /**
+ * Query for size reservations
+ *
+ * @generated from field: metalstack.api.v2.SizeReservationQuery query = 1;
+ */
+ query?: SizeReservationQuery;
+};
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceListRequest.
+ * Use `create(SizeReservationServiceListRequestSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceListRequestSchema: GenMessage;
+/**
+ * SizeReservationServiceListResponse is the response payload for a size reservation list request
+ *
+ * @generated from message metalstack.admin.v2.SizeReservationServiceListResponse
+ */
+export type SizeReservationServiceListResponse = Message<"metalstack.admin.v2.SizeReservationServiceListResponse"> & {
+ /**
+ * Size reservations
+ *
+ * @generated from field: repeated metalstack.api.v2.SizeReservation size_reservations = 1;
+ */
+ sizeReservations: SizeReservation[];
+};
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceListResponse.
+ * Use `create(SizeReservationServiceListResponseSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceListResponseSchema: GenMessage;
+/**
+ * SizeReservationService serves size reservation related functions
+ *
+ * @generated from service metalstack.admin.v2.SizeReservationService
+ */
+export declare const SizeReservationService: GenService<{
+ /**
+ * Create a size reservation
+ *
+ * @generated from rpc metalstack.admin.v2.SizeReservationService.Create
+ */
+ create: {
+ methodKind: "unary";
+ input: typeof SizeReservationServiceCreateRequestSchema;
+ output: typeof SizeReservationServiceCreateResponseSchema;
+ };
+ /**
+ * Update a size reservation
+ *
+ * @generated from rpc metalstack.admin.v2.SizeReservationService.Update
+ */
+ update: {
+ methodKind: "unary";
+ input: typeof SizeReservationServiceUpdateRequestSchema;
+ output: typeof SizeReservationServiceUpdateResponseSchema;
+ };
+ /**
+ * Delete a size reservation
+ *
+ * @generated from rpc metalstack.admin.v2.SizeReservationService.Delete
+ */
+ delete: {
+ methodKind: "unary";
+ input: typeof SizeReservationServiceDeleteRequestSchema;
+ output: typeof SizeReservationServiceDeleteResponseSchema;
+ };
+ /**
+ * List size reservations
+ *
+ * @generated from rpc metalstack.admin.v2.SizeReservationService.List
+ */
+ list: {
+ methodKind: "unary";
+ input: typeof SizeReservationServiceListRequestSchema;
+ output: typeof SizeReservationServiceListResponseSchema;
+ };
+}>;
diff --git a/js/metalstack/admin/v2/size_reservation_pb.js b/js/metalstack/admin/v2/size_reservation_pb.js
new file mode 100644
index 00000000..83ca848c
--- /dev/null
+++ b/js/metalstack/admin/v2/size_reservation_pb.js
@@ -0,0 +1,58 @@
+// @generated by protoc-gen-es v2.11.0 with parameter "target=ts"
+// @generated from file metalstack/admin/v2/size_reservation.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_reservation } from "../../api/v2/size_reservation_pb";
+/**
+ * Describes the file metalstack/admin/v2/size_reservation.proto.
+ */
+export const file_metalstack_admin_v2_size_reservation = /*@__PURE__*/ fileDesc("CiptZXRhbHN0YWNrL2FkbWluL3YyL3NpemVfcmVzZXJ2YXRpb24ucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiYwojU2l6ZVJlc2VydmF0aW9uU2VydmljZUNyZWF0ZVJlcXVlc3QSPAoQc2l6ZV9yZXNlcnZhdGlvbhgBIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLlNpemVSZXNlcnZhdGlvbiJkCiRTaXplUmVzZXJ2YXRpb25TZXJ2aWNlQ3JlYXRlUmVzcG9uc2USPAoQc2l6ZV9yZXNlcnZhdGlvbhgBIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLlNpemVSZXNlcnZhdGlvbiLpAgojU2l6ZVJlc2VydmF0aW9uU2VydmljZVVwZGF0ZVJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAGIAQESOgoLdXBkYXRlX21ldGEYBCABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5VcGRhdGVNZXRhQga6SAPIAQESJgoKcGFydGl0aW9ucxgFIAMoCUISukgPkgEMGAEiCHIG0LOusQIBEhwKBmFtb3VudBgGIAEoBUIHukgEGgIgAEgCiAEBEjQKBmxhYmVscxgHIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfYW1vdW50QgkKB19sYWJlbHMiZAokU2l6ZVJlc2VydmF0aW9uU2VydmljZVVwZGF0ZVJlc3BvbnNlEjwKEHNpemVfcmVzZXJ2YXRpb24YASABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplUmVzZXJ2YXRpb24iOwojU2l6ZVJlc2VydmF0aW9uU2VydmljZURlbGV0ZVJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBImQKJFNpemVSZXNlcnZhdGlvblNlcnZpY2VEZWxldGVSZXNwb25zZRI8ChBzaXplX3Jlc2VydmF0aW9uGAEgASgLMiIubWV0YWxzdGFjay5hcGkudjIuU2l6ZVJlc2VydmF0aW9uIlsKIVNpemVSZXNlcnZhdGlvblNlcnZpY2VMaXN0UmVxdWVzdBI2CgVxdWVyeRgBIAEoCzInLm1ldGFsc3RhY2suYXBpLnYyLlNpemVSZXNlcnZhdGlvblF1ZXJ5ImMKIlNpemVSZXNlcnZhdGlvblNlcnZpY2VMaXN0UmVzcG9uc2USPQoRc2l6ZV9yZXNlcnZhdGlvbnMYASADKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplUmVzZXJ2YXRpb24yvwQKFlNpemVSZXNlcnZhdGlvblNlcnZpY2USiAEKBkNyZWF0ZRI4Lm1ldGFsc3RhY2suYWRtaW4udjIuU2l6ZVJlc2VydmF0aW9uU2VydmljZUNyZWF0ZVJlcXVlc3QaOS5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVSZXNlcnZhdGlvblNlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEogBCgZVcGRhdGUSOC5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVSZXNlcnZhdGlvblNlcnZpY2VVcGRhdGVSZXF1ZXN0GjkubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplUmVzZXJ2YXRpb25TZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYARKIAQoGRGVsZXRlEjgubWV0YWxzdGFjay5hZG1pbi52Mi5TaXplUmVzZXJ2YXRpb25TZXJ2aWNlRGVsZXRlUmVxdWVzdBo5Lm1ldGFsc3RhY2suYWRtaW4udjIuU2l6ZVJlc2VydmF0aW9uU2VydmljZURlbGV0ZVJlc3BvbnNlIgnS8xgBAeDzGAESgwEKBExpc3QSNi5tZXRhbHN0YWNrLmFkbWluLnYyLlNpemVSZXNlcnZhdGlvblNlcnZpY2VMaXN0UmVxdWVzdBo3Lm1ldGFsc3RhY2suYWRtaW4udjIuU2l6ZVJlc2VydmF0aW9uU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAkLYAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCFFNpemVSZXNlcnZhdGlvblByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_size_reservation]);
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceCreateRequest.
+ * Use `create(SizeReservationServiceCreateRequestSchema)` to create a new message.
+ */
+export const SizeReservationServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_reservation, 0);
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceCreateResponse.
+ * Use `create(SizeReservationServiceCreateResponseSchema)` to create a new message.
+ */
+export const SizeReservationServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_reservation, 1);
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceUpdateRequest.
+ * Use `create(SizeReservationServiceUpdateRequestSchema)` to create a new message.
+ */
+export const SizeReservationServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_reservation, 2);
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceUpdateResponse.
+ * Use `create(SizeReservationServiceUpdateResponseSchema)` to create a new message.
+ */
+export const SizeReservationServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_reservation, 3);
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceDeleteRequest.
+ * Use `create(SizeReservationServiceDeleteRequestSchema)` to create a new message.
+ */
+export const SizeReservationServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_reservation, 4);
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceDeleteResponse.
+ * Use `create(SizeReservationServiceDeleteResponseSchema)` to create a new message.
+ */
+export const SizeReservationServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_reservation, 5);
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceListRequest.
+ * Use `create(SizeReservationServiceListRequestSchema)` to create a new message.
+ */
+export const SizeReservationServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_reservation, 6);
+/**
+ * Describes the message metalstack.admin.v2.SizeReservationServiceListResponse.
+ * Use `create(SizeReservationServiceListResponseSchema)` to create a new message.
+ */
+export const SizeReservationServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_size_reservation, 7);
+/**
+ * SizeReservationService serves size reservation related functions
+ *
+ * @generated from service metalstack.admin.v2.SizeReservationService
+ */
+export const SizeReservationService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_size_reservation, 0);
diff --git a/js/metalstack/admin/v2/task_pb.d.ts b/js/metalstack/admin/v2/task_pb.d.ts
new file mode 100644
index 00000000..58ecbcdb
--- /dev/null
+++ b/js/metalstack/admin/v2/task_pb.d.ts
@@ -0,0 +1,396 @@
+import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
+import type { Duration, Timestamp } from "@bufbuild/protobuf/wkt";
+import type { Message } from "@bufbuild/protobuf";
+/**
+ * Describes the file metalstack/admin/v2/task.proto.
+ */
+export declare const file_metalstack_admin_v2_task: GenFile;
+/**
+ * TaskServiceGetRequest is the message to a get task request
+ *
+ * @generated from message metalstack.admin.v2.TaskServiceGetRequest
+ */
+export type TaskServiceGetRequest = Message<"metalstack.admin.v2.TaskServiceGetRequest"> & {
+ /**
+ * TaskId to get
+ *
+ * @generated from field: string task_id = 1;
+ */
+ taskId: string;
+ /**
+ * Queue where this task was scheduled to
+ *
+ * @generated from field: string queue = 2;
+ */
+ queue: string;
+};
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceGetRequest.
+ * Use `create(TaskServiceGetRequestSchema)` to create a new message.
+ */
+export declare const TaskServiceGetRequestSchema: GenMessage;
+/**
+ * TaskServiceGetResponse is the response to a task get request
+ *
+ * @generated from message metalstack.admin.v2.TaskServiceGetResponse
+ */
+export type TaskServiceGetResponse = Message<"metalstack.admin.v2.TaskServiceGetResponse"> & {
+ /**
+ * Task contains the task details
+ *
+ * @generated from field: metalstack.admin.v2.TaskInfo task = 1;
+ */
+ task?: TaskInfo;
+};
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceGetResponse.
+ * Use `create(TaskServiceGetResponseSchema)` to create a new message.
+ */
+export declare const TaskServiceGetResponseSchema: GenMessage;
+/**
+ * TaskServiceDeleteRequest is the message to a delete task request
+ *
+ * @generated from message metalstack.admin.v2.TaskServiceDeleteRequest
+ */
+export type TaskServiceDeleteRequest = Message<"metalstack.admin.v2.TaskServiceDeleteRequest"> & {
+ /**
+ * TaskId to cancel
+ *
+ * @generated from field: string task_id = 1;
+ */
+ taskId: string;
+ /**
+ * Queue where this task was scheduled to
+ *
+ * @generated from field: string queue = 2;
+ */
+ queue: string;
+};
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceDeleteRequest.
+ * Use `create(TaskServiceDeleteRequestSchema)` to create a new message.
+ */
+export declare const TaskServiceDeleteRequestSchema: GenMessage;
+/**
+ * TaskServiceDeleteResponse is the response to a task delete request
+ *
+ * @generated from message metalstack.admin.v2.TaskServiceDeleteResponse
+ */
+export type TaskServiceDeleteResponse = Message<"metalstack.admin.v2.TaskServiceDeleteResponse"> & {};
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceDeleteResponse.
+ * Use `create(TaskServiceDeleteResponseSchema)` to create a new message.
+ */
+export declare const TaskServiceDeleteResponseSchema: GenMessage;
+/**
+ * TaskServiceQueuesRequest is the message to get all queues
+ *
+ * @generated from message metalstack.admin.v2.TaskServiceQueuesRequest
+ */
+export type TaskServiceQueuesRequest = Message<"metalstack.admin.v2.TaskServiceQueuesRequest"> & {};
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceQueuesRequest.
+ * Use `create(TaskServiceQueuesRequestSchema)` to create a new message.
+ */
+export declare const TaskServiceQueuesRequestSchema: GenMessage;
+/**
+ * TaskServiceQueuesResponse is the response to a queues request
+ *
+ * @generated from message metalstack.admin.v2.TaskServiceQueuesResponse
+ */
+export type TaskServiceQueuesResponse = Message<"metalstack.admin.v2.TaskServiceQueuesResponse"> & {
+ /**
+ * Queues configured for the async system
+ *
+ * @generated from field: repeated string queues = 1;
+ */
+ queues: string[];
+};
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceQueuesResponse.
+ * Use `create(TaskServiceQueuesResponseSchema)` to create a new message.
+ */
+export declare const TaskServiceQueuesResponseSchema: GenMessage;
+/**
+ * TaskServiceListRequest is the message to a task list request
+ *
+ * @generated from message metalstack.admin.v2.TaskServiceListRequest
+ */
+export type TaskServiceListRequest = Message<"metalstack.admin.v2.TaskServiceListRequest"> & {
+ /**
+ * Queue where this tasks should be listed
+ * will return tasks from all queues if not specified
+ *
+ * @generated from field: optional string queue = 1;
+ */
+ queue?: string;
+ /**
+ * Count of tasks to return
+ *
+ * @generated from field: optional uint32 count = 2;
+ */
+ count?: number;
+ /**
+ * Page of tasks to return
+ *
+ * @generated from field: optional uint32 page = 3;
+ */
+ page?: number;
+};
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceListRequest.
+ * Use `create(TaskServiceListRequestSchema)` to create a new message.
+ */
+export declare const TaskServiceListRequestSchema: GenMessage;
+/**
+ * TaskServiceListResponse is the response to a task list request
+ *
+ * @generated from message metalstack.admin.v2.TaskServiceListResponse
+ */
+export type TaskServiceListResponse = Message<"metalstack.admin.v2.TaskServiceListResponse"> & {
+ /**
+ * Tasks contains the requested list of tasks
+ *
+ * @generated from field: repeated metalstack.admin.v2.TaskInfo tasks = 1;
+ */
+ tasks: TaskInfo[];
+};
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceListResponse.
+ * Use `create(TaskServiceListResponseSchema)` to create a new message.
+ */
+export declare const TaskServiceListResponseSchema: GenMessage;
+/**
+ * TaskInfo contains details of an async task
+ *
+ * @generated from message metalstack.admin.v2.TaskInfo
+ */
+export type TaskInfo = Message<"metalstack.admin.v2.TaskInfo"> & {
+ /**
+ * ID is the identifier of the task.
+ *
+ * @generated from field: string id = 1;
+ */
+ id: string;
+ /**
+ * Queue is the name of the queue in which the task belongs.
+ *
+ * @generated from field: string queue = 2;
+ */
+ queue: string;
+ /**
+ * Type is the type name of the task.
+ *
+ * @generated from field: string type = 3;
+ */
+ type: string;
+ /**
+ * Payload is the payload data of the task.
+ *
+ * @generated from field: bytes payload = 4;
+ */
+ payload: Uint8Array;
+ /**
+ * State indicates the task state.
+ *
+ * @generated from field: metalstack.admin.v2.TaskState state = 5;
+ */
+ state: TaskState;
+ /**
+ * MaxRetry is the maximum number of times the task can be retried.
+ *
+ * @generated from field: int32 max_retry = 6;
+ */
+ maxRetry: number;
+ /**
+ * Retried is the number of times the task has retried so far.
+ *
+ * @generated from field: int32 retried = 7;
+ */
+ retried: number;
+ /**
+ * LastError is the error message from the last failure.
+ *
+ * @generated from field: string last_error = 8;
+ */
+ lastError: string;
+ /**
+ * LastFailedAt is the time time of the last failure if any.
+ * If the task has no failures, LastFailedAt is zero time (i.e. time.Time{}).
+ *
+ * @generated from field: google.protobuf.Timestamp last_failed_at = 9;
+ */
+ lastFailedAt?: Timestamp;
+ /**
+ * Timeout is the duration the task can be processed by Handler before being retried,
+ *
+ * @generated from field: google.protobuf.Duration timeout = 10;
+ */
+ timeout?: Duration;
+ /**
+ * Deadline is the deadline for the task.
+ *
+ * @generated from field: google.protobuf.Timestamp deadline = 11;
+ */
+ deadline?: Timestamp;
+ /**
+ * Group is the name of the group in which the task belongs.
+ *
+ * Tasks in the same queue can be grouped together by Group name and will be aggregated into one task
+ * by a Server processing the queue.
+ *
+ * Empty string (default) indicates task does not belong to any groups, and no aggregation will be applied to the task.
+ *
+ * @generated from field: string group = 12;
+ */
+ group: string;
+ /**
+ * NextProcessAt is the time the task is scheduled to be processed,
+ * zero if not applicable.
+ *
+ * @generated from field: google.protobuf.Timestamp next_process_at = 13;
+ */
+ nextProcessAt?: Timestamp;
+ /**
+ * IsOrphaned describes whether the task is left in active state with no worker processing it.
+ * An orphaned task indicates that the worker has crashed or experienced network failures and was not able to
+ * extend its lease on the task.
+ *
+ * This task will be recovered by running a server against the queue the task is in.
+ * This field is only applicable to tasks with TaskStateActive.
+ *
+ * @generated from field: bool is_orphaned = 14;
+ */
+ isOrphaned: boolean;
+ /**
+ * Retention is duration of the retention period after the task is successfully processed.
+ *
+ * @generated from field: google.protobuf.Duration retention = 15;
+ */
+ retention?: Duration;
+ /**
+ * CompletedAt is the time when the task is processed successfully.
+ * Zero value (i.e. time.Time{}) indicates no value.
+ *
+ * @generated from field: google.protobuf.Timestamp completed_at = 16;
+ */
+ completedAt?: Timestamp;
+ /**
+ * Result holds the result data associated with the task.
+ * Use ResultWriter to write result data from the Handler.
+ *
+ * @generated from field: bytes result = 17;
+ */
+ result: Uint8Array;
+};
+/**
+ * Describes the message metalstack.admin.v2.TaskInfo.
+ * Use `create(TaskInfoSchema)` to create a new message.
+ */
+export declare const TaskInfoSchema: GenMessage;
+/**
+ * TaskState defines the state of the task
+ *
+ * @generated from enum metalstack.admin.v2.TaskState
+ */
+export declare enum TaskState {
+ /**
+ * TASK_STATE_UNSPECIFIED indicates a undefined state
+ *
+ * @generated from enum value: TASK_STATE_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+ /**
+ * TASK_STATE_ACTIVE indicates that the task is currently being processed by Handler.
+ *
+ * @generated from enum value: TASK_STATE_ACTIVE = 1;
+ */
+ ACTIVE = 1,
+ /**
+ * TASK_STATE_PENDING indicates that the task is ready to be processed by Handler.
+ *
+ * @generated from enum value: TASK_STATE_PENDING = 2;
+ */
+ PENDING = 2,
+ /**
+ * TASK_STATE_SCHEDULED indicates that the task is scheduled to be processed some time in the future.
+ *
+ * @generated from enum value: TASK_STATE_SCHEDULED = 3;
+ */
+ SCHEDULED = 3,
+ /**
+ * TASK_STATE_RETRY indicates that the task has previously failed and scheduled to be processed some time in the future.
+ *
+ * @generated from enum value: TASK_STATE_RETRY = 4;
+ */
+ RETRY = 4,
+ /**
+ * TASK_STATE_ARCHIVED indicates that the task is archived and stored for inspection purposes.
+ *
+ * @generated from enum value: TASK_STATE_ARCHIVED = 5;
+ */
+ ARCHIVED = 5,
+ /**
+ * TASK_STATE_COMPLETED indicates that the task is processed successfully and retained until the retention TTL expires.
+ *
+ * @generated from enum value: TASK_STATE_COMPLETED = 6;
+ */
+ COMPLETED = 6,
+ /**
+ * TASK_STATE_AGGREGATING indicates that the task is waiting in a group to be aggregated into one task.
+ *
+ * @generated from enum value: TASK_STATE_AGGREGATING = 7;
+ */
+ AGGREGATING = 7
+}
+/**
+ * Describes the enum metalstack.admin.v2.TaskState.
+ */
+export declare const TaskStateSchema: GenEnum;
+/**
+ * TaskService provides services to async tasks
+ *
+ * @generated from service metalstack.admin.v2.TaskService
+ */
+export declare const TaskService: GenService<{
+ /**
+ * Get a specific task
+ *
+ * @generated from rpc metalstack.admin.v2.TaskService.Get
+ */
+ get: {
+ methodKind: "unary";
+ input: typeof TaskServiceGetRequestSchema;
+ output: typeof TaskServiceGetResponseSchema;
+ };
+ /**
+ * Delete a specific task
+ *
+ * @generated from rpc metalstack.admin.v2.TaskService.Delete
+ */
+ delete: {
+ methodKind: "unary";
+ input: typeof TaskServiceDeleteRequestSchema;
+ output: typeof TaskServiceDeleteResponseSchema;
+ };
+ /**
+ * Queues returns all configures queues
+ *
+ * @generated from rpc metalstack.admin.v2.TaskService.Queues
+ */
+ queues: {
+ methodKind: "unary";
+ input: typeof TaskServiceQueuesRequestSchema;
+ output: typeof TaskServiceQueuesResponseSchema;
+ };
+ /**
+ * List list all tasks
+ *
+ * @generated from rpc metalstack.admin.v2.TaskService.List
+ */
+ list: {
+ methodKind: "unary";
+ input: typeof TaskServiceListRequestSchema;
+ output: typeof TaskServiceListResponseSchema;
+ };
+}>;
diff --git a/js/metalstack/admin/v2/task_pb.js b/js/metalstack/admin/v2/task_pb.js
new file mode 100644
index 00000000..e30a4b51
--- /dev/null
+++ b/js/metalstack/admin/v2/task_pb.js
@@ -0,0 +1,121 @@
+// @generated by protoc-gen-es v2.11.0 with parameter "target=ts"
+// @generated from file metalstack/admin/v2/task.proto (package metalstack.admin.v2, syntax proto3)
+/* eslint-disable */
+import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
+import { file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
+import { file_metalstack_api_v2_common } from "../../api/v2/common_pb";
+/**
+ * Describes the file metalstack/admin/v2/task.proto.
+ */
+export const file_metalstack_admin_v2_task = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FkbWluL3YyL3Rhc2sucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiNwoVVGFza1NlcnZpY2VHZXRSZXF1ZXN0Eg8KB3Rhc2tfaWQYASABKAkSDQoFcXVldWUYAiABKAkiRQoWVGFza1NlcnZpY2VHZXRSZXNwb25zZRIrCgR0YXNrGAEgASgLMh0ubWV0YWxzdGFjay5hZG1pbi52Mi5UYXNrSW5mbyI6ChhUYXNrU2VydmljZURlbGV0ZVJlcXVlc3QSDwoHdGFza19pZBgBIAEoCRINCgVxdWV1ZRgCIAEoCSIbChlUYXNrU2VydmljZURlbGV0ZVJlc3BvbnNlIhoKGFRhc2tTZXJ2aWNlUXVldWVzUmVxdWVzdCIrChlUYXNrU2VydmljZVF1ZXVlc1Jlc3BvbnNlEg4KBnF1ZXVlcxgBIAMoCSJwChZUYXNrU2VydmljZUxpc3RSZXF1ZXN0EhIKBXF1ZXVlGAEgASgJSACIAQESEgoFY291bnQYAiABKA1IAYgBARIRCgRwYWdlGAMgASgNSAKIAQFCCAoGX3F1ZXVlQggKBl9jb3VudEIHCgVfcGFnZSJHChdUYXNrU2VydmljZUxpc3RSZXNwb25zZRIsCgV0YXNrcxgBIAMoCzIdLm1ldGFsc3RhY2suYWRtaW4udjIuVGFza0luZm8iggQKCFRhc2tJbmZvEgoKAmlkGAEgASgJEg0KBXF1ZXVlGAIgASgJEgwKBHR5cGUYAyABKAkSDwoHcGF5bG9hZBgEIAEoDBItCgVzdGF0ZRgFIAEoDjIeLm1ldGFsc3RhY2suYWRtaW4udjIuVGFza1N0YXRlEhEKCW1heF9yZXRyeRgGIAEoBRIPCgdyZXRyaWVkGAcgASgFEhIKCmxhc3RfZXJyb3IYCCABKAkSMgoObGFzdF9mYWlsZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEioKB3RpbWVvdXQYCiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SLAoIZGVhZGxpbmUYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBWdyb3VwGAwgASgJEjMKD25leHRfcHJvY2Vzc19hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLaXNfb3JwaGFuZWQYDiABKAgSLAoJcmV0ZW50aW9uGA8gASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjAKDGNvbXBsZXRlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGcmVzdWx0GBEgASgMKrYCCglUYXNrU3RhdGUSGgoWVEFTS19TVEFURV9VTlNQRUNJRklFRBAAEiEKEVRBU0tfU1RBVEVfQUNUSVZFEAEaCoKyGQZhY3RpdmUSIwoSVEFTS19TVEFURV9QRU5ESU5HEAIaC4KyGQdwZW5kaW5nEicKFFRBU0tfU1RBVEVfU0NIRURVTEVEEAMaDYKyGQlzY2hlZHVsZWQSHwoQVEFTS19TVEFURV9SRVRSWRAEGgmCshkFcmV0cnkSJQoTVEFTS19TVEFURV9BUkNISVZFRBAFGgyCshkIYXJjaGl2ZWQSJwoUVEFTS19TVEFURV9DT01QTEVURUQQBhoNgrIZCWNvbXBsZXRlZBIrChZUQVNLX1NUQVRFX0FHR1JFR0FUSU5HEAcaD4KyGQthZ2dyZWdhdGluZzLBAwoLVGFza1NlcnZpY2USZgoDR2V0EioubWV0YWxzdGFjay5hZG1pbi52Mi5UYXNrU2VydmljZUdldFJlcXVlc3QaKy5tZXRhbHN0YWNrLmFkbWluLnYyLlRhc2tTZXJ2aWNlR2V0UmVzcG9uc2UiBtLzGAIBAhJuCgZEZWxldGUSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlRhc2tTZXJ2aWNlRGVsZXRlUmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuVGFza1NlcnZpY2VEZWxldGVSZXNwb25zZSIF0vMYAQESbwoGUXVldWVzEi0ubWV0YWxzdGFjay5hZG1pbi52Mi5UYXNrU2VydmljZVF1ZXVlc1JlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlRhc2tTZXJ2aWNlUXVldWVzUmVzcG9uc2UiBtLzGAIBAhJpCgRMaXN0EisubWV0YWxzdGFjay5hZG1pbi52Mi5UYXNrU2VydmljZUxpc3RSZXF1ZXN0GiwubWV0YWxzdGFjay5hZG1pbi52Mi5UYXNrU2VydmljZUxpc3RSZXNwb25zZSIG0vMYAgECQs0BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkIJVGFza1Byb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYWRtaW4vdjI7YWRtaW52MqICA01BWKoCE01ldGFsc3RhY2suQWRtaW4uVjLKAhNNZXRhbHN0YWNrXEFkbWluXFYy4gIfTWV0YWxzdGFja1xBZG1pblxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkFkbWluOjpWMmIGcHJvdG8z", [file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common]);
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceGetRequest.
+ * Use `create(TaskServiceGetRequestSchema)` to create a new message.
+ */
+export const TaskServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_task, 0);
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceGetResponse.
+ * Use `create(TaskServiceGetResponseSchema)` to create a new message.
+ */
+export const TaskServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_task, 1);
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceDeleteRequest.
+ * Use `create(TaskServiceDeleteRequestSchema)` to create a new message.
+ */
+export const TaskServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_task, 2);
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceDeleteResponse.
+ * Use `create(TaskServiceDeleteResponseSchema)` to create a new message.
+ */
+export const TaskServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_task, 3);
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceQueuesRequest.
+ * Use `create(TaskServiceQueuesRequestSchema)` to create a new message.
+ */
+export const TaskServiceQueuesRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_task, 4);
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceQueuesResponse.
+ * Use `create(TaskServiceQueuesResponseSchema)` to create a new message.
+ */
+export const TaskServiceQueuesResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_task, 5);
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceListRequest.
+ * Use `create(TaskServiceListRequestSchema)` to create a new message.
+ */
+export const TaskServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_task, 6);
+/**
+ * Describes the message metalstack.admin.v2.TaskServiceListResponse.
+ * Use `create(TaskServiceListResponseSchema)` to create a new message.
+ */
+export const TaskServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_task, 7);
+/**
+ * Describes the message metalstack.admin.v2.TaskInfo.
+ * Use `create(TaskInfoSchema)` to create a new message.
+ */
+export const TaskInfoSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_task, 8);
+/**
+ * TaskState defines the state of the task
+ *
+ * @generated from enum metalstack.admin.v2.TaskState
+ */
+export var TaskState;
+(function (TaskState) {
+ /**
+ * TASK_STATE_UNSPECIFIED indicates a undefined state
+ *
+ * @generated from enum value: TASK_STATE_UNSPECIFIED = 0;
+ */
+ TaskState[TaskState["UNSPECIFIED"] = 0] = "UNSPECIFIED";
+ /**
+ * TASK_STATE_ACTIVE indicates that the task is currently being processed by Handler.
+ *
+ * @generated from enum value: TASK_STATE_ACTIVE = 1;
+ */
+ TaskState[TaskState["ACTIVE"] = 1] = "ACTIVE";
+ /**
+ * TASK_STATE_PENDING indicates that the task is ready to be processed by Handler.
+ *
+ * @generated from enum value: TASK_STATE_PENDING = 2;
+ */
+ TaskState[TaskState["PENDING"] = 2] = "PENDING";
+ /**
+ * TASK_STATE_SCHEDULED indicates that the task is scheduled to be processed some time in the future.
+ *
+ * @generated from enum value: TASK_STATE_SCHEDULED = 3;
+ */
+ TaskState[TaskState["SCHEDULED"] = 3] = "SCHEDULED";
+ /**
+ * TASK_STATE_RETRY indicates that the task has previously failed and scheduled to be processed some time in the future.
+ *
+ * @generated from enum value: TASK_STATE_RETRY = 4;
+ */
+ TaskState[TaskState["RETRY"] = 4] = "RETRY";
+ /**
+ * TASK_STATE_ARCHIVED indicates that the task is archived and stored for inspection purposes.
+ *
+ * @generated from enum value: TASK_STATE_ARCHIVED = 5;
+ */
+ TaskState[TaskState["ARCHIVED"] = 5] = "ARCHIVED";
+ /**
+ * TASK_STATE_COMPLETED indicates that the task is processed successfully and retained until the retention TTL expires.
+ *
+ * @generated from enum value: TASK_STATE_COMPLETED = 6;
+ */
+ TaskState[TaskState["COMPLETED"] = 6] = "COMPLETED";
+ /**
+ * TASK_STATE_AGGREGATING indicates that the task is waiting in a group to be aggregated into one task.
+ *
+ * @generated from enum value: TASK_STATE_AGGREGATING = 7;
+ */
+ TaskState[TaskState["AGGREGATING"] = 7] = "AGGREGATING";
+})(TaskState || (TaskState = {}));
+/**
+ * Describes the enum metalstack.admin.v2.TaskState.
+ */
+export const TaskStateSchema = /*@__PURE__*/ enumDesc(file_metalstack_admin_v2_task, 0);
+/**
+ * TaskService provides services to async tasks
+ *
+ * @generated from service metalstack.admin.v2.TaskService
+ */
+export const TaskService = /*@__PURE__*/ serviceDesc(file_metalstack_admin_v2_task, 0);
diff --git a/js/metalstack/api/v2/common_pb.d.ts b/js/metalstack/api/v2/common_pb.d.ts
index 3342f944..e2f7328f 100644
--- a/js/metalstack/api/v2/common_pb.d.ts
+++ b/js/metalstack/api/v2/common_pb.d.ts
@@ -272,6 +272,35 @@ export declare enum InfraRole {
* Describes the enum metalstack.api.v2.InfraRole.
*/
export declare const InfraRoleSchema: GenEnum;
+/**
+ * MachineRole specifies what role a microservice needs to call this machine service
+ *
+ * @generated from enum metalstack.api.v2.MachineRole
+ */
+export declare enum MachineRole {
+ /**
+ * MACHINE_ROLE_UNSPECIFIED is not specified
+ *
+ * @generated from enum value: MACHINE_ROLE_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+ /**
+ * MACHINE_ROLE_EDITOR a microservice needs at least editor role to call this method
+ *
+ * @generated from enum value: MACHINE_ROLE_EDITOR = 1;
+ */
+ EDITOR = 1,
+ /**
+ * MACHINE_ROLE_VIEWER a microservice needs at least viewer role to call this method
+ *
+ * @generated from enum value: MACHINE_ROLE_VIEWER = 2;
+ */
+ VIEWER = 2
+}
+/**
+ * Describes the enum metalstack.api.v2.MachineRole.
+ */
+export declare const MachineRoleSchema: GenEnum;
/**
* Visibility of a method
*
@@ -399,6 +428,12 @@ export declare const auditing: GenExtension;
* @generated from extension: repeated metalstack.api.v2.InfraRole infra_roles = 51005;
*/
export declare const infra_roles: GenExtension;
+/**
+ * MachineRole are used to define which infra role a microservice must provide to call this method
+ *
+ * @generated from extension: repeated metalstack.api.v2.MachineRole machine_roles = 51006;
+ */
+export declare const machine_roles: GenExtension;
/**
* StringValue which can be set to a enum
*
diff --git a/js/metalstack/api/v2/common_pb.js b/js/metalstack/api/v2/common_pb.js
index a9cae6a7..798cfcf0 100644
--- a/js/metalstack/api/v2/common_pb.js
+++ b/js/metalstack/api/v2/common_pb.js
@@ -7,7 +7,7 @@ import { file_google_protobuf_descriptor, file_google_protobuf_timestamp } from
/**
* 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]);
+export const file_metalstack_api_v2_common = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9jb21tb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIkIKBlBhZ2luZxIRCgRwYWdlGAEgASgESACIAQESEgoFY291bnQYAiABKARIAYgBAUIHCgVfcGFnZUIICgZfY291bnQiiAEKBkxhYmVscxJPCgZsYWJlbHMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMuTGFiZWxzRW50cnlCGLpIFZoBEiIHcgUQARiAAioHcgUQABiAAhotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIrUBCgRNZXRhEi4KBmxhYmVscxgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gAiAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdlbmVyYXRpb24YBCABKARCCQoHX2xhYmVscyJJCgxVcGRhdGVMYWJlbHMSKQoGdXBkYXRlGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEg4KBnJlbW92ZRgCIAMoCSKOAQoKVXBkYXRlTWV0YRIuCgp1cGRhdGVkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJQChBsb2NraW5nX3N0cmF0ZWd5GAIgASgOMiwubWV0YWxzdGFjay5hcGkudjIuT3B0aW1pc3RpY0xvY2tpbmdTdHJhdGVneUIIukgFggECEAEqhwEKClRlbmFudFJvbGUSGwoXVEVOQU5UX1JPTEVfVU5TUEVDSUZJRUQQABIVChFURU5BTlRfUk9MRV9PV05FUhABEhYKElRFTkFOVF9ST0xFX0VESVRPUhACEhYKElRFTkFOVF9ST0xFX1ZJRVdFUhADEhUKEVRFTkFOVF9ST0xFX0dVRVNUEAQqdQoLUHJvamVjdFJvbGUSHAoYUFJPSkVDVF9ST0xFX1VOU1BFQ0lGSUVEEAASFgoSUFJPSkVDVF9ST0xFX09XTkVSEAESFwoTUFJPSkVDVF9ST0xFX0VESVRPUhACEhcKE1BST0pFQ1RfUk9MRV9WSUVXRVIQAypVCglBZG1pblJvbGUSGgoWQURNSU5fUk9MRV9VTlNQRUNJRklFRBAAEhUKEUFETUlOX1JPTEVfRURJVE9SEAESFQoRQURNSU5fUk9MRV9WSUVXRVIQAipVCglJbmZyYVJvbGUSGgoWSU5GUkFfUk9MRV9VTlNQRUNJRklFRBAAEhUKEUlORlJBX1JPTEVfRURJVE9SEAESFQoRSU5GUkFfUk9MRV9WSUVXRVIQAipdCgtNYWNoaW5lUm9sZRIcChhNQUNISU5FX1JPTEVfVU5TUEVDSUZJRUQQABIXChNNQUNISU5FX1JPTEVfRURJVE9SEAESFwoTTUFDSElORV9ST0xFX1ZJRVdFUhACKlQKClZpc2liaWxpdHkSGgoWVklTSUJJTElUWV9VTlNQRUNJRklFRBAAEhUKEVZJU0lCSUxJVFlfUFVCTElDEAESEwoPVklTSUJJTElUWV9TRUxGEAMqUgoIQXVkaXRpbmcSGAoUQVVESVRJTkdfVU5TUEVDSUZJRUQQABIVChFBVURJVElOR19JTkNMVURFRBABEhUKEUFVRElUSU5HX0VYQ0xVREVEEAIqmAEKGU9wdGltaXN0aWNMb2NraW5nU3RyYXRlZ3kSKwonT1BUSU1JU1RJQ19MT0NLSU5HX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASJgoiT1BUSU1JU1RJQ19MT0NLSU5HX1NUUkFURUdZX0NMSUVOVBABEiYKIk9QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9TRVJWRVIQAjpiCgx0ZW5hbnRfcm9sZXMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi4jgMgAygOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZVILdGVuYW50Um9sZXM6ZQoNcHJvamVjdF9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLmOAyADKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZVIMcHJvamVjdFJvbGVzOl8KC2FkbWluX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuo4DIAMoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZVIKYWRtaW5Sb2xlczpfCgp2aXNpYmlsaXR5Eh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYu44DIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlZpc2liaWxpdHlSCnZpc2liaWxpdHk6WQoIYXVkaXRpbmcSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi8jgMgASgOMhsubWV0YWxzdGFjay5hcGkudjIuQXVkaXRpbmdSCGF1ZGl0aW5nOl8KC2luZnJhX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvY4DIAMoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZVIKaW5mcmFSb2xlczplCg1tYWNoaW5lX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvo4DIAMoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVSb2xlUgxtYWNoaW5lUm9sZXM6TwoRZW51bV9zdHJpbmdfdmFsdWUSIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9ucxiglgMgASgJUg9lbnVtU3RyaW5nVmFsdWVCwQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkILQ29tbW9uUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [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.
@@ -173,6 +173,36 @@ export var InfraRole;
* Describes the enum metalstack.api.v2.InfraRole.
*/
export const InfraRoleSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 3);
+/**
+ * MachineRole specifies what role a microservice needs to call this machine service
+ *
+ * @generated from enum metalstack.api.v2.MachineRole
+ */
+export var MachineRole;
+(function (MachineRole) {
+ /**
+ * MACHINE_ROLE_UNSPECIFIED is not specified
+ *
+ * @generated from enum value: MACHINE_ROLE_UNSPECIFIED = 0;
+ */
+ MachineRole[MachineRole["UNSPECIFIED"] = 0] = "UNSPECIFIED";
+ /**
+ * MACHINE_ROLE_EDITOR a microservice needs at least editor role to call this method
+ *
+ * @generated from enum value: MACHINE_ROLE_EDITOR = 1;
+ */
+ MachineRole[MachineRole["EDITOR"] = 1] = "EDITOR";
+ /**
+ * MACHINE_ROLE_VIEWER a microservice needs at least viewer role to call this method
+ *
+ * @generated from enum value: MACHINE_ROLE_VIEWER = 2;
+ */
+ MachineRole[MachineRole["VIEWER"] = 2] = "VIEWER";
+})(MachineRole || (MachineRole = {}));
+/**
+ * Describes the enum metalstack.api.v2.MachineRole.
+ */
+export const MachineRoleSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 4);
/**
* Visibility of a method
*
@@ -202,7 +232,7 @@ export var Visibility;
/**
* Describes the enum metalstack.api.v2.Visibility.
*/
-export const VisibilitySchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 4);
+export const VisibilitySchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 5);
/**
* Auditing option specified per service method
* by default all service methods are included
@@ -234,7 +264,7 @@ export var Auditing;
/**
* Describes the enum metalstack.api.v2.Auditing.
*/
-export const AuditingSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 5);
+export const AuditingSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 6);
/**
* OptimisticLockingStrategy defines how optimistic locking should be handled.
* It defaults to client side, which requires the UpdatedAt timestamp to be provided
@@ -266,7 +296,7 @@ export var OptimisticLockingStrategy;
/**
* Describes the enum metalstack.api.v2.OptimisticLockingStrategy.
*/
-export const OptimisticLockingStrategySchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 6);
+export const OptimisticLockingStrategySchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_common, 7);
/**
* TenantRoles are used to define which tenant role a logged in user must provide to call this method
*
@@ -303,9 +333,15 @@ export const auditing = /*@__PURE__*/ extDesc(file_metalstack_api_v2_common, 4);
* @generated from extension: repeated metalstack.api.v2.InfraRole infra_roles = 51005;
*/
export const infra_roles = /*@__PURE__*/ extDesc(file_metalstack_api_v2_common, 5);
+/**
+ * MachineRole are used to define which infra role a microservice must provide to call this method
+ *
+ * @generated from extension: repeated metalstack.api.v2.MachineRole machine_roles = 51006;
+ */
+export const machine_roles = /*@__PURE__*/ extDesc(file_metalstack_api_v2_common, 6);
/**
* 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);
+export const enum_string_value = /*@__PURE__*/ extDesc(file_metalstack_api_v2_common, 7);
diff --git a/js/metalstack/api/v2/filesystem_pb.js b/js/metalstack/api/v2/filesystem_pb.js
index cbe23558..218444e9 100644
--- a/js/metalstack/api/v2/filesystem_pb.js
+++ b/js/metalstack/api/v2/filesystem_pb.js
@@ -8,7 +8,7 @@ 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]);
+export const file_metalstack_api_v2_filesystem = /*@__PURE__*/ fileDesc("CiJtZXRhbHN0YWNrL2FwaS92Mi9maWxlc3lzdGVtLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiI2ChtGaWxlc3lzdGVtU2VydmljZUdldFJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBIkMKHEZpbGVzeXN0ZW1TZXJ2aWNlTGlzdFJlcXVlc3QSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQFCBQoDX2lkIl4KHEZpbGVzeXN0ZW1TZXJ2aWNlR2V0UmVzcG9uc2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0ImAKHUZpbGVzeXN0ZW1TZXJ2aWNlTGlzdFJlc3BvbnNlEj8KEmZpbGVzeXN0ZW1fbGF5b3V0cxgBIAMoCzIjLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXQisQEKHUZpbGVzeXN0ZW1TZXJ2aWNlTWF0Y2hSZXF1ZXN0Ej4KDnNpemVfYW5kX2ltYWdlGAEgASgLMiQubWV0YWxzdGFjay5hcGkudjIuTWF0Y2hJbWFnZUFuZFNpemVIABJHChxtYWNoaW5lX2FuZF9maWxlc3lzdGVtbGF5b3V0GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWF0Y2hNYWNoaW5lSABCBwoFbWF0Y2giSgoRTWF0Y2hJbWFnZUFuZFNpemUSGQoEc2l6ZRgBIAEoCUILukgIcgbAs66xAgESGgoFaW1hZ2UYAiABKAlCC7pICHIGwLOusQIBIlEKDE1hdGNoTWFjaGluZRIZCgdtYWNoaW5lGAEgASgJQgi6SAVyA7ABARImChFmaWxlc3lzdGVtX2xheW91dBgCIAEoCUILukgIcgbAs66xAgEiYAoeRmlsZXN5c3RlbVNlcnZpY2VNYXRjaFJlc3BvbnNlEj4KEWZpbGVzeXN0ZW1fbGF5b3V0GAEgASgLMiMubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dCLsAwoQRmlsZXN5c3RlbUxheW91dBIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgFIAYgBARIyCgtmaWxlc3lzdGVtcxgFIAMoCzIdLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW0SJgoFZGlza3MYBiADKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5EaXNrEiUKBHJhaWQYByADKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5SYWlkEjUKDXZvbHVtZV9ncm91cHMYCCADKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5Wb2x1bWVHcm91cBI5Cg9sb2dpY2FsX3ZvbHVtZXMYCSADKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Mb2dpY2FsVm9sdW1lEkMKC2NvbnN0cmFpbnRzGAogASgLMi4ubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbUxheW91dENvbnN0cmFpbnRzQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbiKnAQobRmlsZXN5c3RlbUxheW91dENvbnN0cmFpbnRzEg0KBXNpemVzGAEgAygJEkoKBmltYWdlcxgCIAMoCzI6Lm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1MYXlvdXRDb25zdHJhaW50cy5JbWFnZXNFbnRyeRotCgtJbWFnZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIuwCCgpGaWxlc3lzdGVtEhsKBmRldmljZRgBIAEoCUILukgIcgbAs66xAgESNgoGZm9ybWF0GAIgASgOMhkubWV0YWxzdGFjay5hcGkudjIuRm9ybWF0Qgu6SAjIAQGCAQIQARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEh0KBHBhdGgYBSABKAlCCrpIB3IFEAEYgCBIAogBARIeCgVsYWJlbBgGIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKDW1vdW50X29wdGlvbnMYByADKAlCE7pIEJIBDRAgGAEiB3IFEAEYgAESKwoOY3JlYXRlX29wdGlvbnMYCCADKAlCE7pIEJIBDRAgGAEiB3IFEAEYgAFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgcKBV9wYXRoQggKBl9sYWJlbCJYCgREaXNrEhoKBmRldmljZRgBIAEoCUIKukgHcgUQAhiAARI0CgpwYXJ0aXRpb25zGAIgAygLMiAubWV0YWxzdGFjay5hcGkudjIuRGlza1BhcnRpdGlvbiKiAQoEUmFpZBISCgphcnJheV9uYW1lGAEgASgJEg8KB2RldmljZXMYAiADKAkSOAoFbGV2ZWwYAyABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5SYWlkTGV2ZWxCC7pICMgBAYIBAhABEisKDmNyZWF0ZV9vcHRpb25zGAQgAygJQhO6SBCSAQ0QIBgBIgdyBRABGIABEg4KBnNwYXJlcxgFIAEoBSKYAQoNRGlza1BhcnRpdGlvbhIOCgZudW1iZXIYASABKA0SEgoFbGFiZWwYAiABKAlIAIgBARIMCgRzaXplGAMgASgEEj4KCGdwdF90eXBlGAQgASgOMhoubWV0YWxzdGFjay5hcGkudjIuR1BUVHlwZUILukgIyAEBggECEAFIAYgBAUIICgZfbGFiZWxCCwoJX2dwdF90eXBlIkcKC1ZvbHVtZUdyb3VwEhkKBG5hbWUYASABKAlCC7pICHIGwLOusQIBEg8KB2RldmljZXMYAiADKAkSDAoEdGFncxgDIAMoCSKSAQoNTG9naWNhbFZvbHVtZRIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIgCgx2b2x1bWVfZ3JvdXAYAiABKAlCCrpIB3IFEAIYgAESDAoEc2l6ZRgDIAEoBBI2Cghsdm1fdHlwZRgEIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLkxWTVR5cGVCCLpIBYIBAhABKoYBCgdMVk1UeXBlEhgKFExWTV9UWVBFX1VOU1BFQ0lGSUVEEAASHwoPTFZNX1RZUEVfTElORUFSEAEaCoKyGQZsaW5lYXISIQoQTFZNX1RZUEVfU1RSSVBFRBACGguCshkHc3RyaXBlZBIdCg5MVk1fVFlQRV9SQUlEMRADGgmCshkFcmFpZDEqxAEKBkZvcm1hdBIWChJGT1JNQVRfVU5TUEVDSUZJRUQQABIZCgtGT1JNQVRfVkZBVBABGgiCshkEdmZhdBIZCgtGT1JNQVRfRVhUMxACGgiCshkEZXh0MxIZCgtGT1JNQVRfRVhUNBADGgiCshkEZXh0NBIZCgtGT1JNQVRfU1dBUBAEGgiCshkEc3dhcBIbCgxGT1JNQVRfVE1QRlMQBRoJgrIZBXRtcGZzEhkKC0ZPUk1BVF9OT05FEAYaCIKyGQRub25lKqMBCgdHUFRUeXBlEhgKFEdQVF9UWVBFX1VOU1BFQ0lGSUVEEAASGwoNR1BUX1RZUEVfQk9PVBABGgiCshkEZWYwMBIcCg5HUFRfVFlQRV9MSU5VWBACGgiCshkEODMwMBIhChNHUFRfVFlQRV9MSU5VWF9SQUlEEAMaCIKyGQRmZDAwEiAKEkdQVF9UWVBFX0xJTlVYX0xWTRAEGgiCshkEOGUwMCpLCglSYWlkTGV2ZWwSGgoWUkFJRF9MRVZFTF9VTlNQRUNJRklFRBAAEhAKDFJBSURfTEVWRUxfMBABEhAKDFJBSURfTEVWRUxfMRACMvICChFGaWxlc3lzdGVtU2VydmljZRJwCgNHZXQSLi5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtU2VydmljZUdldFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtU2VydmljZUdldFJlc3BvbnNlIgjY8xgD4PMYAhJzCgRMaXN0Ei8ubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbVNlcnZpY2VMaXN0UmVxdWVzdBowLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgD4PMYAhJ2CgVNYXRjaBIwLm1ldGFsc3RhY2suYXBpLnYyLkZpbGVzeXN0ZW1TZXJ2aWNlTWF0Y2hSZXF1ZXN0GjEubWV0YWxzdGFjay5hcGkudjIuRmlsZXN5c3RlbVNlcnZpY2VNYXRjaFJlc3BvbnNlIgjY8xgD4PMYAkLFAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQg9GaWxlc3lzdGVtUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [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.
diff --git a/js/metalstack/api/v2/image_pb.js b/js/metalstack/api/v2/image_pb.js
index 142d9dd9..2e58d8e1 100644
--- a/js/metalstack/api/v2/image_pb.js
+++ b/js/metalstack/api/v2/image_pb.js
@@ -9,7 +9,7 @@ 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]);
+export const file_metalstack_api_v2_image = /*@__PURE__*/ fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi9pbWFnZS5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIiMQoWSW1hZ2VTZXJ2aWNlR2V0UmVxdWVzdBIXCgJpZBgBIAEoCUILukgIcgbAs66xAgEiRwoXSW1hZ2VTZXJ2aWNlTGlzdFJlcXVlc3QSLAoFcXVlcnkYASABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZVF1ZXJ5IicKGUltYWdlU2VydmljZUxhdGVzdFJlcXVlc3QSCgoCb3MYASABKAkiQgoXSW1hZ2VTZXJ2aWNlR2V0UmVzcG9uc2USJwoFaW1hZ2UYASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZSJEChhJbWFnZVNlcnZpY2VMaXN0UmVzcG9uc2USKAoGaW1hZ2VzGAEgAygLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2UiRQoaSW1hZ2VTZXJ2aWNlTGF0ZXN0UmVzcG9uc2USJwoFaW1hZ2UYASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZSL/AgoFSW1hZ2USFwoCaWQYASABKAlCC7pICHIGwLOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhgKA3VybBgDIAEoCUILukgIcgbgs66xAgESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBARJCCghmZWF0dXJlcxgGIAMoDjIfLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlRmVhdHVyZUIPukgMkgEJGAEiBYIBAhABEkgKDmNsYXNzaWZpY2F0aW9uGAcgASgOMiYubWV0YWxzdGFjay5hcGkudjIuSW1hZ2VDbGFzc2lmaWNhdGlvbkIIukgFggECEAESLgoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uIkYKCkltYWdlVXNhZ2USJwoFaW1hZ2UYASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZRIPCgd1c2VkX2J5GAIgAygJIvQDCgpJbWFnZVF1ZXJ5EhwKAmlkGAEgASgJQgu6SAhyBsCzrrECAUgAiAEBEhsKAm9zGAIgASgJQgq6SAdyBRACGIABSAGIAQESIAoHdmVyc2lvbhgDIAEoCUIKukgHcgUQARiAAUgCiAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSAOIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSASIAQESHQoDdXJsGAYgASgJQgu6SAhyBuCzrrECAUgFiAEBEj8KB2ZlYXR1cmUYByABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUZlYXR1cmVCCLpIBYIBAhABSAaIAQESTQoOY2xhc3NpZmljYXRpb24YCCABKA4yJi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZUNsYXNzaWZpY2F0aW9uQgi6SAWCAQIQAUgHiAEBEi4KBmxhYmVscxgJIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gIiAEBQgUKA19pZEIFCgNfb3NCCgoIX3ZlcnNpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgYKBF91cmxCCgoIX2ZlYXR1cmVCEQoPX2NsYXNzaWZpY2F0aW9uQgkKB19sYWJlbHMqfwoMSW1hZ2VGZWF0dXJlEh0KGUlNQUdFX0ZFQVRVUkVfVU5TUEVDSUZJRUQQABImChVJTUFHRV9GRUFUVVJFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSKAoWSU1BR0VfRkVBVFVSRV9GSVJFV0FMTBACGgyCshkIZmlyZXdhbGwq0gEKE0ltYWdlQ2xhc3NpZmljYXRpb24SJAogSU1BR0VfQ0xBU1NJRklDQVRJT05fVU5TUEVDSUZJRUQQABItChxJTUFHRV9DTEFTU0lGSUNBVElPTl9QUkVWSUVXEAEaC4KyGQdwcmV2aWV3EjEKHklNQUdFX0NMQVNTSUZJQ0FUSU9OX1NVUFBPUlRFRBACGg2CshkJc3VwcG9ydGVkEjMKH0lNQUdFX0NMQVNTSUZJQ0FUSU9OX0RFUFJFQ0FURUQQAxoOgrIZCmRlcHJlY2F0ZWQy0gIKDEltYWdlU2VydmljZRJmCgNHZXQSKS5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZVNlcnZpY2VHZXRSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuSW1hZ2VTZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgCEmkKBExpc3QSKi5tZXRhbHN0YWNrLmFwaS52Mi5JbWFnZVNlcnZpY2VMaXN0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLkltYWdlU2VydmljZUxpc3RSZXNwb25zZSII2PMYA+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.
diff --git a/js/metalstack/api/v2/ip_pb.js b/js/metalstack/api/v2/ip_pb.js
index 87c9735c..4f243980 100644
--- a/js/metalstack/api/v2/ip_pb.js
+++ b/js/metalstack/api/v2/ip_pb.js
@@ -8,7 +8,7 @@ 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]);
+export const file_metalstack_api_v2_ip = /*@__PURE__*/ fileDesc("ChptZXRhbHN0YWNrL2FwaS92Mi9pcC5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIisQIKAklQEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhMKAmlwGAMgASgJQge6SARyAnABEhkKBG5hbWUYBCABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECARIcCgduZXR3b3JrGAYgASgJQgu6SAhyBsCzrrECARIZCgdwcm9qZWN0GAcgASgJQgi6SAVyA7ABARIxCgR0eXBlGAggASgOMhkubWV0YWxzdGFjay5hcGkudjIuSVBUeXBlQgi6SAWCAQIQARIgCgluYW1lc3BhY2UYCSABKAlCCLpIBXIDsAEBSACIAQFCDAoKX25hbWVzcGFjZSJ1ChNJUFNlcnZpY2VHZXRSZXF1ZXN0EhMKAmlwGAEgASgJQge6SARyAnABEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBEiAKCW5hbWVzcGFjZRgDIAEoCUIIukgFcgOwAQFIAIgBAUIMCgpfbmFtZXNwYWNlItgDChZJUFNlcnZpY2VDcmVhdGVSZXF1ZXN0EhwKB25ldHdvcmsYASABKAlCC7pICHIGwLOusQIBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESGAoCaXAYBSABKAlCB7pIBHICcAFIAogBARIeCgdtYWNoaW5lGAYgASgJQgi6SAVyA7ABAUgDiAEBEi4KBmxhYmVscxgHIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gEiAEBEjYKBHR5cGUYCCABKA4yGS5tZXRhbHN0YWNrLmFwaS52Mi5JUFR5cGVCCLpIBYIBAhABSAWIAQESSQoOYWRkcmVzc19mYW1pbHkYCSABKA4yIi5tZXRhbHN0YWNrLmFwaS52Mi5JUEFkZHJlc3NGYW1pbHlCCLpIBYIBAhABSAaIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgUKA19pcEIKCghfbWFjaGluZUIJCgdfbGFiZWxzQgcKBV90eXBlQhEKD19hZGRyZXNzX2ZhbWlseSLmAgoWSVBTZXJ2aWNlVXBkYXRlUmVxdWVzdBITCgJpcBgBIAEoCUIHukgEcgJwARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIZCgdwcm9qZWN0GAMgASgJQgi6SAVyA7ABARIeCgRuYW1lGAQgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgBiAEBEjYKBHR5cGUYBiABKA4yGS5tZXRhbHN0YWNrLmFwaS52Mi5JUFR5cGVCCLpIBYIBAhABSAKIAQESNAoGbGFiZWxzGAcgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAOIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgcKBV90eXBlQgkKB19sYWJlbHMiXAoUSVBTZXJ2aWNlTGlzdFJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESKQoFcXVlcnkYAiABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5JUFF1ZXJ5IswECgdJUFF1ZXJ5EhgKAmlwGAEgASgJQge6SARyAnABSACIAQESIQoHbmV0d29yaxgCIAEoCUILukgIcgbAs66xAgFIAYgBARIeCgdwcm9qZWN0GAMgASgJQgi6SAVyA7ABAUgCiAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSAOIAQESGwoEdXVpZBgFIAEoCUIIukgFcgOwAQFIBIgBARIeCgdtYWNoaW5lGAYgASgJQgi6SAVyA7ABAUgFiAEBEikKEnBhcmVudF9wcmVmaXhfY2lkchgHIAEoCUIIukgFcgPoAQFIBogBARIuCgZsYWJlbHMYCCABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIB4gBARI2CgR0eXBlGAkgASgOMhkubWV0YWxzdGFjay5hcGkudjIuSVBUeXBlQgi6SAWCAQIQAUgIiAEBEkkKDmFkZHJlc3NfZmFtaWx5GAogASgOMiIubWV0YWxzdGFjay5hcGkudjIuSVBBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgJiAEBEiAKCW5hbWVzcGFjZRgLIAEoCUIIukgFcgOwAQFICogBAUIFCgNfaXBCCgoIX25ldHdvcmtCCgoIX3Byb2plY3RCBwoFX25hbWVCBwoFX3V1aWRCCgoIX21hY2hpbmVCFQoTX3BhcmVudF9wcmVmaXhfY2lkckIJCgdfbGFiZWxzQgcKBV90eXBlQhEKD19hZGRyZXNzX2ZhbWlseUIMCgpfbmFtZXNwYWNlIkgKFklQU2VydmljZURlbGV0ZVJlcXVlc3QSEwoCaXAYASABKAlCB7pIBHICcAESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiOQoUSVBTZXJ2aWNlR2V0UmVzcG9uc2USIQoCaXAYASABKAsyFS5tZXRhbHN0YWNrLmFwaS52Mi5JUCI8ChdJUFNlcnZpY2VVcGRhdGVSZXNwb25zZRIhCgJpcBgBIAEoCzIVLm1ldGFsc3RhY2suYXBpLnYyLklQIjwKF0lQU2VydmljZUNyZWF0ZVJlc3BvbnNlEiEKAmlwGAEgASgLMhUubWV0YWxzdGFjay5hcGkudjIuSVAiOwoVSVBTZXJ2aWNlTGlzdFJlc3BvbnNlEiIKA2lwcxgBIAMoCzIVLm1ldGFsc3RhY2suYXBpLnYyLklQIjwKF0lQU2VydmljZURlbGV0ZVJlc3BvbnNlEiEKAmlwGAEgASgLMhUubWV0YWxzdGFjay5hcGkudjIuSVAqZwoGSVBUeXBlEhcKE0lQX1RZUEVfVU5TUEVDSUZJRUQQABIkChFJUF9UWVBFX0VQSEVNRVJBTBABGg2CshkJZXBoZW1lcmFsEh4KDklQX1RZUEVfU1RBVElDEAIaCoKyGQZzdGF0aWMqfAoPSVBBZGRyZXNzRmFtaWx5EiEKHUlQX0FERFJFU1NfRkFNSUxZX1VOU1BFQ0lGSUVEEAASIgoUSVBfQUREUkVTU19GQU1JTFlfVjQQARoIgrIZBGlwdjQSIgoUSVBfQUREUkVTU19GQU1JTFlfVjYQAhoIgrIZBGlwdjYykwQKCUlQU2VydmljZRJjCgNHZXQSJi5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VHZXRSZXF1ZXN0GicubWV0YWxzdGFjay5hcGkudjIuSVBTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEmcKBkNyZWF0ZRIpLm1ldGFsc3RhY2suYXBpLnYyLklQU2VydmljZUNyZWF0ZVJlcXVlc3QaKi5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VDcmVhdGVSZXNwb25zZSIGyvMYAgECEmcKBlVwZGF0ZRIpLm1ldGFsc3RhY2suYXBpLnYyLklQU2VydmljZVVwZGF0ZVJlcXVlc3QaKi5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VVcGRhdGVSZXNwb25zZSIGyvMYAgECEmYKBExpc3QSJy5tZXRhbHN0YWNrLmFwaS52Mi5JUFNlcnZpY2VMaXN0UmVxdWVzdBooLm1ldGFsc3RhY2suYXBpLnYyLklQU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+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.
diff --git a/js/metalstack/api/v2/machine_pb.d.ts b/js/metalstack/api/v2/machine_pb.d.ts
index ecdb24bb..29aa9fc9 100644
--- a/js/metalstack/api/v2/machine_pb.d.ts
+++ b/js/metalstack/api/v2/machine_pb.d.ts
@@ -370,6 +370,95 @@ export type MachineServiceDeleteResponse = Message<"metalstack.api.v2.MachineSer
* Use `create(MachineServiceDeleteResponseSchema)` to create a new message.
*/
export declare const MachineServiceDeleteResponseSchema: GenMessage;
+/**
+ * MachineServiceBMCCommandRequest is the request payload for a machine bmc command
+ *
+ * @generated from message metalstack.api.v2.MachineServiceBMCCommandRequest
+ */
+export type MachineServiceBMCCommandRequest = Message<"metalstack.api.v2.MachineServiceBMCCommandRequest"> & {
+ /**
+ * UUID of the machine to send the command to
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+ /**
+ * Project of the machine
+ *
+ * @generated from field: string project = 2;
+ */
+ project: string;
+ /**
+ * Command to send to the bmc of the machine
+ *
+ * @generated from field: metalstack.api.v2.MachineBMCCommand command = 3;
+ */
+ command: MachineBMCCommand;
+};
+/**
+ * Describes the message metalstack.api.v2.MachineServiceBMCCommandRequest.
+ * Use `create(MachineServiceBMCCommandRequestSchema)` to create a new message.
+ */
+export declare const MachineServiceBMCCommandRequestSchema: GenMessage;
+/**
+ * MachineServiceBMCCommandResponse is the response payload for a machine bmc command
+ *
+ * @generated from message metalstack.api.v2.MachineServiceBMCCommandResponse
+ */
+export type MachineServiceBMCCommandResponse = Message<"metalstack.api.v2.MachineServiceBMCCommandResponse"> & {};
+/**
+ * Describes the message metalstack.api.v2.MachineServiceBMCCommandResponse.
+ * Use `create(MachineServiceBMCCommandResponseSchema)` to create a new message.
+ */
+export declare const MachineServiceBMCCommandResponseSchema: GenMessage;
+/**
+ * MachineServiceGetBMCRequest is the request payload for a machine getbmc request
+ *
+ * @generated from message metalstack.api.v2.MachineServiceGetBMCRequest
+ */
+export type MachineServiceGetBMCRequest = Message<"metalstack.api.v2.MachineServiceGetBMCRequest"> & {
+ /**
+ * 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.MachineServiceGetBMCRequest.
+ * Use `create(MachineServiceGetBMCRequestSchema)` to create a new message.
+ */
+export declare const MachineServiceGetBMCRequestSchema: GenMessage;
+/**
+ * MachineServiceGetBMCResponse is the response payload for a machine getbmc request
+ *
+ * @generated from message metalstack.api.v2.MachineServiceGetBMCResponse
+ */
+export type MachineServiceGetBMCResponse = Message<"metalstack.api.v2.MachineServiceGetBMCResponse"> & {
+ /**
+ * UUID of the machine
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+ /**
+ * BMC contains the BMC details of this machine
+ *
+ * @generated from field: metalstack.api.v2.MachineBMCReport bmc = 2;
+ */
+ bmc?: MachineBMCReport;
+};
+/**
+ * Describes the message metalstack.api.v2.MachineServiceGetBMCResponse.
+ * Use `create(MachineServiceGetBMCResponseSchema)` to create a new message.
+ */
+export declare const MachineServiceGetBMCResponseSchema: GenMessage;
/**
* Machine represents a physical bare metal machine.
*
@@ -412,12 +501,6 @@ export type Machine = Message<"metalstack.api.v2.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
*
@@ -1020,6 +1103,60 @@ export type MachineChassisIdentifyLEDState = Message<"metalstack.api.v2.MachineC
* Use `create(MachineChassisIdentifyLEDStateSchema)` to create a new message.
*/
export declare const MachineChassisIdentifyLEDStateSchema: GenMessage;
+/**
+ * MachineBMCReport is sent from the metal-bmc to update bmc and power related details
+ *
+ * @generated from message metalstack.api.v2.MachineBMCReport
+ */
+export type MachineBMCReport = Message<"metalstack.api.v2.MachineBMCReport"> & {
+ /**
+ * Bmc contains bmc details
+ *
+ * @generated from field: metalstack.api.v2.MachineBMC bmc = 1;
+ */
+ bmc?: MachineBMC;
+ /**
+ * Bios contains bios details
+ *
+ * @generated from field: metalstack.api.v2.MachineBios bios = 2;
+ */
+ bios?: MachineBios;
+ /**
+ * Fru containers field replaceable unit details
+ *
+ * @generated from field: metalstack.api.v2.MachineFRU fru = 3;
+ */
+ fru?: MachineFRU;
+ /**
+ * PowerMetric contains the power statistics of the machine
+ *
+ * @generated from field: metalstack.api.v2.MachinePowerMetric power_metric = 4;
+ */
+ powerMetric?: MachinePowerMetric;
+ /**
+ * PowerSupplies contains details about all power supplies and their state
+ *
+ * @generated from field: repeated metalstack.api.v2.MachinePowerSupply power_supplies = 5;
+ */
+ powerSupplies: MachinePowerSupply[];
+ /**
+ * LedState indicates the state of the indicator LED on this machine
+ *
+ * @generated from field: metalstack.api.v2.MachineChassisIdentifyLEDState led_state = 6;
+ */
+ ledState?: MachineChassisIdentifyLEDState;
+ /**
+ * UpdatedAt contains the date when this data was last updated
+ *
+ * @generated from field: google.protobuf.Timestamp updated_at = 7;
+ */
+ updatedAt?: Timestamp;
+};
+/**
+ * Describes the message metalstack.api.v2.MachineBMCReport.
+ * Use `create(MachineBMCReportSchema)` to create a new message.
+ */
+export declare const MachineBMCReportSchema: GenMessage;
/**
* MachineBios contains BIOS details of this machine
*
@@ -1050,6 +1187,189 @@ export type MachineBios = Message<"metalstack.api.v2.MachineBios"> & {
* Use `create(MachineBiosSchema)` to create a new message.
*/
export declare const MachineBiosSchema: GenMessage;
+/**
+ * MachineBMC describe details of the ipmi or out of band device
+ *
+ * @generated from message metalstack.api.v2.MachineBMC
+ */
+export type MachineBMC = Message<"metalstack.api.v2.MachineBMC"> & {
+ /**
+ * Address of this ipmi device from outside in the form of :
+ *
+ * @generated from field: string address = 1;
+ */
+ address: string;
+ /**
+ * Mac address of the network interface of this ipmi device
+ *
+ * @generated from field: string mac = 2;
+ */
+ mac: string;
+ /**
+ * User of this ipmi device
+ *
+ * @generated from field: string user = 3;
+ */
+ user: string;
+ /**
+ * Password of this ipmi device
+ *
+ * @generated from field: string password = 4;
+ */
+ password: string;
+ /**
+ * Interface of this ipmi device
+ *
+ * @generated from field: string interface = 5;
+ */
+ interface: string;
+ /**
+ * Version of this bmc device
+ *
+ * @generated from field: string version = 7;
+ */
+ version: string;
+ /**
+ * PowerState of this machine
+ *
+ * @generated from field: string power_state = 8;
+ */
+ powerState: string;
+};
+/**
+ * Describes the message metalstack.api.v2.MachineBMC.
+ * Use `create(MachineBMCSchema)` to create a new message.
+ */
+export declare const MachineBMCSchema: GenMessage;
+/**
+ * MachineFRU describes details to the machine which are required in case of a necessary replacement
+ *
+ * @generated from message metalstack.api.v2.MachineFRU
+ */
+export type MachineFRU = Message<"metalstack.api.v2.MachineFRU"> & {
+ /**
+ * ChassisPartNumber is the part number of the machine chassis
+ *
+ * @generated from field: optional string chassis_part_number = 1;
+ */
+ chassisPartNumber?: string;
+ /**
+ * ChassisPartSerial is the serial number of the machine chassis
+ *
+ * @generated from field: optional string chassis_part_serial = 2;
+ */
+ chassisPartSerial?: string;
+ /**
+ * BoardMfg is the short description of the mainboard
+ *
+ * @generated from field: optional string board_mfg = 3;
+ */
+ boardMfg?: string;
+ /**
+ * BoardMfgSerial is the serial number of the mainboard
+ *
+ * @generated from field: optional string board_mfg_serial = 4;
+ */
+ boardMfgSerial?: string;
+ /**
+ * BoardPartNumber is the part number of the mainboard
+ *
+ * @generated from field: optional string board_part_number = 5;
+ */
+ boardPartNumber?: string;
+ /**
+ * ProductManufacturer is the manufacturer of the machine
+ *
+ * @generated from field: optional string product_manufacturer = 6;
+ */
+ productManufacturer?: string;
+ /**
+ * ProductPartNumber is the part number of the machine
+ *
+ * @generated from field: optional string product_part_number = 7;
+ */
+ productPartNumber?: string;
+ /**
+ * ProductSerial is the serial number of the machine
+ *
+ * @generated from field: optional string product_serial = 8;
+ */
+ productSerial?: string;
+};
+/**
+ * Describes the message metalstack.api.v2.MachineFRU.
+ * Use `create(MachineFRUSchema)` to create a new message.
+ */
+export declare const MachineFRUSchema: GenMessage;
+/**
+ * MachinePowerMetric contains metrics of the power consumption of a machine
+ *
+ * @generated from message metalstack.api.v2.MachinePowerMetric
+ */
+export type MachinePowerMetric = Message<"metalstack.api.v2.MachinePowerMetric"> & {
+ /**
+ * AverageConsumedWatts shall represent the
+ * average power level that occurred averaged over the last IntervalInMin
+ * minutes.
+ *
+ * @generated from field: float average_consumed_watts = 1;
+ */
+ averageConsumedWatts: number;
+ /**
+ * IntervalInMin shall represent the time
+ * interval (or window), in minutes, in which the PowerMetrics properties
+ * are measured over.
+ * Should be an integer, but some Dell implementations return as a float.
+ *
+ * @generated from field: float interval_in_min = 2;
+ */
+ intervalInMin: number;
+ /**
+ * MaxConsumedWatts shall represent the
+ * maximum power level in watts that occurred within the last
+ * IntervalInMin minutes.
+ *
+ * @generated from field: float max_consumed_watts = 3;
+ */
+ maxConsumedWatts: number;
+ /**
+ * MinConsumedWatts shall represent the
+ * minimum power level in watts that occurred within the last
+ * IntervalInMin minutes.
+ *
+ * @generated from field: float min_consumed_watts = 4;
+ */
+ minConsumedWatts: number;
+};
+/**
+ * Describes the message metalstack.api.v2.MachinePowerMetric.
+ * Use `create(MachinePowerMetricSchema)` to create a new message.
+ */
+export declare const MachinePowerMetricSchema: GenMessage;
+/**
+ * MachinePowerSupply contains details of the power supply of a machine
+ *
+ * @generated from message metalstack.api.v2.MachinePowerSupply
+ */
+export type MachinePowerSupply = Message<"metalstack.api.v2.MachinePowerSupply"> & {
+ /**
+ * Health of the powersupply
+ *
+ * @generated from field: string health = 1;
+ */
+ health: string;
+ /**
+ * State of the powersupply
+ *
+ * @generated from field: string state = 2;
+ */
+ state: string;
+};
+/**
+ * Describes the message metalstack.api.v2.MachinePowerSupply.
+ * Use `create(MachinePowerSupplySchema)` to create a new message.
+ */
+export declare const MachinePowerSupplySchema: GenMessage;
/**
* MachineRecentProvisioningEvents the recent provisioning events for this machine
*
@@ -1219,13 +1539,13 @@ export type MachineQuery = Message<"metalstack.api.v2.MachineQuery"> & {
*/
disk?: MachineDiskQuery;
/**
- * IPMI specific machine queries
+ * Bmc specific machine queries
*
- * @generated from field: optional metalstack.api.v2.MachineIPMIQuery ipmi = 11;
+ * @generated from field: optional metalstack.api.v2.MachineBMCQuery bmc = 11;
*/
- ipmi?: MachineIPMIQuery;
+ bmc?: MachineBMCQuery;
/**
- * FRU specific machine queries
+ * Fru specific machine queries
*
* @generated from field: optional metalstack.api.v2.MachineFRUQuery fru = 12;
*/
@@ -1423,11 +1743,11 @@ export type MachineDiskQuery = Message<"metalstack.api.v2.MachineDiskQuery"> & {
*/
export declare const MachineDiskQuerySchema: GenMessage;
/**
- * MachineIPMIQuery machine ipmi specific machine queries
+ * MachineBMCQuery machine ipmi or bmc specific machine queries
*
- * @generated from message metalstack.api.v2.MachineIPMIQuery
+ * @generated from message metalstack.api.v2.MachineBMCQuery
*/
-export type MachineIPMIQuery = Message<"metalstack.api.v2.MachineIPMIQuery"> & {
+export type MachineBMCQuery = Message<"metalstack.api.v2.MachineBMCQuery"> & {
/**
* Address of the ipmi system of this machine
*
@@ -1454,10 +1774,10 @@ export type MachineIPMIQuery = Message<"metalstack.api.v2.MachineIPMIQuery"> & {
interface?: string;
};
/**
- * Describes the message metalstack.api.v2.MachineIPMIQuery.
- * Use `create(MachineIPMIQuerySchema)` to create a new message.
+ * Describes the message metalstack.api.v2.MachineBMCQuery.
+ * Use `create(MachineBMCQuerySchema)` to create a new message.
*/
-export declare const MachineIPMIQuerySchema: GenMessage;
+export declare const MachineBMCQuerySchema: GenMessage;
/**
* MachineFRUQuery machine fru specific machine queries
*
@@ -1782,6 +2102,89 @@ export declare enum MachineAllocationType {
* Describes the enum metalstack.api.v2.MachineAllocationType.
*/
export declare const MachineAllocationTypeSchema: GenEnum;
+/**
+ * MachineBMCCommand defines commands send to the BMC of the machine
+ *
+ * @generated from enum metalstack.api.v2.MachineBMCCommand
+ */
+export declare enum MachineBMCCommand {
+ /**
+ * MACHINE_BMC_COMMAND_UNSPECIFIED is not defined
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_UNSPECIFIED = 0;
+ */
+ MACHINE_BMC_COMMAND_UNSPECIFIED = 0,
+ /**
+ * MACHINE_BMC_COMMAND_ON Power on the machine
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_ON = 1;
+ */
+ MACHINE_BMC_COMMAND_ON = 1,
+ /**
+ * MACHINE_BMC_COMMAND_OFF Power off the machine
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_OFF = 2;
+ */
+ MACHINE_BMC_COMMAND_OFF = 2,
+ /**
+ * MACHINE_BMC_COMMAND_RESET Power reset the machine
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_RESET = 3;
+ */
+ MACHINE_BMC_COMMAND_RESET = 3,
+ /**
+ * MACHINE_BMC_COMMAND_CYCLE Power cycle the machine
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_CYCLE = 4;
+ */
+ MACHINE_BMC_COMMAND_CYCLE = 4,
+ /**
+ * MACHINE_BMC_COMMAND_BOOT_TO_BIOS boot the machine into bios
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_BOOT_TO_BIOS = 5;
+ */
+ MACHINE_BMC_COMMAND_BOOT_TO_BIOS = 5,
+ /**
+ * MACHINE_BMC_COMMAND_BOOT_FROM_DISK boot the machine from hard disk
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_BOOT_FROM_DISK = 6;
+ */
+ MACHINE_BMC_COMMAND_BOOT_FROM_DISK = 6,
+ /**
+ * MACHINE_BMC_COMMAND_BOOT_FROM_PXE boot the machine from pxe
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_BOOT_FROM_PXE = 7;
+ */
+ MACHINE_BMC_COMMAND_BOOT_FROM_PXE = 7,
+ /**
+ * MACHINE_BMC_COMMAND_IDENTIFY_LED_ON set identify led of the machine chassis to on
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_IDENTIFY_LED_ON = 8;
+ */
+ MACHINE_BMC_COMMAND_IDENTIFY_LED_ON = 8,
+ /**
+ * MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF set identify led of the machine chassis to off
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF = 9;
+ */
+ MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF = 9,
+ /**
+ * MACHINE_BMC_COMMAND_MACHINE_DELETED should be called if the machine was deleted to power cycle and boot into pxe
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_MACHINE_DELETED = 10;
+ */
+ MACHINE_BMC_COMMAND_MACHINE_DELETED = 10,
+ /**
+ * MACHINE_BMC_COMMAND_MACHINE_CREATED should be called if the machine was created to set the boot order to boot from disk
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_MACHINE_CREATED = 11;
+ */
+ MACHINE_BMC_COMMAND_MACHINE_CREATED = 11
+}
+/**
+ * Describes the enum metalstack.api.v2.MachineBMCCommand.
+ */
+export declare const MachineBMCCommandSchema: GenEnum;
/**
* MachineService serves machine related functions
*
@@ -1838,4 +2241,24 @@ export declare const MachineService: GenService<{
input: typeof MachineServiceDeleteRequestSchema;
output: typeof MachineServiceDeleteResponseSchema;
};
+ /**
+ * BMCCommand send a command to the bmc of a machine
+ *
+ * @generated from rpc metalstack.api.v2.MachineService.BMCCommand
+ */
+ bMCCommand: {
+ methodKind: "unary";
+ input: typeof MachineServiceBMCCommandRequestSchema;
+ output: typeof MachineServiceBMCCommandResponseSchema;
+ };
+ /**
+ * GetBMC returns the BMC details of a machine
+ *
+ * @generated from rpc metalstack.api.v2.MachineService.GetBMC
+ */
+ getBMC: {
+ methodKind: "unary";
+ input: typeof MachineServiceGetBMCRequestSchema;
+ output: typeof MachineServiceGetBMCResponseSchema;
+ };
}>;
diff --git a/js/metalstack/api/v2/machine_pb.js b/js/metalstack/api/v2/machine_pb.js
index 001da2ea..05f7e1cd 100644
--- a/js/metalstack/api/v2/machine_pb.js
+++ b/js/metalstack/api/v2/machine_pb.js
@@ -14,7 +14,7 @@ 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/wMSGAoCdG8YAyADKAlCDLpICZIBBuCzrrECARIaCgRmcm9tGAQgAygJQgy6SAmSAQbgs66xAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQimgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBuCzrrECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEG4LOusQIBEhkKA2lwcxgEIAMoCUIMukgJkgEG6LOusQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0i2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACIuUBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYxIQCghob3N0bmFtZRgIIAEoCSI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASJaCgtNYWNoaW5lQmlvcxIZCgd2ZXJzaW9uGAEgASgJQgi6SAVyAxiAAhIYCgZ2ZW5kb3IYAiABKAlCCLpIBXIDGIACEhYKBGRhdGUYAyABKAlCCLpIBXIDGIACIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJrCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgSGQoDaXBzGAUgAygJQgy6SAmSAQbos66xAgEiwQYKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI2CgRpcG1pGAsgASgLMiMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUlQTUlRdWVyeUgKiAEBEjQKA2ZydRgMIAEoCzIiLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVGUlVRdWVyeUgLiAEBEj4KCGhhcmR3YXJlGA0gASgLMicubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlUXVlcnlIDIgBARIzCgVzdGF0ZRgOIAEoDjIfLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTdGF0ZUgNiAEBQgcKBV91dWlkQgcKBV9uYW1lQgwKCl9wYXJ0aXRpb25CBwoFX3NpemVCBwoFX3JhY2tCCQoHX2xhYmVsc0INCgtfYWxsb2NhdGlvbkIKCghfbmV0d29ya0IGCgRfbmljQgcKBV9kaXNrQgcKBV9pcG1pQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZSKJBAoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQESLwoDdnBuGAkgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTkgIiAEBQgcKBV91dWlkQgcKBV9uYW1lQgoKCF9wcm9qZWN0QggKBl9pbWFnZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX2hvc3RuYW1lQhIKEF9hbGxvY2F0aW9uX3R5cGVCCQoHX2xhYmVsc0IGCgRfdnBuIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQbgs66xAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBuCzrrECARIZCgNpcHMYBCADKAlCDLpICZIBBuizrrECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiugEKEE1hY2hpbmVJUE1JUXVlcnkSHQoHYWRkcmVzcxgBIAEoCUIHukgEcgJwAUgAiAEBEh0KA21hYxgCIAEoCUILukgIcga4s66xAgFIAYgBARIbCgR1c2VyGAMgASgJQgi6SAVyAxiAAUgCiAEBEiAKCWludGVyZmFjZRgEIAEoCUIIukgFcgMYgAFIA4gBAUIKCghfYWRkcmVzc0IGCgRfbWFjQgcKBV91c2VyQgwKCl9pbnRlcmZhY2UigwQKD01hY2hpbmVGUlVRdWVyeRIqChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgi6SAVyAxiAAUgAiAEBEioKE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCCLpIBXIDGIABSAGIAQESIAoJYm9hcmRfbWZnGAMgASgJQgi6SAVyAxiAAUgCiAEBEiMKDGJvYXJkX3NlcmlhbBgEIAEoCUIIukgFcgMYgAFIA4gBARIoChFib2FyZF9wYXJ0X251bWJlchgFIAEoCUIIukgFcgMYgAFIBIgBARIrChRwcm9kdWN0X21hbnVmYWN0dXJlchgGIAEoCUIIukgFcgMYgAFIBYgBARIqChNwcm9kdWN0X3BhcnRfbnVtYmVyGAcgASgJQgi6SAVyAxiAAUgGiAEBEiUKDnByb2R1Y3Rfc2VyaWFsGAggASgJQgi6SAVyAxiAAUgHiAEBQhYKFF9jaGFzc2lzX3BhcnRfbnVtYmVyQhYKFF9jaGFzc2lzX3BhcnRfc2VyaWFsQgwKCl9ib2FyZF9tZmdCDwoNX2JvYXJkX3NlcmlhbEIUChJfYm9hcmRfcGFydF9udW1iZXJCFwoVX3Byb2R1Y3RfbWFudWZhY3R1cmVyQhYKFF9wcm9kdWN0X3BhcnRfbnVtYmVyQhEKD19wcm9kdWN0X3NlcmlhbCJcChRNYWNoaW5lSGFyZHdhcmVRdWVyeRITCgZtZW1vcnkYASABKARIAIgBARIWCgljcHVfY29yZXMYAiABKA1IAYgBAUIJCgdfbWVtb3J5QgwKCl9jcHVfY29yZXMqZQoKSVBQcm90b2NvbBIbChdJUF9QUk9UT0NPTF9VTlNQRUNJRklFRBAAEhwKD0lQX1BST1RPQ09MX1RDUBABGgeCshkDdGNwEhwKD0lQX1BST1RPQ09MX1VEUBACGgeCshkDdWRwKq8BCgxNYWNoaW5lU3RhdGUSIwoZTUFDSElORV9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEigKFk1BQ0hJTkVfU1RBVEVfUkVTRVJWRUQQARoMgrIZCHJlc2VydmVkEiQKFE1BQ0hJTkVfU1RBVEVfTE9DS0VEEAIaCoKyGQZsb2NrZWQSKgoXTUFDSElORV9TVEFURV9BVkFJTEFCTEUQAxoNgrIZCWF2YWlsYWJsZSrfAQodTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50U3RhdGUSNgosTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfU1RBVEVfVU5TUEVDSUZJRUQQABoEgrIZABI9CipNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9DUkFTSExPT1AQARoNgrIZCWNyYXNobG9vcBJHCi9NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9GQUlMRURfUkVDTEFJTRACGhKCshkOZmFpbGVkLXJlY2xhaW0qnwYKHE1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSLworTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEjQKJU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQUxJVkUQARoJgrIZBUFsaXZlEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfQ1JBU0hFRBACGguCshkHQ3Jhc2hlZBJACitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BYRV9CT09USU5HEAMaD4KyGQtQWEUgQm9vdGluZxJGCi5NQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BMQU5ORURfUkVCT09UEAQaEoKyGQ5QbGFubmVkIFJlYm9vdBI8CilNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1BSRVBBUklORxAFGg2CshkJUHJlcGFyaW5nEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUkVHSVNURVJJTkcQBhoPgrIZC1JlZ2lzdGVyaW5nEjgKJ01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfV0FJVElORxAHGguCshkHV2FpdGluZxI+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]);
+export const file_metalstack_api_v2_machine = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9tYWNoaW5lLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJNChhNYWNoaW5lU2VydmljZUdldFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSAoZTWFjaGluZVNlcnZpY2VHZXRSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSLZBgobTWFjaGluZVNlcnZpY2VDcmVhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEhsKBHV1aWQYAiABKAlCCLpIBXIDsAEBSACIAQESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESHgoIaG9zdG5hbWUYBSABKAlCB7pIBHICaAFIAogBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEhYKBHNpemUYByABKAlCCLpIBXIDGIABEhcKBWltYWdlGAggASgJQgi6SAVyAxiAARIeChFmaWxlc3lzdGVtX2xheW91dBgJIAEoCUgDiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgKIAMoCUIRukgOkgELEDIiB3IFEAEYgEASIAoIdXNlcmRhdGEYCyABKAlCCbpIBnIEGICAAkgEiAEBEikKBmxhYmVscxgMIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVscxI9CghuZXR3b3JrcxgNIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uTmV0d29yaxIZCgNpcHMYDiADKAlCDLpICZIBBsCks7ECARIWCg5wbGFjZW1lbnRfdGFncxgPIAMoCRI6CgpkbnNfc2VydmVyGBAgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGBEgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChJLCg9hbGxvY2F0aW9uX3R5cGUYEiABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABEjYKDWZpcmV3YWxsX3NwZWMYEyABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFNwZWNCBwoFX3V1aWRCDgoMX2Rlc2NyaXB0aW9uQgsKCV9ob3N0bmFtZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX3VzZXJkYXRhIkgKDEZpcmV3YWxsU3BlYxI4Cg5maXJld2FsbF9ydWxlcxgTIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsUnVsZXMiSwocTWFjaGluZVNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKwAgobTWFjaGluZVNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gBiAEBEioKD3NzaF9wdWJsaWNfa2V5cxgGIAMoCUIRukgOkgELEDIiB3IFEAEYgEBCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTWFjaGluZVNlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJmChlNYWNoaW5lU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5IkoKGk1hY2hpbmVTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG1hY2hpbmVzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSJQChtNYWNoaW5lU2VydmljZURlbGV0ZVJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEiSwocTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdtYWNoaW5lGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZSKVAQofTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABARI/Cgdjb21tYW5kGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ0NvbW1hbmRCCLpIBYIBAhABIiIKIE1hY2hpbmVTZXJ2aWNlQk1DQ29tbWFuZFJlc3BvbnNlIlAKG01hY2hpbmVTZXJ2aWNlR2V0Qk1DUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgdwcm9qZWN0GAIgASgJQgi6SAVyA7ABASJoChxNYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjAKA2JtYxgCIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUNSZXBvcnQisgMKB01hY2hpbmUSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESLwoJcGFydGl0aW9uGAMgASgLMhwubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uEhYKBHJhY2sYBCABKAlCCLpIBXIDGIABEiUKBHNpemUYBSABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplEjQKCGhhcmR3YXJlGAYgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUhhcmR3YXJlEjgKCmFsbG9jYXRpb24YCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvbhIwCgZzdGF0dXMYCSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdHVzElYKGnJlY2VudF9wcm92aXNpb25pbmdfZXZlbnRzGAogASgLMjIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJlY2VudFByb3Zpc2lvbmluZ0V2ZW50cyLvAQoNTWFjaGluZVN0YXR1cxI2Cgljb25kaXRpb24YASABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ29uZGl0aW9uEkQKCWxlZF9zdGF0ZRgCIAEoCzIxLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDaGFzc2lzSWRlbnRpZnlMRURTdGF0ZRJCCgpsaXZlbGluZXNzGAMgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUxpdmVsaW5lc3NCCLpIBYIBAhABEhwKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAQgASgJIogBChBNYWNoaW5lQ29uZGl0aW9uEjgKBXN0YXRlGAEgASgOMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVN0YXRlQgi6SAWCAQIQARIgCgtkZXNjcmlwdGlvbhgCIAEoCUILukgIcgbIs66xAgESGAoGaXNzdWVyGAMgASgJQgi6SAVyAxiAAiL1BQoRTWFjaGluZUFsbG9jYXRpb24SFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEhwKCmNyZWF0ZWRfYnkYBSABKAlCCLpIBXIDGIABEhkKB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBEicKBWltYWdlGAcgASgLMhgubWV0YWxzdGFjay5hcGkudjIuSW1hZ2USPgoRZmlsZXN5c3RlbV9sYXlvdXQYCCABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5GaWxlc3lzdGVtTGF5b3V0EjMKCG5ldHdvcmtzGAkgAygLMiEubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5ldHdvcmsSGQoIaG9zdG5hbWUYCiABKAlCB7pIBHICaAESKgoPc3NoX3B1YmxpY19rZXlzGAsgAygJQhG6SA6SAQsQMiIHcgUQARiAQBIbCgh1c2VyZGF0YRgMIAEoCUIJukgGcgQYgIACEksKD2FsbG9jYXRpb25fdHlwZRgNIAEoDjIoLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uVHlwZUIIukgFggECEAESOAoOZmlyZXdhbGxfcnVsZXMYDiABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5GaXJld2FsbFJ1bGVzEjoKCmRuc19zZXJ2ZXIYDyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5ETlNTZXJ2ZXJCCLpIBZIBAhADEjoKCm50cF9zZXJ2ZXIYECADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5OVFBTZXJ2ZXJCCLpIBZIBAhAKEioKA3ZwbhgRIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVWUE4iYwoYTWFjaGluZUFsbG9jYXRpb25OZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHwoSbm9fYXV0b19hY3F1aXJlX2lwGAIgASgISACIAQFCFQoTX25vX2F1dG9fYWNxdWlyZV9pcCJ/Cg1GaXJld2FsbFJ1bGVzEjUKBmVncmVzcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLkZpcmV3YWxsRWdyZXNzUnVsZRI3CgdpbmdyZXNzGAIgAygLMiYubWV0YWxzdGFjay5hcGkudjIuRmlyZXdhbGxJbmdyZXNzUnVsZSKyAQoSRmlyZXdhbGxFZ3Jlc3NSdWxlEjkKCHByb3RvY29sGAEgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuSVBQcm90b2NvbEIIukgFggECEAESHQoFcG9ydHMYAiADKA1CDrpIC5IBCCIGKgQY/P8DEhgKAnRvGAMgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgEIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQizwEKE0ZpcmV3YWxsSW5ncmVzc1J1bGUSOQoIcHJvdG9jb2wYASABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5JUFByb3RvY29sQgi6SAWCAQIQARIdCgVwb3J0cxgCIAMoDUIOukgLkgEIIgYqBBj8/wMSGAoCdG8YAyADKAlCDLpICZIBBriks7ECARIaCgRmcm9tGAQgAygJQgy6SAmSAQa4pLOxAgESKAoHY29tbWVudBgFIAEoCUIXukgU2AEBcg8YZDILXlthLXpfIC1dKiQimgIKDk1hY2hpbmVOZXR3b3JrEg8KB25ldHdvcmsYASABKAkSHgoIcHJlZml4ZXMYAiADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgDIAMoCUIMukgJkgEGuKSzsQIBEhkKA2lwcxgEIAMoCUIMukgJkgEGwKSzsQIBEj4KDG5ldHdvcmtfdHlwZRgFIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQARI2CghuYXRfdHlwZRgGIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABEgsKA3ZyZhgHIAEoBBILCgNhc24YCCABKA0i2gEKD01hY2hpbmVIYXJkd2FyZRIOCgZtZW1vcnkYASABKAQSNAoFZGlza3MYAyADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmxvY2tEZXZpY2USKQoEY3B1cxgEIAMoCzIbLm1ldGFsc3RhY2suYXBpLnYyLk1ldGFsQ1BVEikKBGdwdXMYBSADKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhbEdQVRIrCgRuaWNzGAYgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYyJdCghNZXRhbENQVRIYCgZ2ZW5kb3IYASABKAlCCLpIBXIDGIACEhcKBW1vZGVsGAIgASgJQgi6SAVyAxiAAhINCgVjb3JlcxgDIAEoDRIPCgd0aHJlYWRzGAQgASgNIj0KCE1ldGFsR1BVEhgKBnZlbmRvchgBIAEoCUIIukgFcgMYgAISFwoFbW9kZWwYAiABKAlCCLpIBXIDGIACIuUBCgpNYWNoaW5lTmljEhgKA21hYxgBIAEoCUILukgIcga4s66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESHAoKaWRlbnRpZmllchgDIAEoCUIIukgFcgMYgAESGAoGdmVuZG9yGAQgASgJQgi6SAVyAxiAARIXCgVtb2RlbBgFIAEoCUIIukgFcgMYgAESDQoFc3BlZWQYBiABKAQSMAoJbmVpZ2hib3JzGAcgAygLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pYxIQCghob3N0bmFtZRgIIAEoCSI9ChJNYWNoaW5lQmxvY2tEZXZpY2USGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESDAoEc2l6ZRgCIAEoBCJbCh5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSFwoFdmFsdWUYASABKAlCCLpIBXIDGIABEiAKC2Rlc2NyaXB0aW9uGAIgASgJQgu6SAhyBsizrrECASKKAwoQTWFjaGluZUJNQ1JlcG9ydBIqCgNibWMYASABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DEiwKBGJpb3MYAiABKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQmlvcxIqCgNmcnUYAyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVEjsKDHBvd2VyX21ldHJpYxgEIAEoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlck1ldHJpYxI9Cg5wb3dlcl9zdXBwbGllcxgFIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQb3dlclN1cHBseRJECglsZWRfc3RhdGUYBiABKAsyMS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQ2hhc3Npc0lkZW50aWZ5TEVEU3RhdGUSLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYwoLTWFjaGluZUJpb3MSHAoHdmVyc2lvbhgBIAEoCUILukgIcgbIs66xAgESGwoGdmVuZG9yGAIgASgJQgu6SAhyBsizrrECARIZCgRkYXRlGAMgASgJQgu6SAhyBsizrrECASLbAQoKTWFjaGluZUJNQxIZCgdhZGRyZXNzGAEgASgJQgi6SAVyA4ACARIYCgNtYWMYAiABKAlCC7pICHIGuLOusQIBEhkKBHVzZXIYAyABKAlCC7pICHIGyLOusQIBEh0KCHBhc3N3b3JkGAQgASgJQgu6SAhyBsizrrECARIeCglpbnRlcmZhY2UYBSABKAlCC7pICHIGyLOusQIBEhwKB3ZlcnNpb24YByABKAlCC7pICHIGyLOusQIBEiAKC3Bvd2VyX3N0YXRlGAggASgJQgu6SAhyBsizrrECASKeBAoKTWFjaGluZUZSVRItChNjaGFzc2lzX3BhcnRfbnVtYmVyGAEgASgJQgu6SAhyBsizrrECAUgAiAEBEi0KE2NoYXNzaXNfcGFydF9zZXJpYWwYAiABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJYm9hcmRfbWZnGAMgASgJQgu6SAhyBsizrrECAUgCiAEBEioKEGJvYXJkX21mZ19zZXJpYWwYBCABKAlCC7pICHIGyLOusQIBSAOIAQESKwoRYm9hcmRfcGFydF9udW1iZXIYBSABKAlCC7pICHIGyLOusQIBSASIAQESLgoUcHJvZHVjdF9tYW51ZmFjdHVyZXIYBiABKAlCC7pICHIGyLOusQIBSAWIAQESLQoTcHJvZHVjdF9wYXJ0X251bWJlchgHIAEoCUILukgIcgbIs66xAgFIBogBARIoCg5wcm9kdWN0X3NlcmlhbBgIIAEoCUILukgIcgbIs66xAgFIB4gBAUIWChRfY2hhc3Npc19wYXJ0X251bWJlckIWChRfY2hhc3Npc19wYXJ0X3NlcmlhbEIMCgpfYm9hcmRfbWZnQhMKEV9ib2FyZF9tZmdfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIoUBChJNYWNoaW5lUG93ZXJNZXRyaWMSHgoWYXZlcmFnZV9jb25zdW1lZF93YXR0cxgBIAEoAhIXCg9pbnRlcnZhbF9pbl9taW4YAiABKAISGgoSbWF4X2NvbnN1bWVkX3dhdHRzGAMgASgCEhoKEm1pbl9jb25zdW1lZF93YXR0cxgEIAEoAiIzChJNYWNoaW5lUG93ZXJTdXBwbHkSDgoGaGVhbHRoGAEgASgJEg0KBXN0YXRlGAIgASgJIqUCCh9NYWNoaW5lUmVjZW50UHJvdmlzaW9uaW5nRXZlbnRzEjsKBmV2ZW50cxgBIAMoCzIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIzCg9sYXN0X2V2ZW50X3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkUKEGxhc3RfZXJyb3JfZXZlbnQYAyABKAsyKy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnQSSQoFc3RhdGUYBCABKA4yMC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZUIIukgFggECEAEilQEKGE1hY2hpbmVQcm92aXNpb25pbmdFdmVudBIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI+CgVldmVudBgCIAEoDjIvLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVQcm92aXNpb25pbmdFdmVudFR5cGUSDwoHbWVzc2FnZRgDIAEoCSJrCgpNYWNoaW5lVlBOEh0KFWNvbnRyb2xfcGxhbmVfYWRkcmVzcxgBIAEoCRIQCghhdXRoX2tleRgCIAEoCRIRCgljb25uZWN0ZWQYAyABKAgSGQoDaXBzGAUgAygJQgy6SAmSAQbApLOxAgEivgYKDE1hY2hpbmVRdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESIgoJcGFydGl0aW9uGAMgASgJQgq6SAdyBRACGIABSAKIAQESHQoEc2l6ZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEh0KBHJhY2sYBSABKAlCCrpIB3IFEAIYgAFIBIgBARIuCgZsYWJlbHMYBiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIBYgBARJCCgphbGxvY2F0aW9uGAcgASgLMikubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUFsbG9jYXRpb25RdWVyeUgGiAEBEjwKB25ldHdvcmsYCCABKAsyJi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lTmV0d29ya1F1ZXJ5SAeIAQESNAoDbmljGAkgASgLMiIubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZU5pY1F1ZXJ5SAiIAQESNgoEZGlzaxgKIAEoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVEaXNrUXVlcnlICYgBARI0CgNibWMYCyABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DUXVlcnlICogBARI0CgNmcnUYDCABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVUXVlcnlIC4gBARI+CghoYXJkd2FyZRgNIAEoCzInLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVIYXJkd2FyZVF1ZXJ5SAyIAQESMwoFc3RhdGUYDiABKA4yHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU3RhdGVIDYgBAUIHCgVfdXVpZEIHCgVfbmFtZUIMCgpfcGFydGl0aW9uQgcKBV9zaXplQgcKBV9yYWNrQgkKB19sYWJlbHNCDQoLX2FsbG9jYXRpb25CCgoIX25ldHdvcmtCBgoEX25pY0IHCgVfZGlza0IGCgRfYm1jQgYKBF9mcnVCCwoJX2hhcmR3YXJlQggKBl9zdGF0ZSKJBAoWTWFjaGluZUFsbG9jYXRpb25RdWVyeRIbCgR1dWlkGAEgASgJQgi6SAVyA7ABAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESHgoHcHJvamVjdBgDIAEoCUIIukgFcgOwAQFIAogBARIeCgVpbWFnZRgEIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKEWZpbGVzeXN0ZW1fbGF5b3V0GAUgASgJQgq6SAdyBRACGIABSASIAQESIQoIaG9zdG5hbWUYBiABKAlCCrpIB3IFEAIYgAFIBYgBARJQCg9hbGxvY2F0aW9uX3R5cGUYByABKA4yKC5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQWxsb2NhdGlvblR5cGVCCLpIBYIBAhABSAaIAQESLgoGbGFiZWxzGAggASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAeIAQESLwoDdnBuGAkgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVZQTkgIiAEBQgcKBV91dWlkQgcKBV9uYW1lQgoKCF9wcm9qZWN0QggKBl9pbWFnZUIUChJfZmlsZXN5c3RlbV9sYXlvdXRCCwoJX2hvc3RuYW1lQhIKEF9hbGxvY2F0aW9uX3R5cGVCCQoHX2xhYmVsc0IGCgRfdnBuIqoBChNNYWNoaW5lTmV0d29ya1F1ZXJ5EhAKCG5ldHdvcmtzGAEgAygJEh4KCHByZWZpeGVzGAIgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYAyADKAlCDLpICZIBBriks7ECARIZCgNpcHMYBCADKAlCDLpICZIBBsCks7ECARIMCgR2cmZzGAUgAygEEgwKBGFzbnMYBiADKA0irwEKD01hY2hpbmVOaWNRdWVyeRIiCgRtYWNzGAEgAygJQhS6SBGSAQ4QZBgBIghyBrizrrECARIgCgVuYW1lcxgCIAMoCUIRukgOkgELEGQYASIFcgMYgAESKwoNbmVpZ2hib3JfbWFjcxgDIAMoCUIUukgRkgEOEGQYASIIcga4s66xAgESKQoObmVpZ2hib3JfbmFtZXMYBCADKAlCEbpIDpIBCxBkGAEiBXIDGIABIksKEE1hY2hpbmVEaXNrUXVlcnkSHgoFbmFtZXMYASADKAlCD7pIDJIBCRBkIgVyAxiAARIXCgVzaXplcxgCIAMoBEIIukgFkgECEGQiuQEKD01hY2hpbmVCTUNRdWVyeRIdCgdhZGRyZXNzGAEgASgJQge6SARyAnABSACIAQESHQoDbWFjGAIgASgJQgu6SAhyBrizrrECAUgBiAEBEhsKBHVzZXIYAyABKAlCCLpIBXIDGIABSAKIAQESIAoJaW50ZXJmYWNlGAQgASgJQgi6SAVyAxiAAUgDiAEBQgoKCF9hZGRyZXNzQgYKBF9tYWNCBwoFX3VzZXJCDAoKX2ludGVyZmFjZSKDBAoPTWFjaGluZUZSVVF1ZXJ5EioKE2NoYXNzaXNfcGFydF9udW1iZXIYASABKAlCCLpIBXIDGIABSACIAQESKgoTY2hhc3Npc19wYXJ0X3NlcmlhbBgCIAEoCUIIukgFcgMYgAFIAYgBARIgCglib2FyZF9tZmcYAyABKAlCCLpIBXIDGIABSAKIAQESIwoMYm9hcmRfc2VyaWFsGAQgASgJQgi6SAVyAxiAAUgDiAEBEigKEWJvYXJkX3BhcnRfbnVtYmVyGAUgASgJQgi6SAVyAxiAAUgEiAEBEisKFHByb2R1Y3RfbWFudWZhY3R1cmVyGAYgASgJQgi6SAVyAxiAAUgFiAEBEioKE3Byb2R1Y3RfcGFydF9udW1iZXIYByABKAlCCLpIBXIDGIABSAaIAQESJQoOcHJvZHVjdF9zZXJpYWwYCCABKAlCCLpIBXIDGIABSAeIAQFCFgoUX2NoYXNzaXNfcGFydF9udW1iZXJCFgoUX2NoYXNzaXNfcGFydF9zZXJpYWxCDAoKX2JvYXJkX21mZ0IPCg1fYm9hcmRfc2VyaWFsQhQKEl9ib2FyZF9wYXJ0X251bWJlckIXChVfcHJvZHVjdF9tYW51ZmFjdHVyZXJCFgoUX3Byb2R1Y3RfcGFydF9udW1iZXJCEQoPX3Byb2R1Y3Rfc2VyaWFsIlwKFE1hY2hpbmVIYXJkd2FyZVF1ZXJ5EhMKBm1lbW9yeRgBIAEoBEgAiAEBEhYKCWNwdV9jb3JlcxgCIAEoDUgBiAEBQgkKB19tZW1vcnlCDAoKX2NwdV9jb3JlcyplCgpJUFByb3RvY29sEhsKF0lQX1BST1RPQ09MX1VOU1BFQ0lGSUVEEAASHAoPSVBfUFJPVE9DT0xfVENQEAEaB4KyGQN0Y3ASHAoPSVBfUFJPVE9DT0xfVURQEAIaB4KyGQN1ZHAqrwEKDE1hY2hpbmVTdGF0ZRIjChlNQUNISU5FX1NUQVRFX1VOU1BFQ0lGSUVEEAAaBIKyGQASKAoWTUFDSElORV9TVEFURV9SRVNFUlZFRBABGgyCshkIcmVzZXJ2ZWQSJAoUTUFDSElORV9TVEFURV9MT0NLRUQQAhoKgrIZBmxvY2tlZBIqChdNQUNISU5FX1NUQVRFX0FWQUlMQUJMRRADGg2CshkJYXZhaWxhYmxlKt8BCh1NYWNoaW5lUHJvdmlzaW9uaW5nRXZlbnRTdGF0ZRI2CixNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9TVEFURV9VTlNQRUNJRklFRBAAGgSCshkAEj0KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0NSQVNITE9PUBABGg2CshkJY3Jhc2hsb29wEkcKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1NUQVRFX0ZBSUxFRF9SRUNMQUlNEAIaEoKyGQ5mYWlsZWQtcmVjbGFpbSqfBgocTWFjaGluZVByb3Zpc2lvbmluZ0V2ZW50VHlwZRIvCitNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASNAolTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9BTElWRRABGgmCshkFQWxpdmUSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9DUkFTSEVEEAIaC4KyGQdDcmFzaGVkEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFhFX0JPT1RJTkcQAxoPgrIZC1BYRSBCb290aW5nEkYKLk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUExBTk5FRF9SRUJPT1QQBBoSgrIZDlBsYW5uZWQgUmVib290EjwKKU1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUFJFUEFSSU5HEAUaDYKyGQlQcmVwYXJpbmcSQAorTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9SRUdJU1RFUklORxAGGg+CshkLUmVnaXN0ZXJpbmcSOAonTUFDSElORV9QUk9WSVNJT05JTkdfRVZFTlRfVFlQRV9XQUlUSU5HEAcaC4KyGQdXYWl0aW5nEj4KKk1BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfSU5TVEFMTElORxAIGg6CshkKSW5zdGFsbGluZxJOCjJNQUNISU5FX1BST1ZJU0lPTklOR19FVkVOVF9UWVBFX0JPT1RJTkdfTkVXX0tFUk5FTBAJGhaCshkSQm9vdGluZyBOZXcgS2VybmVsEkAKK01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfUEhPTkVEX0hPTUUQChoPgrIZC1Bob25lZCBIb21lEkgKL01BQ0hJTkVfUFJPVklTSU9OSU5HX0VWRU5UX1RZUEVfTUFDSElORV9SRUNMQUlNEAsaE4KyGQ9NYWNoaW5lIFJlY2xhaW0qugEKEU1hY2hpbmVMaXZlbGluZXNzEigKHk1BQ0hJTkVfTElWRUxJTkVTU19VTlNQRUNJRklFRBAAGgSCshkAEicKGE1BQ0hJTkVfTElWRUxJTkVTU19BTElWRRABGgmCshkFYWxpdmUSJQoXTUFDSElORV9MSVZFTElORVNTX0RFQUQQAhoIgrIZBGRlYWQSKwoaTUFDSElORV9MSVZFTElORVNTX1VOS05PV04QAxoLgrIZB3Vua25vd24qrAEKFU1hY2hpbmVBbGxvY2F0aW9uVHlwZRItCiNNQUNISU5FX0FMTE9DQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAGgSCshkAEjAKH01BQ0hJTkVfQUxMT0NBVElPTl9UWVBFX01BQ0hJTkUQARoLgrIZB21hY2hpbmUSMgogTUFDSElORV9BTExPQ0FUSU9OX1RZUEVfRklSRVdBTEwQAhoMgrIZCGZpcmV3YWxsKv4EChFNYWNoaW5lQk1DQ29tbWFuZBIjCh9NQUNISU5FX0JNQ19DT01NQU5EX1VOU1BFQ0lGSUVEEAASIgoWTUFDSElORV9CTUNfQ09NTUFORF9PThABGgaCshkCb24SJAoXTUFDSElORV9CTUNfQ09NTUFORF9PRkYQAhoHgrIZA29mZhIoChlNQUNISU5FX0JNQ19DT01NQU5EX1JFU0VUEAMaCYKyGQVyZXNldBIoChlNQUNISU5FX0JNQ19DT01NQU5EX0NZQ0xFEAQaCYKyGQVjeWNsZRI2CiBNQUNISU5FX0JNQ19DT01NQU5EX0JPT1RfVE9fQklPUxAFGhCCshkMYm9vdC10by1iaW9zEjoKIk1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX0RJU0sQBhoSgrIZDmJvb3QtZnJvbS1kaXNrEjgKIU1BQ0hJTkVfQk1DX0NPTU1BTkRfQk9PVF9GUk9NX1BYRRAHGhGCshkNYm9vdC1mcm9tLXB4ZRI8CiNNQUNISU5FX0JNQ19DT01NQU5EX0lERU5USUZZX0xFRF9PThAIGhOCshkPaWRlbnRpZnktbGVkLW9uEj4KJE1BQ0hJTkVfQk1DX0NPTU1BTkRfSURFTlRJRllfTEVEX09GRhAJGhSCshkQaWRlbnRpZnktbGVkLW9mZhI8CiNNQUNISU5FX0JNQ19DT01NQU5EX01BQ0hJTkVfREVMRVRFRBAKGhOCshkPbWFjaGluZS1kZWxldGVkEjwKI01BQ0hJTkVfQk1DX0NPTU1BTkRfTUFDSElORV9DUkVBVEVEEAsaE4KyGQ9tYWNoaW5lLWNyZWF0ZWQyvAYKDk1hY2hpbmVTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnEKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBsrzGAIBAhJxCgZVcGRhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZVVwZGF0ZVJlc3BvbnNlIgbK8xgCAQIScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAIScQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VEZWxldGVSZXNwb25zZSIGyvMYAgECEn0KCkJNQ0NvbW1hbmQSMi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUJNQ0NvbW1hbmRSZXF1ZXN0GjMubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVNlcnZpY2VCTUNDb21tYW5kUmVzcG9uc2UiBsrzGAIBAhJxCgZHZXRCTUMSLi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1JlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lU2VydmljZUdldEJNQ1Jlc3BvbnNlIgbK8xgCAQJCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTWFjaGluZVByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [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.
@@ -70,141 +70,186 @@ export const MachineServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_
* 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.MachineServiceBMCCommandRequest.
+ * Use `create(MachineServiceBMCCommandRequestSchema)` to create a new message.
+ */
+export const MachineServiceBMCCommandRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 11);
+/**
+ * Describes the message metalstack.api.v2.MachineServiceBMCCommandResponse.
+ * Use `create(MachineServiceBMCCommandResponseSchema)` to create a new message.
+ */
+export const MachineServiceBMCCommandResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 12);
+/**
+ * Describes the message metalstack.api.v2.MachineServiceGetBMCRequest.
+ * Use `create(MachineServiceGetBMCRequestSchema)` to create a new message.
+ */
+export const MachineServiceGetBMCRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 13);
+/**
+ * Describes the message metalstack.api.v2.MachineServiceGetBMCResponse.
+ * Use `create(MachineServiceGetBMCResponseSchema)` to create a new message.
+ */
+export const MachineServiceGetBMCResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 14);
/**
* 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);
+export const MachineSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 15);
/**
* 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);
+export const MachineStatusSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 16);
/**
* 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);
+export const MachineConditionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 17);
/**
* 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);
+export const MachineAllocationSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 18);
/**
* 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);
+export const MachineAllocationNetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 19);
/**
* 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);
+export const FirewallRulesSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 20);
/**
* 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);
+export const FirewallEgressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 21);
/**
* 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);
+export const FirewallIngressRuleSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 22);
/**
* 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);
+export const MachineNetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 23);
/**
* 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);
+export const MachineHardwareSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 24);
/**
* 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);
+export const MetalCPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 25);
/**
* 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);
+export const MetalGPUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 26);
/**
* 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);
+export const MachineNicSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 27);
/**
* 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);
+export const MachineBlockDeviceSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 28);
/**
* 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);
+export const MachineChassisIdentifyLEDStateSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 29);
+/**
+ * Describes the message metalstack.api.v2.MachineBMCReport.
+ * Use `create(MachineBMCReportSchema)` to create a new message.
+ */
+export const MachineBMCReportSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 30);
/**
* 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);
+export const MachineBiosSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 31);
+/**
+ * Describes the message metalstack.api.v2.MachineBMC.
+ * Use `create(MachineBMCSchema)` to create a new message.
+ */
+export const MachineBMCSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 32);
+/**
+ * Describes the message metalstack.api.v2.MachineFRU.
+ * Use `create(MachineFRUSchema)` to create a new message.
+ */
+export const MachineFRUSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 33);
+/**
+ * Describes the message metalstack.api.v2.MachinePowerMetric.
+ * Use `create(MachinePowerMetricSchema)` to create a new message.
+ */
+export const MachinePowerMetricSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 34);
+/**
+ * Describes the message metalstack.api.v2.MachinePowerSupply.
+ * Use `create(MachinePowerSupplySchema)` to create a new message.
+ */
+export const MachinePowerSupplySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 35);
/**
* 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);
+export const MachineRecentProvisioningEventsSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 36);
/**
* 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);
+export const MachineProvisioningEventSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 37);
/**
* 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);
+export const MachineVPNSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 38);
/**
* 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);
+export const MachineQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 39);
/**
* 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);
+export const MachineAllocationQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 40);
/**
* 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);
+export const MachineNetworkQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 41);
/**
* 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);
+export const MachineNicQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 42);
/**
* 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);
+export const MachineDiskQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 43);
/**
- * Describes the message metalstack.api.v2.MachineIPMIQuery.
- * Use `create(MachineIPMIQuerySchema)` to create a new message.
+ * Describes the message metalstack.api.v2.MachineBMCQuery.
+ * Use `create(MachineBMCQuerySchema)` to create a new message.
*/
-export const MachineIPMIQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 35);
+export const MachineBMCQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 44);
/**
* 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);
+export const MachineFRUQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 45);
/**
* 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);
+export const MachineHardwareQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_machine, 46);
/**
* IPProtocol defines tcp|udp
*
@@ -451,6 +496,90 @@ export var MachineAllocationType;
* Describes the enum metalstack.api.v2.MachineAllocationType.
*/
export const MachineAllocationTypeSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_machine, 5);
+/**
+ * MachineBMCCommand defines commands send to the BMC of the machine
+ *
+ * @generated from enum metalstack.api.v2.MachineBMCCommand
+ */
+export var MachineBMCCommand;
+(function (MachineBMCCommand) {
+ /**
+ * MACHINE_BMC_COMMAND_UNSPECIFIED is not defined
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_UNSPECIFIED = 0;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_UNSPECIFIED"] = 0] = "MACHINE_BMC_COMMAND_UNSPECIFIED";
+ /**
+ * MACHINE_BMC_COMMAND_ON Power on the machine
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_ON = 1;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_ON"] = 1] = "MACHINE_BMC_COMMAND_ON";
+ /**
+ * MACHINE_BMC_COMMAND_OFF Power off the machine
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_OFF = 2;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_OFF"] = 2] = "MACHINE_BMC_COMMAND_OFF";
+ /**
+ * MACHINE_BMC_COMMAND_RESET Power reset the machine
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_RESET = 3;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_RESET"] = 3] = "MACHINE_BMC_COMMAND_RESET";
+ /**
+ * MACHINE_BMC_COMMAND_CYCLE Power cycle the machine
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_CYCLE = 4;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_CYCLE"] = 4] = "MACHINE_BMC_COMMAND_CYCLE";
+ /**
+ * MACHINE_BMC_COMMAND_BOOT_TO_BIOS boot the machine into bios
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_BOOT_TO_BIOS = 5;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_BOOT_TO_BIOS"] = 5] = "MACHINE_BMC_COMMAND_BOOT_TO_BIOS";
+ /**
+ * MACHINE_BMC_COMMAND_BOOT_FROM_DISK boot the machine from hard disk
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_BOOT_FROM_DISK = 6;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_BOOT_FROM_DISK"] = 6] = "MACHINE_BMC_COMMAND_BOOT_FROM_DISK";
+ /**
+ * MACHINE_BMC_COMMAND_BOOT_FROM_PXE boot the machine from pxe
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_BOOT_FROM_PXE = 7;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_BOOT_FROM_PXE"] = 7] = "MACHINE_BMC_COMMAND_BOOT_FROM_PXE";
+ /**
+ * MACHINE_BMC_COMMAND_IDENTIFY_LED_ON set identify led of the machine chassis to on
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_IDENTIFY_LED_ON = 8;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_IDENTIFY_LED_ON"] = 8] = "MACHINE_BMC_COMMAND_IDENTIFY_LED_ON";
+ /**
+ * MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF set identify led of the machine chassis to off
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF = 9;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF"] = 9] = "MACHINE_BMC_COMMAND_IDENTIFY_LED_OFF";
+ /**
+ * MACHINE_BMC_COMMAND_MACHINE_DELETED should be called if the machine was deleted to power cycle and boot into pxe
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_MACHINE_DELETED = 10;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_MACHINE_DELETED"] = 10] = "MACHINE_BMC_COMMAND_MACHINE_DELETED";
+ /**
+ * MACHINE_BMC_COMMAND_MACHINE_CREATED should be called if the machine was created to set the boot order to boot from disk
+ *
+ * @generated from enum value: MACHINE_BMC_COMMAND_MACHINE_CREATED = 11;
+ */
+ MachineBMCCommand[MachineBMCCommand["MACHINE_BMC_COMMAND_MACHINE_CREATED"] = 11] = "MACHINE_BMC_COMMAND_MACHINE_CREATED";
+})(MachineBMCCommand || (MachineBMCCommand = {}));
+/**
+ * Describes the enum metalstack.api.v2.MachineBMCCommand.
+ */
+export const MachineBMCCommandSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_machine, 6);
/**
* MachineService serves machine related functions
*
diff --git a/js/metalstack/api/v2/method_pb.d.ts b/js/metalstack/api/v2/method_pb.d.ts
index 72d56bb8..39139b9c 100644
--- a/js/metalstack/api/v2/method_pb.d.ts
+++ b/js/metalstack/api/v2/method_pb.d.ts
@@ -1,5 +1,5 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
-import type { AdminRole, InfraRole, ProjectRole, TenantRole } from "./common_pb";
+import type { AdminRole, InfraRole, MachineRole, ProjectRole, TenantRole } from "./common_pb";
import type { MethodPermission } from "./token_pb";
import type { Message } from "@bufbuild/protobuf";
/**
@@ -86,6 +86,14 @@ export type MethodServiceTokenScopedListResponse = Message<"metalstack.api.v2.Me
* @generated from field: optional metalstack.api.v2.InfraRole infra_role = 6;
*/
infraRole?: InfraRole;
+ /**
+ * MachineRoles defines the machine roles of the token owner
+ *
+ * @generated from field: map machine_roles = 7;
+ */
+ machineRoles: {
+ [key: string]: MachineRole;
+ };
};
/**
* Describes the message metalstack.api.v2.MethodServiceTokenScopedListResponse.
diff --git a/js/metalstack/api/v2/method_pb.js b/js/metalstack/api/v2/method_pb.js
index f8fdf3b6..f25e41db 100644
--- a/js/metalstack/api/v2/method_pb.js
+++ b/js/metalstack/api/v2/method_pb.js
@@ -8,7 +8,7 @@ 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]);
+export const file_metalstack_api_v2_method = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9tZXRob2QucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIhoKGE1ldGhvZFNlcnZpY2VMaXN0UmVxdWVzdCIsChlNZXRob2RTZXJ2aWNlTGlzdFJlc3BvbnNlEg8KB21ldGhvZHMYASADKAkiJQojTWV0aG9kU2VydmljZVRva2VuU2NvcGVkTGlzdFJlcXVlc3QioQYKJE1ldGhvZFNlcnZpY2VUb2tlblNjb3BlZExpc3RSZXNwb25zZRI4CgtwZXJtaXNzaW9ucxgBIAMoCzIjLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFBlcm1pc3Npb24SYAoNcHJvamVjdF9yb2xlcxgDIAMoCzJJLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VUb2tlblNjb3BlZExpc3RSZXNwb25zZS5Qcm9qZWN0Um9sZXNFbnRyeRJeCgx0ZW5hbnRfcm9sZXMYBCADKAsySC5tZXRhbHN0YWNrLmFwaS52Mi5NZXRob2RTZXJ2aWNlVG9rZW5TY29wZWRMaXN0UmVzcG9uc2UuVGVuYW50Um9sZXNFbnRyeRI/CgphZG1pbl9yb2xlGAUgASgOMhwubWV0YWxzdGFjay5hcGkudjIuQWRtaW5Sb2xlQgi6SAWCAQIQAUgAiAEBEj8KCmluZnJhX3JvbGUYBiABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVJvbGVCCLpIBYIBAhABSAGIAQESYAoNbWFjaGluZV9yb2xlcxgHIAMoCzJJLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VUb2tlblNjb3BlZExpc3RSZXNwb25zZS5NYWNoaW5lUm9sZXNFbnRyeRpTChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZToCOAEaUQoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlOgI4ARpTChFNYWNoaW5lUm9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZToCOAFCDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUygwIKDU1ldGhvZFNlcnZpY2USZwoETGlzdBIrLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VMaXN0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VMaXN0UmVzcG9uc2UiBNjzGAESiAEKD1Rva2VuU2NvcGVkTGlzdBI2Lm1ldGFsc3RhY2suYXBpLnYyLk1ldGhvZFNlcnZpY2VUb2tlblNjb3BlZExpc3RSZXF1ZXN0GjcubWV0YWxzdGFjay5hcGkudjIuTWV0aG9kU2VydmljZVRva2VuU2NvcGVkTGlzdFJlc3BvbnNlIgTY8xgDQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC01ldGhvZFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [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.
diff --git a/js/metalstack/api/v2/network_pb.js b/js/metalstack/api/v2/network_pb.js
index ac19b59c..b113d2c4 100644
--- a/js/metalstack/api/v2/network_pb.js
+++ b/js/metalstack/api/v2/network_pb.js
@@ -8,7 +8,7 @@ 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]);
+export const file_metalstack_api_v2_network = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9uZXR3b3JrLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJRChhOZXR3b3JrU2VydmljZUdldFJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhwKB3Byb2plY3QYAiABKAlCC7pICNgBAXIDsAEBIkgKGU5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsi3AMKG05ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgBiAEBEiMKCXBhcnRpdGlvbhgEIAEoCUILukgIcgbQs66xAgFIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMSKAoOcGFyZW50X25ldHdvcmsYBiABKAlCC7pICHIGwLOusQIBSAOIAQESOQoGbGVuZ3RoGAcgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARJOCg5hZGRyZXNzX2ZhbWlseRgIIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgFiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSJLChxOZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIq4CChtOZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESNAoGbGFiZWxzGAYgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAKIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJpChlOZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IkoKGk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJ1CiVOZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IlYKJk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1Jlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJRChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsi7QYKB05ldHdvcmsSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECAUgCiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAOIAQESIAoJbmFtZXNwYWNlGAcgASgJQgi6SAVyA7ABAUgEiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjsKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAFIBYgBARI7CghuYXRfdHlwZRgNIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAaIAQESEAoDdnJmGA4gASgNSAeIAQESKAoOcGFyZW50X25ldHdvcmsYDyABKAlCC7pICHIGwLOusQIBSAiIAQESMgocYWRkaXRpb25hbF9hbm5vdW5jYWJsZV9jaWRycxgQIAMoCUIMukgJkgEGuKSzsQIBEjoKC2NvbnN1bXB0aW9uGBEgASgLMiUubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya0NvbnN1bXB0aW9uQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQgoKCF9wcm9qZWN0QgwKCl9uYW1lc3BhY2VCBwoFX3R5cGVCCwoJX25hdF90eXBlQgYKBF92cmZCEQoPX3BhcmVudF9uZXR3b3JrIvMFCgxOZXR3b3JrUXVlcnkSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIjCglwYXJ0aXRpb24YBCABKAlCC7pICHIG0LOusQIBSAOIAQESHgoHcHJvamVjdBgFIAEoCUIIukgFcgOwAQFIBIgBARIgCgluYW1lc3BhY2UYBiABKAlCCLpIBXIDsAEBSAWIAQESHgoIcHJlZml4ZXMYByADKAlCDLpICZIBBriks7ECARIqChRkZXN0aW5hdGlvbl9wcmVmaXhlcxgIIAMoCUIMukgJkgEGuKSzsQIBEhAKA3ZyZhgJIAEoDUgGiAEBEigKDnBhcmVudF9uZXR3b3JrGAogASgJQgu6SAhyBsCzrrECAUgHiAEBEk4KDmFkZHJlc3NfZmFtaWx5GAsgASgOMicubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya0FkZHJlc3NGYW1pbHlCCLpIBYIBAhABSAiIAQESOwoEdHlwZRgMIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtUeXBlQgi6SAWCAQIQAUgJiAEBEjsKCG5hdF90eXBlGA0gASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAFICogBARIuCgZsYWJlbHMYDiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNIC4gBAUIFCgNfaWRCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCDAoKX25hbWVzcGFjZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29ya0IRCg9fYWRkcmVzc19mYW1pbHlCBwoFX3R5cGVCCwoJX25hdF90eXBlQgkKB19sYWJlbHMiYgoRQ2hpbGRQcmVmaXhMZW5ndGgSHAoEaXB2NBgBIAEoDUIJukgGKgQYICAASACIAQESHQoEaXB2NhgCIAEoDUIKukgHKgUYgAEgAEgBiAEBQgcKBV9pcHY0QgcKBV9pcHY2InIKEk5ldHdvcmtDb25zdW1wdGlvbhItCgRpcHY0GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1VzYWdlEi0KBGlwdjYYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVXNhZ2UiagoMTmV0d29ya1VzYWdlEhUKDWF2YWlsYWJsZV9pcHMYAiABKAQSEAoIdXNlZF9pcHMYAyABKAQSGgoSYXZhaWxhYmxlX3ByZWZpeGVzGAQgASgEEhUKDXVzZWRfcHJlZml4ZXMYBSABKAQqbQoHTkFUVHlwZRIYChROQVRfVFlQRV9VTlNQRUNJRklFRBAAEhsKDU5BVF9UWVBFX05PTkUQARoIgrIZBG5vbmUSKwoYTkFUX1RZUEVfSVBWNF9NQVNRVUVSQURFEAIaDYKyGQlpcHY0LW1hc3EqrQIKC05ldHdvcmtUeXBlEhwKGE5FVFdPUktfVFlQRV9VTlNQRUNJRklFRBAAEicKFU5FVFdPUktfVFlQRV9FWFRFUk5BTBABGgyCshkIZXh0ZXJuYWwSJwoVTkVUV09SS19UWVBFX1VOREVSTEFZEAIaDIKyGQh1bmRlcmxheRIhChJORVRXT1JLX1RZUEVfU1VQRVIQAxoJgrIZBXN1cGVyEjcKHU5FVFdPUktfVFlQRV9TVVBFUl9OQU1FU1BBQ0VEEAQaFIKyGRBzdXBlci1uYW1lc3BhY2VkEiEKEk5FVFdPUktfVFlQRV9DSElMRBAFGgmCshkFY2hpbGQSLwoZTkVUV09SS19UWVBFX0NISUxEX1NIQVJFRBAGGhCCshkMY2hpbGQtc2hhcmVkKscBChROZXR3b3JrQWRkcmVzc0ZhbWlseRImCiJORVRXT1JLX0FERFJFU1NfRkFNSUxZX1VOU1BFQ0lGSUVEEAASJwoZTkVUV09SS19BRERSRVNTX0ZBTUlMWV9WNBABGgiCshkEaXB2NBInChlORVRXT1JLX0FERFJFU1NfRkFNSUxZX1Y2EAIaCIKyGQRpcHY2EjUKIU5FVFdPUktfQUREUkVTU19GQU1JTFlfRFVBTF9TVEFDSxADGg6CshkKZHVhbC1zdGFjazLhBQoOTmV0d29ya1NlcnZpY2USbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAIScQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZSIGyvMYAgECEnEKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiBsrzGAIBAhJwCgRMaXN0EiwubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlIgvK8xgDAQID4PMYAhKUAQoQTGlzdEJhc2VOZXR3b3JrcxI4Lm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1JlcXVlc3QaOS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXNwb25zZSILyvMYAwECA+DzGAIScQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VEZWxldGVSZXNwb25zZSIGyvMYAgECQsIBChVjb20ubWV0YWxzdGFjay5hcGkudjJCDE5ldHdvcmtQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [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.
diff --git a/js/metalstack/api/v2/partition_pb.js b/js/metalstack/api/v2/partition_pb.js
index f161eeab..da193de6 100644
--- a/js/metalstack/api/v2/partition_pb.js
+++ b/js/metalstack/api/v2/partition_pb.js
@@ -8,7 +8,7 @@ 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]);
+export const file_metalstack_api_v2_partition = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FwaS92Mi9wYXJ0aXRpb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyItACCglQYXJ0aXRpb24SFwoCaWQYASABKAlCC7pICHIG0LOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEiAKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECARJJChJib290X2NvbmZpZ3VyYXRpb24YBCABKAsyLS5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25Cb290Q29uZmlndXJhdGlvbhI6CgpkbnNfc2VydmVyGAUgAygLMhwubWV0YWxzdGFjay5hcGkudjIuRE5TU2VydmVyQgi6SAWSAQIQAxI6CgpudHBfc2VydmVyGAYgAygLMhwubWV0YWxzdGFjay5hcGkudjIuTlRQU2VydmVyQgi6SAWSAQIQChIeChZtZ210X3NlcnZpY2VfYWRkcmVzc2VzGAcgAygJInAKDlBhcnRpdGlvblF1ZXJ5EhwKAmlkGAEgASgJQgu6SAhyBtCzrrECAUgAiAEBEi4KBmxhYmVscxgCIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gBiAEBQgUKA19pZEIJCgdfbGFiZWxzInIKGlBhcnRpdGlvbkJvb3RDb25maWd1cmF0aW9uEh4KCWltYWdlX3VybBgBIAEoCUILukgIcgbgs66xAgESHwoKa2VybmVsX3VybBgCIAEoCUILukgIcgbgs66xAgESEwoLY29tbWFuZGxpbmUYAyABKAkiIAoJRE5TU2VydmVyEhMKAmlwGAEgASgJQge6SARyAnABIikKCU5UUFNlcnZlchIcCgdhZGRyZXNzGAEgASgJQgu6SAhyBuizrrECASI1ChpQYXJ0aXRpb25TZXJ2aWNlR2V0UmVxdWVzdBIXCgJpZBgBIAEoCUILukgIcgbQs66xAgEiTwobUGFydGl0aW9uU2VydmljZUxpc3RSZXF1ZXN0EjAKBXF1ZXJ5GAEgASgLMiEubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uUXVlcnkiTgobUGFydGl0aW9uU2VydmljZUdldFJlc3BvbnNlEi8KCXBhcnRpdGlvbhgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlBhcnRpdGlvbiJQChxQYXJ0aXRpb25TZXJ2aWNlTGlzdFJlc3BvbnNlEjAKCnBhcnRpdGlvbnMYASADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb24y9QEKEFBhcnRpdGlvblNlcnZpY2USbgoDR2V0Ei0ubWV0YWxzdGFjay5hcGkudjIuUGFydGl0aW9uU2VydmljZUdldFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25TZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgCEnEKBExpc3QSLi5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25TZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5QYXJ0aXRpb25TZXJ2aWNlTGlzdFJlc3BvbnNlIgjY8xgD4PMYAkLEAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQg5QYXJ0aXRpb25Qcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [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.
diff --git a/js/metalstack/api/v2/predefined_rules_pb.d.ts b/js/metalstack/api/v2/predefined_rules_pb.d.ts
index 9cdc572e..6eb3ff43 100644
--- a/js/metalstack/api/v2/predefined_rules_pb.d.ts
+++ b/js/metalstack/api/v2/predefined_rules_pb.d.ts
@@ -40,15 +40,21 @@ export declare const is_prefix: GenExtension;
* @generated from extension: optional bool is_uri = 80048956;
*/
export declare const is_uri: GenExtension;
+/**
+ * IsIpOrHostname validates that the given string is either a ip or a hostname
+ *
+ * @generated from extension: optional bool is_ip_or_hostname = 80048957;
+ */
+export declare const is_ip_or_hostname: GenExtension;
/**
* Prefixes validates if a slice of prefixes in string form are valid
*
- * @generated from extension: optional bool prefixes = 80048956;
+ * @generated from extension: optional bool prefixes = 80058951;
*/
export declare const prefixes: GenExtension;
/**
* Ips validates if a slice of ips in string form are valid
*
- * @generated from extension: optional bool ips = 80048957;
+ * @generated from extension: optional bool ips = 80058952;
*/
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
index e81c2ff4..2c2c6b7e 100644
--- a/js/metalstack/api/v2/predefined_rules_pb.js
+++ b/js/metalstack/api/v2/predefined_rules_pb.js
@@ -6,7 +6,7 @@ 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]);
+export const file_metalstack_api_v2_predefined_rules = /*@__PURE__*/ fileDesc("CihtZXRhbHN0YWNrL2FwaS92Mi9wcmVkZWZpbmVkX3J1bGVzLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52Mjq4AQoKbWFjYWRkcmVzcxIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlcxi35pUmIAEoCEJ6wkh3CnUKEXN0cmluZy5tYWNhZGRyZXNzEiZ0aGlzIHN0cmluZyBtdXN0IGJlIGEgdmFsaWQgbWFjYWRkcmVzcxo4dGhpcy5tYXRjaGVzKCdeKFswLTlBLUZhLWZdezJ9WzpdKXs1fShbMC05QS1GYS1mXXsyfSkkJylSCm1hY2FkZHJlc3M6mQEKB2lzX25hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuOaVJiABKAhCYsJIXwpdCg5zdHJpbmcuaXNfbmFtZRIjbXVzdCBiZSB3aXRoaW4gMiBhbmQgMTI4IGNoYXJhY3RlcnMaJnRoaXMuc2l6ZSgpID49IDIgJiYgdGhpcy5zaXplKCkgPD0gMTI4UgZpc05hbWU6mgEKDmlzX2Rlc2NyaXB0aW9uEhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzGLnmlSYgASgIQlXCSFIKUAoVc3RyaW5nLmlzX2Rlc2NyaXB0aW9uEiNtdXN0IGJlIHNob3J0ZXIgdGhhbiAyNTYgY2hhcmFjdGVycxoSdGhpcy5zaXplKCkgPD0gMjU2Ug1pc0Rlc2NyaXB0aW9uOqgBCgxpc19wYXJ0aXRpb24SGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYuuaVJiABKAhCZ8JIZApiChNzdHJpbmcuaXNfcGFydGl0aW9uEiNtdXN0IGJlIHdpdGhpbiAyIGFuZCAxMjggY2hhcmFjdGVycxomdGhpcy5zaXplKCkgPj0gMiAmJiB0aGlzLnNpemUoKSA8PSAxMjhSC2lzUGFydGl0aW9uOoIBCglpc19wcmVmaXgSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYu+aVJiABKAhCR8JIRApCCg9zdHJpbmcucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaEXRoaXMuaXNJcFByZWZpeCgpUghpc1ByZWZpeDptCgZpc191cmkSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYvOaVJiABKAhCOMJINQozCgpzdHJpbmcudXJpEhdnaXZlbiB1cmkgbXVzdCBiZSB2YWxpZBoMdGhpcy5pc1VyaSgpUgVpc1VyaTqnAQoRaXNfaXBfb3JfaG9zdG5hbWUSGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXMYveaVJiABKAhCXsJIWwpZCg12YWxpZF9hZGRyZXNzEiZtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcyBvciBob3N0bmFtZRogdGhpcy5pc0lwKCkgfHwgdGhpcy5pc0hvc3RuYW1lKClSDmlzSXBPckhvc3RuYW1lOo8BCghwcmVmaXhlcxIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzGMe0liYgASgIQlPCSFAKTgoRcmVwZWF0ZWQucHJlZml4ZXMSHGdpdmVuIHByZWZpeGVzIG11c3QgYmUgdmFsaWQaG3RoaXMuYWxsKG0sIG0uaXNJcFByZWZpeCgpKVIIcHJlZml4ZXM6dQoDaXBzEhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXMYyLSWJiABKAhCQ8JIQAo+CgxyZXBlYXRlZC5pcHMSF2dpdmVuIGlwcyBtdXN0IGJlIHZhbGlkGhV0aGlzLmFsbChtLCBtLmlzSXAoKSlSA2lwc0LKAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQhRQcmVkZWZpbmVkUnVsZXNQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjI", [file_buf_validate_validate]);
/**
* Macaddress returns true if the given string is a valid macadress
*
@@ -43,15 +43,21 @@ export const is_prefix = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined
* @generated from extension: optional bool is_uri = 80048956;
*/
export const is_uri = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 5);
+/**
+ * IsIpOrHostname validates that the given string is either a ip or a hostname
+ *
+ * @generated from extension: optional bool is_ip_or_hostname = 80048957;
+ */
+export const is_ip_or_hostname = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 6);
/**
* Prefixes validates if a slice of prefixes in string form are valid
*
- * @generated from extension: optional bool prefixes = 80048956;
+ * @generated from extension: optional bool prefixes = 80058951;
*/
-export const prefixes = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 6);
+export const prefixes = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 7);
/**
* Ips validates if a slice of ips in string form are valid
*
- * @generated from extension: optional bool ips = 80048957;
+ * @generated from extension: optional bool ips = 80058952;
*/
-export const ips = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 7);
+export const ips = /*@__PURE__*/ extDesc(file_metalstack_api_v2_predefined_rules, 8);
diff --git a/js/metalstack/api/v2/project_pb.js b/js/metalstack/api/v2/project_pb.js
index e74cddb5..0f036feb 100644
--- a/js/metalstack/api/v2/project_pb.js
+++ b/js/metalstack/api/v2/project_pb.js
@@ -9,7 +9,7 @@ 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]);
+export const file_metalstack_api_v2_project = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9wcm9qZWN0LnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiKzAQoHUHJvamVjdBIMCgR1dWlkGAEgASgJEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEhkKBG5hbWUYAyABKAlCC7pICHIGwLOusQIBEiAKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECARIOCgZ0ZW5hbnQYBSABKAkSFwoKYXZhdGFyX3VybBgGIAEoCUgAiAEBQg0KC19hdmF0YXJfdXJsIqEBCg1Qcm9qZWN0TWVtYmVyEgoKAmlkGAEgASgJEjYKBHJvbGUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAESHAoUaW5oZXJpdGVkX21lbWJlcnNoaXAYAyABKAgSLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAikgIKDVByb2plY3RJbnZpdGUSDgoGc2VjcmV0GAEgASgJEg8KB3Byb2plY3QYAiABKAkSNgoEcm9sZRgDIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlQgi6SAWCAQIQARIOCgZqb2luZWQYBCABKAgSFAoMcHJvamVjdF9uYW1lGAUgASgJEg4KBnRlbmFudBgGIAEoCRITCgt0ZW5hbnRfbmFtZRgHIAEoCRIuCgpleHBpcmVzX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBItCglqb2luZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsQBChlQcm9qZWN0U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIgCgZ0ZW5hbnQYAyABKAlCC7pICHIGwLOusQIBSAKIAQESLgoGbGFiZWxzGAYgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAOIAQFCBQoDX2lkQgcKBV9uYW1lQgkKB190ZW5hbnRCCQoHX2xhYmVscyJKChpQcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZRIsCghwcm9qZWN0cxgBIAMoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QiNQoYUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIoMBChlQcm9qZWN0U2VydmljZUdldFJlc3BvbnNlEisKB3Byb2plY3QYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0EjkKD3Byb2plY3RfbWVtYmVycxgCIAMoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiyQEKG1Byb2plY3RTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIaCgVsb2dpbhgBIAEoCUILukgIcgbAs66xAgESGQoEbmFtZRgCIAEoCUILukgIcgbAs66xAgESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEhcKCmF2YXRhcl91cmwYBCABKAlIAIgBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHNCDQoLX2F2YXRhcl91cmwiSwocUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCI4ChtQcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQEiSwocUHJvamVjdFNlcnZpY2VEZWxldGVSZXNwb25zZRIrCgdwcm9qZWN0GAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdCK9AgobUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEjQKBmxhYmVscxgGIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIksKHFByb2plY3RTZXJ2aWNlVXBkYXRlUmVzcG9uc2USKwoHcHJvamVjdBgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3QicAobUHJvamVjdFNlcnZpY2VJbnZpdGVSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiUAocUHJvamVjdFNlcnZpY2VJbnZpdGVSZXNwb25zZRIwCgZpbnZpdGUYASABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0SW52aXRlIj0KIFByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBIlYKIVByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZRIxCgdpbnZpdGVzGAEgAygLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSIwCh5Qcm9qZWN0U2VydmljZUludml0ZUdldFJlcXVlc3QSDgoGc2VjcmV0GAEgASgJIlMKH1Byb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2USMAoGaW52aXRlGAEgASgLMiAubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdEludml0ZSI3ChpQcm9qZWN0U2VydmljZUxlYXZlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABASIdChtQcm9qZWN0U2VydmljZUxlYXZlUmVzcG9uc2UiTgohUHJvamVjdFNlcnZpY2VSZW1vdmVNZW1iZXJSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEg4KBm1lbWJlchgCIAEoCSIkCiJQcm9qZWN0U2VydmljZVJlbW92ZU1lbWJlclJlc3BvbnNlIoYBCiFQcm9qZWN0U2VydmljZVVwZGF0ZU1lbWJlclJlcXVlc3QSGQoHcHJvamVjdBgBIAEoCUIIukgFcgOwAQESDgoGbWVtYmVyGAIgASgJEjYKBHJvbGUYAyABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZUIIukgFggECEAEiXgoiUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZRI4Cg5wcm9qZWN0X21lbWJlchgFIAEoCzIgLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RNZW1iZXIiMwohUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0Eg4KBnNlY3JldBgBIAEoCSJLCiJQcm9qZWN0U2VydmljZUludml0ZUFjY2VwdFJlc3BvbnNlEg8KB3Byb2plY3QYASABKAkSFAoMcHJvamVjdF9uYW1lGAIgASgJIk4KIVByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIOCgZzZWNyZXQYAiABKAkiJAoiUHJvamVjdFNlcnZpY2VJbnZpdGVEZWxldGVSZXNwb25zZTLiDAoOUHJvamVjdFNlcnZpY2USbQoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUxpc3RSZXNwb25zZSII2PMYA+DzGAISbQoDR2V0EisubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXF1ZXN0GiwubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VHZXRSZXNwb25zZSILyvMYAwECA+DzGAISdQoGQ3JlYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VDcmVhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJ0CgZEZWxldGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZURlbGV0ZVJlc3BvbnNlIgnK8xgBAeDzGAESdQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKyvMYAgEC4PMYARJxCgVMZWF2ZRItLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlTGVhdmVSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VMZWF2ZVJlc3BvbnNlIgnK8xgBA+DzGAEShgEKDFJlbW92ZU1lbWJlchI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlUmVtb3ZlTWVtYmVyUmVzcG9uc2UiCcrzGAEB4PMYARKGAQoMVXBkYXRlTWVtYmVyEjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VVcGRhdGVNZW1iZXJSZXNwb25zZSIJyvMYAQHg8xgBEnQKBkludml0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlUmVzcG9uc2UiCcrzGAEB4PMYARKFAQoMSW52aXRlQWNjZXB0EjQubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFNlcnZpY2VJbnZpdGVBY2NlcHRSZXNwb25zZSII2PMYA+DzGAEShgEKDEludml0ZURlbGV0ZRI0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVxdWVzdBo1Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlRGVsZXRlUmVzcG9uc2UiCcrzGAEB4PMYARKDAQoLSW52aXRlc0xpc3QSMy5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0U2VydmljZUludml0ZXNMaXN0UmVxdWVzdBo0Lm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlc0xpc3RSZXNwb25zZSIJyvMYAQHg8xgCEnwKCUludml0ZUdldBIxLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVxdWVzdBoyLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RTZXJ2aWNlSW52aXRlR2V0UmVzcG9uc2UiCNjzGAPg8xgCQsIBChVjb20ubWV0YWxzdGFjay5hcGkudjJCDFByb2plY3RQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [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.
diff --git a/js/metalstack/api/v2/size_pb.js b/js/metalstack/api/v2/size_pb.js
index 45840e45..cd52827b 100644
--- a/js/metalstack/api/v2/size_pb.js
+++ b/js/metalstack/api/v2/size_pb.js
@@ -8,7 +8,7 @@ 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]);
+export const file_metalstack_api_v2_size = /*@__PURE__*/ fileDesc("ChxtZXRhbHN0YWNrL2FwaS92Mi9zaXplLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiIvChVTaXplU2VydmljZUdldFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAIYgAEiRQoWU2l6ZVNlcnZpY2VMaXN0UmVxdWVzdBIrCgVxdWVyeRgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlNpemVRdWVyeSI/ChZTaXplU2VydmljZUdldFJlc3BvbnNlEiUKBHNpemUYASABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5TaXplIkEKF1NpemVTZXJ2aWNlTGlzdFJlc3BvbnNlEiYKBXNpemVzGAEgAygLMhcubWV0YWxzdGFjay5hcGkudjIuU2l6ZSLeAQoEU2l6ZRIXCgJpZBgBIAEoCUILukgIcgbAs66xAgESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESHgoEbmFtZRgEIAEoCUILukgIcgbAs66xAgFIAIgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAYgBARI2Cgtjb25zdHJhaW50cxgGIAMoCzIhLm1ldGFsc3RhY2suYXBpLnYyLlNpemVDb25zdHJhaW50QgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbiKdAQoOU2l6ZUNvbnN0cmFpbnQSPQoEdHlwZRgBIAEoDjIlLm1ldGFsc3RhY2suYXBpLnYyLlNpemVDb25zdHJhaW50VHlwZUIIukgFggECEAESCwoDbWluGAIgASgEEgsKA21heBgDIAEoBBIjCgppZGVudGlmaWVyGAQgASgJQgq6SAdyBRAAGIABSACIAQFCDQoLX2lkZW50aWZpZXIiywEKCVNpemVRdWVyeRIcCgJpZBgBIAEoCUILukgIcgbAs66xAgFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgCiAEBEi4KBmxhYmVscxgEIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gDiAEBQgUKA19pZEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2xhYmVscyroAQoSU2l6ZUNvbnN0cmFpbnRUeXBlEiQKIFNJWkVfQ09OU1RSQUlOVF9UWVBFX1VOU1BFQ0lGSUVEEAASKQoaU0laRV9DT05TVFJBSU5UX1RZUEVfQ09SRVMQARoJgrIZBWNvcmVzEisKG1NJWkVfQ09OU1RSQUlOVF9UWVBFX01FTU9SWRACGgqCshkGbWVtb3J5Ei0KHFNJWkVfQ09OU1RSQUlOVF9UWVBFX1NUT1JBR0UQAxoLgrIZB3N0b3JhZ2USJQoYU0laRV9DT05TVFJBSU5UX1RZUEVfR1BVEAQaB4KyGQNncHUy3AEKC1NpemVTZXJ2aWNlEmQKA0dldBIoLm1ldGFsc3RhY2suYXBpLnYyLlNpemVTZXJ2aWNlR2V0UmVxdWVzdBopLm1ldGFsc3RhY2suYXBpLnYyLlNpemVTZXJ2aWNlR2V0UmVzcG9uc2UiCNjzGAPg8xgCEmcKBExpc3QSKS5tZXRhbHN0YWNrLmFwaS52Mi5TaXplU2VydmljZUxpc3RSZXF1ZXN0GioubWV0YWxzdGFjay5hcGkudjIuU2l6ZVNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGAPg8xgCQr8BChVjb20ubWV0YWxzdGFjay5hcGkudjJCCVNpemVQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [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.
diff --git a/js/metalstack/api/v2/size_reservation_pb.d.ts b/js/metalstack/api/v2/size_reservation_pb.d.ts
new file mode 100644
index 00000000..23deb641
--- /dev/null
+++ b/js/metalstack/api/v2/size_reservation_pb.d.ts
@@ -0,0 +1,232 @@
+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/size_reservation.proto.
+ */
+export declare const file_metalstack_api_v2_size_reservation: GenFile;
+/**
+ * SizeReservationServiceGetRequest is the request payload for a size get request
+ *
+ * @generated from message metalstack.api.v2.SizeReservationServiceGetRequest
+ */
+export type SizeReservationServiceGetRequest = Message<"metalstack.api.v2.SizeReservationServiceGetRequest"> & {
+ /**
+ * ID of the size reservation to get
+ *
+ * @generated from field: string id = 1;
+ */
+ id: string;
+ /**
+ * Project of the size reservation
+ *
+ * @generated from field: string project = 2;
+ */
+ project: string;
+};
+/**
+ * Describes the message metalstack.api.v2.SizeReservationServiceGetRequest.
+ * Use `create(SizeReservationServiceGetRequestSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceGetRequestSchema: GenMessage;
+/**
+ * SizeReservationServiceListRequest is the request payload for a size list request
+ *
+ * @generated from message metalstack.api.v2.SizeReservationServiceListRequest
+ */
+export type SizeReservationServiceListRequest = Message<"metalstack.api.v2.SizeReservationServiceListRequest"> & {
+ /**
+ * Project of the size reservation
+ *
+ * @generated from field: string project = 1;
+ */
+ project: string;
+ /**
+ * Query for size reservations
+ *
+ * @generated from field: metalstack.api.v2.SizeReservationQuery query = 2;
+ */
+ query?: SizeReservationQuery;
+};
+/**
+ * Describes the message metalstack.api.v2.SizeReservationServiceListRequest.
+ * Use `create(SizeReservationServiceListRequestSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceListRequestSchema: GenMessage;
+/**
+ * SizeReservationServiceGetResponse is the response payload for a size reservation get request
+ *
+ * @generated from message metalstack.api.v2.SizeReservationServiceGetResponse
+ */
+export type SizeReservationServiceGetResponse = Message<"metalstack.api.v2.SizeReservationServiceGetResponse"> & {
+ /**
+ * Size reservation
+ *
+ * @generated from field: metalstack.api.v2.SizeReservation size_reservation = 1;
+ */
+ sizeReservation?: SizeReservation;
+};
+/**
+ * Describes the message metalstack.api.v2.SizeReservationServiceGetResponse.
+ * Use `create(SizeReservationServiceGetResponseSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceGetResponseSchema: GenMessage;
+/**
+ * SizeReservationServiceListResponse is the response payload for a size reservation list request
+ *
+ * @generated from message metalstack.api.v2.SizeReservationServiceListResponse
+ */
+export type SizeReservationServiceListResponse = Message<"metalstack.api.v2.SizeReservationServiceListResponse"> & {
+ /**
+ * Size reservations
+ *
+ * @generated from field: repeated metalstack.api.v2.SizeReservation size_reservations = 1;
+ */
+ sizeReservations: SizeReservation[];
+};
+/**
+ * Describes the message metalstack.api.v2.SizeReservationServiceListResponse.
+ * Use `create(SizeReservationServiceListResponseSchema)` to create a new message.
+ */
+export declare const SizeReservationServiceListResponseSchema: GenMessage;
+/**
+ * SizeReservation
+ *
+ * @generated from message metalstack.api.v2.SizeReservation
+ */
+export type SizeReservation = Message<"metalstack.api.v2.SizeReservation"> & {
+ /**
+ * Id of this size reservation, is generated on creation
+ *
+ * @generated from field: string id = 1;
+ */
+ id: string;
+ /**
+ * Meta for this size reservation
+ *
+ * @generated from field: metalstack.api.v2.Meta meta = 2;
+ */
+ meta?: Meta;
+ /**
+ * Name of this size reservation
+ *
+ * @generated from field: string name = 3;
+ */
+ name: string;
+ /**
+ * Description of this size reservation
+ *
+ * @generated from field: string description = 4;
+ */
+ description: string;
+ /**
+ * Project of the size reservation
+ *
+ * @generated from field: string project = 5;
+ */
+ project: string;
+ /**
+ * Size id of this size reservation
+ *
+ * @generated from field: string size = 6;
+ */
+ size: string;
+ /**
+ * Partition ids of this size reservation
+ *
+ * @generated from field: repeated string partitions = 7;
+ */
+ partitions: string[];
+ /**
+ * Amount of reservations of this size reservation
+ *
+ * @generated from field: int32 amount = 8;
+ */
+ amount: number;
+};
+/**
+ * Describes the message metalstack.api.v2.SizeReservation.
+ * Use `create(SizeReservationSchema)` to create a new message.
+ */
+export declare const SizeReservationSchema: GenMessage;
+/**
+ * SizeReservationQuery is used to search size reservations
+ *
+ * @generated from message metalstack.api.v2.SizeReservationQuery
+ */
+export type SizeReservationQuery = Message<"metalstack.api.v2.SizeReservationQuery"> & {
+ /**
+ * ID of the size reservation to get
+ *
+ * @generated from field: optional string id = 1;
+ */
+ id?: string;
+ /**
+ * Name of this size reservation
+ *
+ * @generated from field: optional string name = 2;
+ */
+ name?: string;
+ /**
+ * Description of this size reservation
+ *
+ * @generated from field: optional string description = 3;
+ */
+ description?: string;
+ /**
+ * Size id of this size reservation
+ *
+ * @generated from field: optional string size = 4;
+ */
+ size?: string;
+ /**
+ * Project of the size reservation
+ *
+ * @generated from field: optional string project = 5;
+ */
+ project?: string;
+ /**
+ * Partition of the size reservation
+ *
+ * @generated from field: optional string partition = 6;
+ */
+ partition?: string;
+ /**
+ * Labels lists only size reservations containing the given labels
+ *
+ * @generated from field: optional metalstack.api.v2.Labels labels = 7;
+ */
+ labels?: Labels;
+};
+/**
+ * Describes the message metalstack.api.v2.SizeReservationQuery.
+ * Use `create(SizeReservationQuerySchema)` to create a new message.
+ */
+export declare const SizeReservationQuerySchema: GenMessage;
+/**
+ * SizeReservationService serves size reservation related functions
+ *
+ * @generated from service metalstack.api.v2.SizeReservationService
+ */
+export declare const SizeReservationService: GenService<{
+ /**
+ * Get a size reservation
+ *
+ * @generated from rpc metalstack.api.v2.SizeReservationService.Get
+ */
+ get: {
+ methodKind: "unary";
+ input: typeof SizeReservationServiceGetRequestSchema;
+ output: typeof SizeReservationServiceGetResponseSchema;
+ };
+ /**
+ * List size reservations
+ *
+ * @generated from rpc metalstack.api.v2.SizeReservationService.List
+ */
+ list: {
+ methodKind: "unary";
+ input: typeof SizeReservationServiceListRequestSchema;
+ output: typeof SizeReservationServiceListResponseSchema;
+ };
+}>;
diff --git a/js/metalstack/api/v2/size_reservation_pb.js b/js/metalstack/api/v2/size_reservation_pb.js
new file mode 100644
index 00000000..2dddcff3
--- /dev/null
+++ b/js/metalstack/api/v2/size_reservation_pb.js
@@ -0,0 +1,47 @@
+// @generated by protoc-gen-es v2.11.0 with parameter "target=ts"
+// @generated from file metalstack/api/v2/size_reservation.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/size_reservation.proto.
+ */
+export const file_metalstack_api_v2_size_reservation = /*@__PURE__*/ fileDesc("CihtZXRhbHN0YWNrL2FwaS92Mi9zaXplX3Jlc2VydmF0aW9uLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJTCiBTaXplUmVzZXJ2YXRpb25TZXJ2aWNlR2V0UmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESGQoHcHJvamVjdBgCIAEoCUIIukgFcgOwAQEidgohU2l6ZVJlc2VydmF0aW9uU2VydmljZUxpc3RSZXF1ZXN0EhkKB3Byb2plY3QYASABKAlCCLpIBXIDsAEBEjYKBXF1ZXJ5GAIgASgLMicubWV0YWxzdGFjay5hcGkudjIuU2l6ZVJlc2VydmF0aW9uUXVlcnkiYQohU2l6ZVJlc2VydmF0aW9uU2VydmljZUdldFJlc3BvbnNlEjwKEHNpemVfcmVzZXJ2YXRpb24YASABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5TaXplUmVzZXJ2YXRpb24iYwoiU2l6ZVJlc2VydmF0aW9uU2VydmljZUxpc3RSZXNwb25zZRI9ChFzaXplX3Jlc2VydmF0aW9ucxgBIAMoCzIiLm1ldGFsc3RhY2suYXBpLnYyLlNpemVSZXNlcnZhdGlvbiKHAgoPU2l6ZVJlc2VydmF0aW9uEhcKAmlkGAEgASgJQgu6SAjYAQFyA7ABARIlCgRtZXRhGAIgASgLMhcubWV0YWxzdGFjay5hcGkudjIuTWV0YRIZCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECARIgCgtkZXNjcmlwdGlvbhgEIAEoCUILukgIcgbIs66xAgESGQoHcHJvamVjdBgFIAEoCUIIukgFcgOwAQESGQoEc2l6ZRgGIAEoCUILukgIcgbAs66xAgESKAoKcGFydGl0aW9ucxgHIAMoCUIUukgRkgEOCAEYASIIcgbQs66xAgESFwoGYW1vdW50GAggASgFQge6SAQaAiAAItsCChRTaXplUmVzZXJ2YXRpb25RdWVyeRIZCgJpZBgBIAEoCUIIukgFcgOwAQFIAIgBARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgCiAEBEh4KBHNpemUYBCABKAlCC7pICHIGwLOusQIBSAOIAQESHgoHcHJvamVjdBgFIAEoCUIIukgFcgOwAQFIBIgBARIjCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBSAWIAQESLgoGbGFiZWxzGAcgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAaIAQFCBQoDX2lkQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIHCgVfc2l6ZUIKCghfcHJvamVjdEIMCgpfcGFydGl0aW9uQgkKB19sYWJlbHMymgIKFlNpemVSZXNlcnZhdGlvblNlcnZpY2USfQoDR2V0EjMubWV0YWxzdGFjay5hcGkudjIuU2l6ZVJlc2VydmF0aW9uU2VydmljZUdldFJlcXVlc3QaNC5tZXRhbHN0YWNrLmFwaS52Mi5TaXplUmVzZXJ2YXRpb25TZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEoABCgRMaXN0EjQubWV0YWxzdGFjay5hcGkudjIuU2l6ZVJlc2VydmF0aW9uU2VydmljZUxpc3RSZXF1ZXN0GjUubWV0YWxzdGFjay5hcGkudjIuU2l6ZVJlc2VydmF0aW9uU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAJCygEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIUU2l6ZVJlc2VydmF0aW9uUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+/**
+ * Describes the message metalstack.api.v2.SizeReservationServiceGetRequest.
+ * Use `create(SizeReservationServiceGetRequestSchema)` to create a new message.
+ */
+export const SizeReservationServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size_reservation, 0);
+/**
+ * Describes the message metalstack.api.v2.SizeReservationServiceListRequest.
+ * Use `create(SizeReservationServiceListRequestSchema)` to create a new message.
+ */
+export const SizeReservationServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size_reservation, 1);
+/**
+ * Describes the message metalstack.api.v2.SizeReservationServiceGetResponse.
+ * Use `create(SizeReservationServiceGetResponseSchema)` to create a new message.
+ */
+export const SizeReservationServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size_reservation, 2);
+/**
+ * Describes the message metalstack.api.v2.SizeReservationServiceListResponse.
+ * Use `create(SizeReservationServiceListResponseSchema)` to create a new message.
+ */
+export const SizeReservationServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size_reservation, 3);
+/**
+ * Describes the message metalstack.api.v2.SizeReservation.
+ * Use `create(SizeReservationSchema)` to create a new message.
+ */
+export const SizeReservationSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size_reservation, 4);
+/**
+ * Describes the message metalstack.api.v2.SizeReservationQuery.
+ * Use `create(SizeReservationQuerySchema)` to create a new message.
+ */
+export const SizeReservationQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_size_reservation, 5);
+/**
+ * SizeReservationService serves size reservation related functions
+ *
+ * @generated from service metalstack.api.v2.SizeReservationService
+ */
+export const SizeReservationService = /*@__PURE__*/ serviceDesc(file_metalstack_api_v2_size_reservation, 0);
diff --git a/js/metalstack/api/v2/switch_pb.js b/js/metalstack/api/v2/switch_pb.js
index be55203f..4bc45022 100644
--- a/js/metalstack/api/v2/switch_pb.js
+++ b/js/metalstack/api/v2/switch_pb.js
@@ -9,7 +9,7 @@ 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("Ch5tZXRhbHN0YWNrL2FwaS92Mi9zd2l0Y2gucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIpkFCgZTd2l0Y2gSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEh4KBHJhY2sYBCABKAlCC7pICHIGwLOusQIBSACIAQESHgoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECARJECgxyZXBsYWNlX21vZGUYBiABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hSZXBsYWNlTW9kZUIIukgFggECEAESHgoNbWFuYWdlbWVudF9pcBgHIAEoCUIHukgEcgJwARIoCg9tYW5hZ2VtZW50X3VzZXIYCCABKAlCCrpIB3IFEAIYgAFIAYgBARIoCg9jb25zb2xlX2NvbW1hbmQYCSABKAlCCrpIB3IFEAIYgAFIAogBARIqCgRuaWNzGAogAygLMhwubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoTmljEicKAm9zGAsgASgLMhsubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1MSQQoTbWFjaGluZV9jb25uZWN0aW9ucxgMIAMoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDb25uZWN0aW9uEjAKCWxhc3Rfc3luYxgNIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFN5bmMSNgoPbGFzdF9zeW5jX2Vycm9yGA4gASgLMh0ubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoU3luY0IHCgVfcmFja0ISChBfbWFuYWdlbWVudF91c2VyQhIKEF9jb25zb2xlX2NvbW1hbmQijgEKCFN3aXRjaE9TEjsKBnZlbmRvchgBIAEoDjIhLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaE9TVmVuZG9yQgi6SAWCAQIQARIcCgd2ZXJzaW9uGAIgASgJQgu6SAhyBsCzrrECARInChJtZXRhbF9jb3JlX3ZlcnNpb24YAyABKAlCC7pICHIGwLOusQIBIuACCglTd2l0Y2hOaWMSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESHwoKaWRlbnRpZmllchgCIAEoCUILukgIcgbAs66xAgESGAoDbWFjGAMgASgJQgu6SAhyBrizrrECARIdCgN2cmYYBCABKAlCC7pICHIGwLOusQIBSACIAQESLwoFc3RhdGUYBSABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5OaWNTdGF0ZUgBiAEBEjUKCmJncF9maWx0ZXIYBiABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5CR1BGaWx0ZXJIAogBARJCCg5iZ3BfcG9ydF9zdGF0ZRgHIAEoCzIlLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaEJHUFBvcnRTdGF0ZUgDiAEBQgYKBF92cmZCCAoGX3N0YXRlQg0KC19iZ3BfZmlsdGVyQhEKD19iZ3BfcG9ydF9zdGF0ZSJHCglCR1BGaWx0ZXISGwoFY2lkcnMYASADKAlCDLpICZIBBuCzrrECARIdCgR2bmlzGAIgAygJQg+6SAySAQkiB3IFEAIYgAEiqQIKElN3aXRjaEJHUFBvcnRTdGF0ZRIdCghuZWlnaGJvchgBIAEoCUILukgIcgbAs66xAgESHwoKcGVlcl9ncm91cBgCIAEoCUILukgIcgbAs66xAgESHQoIdnJmX25hbWUYAyABKAlCC7pICHIGwLOusQIBEjgKCWJncF9zdGF0ZRgEIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkJHUFN0YXRlQgi6SAWCAQIQARI8ChhiZ3BfdGltZXJfdXBfZXN0YWJsaXNoZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKE3NlbnRfcHJlZml4X2NvdW50ZXIYBiABKAQSHwoXYWNjZXB0ZWRfcHJlZml4X2NvdW50ZXIYByABKAQimgEKCE5pY1N0YXRlEkMKB2Rlc2lyZWQYASABKA4yIy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hQb3J0U3RhdHVzQgi6SAWCAQIQAUgAiAEBEj0KBmFjdHVhbBgCIAEoDjIjLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFBvcnRTdGF0dXNCCLpIBYIBAhABQgoKCF9kZXNpcmVkIlIKEU1hY2hpbmVDb25uZWN0aW9uEhIKCm1hY2hpbmVfaWQYASABKAkSKQoDbmljGAIgASgLMhwubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoTmljIsoBCgtTd2l0Y2hRdWVyeRIeCgJpZBgBIAEoCUINukgKcgjAs66xAgFoAUgAiAEBEiMKCXBhcnRpdGlvbhgCIAEoCUILukgIcgbQs66xAgFIAYgBARIeCgRyYWNrGAMgASgJQgu6SAhyBsCzrrECAUgCiAEBEjEKAm9zGAQgASgLMiAubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NRdWVyeUgDiAEBQgUKA19pZEIMCgpfcGFydGl0aW9uQgcKBV9yYWNrQgUKA19vcyKLAQoNU3dpdGNoT1NRdWVyeRJACgZ2ZW5kb3IYASABKA4yIS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU1ZlbmRvckIIukgFggECEAFIAIgBARIhCgd2ZXJzaW9uGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBQgkKB192ZW5kb3JCCgoIX3ZlcnNpb24igQEKClN3aXRjaFN5bmMSKAoEdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoIZHVyYXRpb24YAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SEgoFZXJyb3IYAyABKAlIAIgBAUIICgZfZXJyb3IqiQIKCEJHUFN0YXRlEhkKFUJHUF9TVEFURV9VTlNQRUNJRklFRBAAEhwKDkJHUF9TVEFURV9JRExFEAEaCIKyGQRJZGxlEiIKEUJHUF9TVEFURV9DT05ORUNUEAIaC4KyGQdDb25uZWN0EiAKEEJHUF9TVEFURV9BQ1RJVkUQAxoKgrIZBkFjdGl2ZRIlChNCR1BfU1RBVEVfT1BFTl9TRU5UEAQaDIKyGQhPcGVuU2VudBIrChZCR1BfU1RBVEVfT1BFTl9DT05GSVJNEAUaD4KyGQtPcGVuQ29uZmlybRIqChVCR1BfU1RBVEVfRVNUQUJMSVNIRUQQBhoPgrIZC0VzdGFibGlzaGVkKqIBChFTd2l0Y2hSZXBsYWNlTW9kZRIpCh9TV0lUQ0hfUkVQTEFDRV9NT0RFX1VOU1BFQ0lGSUVEEAAaBIKyGQASLAobU1dJVENIX1JFUExBQ0VfTU9ERV9SRVBMQUNFEAEaC4KyGQdyZXBsYWNlEjQKH1NXSVRDSF9SRVBMQUNFX01PREVfT1BFUkFUSU9OQUwQAhoPgrIZC29wZXJhdGlvbmFsKoQBCg5Td2l0Y2hPU1ZlbmRvchIgChxTV0lUQ0hfT1NfVkVORE9SX1VOU1BFQ0lGSUVEEAASKQoYU1dJVENIX09TX1ZFTkRPUl9DVU1VTFVTEAEaC4KyGQdDdW11bHVzEiUKFlNXSVRDSF9PU19WRU5ET1JfU09OSUMQAhoJgrIZBVNPTmlDKq0BChBTd2l0Y2hQb3J0U3RhdHVzEiIKHlNXSVRDSF9QT1JUX1NUQVRVU19VTlNQRUNJRklFRBAAEiEKFVNXSVRDSF9QT1JUX1NUQVRVU19VUBABGgaCshkCdXASJQoXU1dJVENIX1BPUlRfU1RBVFVTX0RPV04QAhoIgrIZBGRvd24SKwoaU1dJVENIX1BPUlRfU1RBVFVTX1VOS05PV04QAxoLgrIZB3Vua25vd25CwQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkILU3dpdGNoUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+export const file_metalstack_api_v2_switch = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9zd2l0Y2gucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIpkFCgZTd2l0Y2gSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEh4KBHJhY2sYBCABKAlCC7pICHIGwLOusQIBSACIAQESHgoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECARJECgxyZXBsYWNlX21vZGUYBiABKA4yJC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hSZXBsYWNlTW9kZUIIukgFggECEAESHgoNbWFuYWdlbWVudF9pcBgHIAEoCUIHukgEcgJwARIoCg9tYW5hZ2VtZW50X3VzZXIYCCABKAlCCrpIB3IFEAIYgAFIAYgBARIoCg9jb25zb2xlX2NvbW1hbmQYCSABKAlCCrpIB3IFEAIYgAFIAogBARIqCgRuaWNzGAogAygLMhwubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoTmljEicKAm9zGAsgASgLMhsubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1MSQQoTbWFjaGluZV9jb25uZWN0aW9ucxgMIAMoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVDb25uZWN0aW9uEjAKCWxhc3Rfc3luYxgNIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFN5bmMSNgoPbGFzdF9zeW5jX2Vycm9yGA4gASgLMh0ubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoU3luY0IHCgVfcmFja0ISChBfbWFuYWdlbWVudF91c2VyQhIKEF9jb25zb2xlX2NvbW1hbmQijgEKCFN3aXRjaE9TEjsKBnZlbmRvchgBIAEoDjIhLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaE9TVmVuZG9yQgi6SAWCAQIQARIcCgd2ZXJzaW9uGAIgASgJQgu6SAhyBsCzrrECARInChJtZXRhbF9jb3JlX3ZlcnNpb24YAyABKAlCC7pICHIGwLOusQIBIuACCglTd2l0Y2hOaWMSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESHwoKaWRlbnRpZmllchgCIAEoCUILukgIcgbAs66xAgESGAoDbWFjGAMgASgJQgu6SAhyBrizrrECARIdCgN2cmYYBCABKAlCC7pICHIGwLOusQIBSACIAQESLwoFc3RhdGUYBSABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5OaWNTdGF0ZUgBiAEBEjUKCmJncF9maWx0ZXIYBiABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5CR1BGaWx0ZXJIAogBARJCCg5iZ3BfcG9ydF9zdGF0ZRgHIAEoCzIlLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaEJHUFBvcnRTdGF0ZUgDiAEBQgYKBF92cmZCCAoGX3N0YXRlQg0KC19iZ3BfZmlsdGVyQhEKD19iZ3BfcG9ydF9zdGF0ZSJHCglCR1BGaWx0ZXISGwoFY2lkcnMYASADKAlCDLpICZIBBriks7ECARIdCgR2bmlzGAIgAygJQg+6SAySAQkiB3IFEAIYgAEiqQIKElN3aXRjaEJHUFBvcnRTdGF0ZRIdCghuZWlnaGJvchgBIAEoCUILukgIcgbAs66xAgESHwoKcGVlcl9ncm91cBgCIAEoCUILukgIcgbAs66xAgESHQoIdnJmX25hbWUYAyABKAlCC7pICHIGwLOusQIBEjgKCWJncF9zdGF0ZRgEIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkJHUFN0YXRlQgi6SAWCAQIQARI8ChhiZ3BfdGltZXJfdXBfZXN0YWJsaXNoZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKE3NlbnRfcHJlZml4X2NvdW50ZXIYBiABKAQSHwoXYWNjZXB0ZWRfcHJlZml4X2NvdW50ZXIYByABKAQimgEKCE5pY1N0YXRlEkMKB2Rlc2lyZWQYASABKA4yIy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hQb3J0U3RhdHVzQgi6SAWCAQIQAUgAiAEBEj0KBmFjdHVhbBgCIAEoDjIjLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFBvcnRTdGF0dXNCCLpIBYIBAhABQgoKCF9kZXNpcmVkIlIKEU1hY2hpbmVDb25uZWN0aW9uEhIKCm1hY2hpbmVfaWQYASABKAkSKQoDbmljGAIgASgLMhwubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoTmljIsoBCgtTd2l0Y2hRdWVyeRIeCgJpZBgBIAEoCUINukgKcgjAs66xAgFoAUgAiAEBEiMKCXBhcnRpdGlvbhgCIAEoCUILukgIcgbQs66xAgFIAYgBARIeCgRyYWNrGAMgASgJQgu6SAhyBsCzrrECAUgCiAEBEjEKAm9zGAQgASgLMiAubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NRdWVyeUgDiAEBQgUKA19pZEIMCgpfcGFydGl0aW9uQgcKBV9yYWNrQgUKA19vcyKLAQoNU3dpdGNoT1NRdWVyeRJACgZ2ZW5kb3IYASABKA4yIS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU1ZlbmRvckIIukgFggECEAFIAIgBARIhCgd2ZXJzaW9uGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBQgkKB192ZW5kb3JCCgoIX3ZlcnNpb24igQEKClN3aXRjaFN5bmMSKAoEdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoIZHVyYXRpb24YAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SEgoFZXJyb3IYAyABKAlIAIgBAUIICgZfZXJyb3IqiQIKCEJHUFN0YXRlEhkKFUJHUF9TVEFURV9VTlNQRUNJRklFRBAAEhwKDkJHUF9TVEFURV9JRExFEAEaCIKyGQRJZGxlEiIKEUJHUF9TVEFURV9DT05ORUNUEAIaC4KyGQdDb25uZWN0EiAKEEJHUF9TVEFURV9BQ1RJVkUQAxoKgrIZBkFjdGl2ZRIlChNCR1BfU1RBVEVfT1BFTl9TRU5UEAQaDIKyGQhPcGVuU2VudBIrChZCR1BfU1RBVEVfT1BFTl9DT05GSVJNEAUaD4KyGQtPcGVuQ29uZmlybRIqChVCR1BfU1RBVEVfRVNUQUJMSVNIRUQQBhoPgrIZC0VzdGFibGlzaGVkKqIBChFTd2l0Y2hSZXBsYWNlTW9kZRIpCh9TV0lUQ0hfUkVQTEFDRV9NT0RFX1VOU1BFQ0lGSUVEEAAaBIKyGQASLAobU1dJVENIX1JFUExBQ0VfTU9ERV9SRVBMQUNFEAEaC4KyGQdyZXBsYWNlEjQKH1NXSVRDSF9SRVBMQUNFX01PREVfT1BFUkFUSU9OQUwQAhoPgrIZC29wZXJhdGlvbmFsKoQBCg5Td2l0Y2hPU1ZlbmRvchIgChxTV0lUQ0hfT1NfVkVORE9SX1VOU1BFQ0lGSUVEEAASKQoYU1dJVENIX09TX1ZFTkRPUl9DVU1VTFVTEAEaC4KyGQdDdW11bHVzEiUKFlNXSVRDSF9PU19WRU5ET1JfU09OSUMQAhoJgrIZBVNPTmlDKq0BChBTd2l0Y2hQb3J0U3RhdHVzEiIKHlNXSVRDSF9QT1JUX1NUQVRVU19VTlNQRUNJRklFRBAAEiEKFVNXSVRDSF9QT1JUX1NUQVRVU19VUBABGgaCshkCdXASJQoXU1dJVENIX1BPUlRfU1RBVFVTX0RPV04QAhoIgrIZBGRvd24SKwoaU1dJVENIX1BPUlRfU1RBVFVTX1VOS05PV04QAxoLgrIZB3Vua25vd25CwQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkILU3dpdGNoUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [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.Switch.
* Use `create(SwitchSchema)` to create a new message.
diff --git a/js/metalstack/api/v2/token_pb.d.ts b/js/metalstack/api/v2/token_pb.d.ts
index 5a7366a2..99e08ce9 100644
--- a/js/metalstack/api/v2/token_pb.d.ts
+++ b/js/metalstack/api/v2/token_pb.d.ts
@@ -1,6 +1,6 @@
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 { AdminRole, InfraRole, Labels, MachineRole, Meta, ProjectRole, TenantRole, UpdateLabels, UpdateMeta } from "./common_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/api/v2/token.proto.
@@ -99,6 +99,15 @@ export type Token = Message<"metalstack.api.v2.Token"> & {
* @generated from field: optional metalstack.api.v2.InfraRole infra_role = 12;
*/
infraRole?: InfraRole;
+ /**
+ * MachineRoles associates a machine uuid with the corresponding role of the token owner
+ * TODO: decide if we need this map from machine.uuid->role, we could instead use the subject in the token instead
+ *
+ * @generated from field: map machine_roles = 13;
+ */
+ machineRoles: {
+ [key: string]: MachineRole;
+ };
};
/**
* Describes the message metalstack.api.v2.Token.
@@ -157,10 +166,18 @@ export type TokenServiceCreateRequest = Message<"metalstack.api.v2.TokenServiceC
* @generated from field: optional metalstack.api.v2.InfraRole infra_role = 8;
*/
infraRole?: InfraRole;
+ /**
+ * MachineRoles associates a machine uuid with the corresponding role of the token owner
+ *
+ * @generated from field: map machine_roles = 9;
+ */
+ machineRoles: {
+ [key: string]: MachineRole;
+ };
/**
* Labels on this token
*
- * @generated from field: metalstack.api.v2.Labels labels = 9;
+ * @generated from field: metalstack.api.v2.Labels labels = 10;
*/
labels?: Labels;
};
@@ -339,10 +356,18 @@ export type TokenServiceUpdateRequest = Message<"metalstack.api.v2.TokenServiceU
* @generated from field: optional metalstack.api.v2.InfraRole infra_role = 8;
*/
infraRole?: InfraRole;
+ /**
+ * MachineRoles associates a machine uuid with the corresponding role of the token owner
+ *
+ * @generated from field: map machine_roles = 9;
+ */
+ machineRoles: {
+ [key: string]: MachineRole;
+ };
/**
* Labels on this token
*
- * @generated from field: metalstack.api.v2.UpdateLabels labels = 9;
+ * @generated from field: metalstack.api.v2.UpdateLabels labels = 10;
*/
labels?: UpdateLabels;
};
diff --git a/js/metalstack/api/v2/token_pb.js b/js/metalstack/api/v2/token_pb.js
index ecf2e047..c365fb4c 100644
--- a/js/metalstack/api/v2/token_pb.js
+++ b/js/metalstack/api/v2/token_pb.js
@@ -9,7 +9,7 @@ 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]);
+export const file_metalstack_api_v2_token = /*@__PURE__*/ fileDesc("Ch1tZXRhbHN0YWNrL2FwaS92Mi90b2tlbi5wcm90bxIRbWV0YWxzdGFjay5hcGkudjIi5QgKBVRva2VuEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhgKBHVzZXIYAiABKAlCCrpIB3IFEAIYgAQSJQoEbWV0YRgDIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEkMKC3Blcm1pc3Npb25zGAUgAygLMiMubWV0YWxzdGFjay5hcGkudjIuTWV0aG9kUGVybWlzc2lvbkIJukgGkgEDEPQDEisKB2V4cGlyZXMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWlzc3VlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOgoKdG9rZW5fdHlwZRgIIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuVHlwZUIIukgFggECEAESQQoNcHJvamVjdF9yb2xlcxgJIAMoCzIqLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuLlByb2plY3RSb2xlc0VudHJ5Ej8KDHRlbmFudF9yb2xlcxgKIAMoCzIpLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuLlRlbmFudFJvbGVzRW50cnkSPwoKYWRtaW5fcm9sZRgLIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZUIIukgFggECEAFIAIgBARI/CgppbmZyYV9yb2xlGAwgASgOMhwubWV0YWxzdGFjay5hcGkudjIuSW5mcmFSb2xlQgi6SAWCAQIQAUgBiAEBEkEKDW1hY2hpbmVfcm9sZXMYDSADKAsyKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbi5NYWNoaW5lUm9sZXNFbnRyeRpTChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZToCOAEaUQoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5UZW5hbnRSb2xlOgI4ARpTChFNYWNoaW5lUm9sZXNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZToCOAE6nwG6SJsBGpgBCht0b2tlbi5wZXJtaXNzaW9ucy51c2VydG9rZW4SKXRva2VuIHR5cGUgdXNlciBtdXN0IG5vdCBoYXZlIHBlcm1pc3Npb25zGk4odGhpcy50b2tlbl90eXBlID09IDIgJiYgdGhpcy5wZXJtaXNzaW9ucy5zaXplKCkgPT0gMCkgfHwgdGhpcy50b2tlbl90eXBlICE9IDJCDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUimQkKGVRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3QSIAoLZGVzY3JpcHRpb24YASABKAlCC7pICHIGyLOusQIBEkIKC3Blcm1pc3Npb25zGAIgAygLMiMubWV0YWxzdGFjay5hcGkudjIuTWV0aG9kUGVybWlzc2lvbkIIukgFkgECEGQSPgoHZXhwaXJlcxgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkISukgPqgEMGgUIgeeEDzIDCNgEEmsKDXByb2plY3Rfcm9sZXMYBSADKAsyPi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0LlByb2plY3RSb2xlc0VudHJ5QhS6SBGaAQ4iBXIDsAEBKgWCAQIQARJrCgx0ZW5hbnRfcm9sZXMYBiADKAsyPS5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0LlRlbmFudFJvbGVzRW50cnlCFrpIE5oBECIHcgUQAxiAASoFggECEAESPwoKYWRtaW5fcm9sZRgHIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZUIIukgFggECEAFIAIgBARI/CgppbmZyYV9yb2xlGAggASgOMhwubWV0YWxzdGFjay5hcGkudjIuSW5mcmFSb2xlQgi6SAWCAQIQAUgBiAEBErMCCg1tYWNoaW5lX3JvbGVzGAkgAygLMj4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdC5NYWNoaW5lUm9sZXNFbnRyeULbAbpI1wG6AckBChJtYWNoaW5lX3JvbGVzX2tleXMSM21hcCBrZXlzIG11c3QgYmUgZW1wdHkgc3RyaW5nLCAnKicsIG9yIGEgdmFsaWQgVVVJRBp+dGhpcy5hbGwoaywgayA9PSAnJyB8fCBrID09ICcqJyB8fCBrLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykpmgEHKgWCAQIQARIpCgZsYWJlbHMYCiABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMaUwoRUHJvamVjdFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGU6AjgBGlEKEFRlbmFudFJvbGVzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZToCOAEaUwoRTWFjaGluZVJvbGVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVJvbGU6AjgBQg0KC19hZG1pbl9yb2xlQg0KC19pbmZyYV9yb2xlIkkKEE1ldGhvZFBlcm1pc3Npb24SGQoHc3ViamVjdBgBIAEoCUIIukgFcgMYgAISGgoHbWV0aG9kcxgCIAMoCUIJukgGkgEDEPQDIlUKGlRva2VuU2VydmljZUNyZWF0ZVJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4SDgoGc2VjcmV0GAIgASgJIhkKF1Rva2VuU2VydmljZUxpc3RSZXF1ZXN0IkQKGFRva2VuU2VydmljZUxpc3RSZXNwb25zZRIoCgZ0b2tlbnMYASADKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbiIzChlUb2tlblNlcnZpY2VSZXZva2VSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIhwKGlRva2VuU2VydmljZVJldm9rZVJlc3BvbnNlIr4JChlUb2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEAEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgAiAEBEjgKC3Blcm1pc3Npb25zGAQgAygLMiMubWV0YWxzdGFjay5hcGkudjIuTWV0aG9kUGVybWlzc2lvbhJrCg1wcm9qZWN0X3JvbGVzGAUgAygLMj4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdC5Qcm9qZWN0Um9sZXNFbnRyeUIUukgRmgEOIgVyA7ABASoFggECEAESawoMdGVuYW50X3JvbGVzGAYgAygLMj0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdC5UZW5hbnRSb2xlc0VudHJ5Qha6SBOaARAiB3IFEAMYgAEqBYIBAhABEj8KCmFkbWluX3JvbGUYByABKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVCCLpIBYIBAhABSAGIAQESPwoKaW5mcmFfcm9sZRgIIAEoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZUIIukgFggECEAFIAogBARKzAgoNbWFjaGluZV9yb2xlcxgJIAMoCzI+Lm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QuTWFjaGluZVJvbGVzRW50cnlC2wG6SNcBugHJAQoSbWFjaGluZV9yb2xlc19rZXlzEjNtYXAga2V5cyBtdXN0IGJlIGVtcHR5IHN0cmluZywgJyonLCBvciBhIHZhbGlkIFVVSUQafnRoaXMuYWxsKGssIGsgPT0gJycgfHwgayA9PSAnKicgfHwgay5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpKZoBByoFggECEAESLwoGbGFiZWxzGAogASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzGlMKEVByb2plY3RSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLlByb2plY3RSb2xlOgI4ARpRChBUZW5hbnRSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGU6AjgBGlMKEU1hY2hpbmVSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVSb2xlOgI4AUIOCgxfZGVzY3JpcHRpb25CDQoLX2FkbWluX3JvbGVCDQoLX2luZnJhX3JvbGUiRQoaVG9rZW5TZXJ2aWNlVXBkYXRlUmVzcG9uc2USJwoFdG9rZW4YASABKAsyGC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlbiIwChZUb2tlblNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIkIKF1Rva2VuU2VydmljZUdldFJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4iHAoaVG9rZW5TZXJ2aWNlUmVmcmVzaFJlcXVlc3QiVgobVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlEicKBXRva2VuGAEgASgLMhgubWV0YWxzdGFjay5hcGkudjIuVG9rZW4SDgoGc2VjcmV0GAIgASgJKlAKCVRva2VuVHlwZRIaChZUT0tFTl9UWVBFX1VOU1BFQ0lGSUVEEAASEgoOVE9LRU5fVFlQRV9BUEkQARITCg9UT0tFTl9UWVBFX1VTRVIQAjKQBQoMVG9rZW5TZXJ2aWNlEmIKA0dldBIpLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUdldFJlcXVlc3QaKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VHZXRSZXNwb25zZSIE2PMYAxJrCgZDcmVhdGUSLC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VDcmVhdGVSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiBNjzGAMSawoGVXBkYXRlEiwubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVVwZGF0ZVJlc3BvbnNlIgTY8xgDEmUKBExpc3QSKi5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VMaXN0UmVxdWVzdBorLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZUxpc3RSZXNwb25zZSIE2PMYAxJrCgZSZXZva2USLC5tZXRhbHN0YWNrLmFwaS52Mi5Ub2tlblNlcnZpY2VSZXZva2VSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmV2b2tlUmVzcG9uc2UiBNjzGAMSbgoHUmVmcmVzaBItLm1ldGFsc3RhY2suYXBpLnYyLlRva2VuU2VydmljZVJlZnJlc2hSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hcGkudjIuVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlIgTY8xgDQsABChVjb20ubWV0YWxzdGFjay5hcGkudjJCClRva2VuUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [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.
diff --git a/js/metalstack/infra/v2/bmc_pb.d.ts b/js/metalstack/infra/v2/bmc_pb.d.ts
index a4a7e5d5..e97d2903 100644
--- a/js/metalstack/infra/v2/bmc_pb.d.ts
+++ b/js/metalstack/infra/v2/bmc_pb.d.ts
@@ -1,4 +1,5 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
+import type { MachineBMC, MachineBMCCommand, MachineBMCReport } from "../../api/v2/machine_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/infra/v2/bmc.proto.
@@ -9,7 +10,22 @@ export declare const file_metalstack_infra_v2_bmc: GenFile;
*
* @generated from message metalstack.infra.v2.UpdateBMCInfoRequest
*/
-export type UpdateBMCInfoRequest = Message<"metalstack.infra.v2.UpdateBMCInfoRequest"> & {};
+export type UpdateBMCInfoRequest = Message<"metalstack.infra.v2.UpdateBMCInfoRequest"> & {
+ /**
+ * Partition the partition id where metal-bmc wants to receive events
+ *
+ * @generated from field: string partition = 1;
+ */
+ partition: string;
+ /**
+ * BmcReports contains maps the bmc report per machine uuid
+ *
+ * @generated from field: map bmc_reports = 2;
+ */
+ bmcReports: {
+ [key: string]: MachineBMCReport;
+ };
+};
/**
* Describes the message metalstack.infra.v2.UpdateBMCInfoRequest.
* Use `create(UpdateBMCInfoRequestSchema)` to create a new message.
@@ -20,34 +36,116 @@ export declare const UpdateBMCInfoRequestSchema: GenMessage & {};
+export type UpdateBMCInfoResponse = Message<"metalstack.infra.v2.UpdateBMCInfoResponse"> & {
+ /**
+ * UpdatedMachines is a slice of machine uuids which were updated
+ *
+ * @generated from field: repeated string updated_machines = 1;
+ */
+ updatedMachines: string[];
+ /**
+ * CreatedMachines is a slice of machine uuids which were created
+ *
+ * @generated from field: repeated string created_machines = 2;
+ */
+ createdMachines: string[];
+};
/**
* Describes the message metalstack.infra.v2.UpdateBMCInfoResponse.
* Use `create(UpdateBMCInfoResponseSchema)` to create a new message.
*/
export declare const UpdateBMCInfoResponseSchema: GenMessage;
/**
- * WaitForMachineEventRequest
+ * WaitForBMCCommandRequest
*
- * @generated from message metalstack.infra.v2.WaitForMachineEventRequest
+ * @generated from message metalstack.infra.v2.WaitForBMCCommandRequest
*/
-export type WaitForMachineEventRequest = Message<"metalstack.infra.v2.WaitForMachineEventRequest"> & {};
+export type WaitForBMCCommandRequest = Message<"metalstack.infra.v2.WaitForBMCCommandRequest"> & {
+ /**
+ * Partition the partition id where metal-bmc wants to receive bmc commands
+ *
+ * @generated from field: string partition = 1;
+ */
+ partition: string;
+};
/**
- * Describes the message metalstack.infra.v2.WaitForMachineEventRequest.
- * Use `create(WaitForMachineEventRequestSchema)` to create a new message.
+ * Describes the message metalstack.infra.v2.WaitForBMCCommandRequest.
+ * Use `create(WaitForBMCCommandRequestSchema)` to create a new message.
*/
-export declare const WaitForMachineEventRequestSchema: GenMessage;
+export declare const WaitForBMCCommandRequestSchema: GenMessage;
/**
- * WaitForMachineEventResponse
+ * WaitForBMCCommandResponse
*
- * @generated from message metalstack.infra.v2.WaitForMachineEventResponse
+ * @generated from message metalstack.infra.v2.WaitForBMCCommandResponse
*/
-export type WaitForMachineEventResponse = Message<"metalstack.infra.v2.WaitForMachineEventResponse"> & {};
+export type WaitForBMCCommandResponse = Message<"metalstack.infra.v2.WaitForBMCCommandResponse"> & {
+ /**
+ * UUID of the machine to send the command to
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+ /**
+ * BmcCommand to execute against the bmc of the machine
+ *
+ * @generated from field: metalstack.api.v2.MachineBMCCommand bmc_command = 2;
+ */
+ bmcCommand: MachineBMCCommand;
+ /**
+ * MachineBmc contains connection details of the machine to issue the bmcCommand to
+ *
+ * @generated from field: metalstack.api.v2.MachineBMC machine_bmc = 3;
+ */
+ machineBmc?: MachineBMC;
+ /**
+ * CommandId is a unique ID which must be sent back after execution
+ * it is usually in the form: :machine-bmc-command:
+ *
+ * @generated from field: string command_id = 4;
+ */
+ commandId: string;
+};
+/**
+ * Describes the message metalstack.infra.v2.WaitForBMCCommandResponse.
+ * Use `create(WaitForBMCCommandResponseSchema)` to create a new message.
+ */
+export declare const WaitForBMCCommandResponseSchema: GenMessage;
+/**
+ * BMCCommandDoneRequest must be returned after command execution
+ *
+ * @generated from message metalstack.infra.v2.BMCCommandDoneRequest
+ */
+export type BMCCommandDoneRequest = Message<"metalstack.infra.v2.BMCCommandDoneRequest"> & {
+ /**
+ * CommandId is a unique ID which must be sent back after execution
+ * it is usually in the form: :machine-bmc-command
+ *
+ * @generated from field: string command_id = 1;
+ */
+ commandId: string;
+ /**
+ * Error of the command execution, nil if it was successful
+ *
+ * @generated from field: optional string error = 2;
+ */
+ error?: string;
+};
+/**
+ * Describes the message metalstack.infra.v2.BMCCommandDoneRequest.
+ * Use `create(BMCCommandDoneRequestSchema)` to create a new message.
+ */
+export declare const BMCCommandDoneRequestSchema: GenMessage;
+/**
+ * BMCCommandDoneResponse
+ *
+ * @generated from message metalstack.infra.v2.BMCCommandDoneResponse
+ */
+export type BMCCommandDoneResponse = Message<"metalstack.infra.v2.BMCCommandDoneResponse"> & {};
/**
- * Describes the message metalstack.infra.v2.WaitForMachineEventResponse.
- * Use `create(WaitForMachineEventResponseSchema)` to create a new message.
+ * Describes the message metalstack.infra.v2.BMCCommandDoneResponse.
+ * Use `create(BMCCommandDoneResponseSchema)` to create a new message.
*/
-export declare const WaitForMachineEventResponseSchema: GenMessage;
+export declare const BMCCommandDoneResponseSchema: GenMessage;
/**
* BMCService serves bmc related functions
*
@@ -65,13 +163,23 @@ export declare const BMCService: GenService<{
output: typeof UpdateBMCInfoResponseSchema;
};
/**
- * WaitForMachineEvent is called by the metal-bmc and is returned with a bmc command to execute.
+ * WaitForBMCCommand is called by the metal-bmc and is returned with a bmc command to execute.
*
- * @generated from rpc metalstack.infra.v2.BMCService.WaitForMachineEvent
+ * @generated from rpc metalstack.infra.v2.BMCService.WaitForBMCCommand
*/
- waitForMachineEvent: {
+ waitForBMCCommand: {
methodKind: "server_streaming";
- input: typeof WaitForMachineEventRequestSchema;
- output: typeof WaitForMachineEventResponseSchema;
+ input: typeof WaitForBMCCommandRequestSchema;
+ output: typeof WaitForBMCCommandResponseSchema;
+ };
+ /**
+ * BMCCommandDone must be called from metal-bmc after the command execution
+ *
+ * @generated from rpc metalstack.infra.v2.BMCService.BMCCommandDone
+ */
+ bMCCommandDone: {
+ methodKind: "unary";
+ input: typeof BMCCommandDoneRequestSchema;
+ output: typeof BMCCommandDoneResponseSchema;
};
}>;
diff --git a/js/metalstack/infra/v2/bmc_pb.js b/js/metalstack/infra/v2/bmc_pb.js
index 4b2897cf..04800070 100644
--- a/js/metalstack/infra/v2/bmc_pb.js
+++ b/js/metalstack/infra/v2/bmc_pb.js
@@ -2,11 +2,14 @@
// @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_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/infra/v2/bmc.proto.
*/
-export const file_metalstack_infra_v2_bmc = /*@__PURE__*/ fileDesc("Ch1tZXRhbHN0YWNrL2luZnJhL3YyL2JtYy5wcm90bxITbWV0YWxzdGFjay5pbmZyYS52MiIWChRVcGRhdGVCTUNJbmZvUmVxdWVzdCIXChVVcGRhdGVCTUNJbmZvUmVzcG9uc2UiHAoaV2FpdEZvck1hY2hpbmVFdmVudFJlcXVlc3QiHQobV2FpdEZvck1hY2hpbmVFdmVudFJlc3BvbnNlMocCCgpCTUNTZXJ2aWNlEnEKDVVwZGF0ZUJNQ0luZm8SKS5tZXRhbHN0YWNrLmluZnJhLnYyLlVwZGF0ZUJNQ0luZm9SZXF1ZXN0GioubWV0YWxzdGFjay5pbmZyYS52Mi5VcGRhdGVCTUNJbmZvUmVzcG9uc2UiCeDzGALq8xgBARKFAQoTV2FpdEZvck1hY2hpbmVFdmVudBIvLm1ldGFsc3RhY2suaW5mcmEudjIuV2FpdEZvck1hY2hpbmVFdmVudFJlcXVlc3QaMC5tZXRhbHN0YWNrLmluZnJhLnYyLldhaXRGb3JNYWNoaW5lRXZlbnRSZXNwb25zZSIJ4PMYAurzGAEBMAFCzAEKF2NvbS5tZXRhbHN0YWNrLmluZnJhLnYyQghCbWNQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2luZnJhL3YyO2luZnJhdjKiAgNNSViqAhNNZXRhbHN0YWNrLkluZnJhLlYyygITTWV0YWxzdGFja1xJbmZyYVxWMuICH01ldGFsc3RhY2tcSW5mcmFcVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpJbmZyYTo6VjJiBnByb3RvMw", [file_metalstack_api_v2_common]);
+export const file_metalstack_infra_v2_bmc = /*@__PURE__*/ fileDesc("Ch1tZXRhbHN0YWNrL2luZnJhL3YyL2JtYy5wcm90bxITbWV0YWxzdGFjay5pbmZyYS52MiLtAQoUVXBkYXRlQk1DSW5mb1JlcXVlc3QSHgoJcGFydGl0aW9uGAEgASgJQgu6SAhyBtCzrrECARJdCgtibWNfcmVwb3J0cxgCIAMoCzI5Lm1ldGFsc3RhY2suaW5mcmEudjIuVXBkYXRlQk1DSW5mb1JlcXVlc3QuQm1jUmVwb3J0c0VudHJ5Qg26SAqaAQciBXIDsAEBGlYKD0JtY1JlcG9ydHNFbnRyeRILCgNrZXkYASABKAkSMgoFdmFsdWUYAiABKAsyIy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DUmVwb3J0OgI4ASJLChVVcGRhdGVCTUNJbmZvUmVzcG9uc2USGAoQdXBkYXRlZF9tYWNoaW5lcxgBIAMoCRIYChBjcmVhdGVkX21hY2hpbmVzGAIgAygJIjoKGFdhaXRGb3JCTUNDb21tYW5kUmVxdWVzdBIeCglwYXJ0aXRpb24YASABKAlCC7pICHIG0LOusQIBIrYBChlXYWl0Rm9yQk1DQ29tbWFuZFJlc3BvbnNlEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEjkKC2JtY19jb21tYW5kGAIgASgOMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUJNQ0NvbW1hbmQSMgoLbWFjaGluZV9ibWMYAyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lQk1DEhIKCmNvbW1hbmRfaWQYBCABKAkiSQoVQk1DQ29tbWFuZERvbmVSZXF1ZXN0EhIKCmNvbW1hbmRfaWQYASABKAkSEgoFZXJyb3IYAiABKAlIAIgBAUIICgZfZXJyb3IiGAoWQk1DQ29tbWFuZERvbmVSZXNwb25zZTL2AgoKQk1DU2VydmljZRJxCg1VcGRhdGVCTUNJbmZvEikubWV0YWxzdGFjay5pbmZyYS52Mi5VcGRhdGVCTUNJbmZvUmVxdWVzdBoqLm1ldGFsc3RhY2suaW5mcmEudjIuVXBkYXRlQk1DSW5mb1Jlc3BvbnNlIgng8xgC6vMYAQESfwoRV2FpdEZvckJNQ0NvbW1hbmQSLS5tZXRhbHN0YWNrLmluZnJhLnYyLldhaXRGb3JCTUNDb21tYW5kUmVxdWVzdBouLm1ldGFsc3RhY2suaW5mcmEudjIuV2FpdEZvckJNQ0NvbW1hbmRSZXNwb25zZSIJ4PMYAurzGAEBMAESdAoOQk1DQ29tbWFuZERvbmUSKi5tZXRhbHN0YWNrLmluZnJhLnYyLkJNQ0NvbW1hbmREb25lUmVxdWVzdBorLm1ldGFsc3RhY2suaW5mcmEudjIuQk1DQ29tbWFuZERvbmVSZXNwb25zZSIJ4PMYAerzGAEBQswBChdjb20ubWV0YWxzdGFjay5pbmZyYS52MkIIQm1jUHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9pbmZyYS92MjtpbmZyYXYyogIDTUlYqgITTWV0YWxzdGFjay5JbmZyYS5WMsoCE01ldGFsc3RhY2tcSW5mcmFcVjLiAh9NZXRhbHN0YWNrXEluZnJhXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6SW5mcmE6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules]);
/**
* Describes the message metalstack.infra.v2.UpdateBMCInfoRequest.
* Use `create(UpdateBMCInfoRequestSchema)` to create a new message.
@@ -18,15 +21,25 @@ export const UpdateBMCInfoRequestSchema = /*@__PURE__*/ messageDesc(file_metalst
*/
export const UpdateBMCInfoResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_bmc, 1);
/**
- * Describes the message metalstack.infra.v2.WaitForMachineEventRequest.
- * Use `create(WaitForMachineEventRequestSchema)` to create a new message.
+ * Describes the message metalstack.infra.v2.WaitForBMCCommandRequest.
+ * Use `create(WaitForBMCCommandRequestSchema)` to create a new message.
*/
-export const WaitForMachineEventRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_bmc, 2);
+export const WaitForBMCCommandRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_bmc, 2);
/**
- * Describes the message metalstack.infra.v2.WaitForMachineEventResponse.
- * Use `create(WaitForMachineEventResponseSchema)` to create a new message.
+ * Describes the message metalstack.infra.v2.WaitForBMCCommandResponse.
+ * Use `create(WaitForBMCCommandResponseSchema)` to create a new message.
*/
-export const WaitForMachineEventResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_bmc, 3);
+export const WaitForBMCCommandResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_bmc, 3);
+/**
+ * Describes the message metalstack.infra.v2.BMCCommandDoneRequest.
+ * Use `create(BMCCommandDoneRequestSchema)` to create a new message.
+ */
+export const BMCCommandDoneRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_bmc, 4);
+/**
+ * Describes the message metalstack.infra.v2.BMCCommandDoneResponse.
+ * Use `create(BMCCommandDoneResponseSchema)` to create a new message.
+ */
+export const BMCCommandDoneResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_bmc, 5);
/**
* BMCService serves bmc related functions
*
diff --git a/js/metalstack/infra/v2/boot_pb.d.ts b/js/metalstack/infra/v2/boot_pb.d.ts
new file mode 100644
index 00000000..3a6d9ee2
--- /dev/null
+++ b/js/metalstack/infra/v2/boot_pb.d.ts
@@ -0,0 +1,368 @@
+import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
+import type { MachineAllocation, MachineBios, MachineBMC, MachineFRU, MachineHardware } from "../../api/v2/machine_pb";
+import type { Message } from "@bufbuild/protobuf";
+/**
+ * Describes the file metalstack/infra/v2/boot.proto.
+ */
+export declare const file_metalstack_infra_v2_boot: GenFile;
+/**
+ * BootServiceDhcpRequest is called once a machine issues a dhcp request
+ *
+ * @generated from message metalstack.infra.v2.BootServiceDhcpRequest
+ */
+export type BootServiceDhcpRequest = Message<"metalstack.infra.v2.BootServiceDhcpRequest"> & {
+ /**
+ * UUID of the machine
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+ /**
+ * Partition where this machine is located
+ *
+ * @generated from field: string partition = 2;
+ */
+ partition: string;
+};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceDhcpRequest.
+ * Use `create(BootServiceDhcpRequestSchema)` to create a new message.
+ */
+export declare const BootServiceDhcpRequestSchema: GenMessage;
+/**
+ * BootServiceDhcpResponse contains the response to a dhcp request
+ *
+ * @generated from message metalstack.infra.v2.BootServiceDhcpResponse
+ */
+export type BootServiceDhcpResponse = Message<"metalstack.infra.v2.BootServiceDhcpResponse"> & {};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceDhcpResponse.
+ * Use `create(BootServiceDhcpResponseSchema)` to create a new message.
+ */
+export declare const BootServiceDhcpResponseSchema: GenMessage;
+/**
+ * BootServiceBootRequest is called to get specified parameters to boot a machine with the given mac
+ *
+ * @generated from message metalstack.infra.v2.BootServiceBootRequest
+ */
+export type BootServiceBootRequest = Message<"metalstack.infra.v2.BootServiceBootRequest"> & {
+ /**
+ * Mac address of the machine
+ *
+ * @generated from field: string mac = 1;
+ */
+ mac: string;
+ /**
+ * Partition where this machine is located
+ *
+ * @generated from field: string partition = 2;
+ */
+ partition: string;
+};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceBootRequest.
+ * Use `create(BootServiceBootRequestSchema)` to create a new message.
+ */
+export declare const BootServiceBootRequestSchema: GenMessage;
+/**
+ * BootServiceBootResponse contains additional infos which are required to boot a machine
+ *
+ * @generated from message metalstack.infra.v2.BootServiceBootResponse
+ */
+export type BootServiceBootResponse = Message<"metalstack.infra.v2.BootServiceBootResponse"> & {
+ /**
+ * Kernel is the url to the linux kernel to boot
+ *
+ * @generated from field: string kernel = 1;
+ */
+ kernel: string;
+ /**
+ * Initial ram disk is the url to the initial ram disk to boot
+ *
+ * @generated from field: repeated string init_ram_disks = 2;
+ */
+ initRamDisks: string[];
+ /**
+ * CMDLine contains kernel command line parameters to boot
+ *
+ * @generated from field: optional string cmdline = 3;
+ */
+ cmdline?: string;
+};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceBootResponse.
+ * Use `create(BootServiceBootResponseSchema)` to create a new message.
+ */
+export declare const BootServiceBootResponseSchema: GenMessage;
+/**
+ * BootServiceRegisterRequest is called from metal-hammer to register a machine with as much hardware details as possible
+ *
+ * @generated from message metalstack.infra.v2.BootServiceRegisterRequest
+ */
+export type BootServiceRegisterRequest = Message<"metalstack.infra.v2.BootServiceRegisterRequest"> & {
+ /**
+ * UUID of this machine
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+ /**
+ * Hardware details of this machine
+ *
+ * @generated from field: metalstack.api.v2.MachineHardware hardware = 2;
+ */
+ hardware?: MachineHardware;
+ /**
+ * Bios details of this machine
+ *
+ * @generated from field: metalstack.api.v2.MachineBios bios = 3;
+ */
+ bios?: MachineBios;
+ /**
+ * BMC details of this machine
+ *
+ * @generated from field: metalstack.api.v2.MachineBMC bmc = 4;
+ */
+ bmc?: MachineBMC;
+ /**
+ * FRU details of this machine
+ *
+ * @generated from field: metalstack.api.v2.MachineFRU fru = 5;
+ */
+ fru?: MachineFRU;
+ /**
+ * Tags of this machine
+ *
+ * @generated from field: repeated string tags = 6;
+ */
+ tags: string[];
+ /**
+ * MetalHammer version this machine was bootet into
+ *
+ * @generated from field: string metal_hammer_version = 7;
+ */
+ metalHammerVersion: string;
+ /**
+ * Partition where this machine is located
+ *
+ * @generated from field: string partition = 8;
+ */
+ partition: string;
+};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceRegisterRequest.
+ * Use `create(BootServiceRegisterRequestSchema)` to create a new message.
+ */
+export declare const BootServiceRegisterRequestSchema: GenMessage;
+/**
+ * BootServiceRegisterResponse response to a BootServiceRegisterResponse request
+ *
+ * @generated from message metalstack.infra.v2.BootServiceRegisterResponse
+ */
+export type BootServiceRegisterResponse = Message<"metalstack.infra.v2.BootServiceRegisterResponse"> & {
+ /**
+ * UUID of this machine
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+ /**
+ * Size is the calculated size from given hardware details
+ *
+ * @generated from field: string size = 2;
+ */
+ size: string;
+ /**
+ * Partition of this machine
+ *
+ * @generated from field: string partition = 3;
+ */
+ partition: string;
+};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceRegisterResponse.
+ * Use `create(BootServiceRegisterResponseSchema)` to create a new message.
+ */
+export declare const BootServiceRegisterResponseSchema: GenMessage;
+/**
+ * BootServiceWaitRequest is called when a machine was registered and is waiting for allocation
+ *
+ * @generated from message metalstack.infra.v2.BootServiceWaitRequest
+ */
+export type BootServiceWaitRequest = Message<"metalstack.infra.v2.BootServiceWaitRequest"> & {
+ /**
+ * UUID of this machine
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceWaitRequest.
+ * Use `create(BootServiceWaitRequestSchema)` to create a new message.
+ */
+export declare const BootServiceWaitRequestSchema: GenMessage;
+/**
+ * BootServiceWaitResponse response to a wait request
+ *
+ * @generated from message metalstack.infra.v2.BootServiceWaitResponse
+ */
+export type BootServiceWaitResponse = Message<"metalstack.infra.v2.BootServiceWaitResponse"> & {
+ /**
+ * Allocation contains the machine.allocation to actually install the machine
+ *
+ * @generated from field: metalstack.api.v2.MachineAllocation allocation = 1;
+ */
+ allocation?: MachineAllocation;
+};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceWaitResponse.
+ * Use `create(BootServiceWaitResponseSchema)` to create a new message.
+ */
+export declare const BootServiceWaitResponseSchema: GenMessage;
+/**
+ * BootServiceInstallationSucceededRequest is sent from metal-hammer to the api to report the installation succeeded
+ *
+ * @generated from message metalstack.infra.v2.BootServiceInstallationSucceededRequest
+ */
+export type BootServiceInstallationSucceededRequest = Message<"metalstack.infra.v2.BootServiceInstallationSucceededRequest"> & {
+ /**
+ * UUID of the machine to boot
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+ /**
+ * ConsolePassword
+ *
+ * @generated from field: string console_password = 2;
+ */
+ consolePassword: string;
+};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceInstallationSucceededRequest.
+ * Use `create(BootServiceInstallationSucceededRequestSchema)` to create a new message.
+ */
+export declare const BootServiceInstallationSucceededRequestSchema: GenMessage;
+/**
+ * BootServiceInstallationSucceededResponse is the response to a BootServiceInstallationSucceededRequest
+ *
+ * @generated from message metalstack.infra.v2.BootServiceInstallationSucceededResponse
+ */
+export type BootServiceInstallationSucceededResponse = Message<"metalstack.infra.v2.BootServiceInstallationSucceededResponse"> & {};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceInstallationSucceededResponse.
+ * Use `create(BootServiceInstallationSucceededResponseSchema)` to create a new message.
+ */
+export declare const BootServiceInstallationSucceededResponseSchema: GenMessage;
+/**
+ * BootServiceSuperUserPasswordRequest this call returns the password for the machine superuser
+ *
+ * @generated from message metalstack.infra.v2.BootServiceSuperUserPasswordRequest
+ */
+export type BootServiceSuperUserPasswordRequest = Message<"metalstack.infra.v2.BootServiceSuperUserPasswordRequest"> & {
+ /**
+ * UUID of this machine
+ *
+ * @generated from field: string uuid = 1;
+ */
+ uuid: string;
+};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceSuperUserPasswordRequest.
+ * Use `create(BootServiceSuperUserPasswordRequestSchema)` to create a new message.
+ */
+export declare const BootServiceSuperUserPasswordRequestSchema: GenMessage;
+/**
+ * BootServiceSuperUserPasswordResponse the super user password is returned
+ *
+ * @generated from message metalstack.infra.v2.BootServiceSuperUserPasswordResponse
+ */
+export type BootServiceSuperUserPasswordResponse = Message<"metalstack.infra.v2.BootServiceSuperUserPasswordResponse"> & {
+ /**
+ * FeatureDisabled on set the superuserpassword in the bmc if this feature is not disabled.
+ *
+ * @generated from field: bool feature_disabled = 1;
+ */
+ featureDisabled: boolean;
+ /**
+ * SuperUserPassword is the password of the superuser on the ipmi device
+ *
+ * @generated from field: string super_user_password = 2;
+ */
+ superUserPassword: string;
+};
+/**
+ * Describes the message metalstack.infra.v2.BootServiceSuperUserPasswordResponse.
+ * Use `create(BootServiceSuperUserPasswordResponseSchema)` to create a new message.
+ */
+export declare const BootServiceSuperUserPasswordResponseSchema: GenMessage;
+/**
+ * BootService is used for all boot related requests, either pixiecore or metal-hammer
+ *
+ * Pixiecore
+ *
+ * @generated from service metalstack.infra.v2.BootService
+ */
+export declare const BootService: GenService<{
+ /**
+ * Dhcp is the first dhcp request (option 97). A ProvisioningEventPXEBooting is fired
+ *
+ * @generated from rpc metalstack.infra.v2.BootService.Dhcp
+ */
+ dhcp: {
+ methodKind: "unary";
+ input: typeof BootServiceDhcpRequestSchema;
+ output: typeof BootServiceDhcpResponseSchema;
+ };
+ /**
+ * Boot is called from pixie once the machine got the first dhcp response and ipxie asks for subsequent kernel and initrd
+ *
+ * @generated from rpc metalstack.infra.v2.BootService.Boot
+ */
+ boot: {
+ methodKind: "unary";
+ input: typeof BootServiceBootRequestSchema;
+ output: typeof BootServiceBootResponseSchema;
+ };
+ /**
+ * SuperUserPassword metal-hammer takes the configured root password for the bmc from metal-apiserver and configure the bmc accordingly
+ *
+ * @generated from rpc metalstack.infra.v2.BootService.SuperUserPassword
+ */
+ superUserPassword: {
+ methodKind: "unary";
+ input: typeof BootServiceSuperUserPasswordRequestSchema;
+ output: typeof BootServiceSuperUserPasswordResponseSchema;
+ };
+ /**
+ * Register is called from metal-hammer after hardware inventory is finished, tells metal-apiserver all gory details about that machine
+ *
+ * @generated from rpc metalstack.infra.v2.BootService.Register
+ */
+ register: {
+ methodKind: "unary";
+ input: typeof BootServiceRegisterRequestSchema;
+ output: typeof BootServiceRegisterResponseSchema;
+ };
+ /**
+ * Wait is a hanging call that waits until the machine gets allocated by a user
+ *
+ * @generated from rpc metalstack.infra.v2.BootService.Wait
+ */
+ wait: {
+ methodKind: "server_streaming";
+ input: typeof BootServiceWaitRequestSchema;
+ output: typeof BootServiceWaitResponseSchema;
+ };
+ /**
+ * InstallationSucceeded tells metal-apiserver installation was either successful
+ *
+ * @generated from rpc metalstack.infra.v2.BootService.InstallationSucceeded
+ */
+ installationSucceeded: {
+ methodKind: "unary";
+ input: typeof BootServiceInstallationSucceededRequestSchema;
+ output: typeof BootServiceInstallationSucceededResponseSchema;
+ };
+}>;
diff --git a/js/metalstack/infra/v2/boot_pb.js b/js/metalstack/infra/v2/boot_pb.js
new file mode 100644
index 00000000..1092cf36
--- /dev/null
+++ b/js/metalstack/infra/v2/boot_pb.js
@@ -0,0 +1,80 @@
+// @generated by protoc-gen-es v2.11.0 with parameter "target=ts"
+// @generated from file metalstack/infra/v2/boot.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_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/infra/v2/boot.proto.
+ */
+export const file_metalstack_infra_v2_boot = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2luZnJhL3YyL2Jvb3QucHJvdG8SE21ldGFsc3RhY2suaW5mcmEudjIiUAoWQm9vdFNlcnZpY2VEaGNwUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIeCglwYXJ0aXRpb24YAiABKAlCC7pICHIG0LOusQIBIhkKF0Jvb3RTZXJ2aWNlRGhjcFJlc3BvbnNlIlIKFkJvb3RTZXJ2aWNlQm9vdFJlcXVlc3QSGAoDbWFjGAEgASgJQgu6SAhyBrizrrECARIeCglwYXJ0aXRpb24YAiABKAlCC7pICHIG0LOusQIBIn0KF0Jvb3RTZXJ2aWNlQm9vdFJlc3BvbnNlEhsKBmtlcm5lbBgBIAEoCUILukgIcgbgs66xAgESFgoOaW5pdF9yYW1fZGlza3MYAiADKAkSIQoHY21kbGluZRgDIAEoCUILukgIcgbIs66xAgFIAIgBAUIKCghfY21kbGluZSLJAgoaQm9vdFNlcnZpY2VSZWdpc3RlclJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQESNAoIaGFyZHdhcmUYAiABKAsyIi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lSGFyZHdhcmUSLAoEYmlvcxgDIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCaW9zEioKA2JtYxgEIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVCTUMSKgoDZnJ1GAUgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUZSVRIMCgR0YWdzGAYgAygJEikKFG1ldGFsX2hhbW1lcl92ZXJzaW9uGAcgASgJQgu6SAhyBsizrrECARIeCglwYXJ0aXRpb24YCCABKAlCC7pICHIG0LOusQIBInAKG0Jvb3RTZXJ2aWNlUmVnaXN0ZXJSZXNwb25zZRIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIZCgRzaXplGAIgASgJQgu6SAhyBsizrrECARIeCglwYXJ0aXRpb24YAyABKAlCC7pICHIG0LOusQIBIjAKFkJvb3RTZXJ2aWNlV2FpdFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQEiUwoXQm9vdFNlcnZpY2VXYWl0UmVzcG9uc2USOAoKYWxsb2NhdGlvbhgBIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVBbGxvY2F0aW9uImcKJ0Jvb3RTZXJ2aWNlSW5zdGFsbGF0aW9uU3VjY2VlZGVkUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARIkChBjb25zb2xlX3Bhc3N3b3JkGAIgASgJQgq6SAdyBRACGIABIioKKEJvb3RTZXJ2aWNlSW5zdGFsbGF0aW9uU3VjY2VlZGVkUmVzcG9uc2UiPQojQm9vdFNlcnZpY2VTdXBlclVzZXJQYXNzd29yZFJlcXVlc3QSFgoEdXVpZBgBIAEoCUIIukgFcgOwAQEiaQokQm9vdFNlcnZpY2VTdXBlclVzZXJQYXNzd29yZFJlc3BvbnNlEhgKEGZlYXR1cmVfZGlzYWJsZWQYASABKAgSJwoTc3VwZXJfdXNlcl9wYXNzd29yZBgCIAEoCUIKukgHcgUQAhiAATKLBgoLQm9vdFNlcnZpY2USbAoERGhjcBIrLm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VEaGNwUmVxdWVzdBosLm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VEaGNwUmVzcG9uc2UiCeDzGALq8xgBARJsCgRCb290EisubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZUJvb3RSZXF1ZXN0GiwubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZUJvb3RSZXNwb25zZSIJ4PMYAurzGAEBEpMBChFTdXBlclVzZXJQYXNzd29yZBI4Lm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VTdXBlclVzZXJQYXNzd29yZFJlcXVlc3QaOS5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlU3VwZXJVc2VyUGFzc3dvcmRSZXNwb25zZSIJ4PMYAvLzGAEBEngKCFJlZ2lzdGVyEi8ubWV0YWxzdGFjay5pbmZyYS52Mi5Cb290U2VydmljZVJlZ2lzdGVyUmVxdWVzdBowLm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VSZWdpc3RlclJlc3BvbnNlIgng8xgC8vMYAQESbgoEV2FpdBIrLm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VXYWl0UmVxdWVzdBosLm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VXYWl0UmVzcG9uc2UiCeDzGALy8xgBATABEp8BChVJbnN0YWxsYXRpb25TdWNjZWVkZWQSPC5tZXRhbHN0YWNrLmluZnJhLnYyLkJvb3RTZXJ2aWNlSW5zdGFsbGF0aW9uU3VjY2VlZGVkUmVxdWVzdBo9Lm1ldGFsc3RhY2suaW5mcmEudjIuQm9vdFNlcnZpY2VJbnN0YWxsYXRpb25TdWNjZWVkZWRSZXNwb25zZSIJ4PMYAvLzGAEBQs0BChdjb20ubWV0YWxzdGFjay5pbmZyYS52MkIJQm9vdFByb3RvUAFaOWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svaW5mcmEvdjI7aW5mcmF2MqICA01JWKoCE01ldGFsc3RhY2suSW5mcmEuVjLKAhNNZXRhbHN0YWNrXEluZnJhXFYy4gIfTWV0YWxzdGFja1xJbmZyYVxWMlxHUEJNZXRhZGF0YeoCFU1ldGFsc3RhY2s6OkluZnJhOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules]);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceDhcpRequest.
+ * Use `create(BootServiceDhcpRequestSchema)` to create a new message.
+ */
+export const BootServiceDhcpRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 0);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceDhcpResponse.
+ * Use `create(BootServiceDhcpResponseSchema)` to create a new message.
+ */
+export const BootServiceDhcpResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 1);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceBootRequest.
+ * Use `create(BootServiceBootRequestSchema)` to create a new message.
+ */
+export const BootServiceBootRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 2);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceBootResponse.
+ * Use `create(BootServiceBootResponseSchema)` to create a new message.
+ */
+export const BootServiceBootResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 3);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceRegisterRequest.
+ * Use `create(BootServiceRegisterRequestSchema)` to create a new message.
+ */
+export const BootServiceRegisterRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 4);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceRegisterResponse.
+ * Use `create(BootServiceRegisterResponseSchema)` to create a new message.
+ */
+export const BootServiceRegisterResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 5);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceWaitRequest.
+ * Use `create(BootServiceWaitRequestSchema)` to create a new message.
+ */
+export const BootServiceWaitRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 6);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceWaitResponse.
+ * Use `create(BootServiceWaitResponseSchema)` to create a new message.
+ */
+export const BootServiceWaitResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 7);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceInstallationSucceededRequest.
+ * Use `create(BootServiceInstallationSucceededRequestSchema)` to create a new message.
+ */
+export const BootServiceInstallationSucceededRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 8);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceInstallationSucceededResponse.
+ * Use `create(BootServiceInstallationSucceededResponseSchema)` to create a new message.
+ */
+export const BootServiceInstallationSucceededResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 9);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceSuperUserPasswordRequest.
+ * Use `create(BootServiceSuperUserPasswordRequestSchema)` to create a new message.
+ */
+export const BootServiceSuperUserPasswordRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 10);
+/**
+ * Describes the message metalstack.infra.v2.BootServiceSuperUserPasswordResponse.
+ * Use `create(BootServiceSuperUserPasswordResponseSchema)` to create a new message.
+ */
+export const BootServiceSuperUserPasswordResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_infra_v2_boot, 11);
+/**
+ * BootService is used for all boot related requests, either pixiecore or metal-hammer
+ *
+ * Pixiecore
+ *
+ * @generated from service metalstack.infra.v2.BootService
+ */
+export const BootService = /*@__PURE__*/ serviceDesc(file_metalstack_infra_v2_boot, 0);
diff --git a/proto/metalstack/admin/v2/partition.proto b/proto/metalstack/admin/v2/partition.proto
index 6e3b8bdd..25a0ceb3 100644
--- a/proto/metalstack/admin/v2/partition.proto
+++ b/proto/metalstack/admin/v2/partition.proto
@@ -96,37 +96,55 @@ message PartitionServiceCapacityRequest {
// PartitionServiceCapacityResponse is the response payload for a partition capacity request
message PartitionServiceCapacityResponse {
+ // PartitionCapacity is a capacity report per partition
+ repeated PartitionCapacity partition_capacity = 1;
+}
+
+// PartitionCapacity is the capacity of one partition
+message PartitionCapacity {
+ // Partition of which this capacity is reported.
+ string partition = 1;
+ // MachineSizeCapacities is the capacity per machine size.
+ repeated MachineSizeCapacity machine_size_capacities = 2;
+}
+
+// ServerCapacity is the capacity of one server type, eg machine size
+message MachineSizeCapacity {
// Size is the size id correlating to all counts in this server capacity.
- string size = 1;
+ string size = 2;
// Total is the total amount of machines for this size.
- int64 total = 2;
+ int64 total = 3;
+
// PhonedHome is the amount of machines that are currently in the provisioning state "phoned home".
- int64 phoned_home = 3;
+ int64 phoned_home = 4;
// Waiting is the amount of machines that are currently in the provisioning state "waiting".
- int64 waiting = 4;
+ int64 waiting = 5;
// Other is the amount of machines that are neither in the provisioning state waiting nor in phoned home but in another provisioning state.
- int64 other = 5;
+ int64 other = 6;
// OtherMachines contains the machine IDs for machines that were classified into "Other".
- repeated string other_machines = 6;
+ repeated string other_machines = 7;
+
// Allocated is the amount of machines that are currently allocated.
- int64 allocated = 7;
+ int64 allocated = 8;
// 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.
- int64 allocatable = 8;
+ int64 allocatable = 9;
// 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.
- int64 free = 9;
+ int64 free = 10;
// 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.
- int64 unavailable = 10;
+ int64 unavailable = 11;
+
// Faulty is the amount of machines that are neither allocated nor in the pool of available machines because they report an error.
- int64 faulty = 11;
+ int64 faulty = 12;
// FaultyMachines contains the machine IDs for machines that were classified into "Faulty".
- repeated string faulty_machines = 12;
+ repeated string faulty_machines = 13;
+
// Reservations is the amount of reservations made for this size.
- int64 reservations = 13;
+ int64 reservations = 14;
// UsedReservations is the amount of reservations already used up for this size.
- int64 used_reservations = 14;
+ int64 used_reservations = 15;
// RemainingReservations is the amount of reservations remaining for this size.
- int64 remaining_reservations = 15;
+ int64 remaining_reservations = 16;
}
diff --git a/python/metalstack/admin/v2/partition_pb2.py b/python/metalstack/admin/v2/partition_pb2.py
index 53f35e8f..01472232 100644
--- a/python/metalstack/admin/v2/partition_pb2.py
+++ b/python/metalstack/admin/v2/partition_pb2.py
@@ -28,7 +28,7 @@
from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#metalstack/admin/v2/partition.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a!metalstack/api/v2/partition.proto\x1a(metalstack/api/v2/predefined_rules.proto\"[\n\x1dPartitionServiceCreateRequest\x12:\n\tpartition\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\"\xb3\x04\n\x1dPartitionServiceUpdateRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\x02id\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\\\n\x12\x62oot_configuration\x18\x04 \x01(\x0b\x32-.metalstack.api.v2.PartitionBootConfigurationR\x11\x62ootConfiguration\x12\x45\n\ndns_server\x18\x05 \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\tdnsServer\x12\x45\n\nntp_server\x18\x06 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\tntpServer\x12\x34\n\x16mgmt_service_addresses\x18\x07 \x03(\tR\x14mgmtServiceAddresses\x12<\n\x06labels\x18\x08 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x01R\x06labels\x88\x01\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_labels\"<\n\x1dPartitionServiceDeleteRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\x02id\"\\\n\x1ePartitionServiceCreateResponse\x12:\n\tpartition\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\"\\\n\x1ePartitionServiceUpdateResponse\x12:\n\tpartition\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\"\\\n\x1ePartitionServiceDeleteResponse\x12:\n\tpartition\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\"\xae\x01\n\x1fPartitionServiceCapacityRequest\x12 \n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x00R\x02id\x88\x01\x01\x12$\n\x04size\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04size\x88\x01\x01\x12\'\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x02R\x07project\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_sizeB\n\n\x08_project\"\x83\x04\n PartitionServiceCapacityResponse\x12\x12\n\x04size\x18\x01 \x01(\tR\x04size\x12\x14\n\x05total\x18\x02 \x01(\x03R\x05total\x12\x1f\n\x0bphoned_home\x18\x03 \x01(\x03R\nphonedHome\x12\x18\n\x07waiting\x18\x04 \x01(\x03R\x07waiting\x12\x14\n\x05other\x18\x05 \x01(\x03R\x05other\x12%\n\x0eother_machines\x18\x06 \x03(\tR\rotherMachines\x12\x1c\n\tallocated\x18\x07 \x01(\x03R\tallocated\x12 \n\x0b\x61llocatable\x18\x08 \x01(\x03R\x0b\x61llocatable\x12\x12\n\x04\x66ree\x18\t \x01(\x03R\x04\x66ree\x12 \n\x0bunavailable\x18\n \x01(\x03R\x0bunavailable\x12\x16\n\x06\x66\x61ulty\x18\x0b \x01(\x03R\x06\x66\x61ulty\x12\'\n\x0f\x66\x61ulty_machines\x18\x0c \x03(\tR\x0e\x66\x61ultyMachines\x12\"\n\x0creservations\x18\r \x01(\x03R\x0creservations\x12+\n\x11used_reservations\x18\x0e \x01(\x03R\x10usedReservations\x12\x35\n\x16remaining_reservations\x18\x0f \x01(\x03R\x15remainingReservations2\x92\x04\n\x10PartitionService\x12|\n\x06\x43reate\x12\x32.metalstack.admin.v2.PartitionServiceCreateRequest\x1a\x33.metalstack.admin.v2.PartitionServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12|\n\x06Update\x12\x32.metalstack.admin.v2.PartitionServiceUpdateRequest\x1a\x33.metalstack.admin.v2.PartitionServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12|\n\x06\x44\x65lete\x12\x32.metalstack.admin.v2.PartitionServiceDeleteRequest\x1a\x33.metalstack.admin.v2.PartitionServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x08\x43\x61pacity\x12\x34.metalstack.admin.v2.PartitionServiceCapacityRequest\x1a\x35.metalstack.admin.v2.PartitionServiceCapacityResponse\"\n\xd2\xf3\x18\x02\x02\x01\xe0\xf3\x18\x02\x42\xd2\x01\n\x17\x63om.metalstack.admin.v2B\x0ePartitionProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#metalstack/admin/v2/partition.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a!metalstack/api/v2/partition.proto\x1a(metalstack/api/v2/predefined_rules.proto\"[\n\x1dPartitionServiceCreateRequest\x12:\n\tpartition\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\"\xb3\x04\n\x1dPartitionServiceUpdateRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\x02id\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\\\n\x12\x62oot_configuration\x18\x04 \x01(\x0b\x32-.metalstack.api.v2.PartitionBootConfigurationR\x11\x62ootConfiguration\x12\x45\n\ndns_server\x18\x05 \x03(\x0b\x32\x1c.metalstack.api.v2.DNSServerB\x08\xbaH\x05\x92\x01\x02\x10\x03R\tdnsServer\x12\x45\n\nntp_server\x18\x06 \x03(\x0b\x32\x1c.metalstack.api.v2.NTPServerB\x08\xbaH\x05\x92\x01\x02\x10\nR\tntpServer\x12\x34\n\x16mgmt_service_addresses\x18\x07 \x03(\tR\x14mgmtServiceAddresses\x12<\n\x06labels\x18\x08 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x01R\x06labels\x88\x01\x01\x42\x0e\n\x0c_descriptionB\t\n\x07_labels\"<\n\x1dPartitionServiceDeleteRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\x02id\"\\\n\x1ePartitionServiceCreateResponse\x12:\n\tpartition\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\"\\\n\x1ePartitionServiceUpdateResponse\x12:\n\tpartition\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\"\\\n\x1ePartitionServiceDeleteResponse\x12:\n\tpartition\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.PartitionR\tpartition\"\xae\x01\n\x1fPartitionServiceCapacityRequest\x12 \n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x00R\x02id\x88\x01\x01\x12$\n\x04size\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04size\x88\x01\x01\x12\'\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x02R\x07project\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_sizeB\n\n\x08_project\"y\n PartitionServiceCapacityResponse\x12U\n\x12partition_capacity\x18\x01 \x03(\x0b\x32&.metalstack.admin.v2.PartitionCapacityR\x11partitionCapacity\"\x93\x01\n\x11PartitionCapacity\x12\x1c\n\tpartition\x18\x01 \x01(\tR\tpartition\x12`\n\x17machine_size_capacities\x18\x02 \x03(\x0b\x32(.metalstack.admin.v2.MachineSizeCapacityR\x15machineSizeCapacities\"\xf6\x03\n\x13MachineSizeCapacity\x12\x12\n\x04size\x18\x02 \x01(\tR\x04size\x12\x14\n\x05total\x18\x03 \x01(\x03R\x05total\x12\x1f\n\x0bphoned_home\x18\x04 \x01(\x03R\nphonedHome\x12\x18\n\x07waiting\x18\x05 \x01(\x03R\x07waiting\x12\x14\n\x05other\x18\x06 \x01(\x03R\x05other\x12%\n\x0eother_machines\x18\x07 \x03(\tR\rotherMachines\x12\x1c\n\tallocated\x18\x08 \x01(\x03R\tallocated\x12 \n\x0b\x61llocatable\x18\t \x01(\x03R\x0b\x61llocatable\x12\x12\n\x04\x66ree\x18\n \x01(\x03R\x04\x66ree\x12 \n\x0bunavailable\x18\x0b \x01(\x03R\x0bunavailable\x12\x16\n\x06\x66\x61ulty\x18\x0c \x01(\x03R\x06\x66\x61ulty\x12\'\n\x0f\x66\x61ulty_machines\x18\r \x03(\tR\x0e\x66\x61ultyMachines\x12\"\n\x0creservations\x18\x0e \x01(\x03R\x0creservations\x12+\n\x11used_reservations\x18\x0f \x01(\x03R\x10usedReservations\x12\x35\n\x16remaining_reservations\x18\x10 \x01(\x03R\x15remainingReservations2\x92\x04\n\x10PartitionService\x12|\n\x06\x43reate\x12\x32.metalstack.admin.v2.PartitionServiceCreateRequest\x1a\x33.metalstack.admin.v2.PartitionServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12|\n\x06Update\x12\x32.metalstack.admin.v2.PartitionServiceUpdateRequest\x1a\x33.metalstack.admin.v2.PartitionServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12|\n\x06\x44\x65lete\x12\x32.metalstack.admin.v2.PartitionServiceDeleteRequest\x1a\x33.metalstack.admin.v2.PartitionServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x08\x43\x61pacity\x12\x34.metalstack.admin.v2.PartitionServiceCapacityRequest\x1a\x35.metalstack.admin.v2.PartitionServiceCapacityResponse\"\n\xd2\xf3\x18\x02\x02\x01\xe0\xf3\x18\x02\x42\xd2\x01\n\x17\x63om.metalstack.admin.v2B\x0ePartitionProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -76,8 +76,12 @@
_globals['_PARTITIONSERVICEDELETERESPONSE']._serialized_end=1199
_globals['_PARTITIONSERVICECAPACITYREQUEST']._serialized_start=1202
_globals['_PARTITIONSERVICECAPACITYREQUEST']._serialized_end=1376
- _globals['_PARTITIONSERVICECAPACITYRESPONSE']._serialized_start=1379
- _globals['_PARTITIONSERVICECAPACITYRESPONSE']._serialized_end=1894
- _globals['_PARTITIONSERVICE']._serialized_start=1897
- _globals['_PARTITIONSERVICE']._serialized_end=2427
+ _globals['_PARTITIONSERVICECAPACITYRESPONSE']._serialized_start=1378
+ _globals['_PARTITIONSERVICECAPACITYRESPONSE']._serialized_end=1499
+ _globals['_PARTITIONCAPACITY']._serialized_start=1502
+ _globals['_PARTITIONCAPACITY']._serialized_end=1649
+ _globals['_MACHINESIZECAPACITY']._serialized_start=1652
+ _globals['_MACHINESIZECAPACITY']._serialized_end=2154
+ _globals['_PARTITIONSERVICE']._serialized_start=2157
+ _globals['_PARTITIONSERVICE']._serialized_end=2687
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/admin/v2/partition_pb2.pyi b/python/metalstack/admin/v2/partition_pb2.pyi
index 1b04af80..c3a03de5 100644
--- a/python/metalstack/admin/v2/partition_pb2.pyi
+++ b/python/metalstack/admin/v2/partition_pb2.pyi
@@ -71,6 +71,20 @@ class PartitionServiceCapacityRequest(_message.Message):
def __init__(self, id: _Optional[str] = ..., size: _Optional[str] = ..., project: _Optional[str] = ...) -> None: ...
class PartitionServiceCapacityResponse(_message.Message):
+ __slots__ = ("partition_capacity",)
+ PARTITION_CAPACITY_FIELD_NUMBER: _ClassVar[int]
+ partition_capacity: _containers.RepeatedCompositeFieldContainer[PartitionCapacity]
+ def __init__(self, partition_capacity: _Optional[_Iterable[_Union[PartitionCapacity, _Mapping]]] = ...) -> None: ...
+
+class PartitionCapacity(_message.Message):
+ __slots__ = ("partition", "machine_size_capacities")
+ PARTITION_FIELD_NUMBER: _ClassVar[int]
+ MACHINE_SIZE_CAPACITIES_FIELD_NUMBER: _ClassVar[int]
+ partition: str
+ machine_size_capacities: _containers.RepeatedCompositeFieldContainer[MachineSizeCapacity]
+ def __init__(self, partition: _Optional[str] = ..., machine_size_capacities: _Optional[_Iterable[_Union[MachineSizeCapacity, _Mapping]]] = ...) -> None: ...
+
+class MachineSizeCapacity(_message.Message):
__slots__ = ("size", "total", "phoned_home", "waiting", "other", "other_machines", "allocated", "allocatable", "free", "unavailable", "faulty", "faulty_machines", "reservations", "used_reservations", "remaining_reservations")
SIZE_FIELD_NUMBER: _ClassVar[int]
TOTAL_FIELD_NUMBER: _ClassVar[int]