SwitchWithMachines contains a mapping from switch ports to connected machines.
+ SizeReservationServiceUpdateResponse is the response payload for updating a size reservation.
@@ -17748,31 +18149,10 @@
- | id |
- string |
- |
- Id of the switch. |
-
-
-
- | partition |
- string |
- |
- Partition of the switch. |
-
-
-
- | rack |
- string |
+ size_reservation |
+ metalstack.api.v2.SizeReservation |
|
- Rack of the switch. |
-
-
-
- | connections |
- SwitchNicWithMachine |
- repeated |
- Connections associates switch ports with the machines connected to them. |
+ SizeReservation contains the updated reservation. |
@@ -17784,156 +18164,50 @@
-
- BGPState represents the state of a BGP session.
-
-
- | Name | Number | Description |
-
-
-
-
- | BGP_STATE_UNSPECIFIED |
- 0 |
- BGP_STATE_UNSPECIFIED is not specified. |
-
-
-
- | BGP_STATE_IDLE |
- 1 |
- BGP_STATE_IDLE is the Idle state of a BGP session. |
-
-
-
- | BGP_STATE_CONNECT |
- 2 |
- BGP_STATE_CONNECT is the Connect state of a BGP session. |
-
-
-
- | BGP_STATE_ACTIVE |
- 3 |
- BGP_STATE_ACTIVE is the Active state of a BGP session. |
-
-
-
- | BGP_STATE_OPEN_SENT |
- 4 |
- BGP_STATE_OPEN_SENT is the OpenSent state of a BGP session. |
-
-
-
- | BGP_STATE_OPEN_CONFIRM |
- 5 |
- BGP_STATE_OPEN_CONFIRM is the OpenConfirm state of a BGP session. |
-
-
-
- | BGP_STATE_ESTABLISHED |
- 6 |
- BGP_STATE_ESTABLISHED is the Established state of a BGP session. |
-
-
-
-
+
-
- SwitchOSVendor represents a NOS distribution.
-
-
- | Name | Number | Description |
-
-
-
-
- | SWITCH_OS_VENDOR_UNSPECIFIED |
- 0 |
- SWITCH_OS_VENDOR_UNSPECIFIED is not specified. |
-
-
-
- | SWITCH_OS_VENDOR_CUMULUS |
- 1 |
- SWITCH_OS_VENDOR_CUMULUS means this switch is running on Cumulus Linux. |
-
-
-
- | SWITCH_OS_VENDOR_SONIC |
- 2 |
- SWITCH_OS_VENDOR_SONIC means this switch is running on SONiC NOS. |
-
-
-
-
+
-
- SwitchPortStatus specifies the state of a switch port.
+
+ SizeReservationService provides size reservation management operations.
- | Name | Number | Description |
+ | Method Name | Request Type | Response Type | Description |
- | SWITCH_PORT_STATUS_UNSPECIFIED |
- 0 |
- SWITCH_PORT_STATUS_UNSPECIFIED is not specified. |
-
-
-
- | SWITCH_PORT_STATUS_UP |
- 1 |
- SWITCH_PORT_STATUS_UP means this port is up. |
-
-
-
- | SWITCH_PORT_STATUS_DOWN |
- 2 |
- SWITCH_PORT_STATUS_DOWN means this port is down. |
-
-
-
- | SWITCH_PORT_STATUS_UNKNOWN |
- 3 |
- SWITCH_PORT_STATUS_UNKNOWN means the status of this port is unknown. |
+ Create |
+ SizeReservationServiceCreateRequest |
+ SizeReservationServiceCreateResponse |
+ Creates a new size reservation. |
-
-
-
-
- SwitchReplaceMode is used to mark a switch ready for replacement.
-
-
-
-
-
+
diff --git a/go/metalstack/admin/v2/adminv2connect/network.connect.go b/go/metalstack/admin/v2/adminv2connect/network.connect.go
index 039d93d0..8683bcda 100644
--- a/go/metalstack/admin/v2/adminv2connect/network.connect.go
+++ b/go/metalstack/admin/v2/adminv2connect/network.connect.go
@@ -43,6 +43,12 @@ const (
NetworkServiceDeleteProcedure = "/metalstack.admin.v2.NetworkService/Delete"
// NetworkServiceListProcedure is the fully-qualified name of the NetworkService's List RPC.
NetworkServiceListProcedure = "/metalstack.admin.v2.NetworkService/List"
+ // NetworkServiceAddExternalMemberProcedure is the fully-qualified name of the NetworkService's
+ // AddExternalMember RPC.
+ NetworkServiceAddExternalMemberProcedure = "/metalstack.admin.v2.NetworkService/AddExternalMember"
+ // NetworkServiceRemoveExternalMemberProcedure is the fully-qualified name of the NetworkService's
+ // RemoveExternalMember RPC.
+ NetworkServiceRemoveExternalMemberProcedure = "/metalstack.admin.v2.NetworkService/RemoveExternalMember"
)
// NetworkServiceClient is a client for the metalstack.admin.v2.NetworkService service.
@@ -57,6 +63,10 @@ type NetworkServiceClient interface {
Delete(context.Context, *v2.NetworkServiceDeleteRequest) (*v2.NetworkServiceDeleteResponse, error)
// Returns the list of all networks.
List(context.Context, *v2.NetworkServiceListRequest) (*v2.NetworkServiceListResponse, error)
+ // Adds an external member to a network.
+ AddExternalMember(context.Context, *v2.NetworkServiceAddExternalMemberRequest) (*v2.NetworkServiceAddExternalMemberResponse, error)
+ // Removes an external member from a network.
+ RemoveExternalMember(context.Context, *v2.NetworkServiceRemoveExternalMemberRequest) (*v2.NetworkServiceRemoveExternalMemberResponse, error)
}
// NewNetworkServiceClient constructs a client for the metalstack.admin.v2.NetworkService service.
@@ -100,16 +110,30 @@ func NewNetworkServiceClient(httpClient connect.HTTPClient, baseURL string, opts
connect.WithSchema(networkServiceMethods.ByName("List")),
connect.WithClientOptions(opts...),
),
+ addExternalMember: connect.NewClient[v2.NetworkServiceAddExternalMemberRequest, v2.NetworkServiceAddExternalMemberResponse](
+ httpClient,
+ baseURL+NetworkServiceAddExternalMemberProcedure,
+ connect.WithSchema(networkServiceMethods.ByName("AddExternalMember")),
+ connect.WithClientOptions(opts...),
+ ),
+ removeExternalMember: connect.NewClient[v2.NetworkServiceRemoveExternalMemberRequest, v2.NetworkServiceRemoveExternalMemberResponse](
+ httpClient,
+ baseURL+NetworkServiceRemoveExternalMemberProcedure,
+ connect.WithSchema(networkServiceMethods.ByName("RemoveExternalMember")),
+ connect.WithClientOptions(opts...),
+ ),
}
}
// networkServiceClient implements NetworkServiceClient.
type networkServiceClient struct {
- get *connect.Client[v2.NetworkServiceGetRequest, v2.NetworkServiceGetResponse]
- create *connect.Client[v2.NetworkServiceCreateRequest, v2.NetworkServiceCreateResponse]
- update *connect.Client[v2.NetworkServiceUpdateRequest, v2.NetworkServiceUpdateResponse]
- delete *connect.Client[v2.NetworkServiceDeleteRequest, v2.NetworkServiceDeleteResponse]
- list *connect.Client[v2.NetworkServiceListRequest, v2.NetworkServiceListResponse]
+ get *connect.Client[v2.NetworkServiceGetRequest, v2.NetworkServiceGetResponse]
+ create *connect.Client[v2.NetworkServiceCreateRequest, v2.NetworkServiceCreateResponse]
+ update *connect.Client[v2.NetworkServiceUpdateRequest, v2.NetworkServiceUpdateResponse]
+ delete *connect.Client[v2.NetworkServiceDeleteRequest, v2.NetworkServiceDeleteResponse]
+ list *connect.Client[v2.NetworkServiceListRequest, v2.NetworkServiceListResponse]
+ addExternalMember *connect.Client[v2.NetworkServiceAddExternalMemberRequest, v2.NetworkServiceAddExternalMemberResponse]
+ removeExternalMember *connect.Client[v2.NetworkServiceRemoveExternalMemberRequest, v2.NetworkServiceRemoveExternalMemberResponse]
}
// Get calls metalstack.admin.v2.NetworkService.Get.
@@ -157,6 +181,24 @@ func (c *networkServiceClient) List(ctx context.Context, req *v2.NetworkServiceL
return nil, err
}
+// AddExternalMember calls metalstack.admin.v2.NetworkService.AddExternalMember.
+func (c *networkServiceClient) AddExternalMember(ctx context.Context, req *v2.NetworkServiceAddExternalMemberRequest) (*v2.NetworkServiceAddExternalMemberResponse, error) {
+ response, err := c.addExternalMember.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
+// RemoveExternalMember calls metalstack.admin.v2.NetworkService.RemoveExternalMember.
+func (c *networkServiceClient) RemoveExternalMember(ctx context.Context, req *v2.NetworkServiceRemoveExternalMemberRequest) (*v2.NetworkServiceRemoveExternalMemberResponse, error) {
+ response, err := c.removeExternalMember.CallUnary(ctx, connect.NewRequest(req))
+ if response != nil {
+ return response.Msg, err
+ }
+ return nil, err
+}
+
// NetworkServiceHandler is an implementation of the metalstack.admin.v2.NetworkService service.
type NetworkServiceHandler interface {
// Returns the network with the specified ID.
@@ -169,6 +211,10 @@ type NetworkServiceHandler interface {
Delete(context.Context, *v2.NetworkServiceDeleteRequest) (*v2.NetworkServiceDeleteResponse, error)
// Returns the list of all networks.
List(context.Context, *v2.NetworkServiceListRequest) (*v2.NetworkServiceListResponse, error)
+ // Adds an external member to a network.
+ AddExternalMember(context.Context, *v2.NetworkServiceAddExternalMemberRequest) (*v2.NetworkServiceAddExternalMemberResponse, error)
+ // Removes an external member from a network.
+ RemoveExternalMember(context.Context, *v2.NetworkServiceRemoveExternalMemberRequest) (*v2.NetworkServiceRemoveExternalMemberResponse, error)
}
// NewNetworkServiceHandler builds an HTTP handler from the service implementation. It returns the
@@ -208,6 +254,18 @@ func NewNetworkServiceHandler(svc NetworkServiceHandler, opts ...connect.Handler
connect.WithSchema(networkServiceMethods.ByName("List")),
connect.WithHandlerOptions(opts...),
)
+ networkServiceAddExternalMemberHandler := connect.NewUnaryHandlerSimple(
+ NetworkServiceAddExternalMemberProcedure,
+ svc.AddExternalMember,
+ connect.WithSchema(networkServiceMethods.ByName("AddExternalMember")),
+ connect.WithHandlerOptions(opts...),
+ )
+ networkServiceRemoveExternalMemberHandler := connect.NewUnaryHandlerSimple(
+ NetworkServiceRemoveExternalMemberProcedure,
+ svc.RemoveExternalMember,
+ connect.WithSchema(networkServiceMethods.ByName("RemoveExternalMember")),
+ connect.WithHandlerOptions(opts...),
+ )
return "/metalstack.admin.v2.NetworkService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case NetworkServiceGetProcedure:
@@ -220,6 +278,10 @@ func NewNetworkServiceHandler(svc NetworkServiceHandler, opts ...connect.Handler
networkServiceDeleteHandler.ServeHTTP(w, r)
case NetworkServiceListProcedure:
networkServiceListHandler.ServeHTTP(w, r)
+ case NetworkServiceAddExternalMemberProcedure:
+ networkServiceAddExternalMemberHandler.ServeHTTP(w, r)
+ case NetworkServiceRemoveExternalMemberProcedure:
+ networkServiceRemoveExternalMemberHandler.ServeHTTP(w, r)
default:
http.NotFound(w, r)
}
@@ -248,3 +310,11 @@ func (UnimplementedNetworkServiceHandler) Delete(context.Context, *v2.NetworkSer
func (UnimplementedNetworkServiceHandler) List(context.Context, *v2.NetworkServiceListRequest) (*v2.NetworkServiceListResponse, error) {
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.NetworkService.List is not implemented"))
}
+
+func (UnimplementedNetworkServiceHandler) AddExternalMember(context.Context, *v2.NetworkServiceAddExternalMemberRequest) (*v2.NetworkServiceAddExternalMemberResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.NetworkService.AddExternalMember is not implemented"))
+}
+
+func (UnimplementedNetworkServiceHandler) RemoveExternalMember(context.Context, *v2.NetworkServiceRemoveExternalMemberRequest) (*v2.NetworkServiceRemoveExternalMemberResponse, error) {
+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.NetworkService.RemoveExternalMember is not implemented"))
+}
diff --git a/go/metalstack/admin/v2/network.pb.go b/go/metalstack/admin/v2/network.pb.go
index 47ca1969..e31af0fe 100644
--- a/go/metalstack/admin/v2/network.pb.go
+++ b/go/metalstack/admin/v2/network.pb.go
@@ -542,6 +542,172 @@ func (x *NetworkServiceListRequest) GetQuery() *v2.NetworkQuery {
return nil
}
+// NetworkServiceListExternalMemberRequest is the request payload for listing external members of a network.
+type NetworkServiceListExternalMemberRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Network to list the members for.
+ Network string `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"`
+ // Query specifies additional filters for the list request.
+ Query *v2.ExternalNetworkMemberQuery `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *NetworkServiceListExternalMemberRequest) Reset() {
+ *x = NetworkServiceListExternalMemberRequest{}
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *NetworkServiceListExternalMemberRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NetworkServiceListExternalMemberRequest) ProtoMessage() {}
+
+func (x *NetworkServiceListExternalMemberRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[6]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NetworkServiceListExternalMemberRequest.ProtoReflect.Descriptor instead.
+func (*NetworkServiceListExternalMemberRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *NetworkServiceListExternalMemberRequest) GetNetwork() string {
+ if x != nil {
+ return x.Network
+ }
+ return ""
+}
+
+func (x *NetworkServiceListExternalMemberRequest) GetQuery() *v2.ExternalNetworkMemberQuery {
+ if x != nil {
+ return x.Query
+ }
+ return nil
+}
+
+// NetworkServiceAddExternalMemberRequest is the request payload for adding an external member to a network.
+type NetworkServiceAddExternalMemberRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Network to add the member to.
+ Network string `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"`
+ // SwitchPorts contains the ports of a switch that should be added to the network.
+ // Make sure to add both switches of a rack and the same ports of both in the same request.
+ SwitchPorts []*v2.ExternalNetworkMembers `protobuf:"bytes,2,rep,name=switch_ports,json=switchPorts,proto3" json:"switch_ports,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *NetworkServiceAddExternalMemberRequest) Reset() {
+ *x = NetworkServiceAddExternalMemberRequest{}
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *NetworkServiceAddExternalMemberRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NetworkServiceAddExternalMemberRequest) ProtoMessage() {}
+
+func (x *NetworkServiceAddExternalMemberRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_network_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 NetworkServiceAddExternalMemberRequest.ProtoReflect.Descriptor instead.
+func (*NetworkServiceAddExternalMemberRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *NetworkServiceAddExternalMemberRequest) GetNetwork() string {
+ if x != nil {
+ return x.Network
+ }
+ return ""
+}
+
+func (x *NetworkServiceAddExternalMemberRequest) GetSwitchPorts() []*v2.ExternalNetworkMembers {
+ if x != nil {
+ return x.SwitchPorts
+ }
+ return nil
+}
+
+// NetworkServiceRemoveExternalMemberRequest is the request payload for removing an external member from a network.
+type NetworkServiceRemoveExternalMemberRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Network to remove the member from.
+ Network string `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"`
+ // SwitchPorts contains the ports of a switch that should be removed from the network.
+ SwitchPorts []*v2.ExternalNetworkMembers `protobuf:"bytes,2,rep,name=switch_ports,json=switchPorts,proto3" json:"switch_ports,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *NetworkServiceRemoveExternalMemberRequest) Reset() {
+ *x = NetworkServiceRemoveExternalMemberRequest{}
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *NetworkServiceRemoveExternalMemberRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NetworkServiceRemoveExternalMemberRequest) ProtoMessage() {}
+
+func (x *NetworkServiceRemoveExternalMemberRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_network_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 NetworkServiceRemoveExternalMemberRequest.ProtoReflect.Descriptor instead.
+func (*NetworkServiceRemoveExternalMemberRequest) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *NetworkServiceRemoveExternalMemberRequest) GetNetwork() string {
+ if x != nil {
+ return x.Network
+ }
+ return ""
+}
+
+func (x *NetworkServiceRemoveExternalMemberRequest) GetSwitchPorts() []*v2.ExternalNetworkMembers {
+ if x != nil {
+ return x.SwitchPorts
+ }
+ return nil
+}
+
// NetworkServiceCreateResponse is the response payload for creating a network.
type NetworkServiceCreateResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -553,7 +719,7 @@ type NetworkServiceCreateResponse struct {
func (x *NetworkServiceCreateResponse) Reset() {
*x = NetworkServiceCreateResponse{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[6]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -565,7 +731,7 @@ func (x *NetworkServiceCreateResponse) String() string {
func (*NetworkServiceCreateResponse) ProtoMessage() {}
func (x *NetworkServiceCreateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[6]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -578,7 +744,7 @@ func (x *NetworkServiceCreateResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use NetworkServiceCreateResponse.ProtoReflect.Descriptor instead.
func (*NetworkServiceCreateResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{6}
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{9}
}
func (x *NetworkServiceCreateResponse) GetNetwork() *v2.Network {
@@ -599,7 +765,7 @@ type NetworkServiceUpdateResponse struct {
func (x *NetworkServiceUpdateResponse) Reset() {
*x = NetworkServiceUpdateResponse{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[7]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -611,7 +777,7 @@ func (x *NetworkServiceUpdateResponse) String() string {
func (*NetworkServiceUpdateResponse) ProtoMessage() {}
func (x *NetworkServiceUpdateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[7]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -624,7 +790,7 @@ func (x *NetworkServiceUpdateResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use NetworkServiceUpdateResponse.ProtoReflect.Descriptor instead.
func (*NetworkServiceUpdateResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{7}
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{10}
}
func (x *NetworkServiceUpdateResponse) GetNetwork() *v2.Network {
@@ -645,7 +811,7 @@ type NetworkServiceDeleteResponse struct {
func (x *NetworkServiceDeleteResponse) Reset() {
*x = NetworkServiceDeleteResponse{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[8]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -657,7 +823,7 @@ func (x *NetworkServiceDeleteResponse) String() string {
func (*NetworkServiceDeleteResponse) ProtoMessage() {}
func (x *NetworkServiceDeleteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[8]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -670,7 +836,7 @@ func (x *NetworkServiceDeleteResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use NetworkServiceDeleteResponse.ProtoReflect.Descriptor instead.
func (*NetworkServiceDeleteResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{8}
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{11}
}
func (x *NetworkServiceDeleteResponse) GetNetwork() *v2.Network {
@@ -691,7 +857,7 @@ type NetworkServiceListResponse struct {
func (x *NetworkServiceListResponse) Reset() {
*x = NetworkServiceListResponse{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[9]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -703,7 +869,7 @@ func (x *NetworkServiceListResponse) String() string {
func (*NetworkServiceListResponse) ProtoMessage() {}
func (x *NetworkServiceListResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[9]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -716,7 +882,7 @@ func (x *NetworkServiceListResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use NetworkServiceListResponse.ProtoReflect.Descriptor instead.
func (*NetworkServiceListResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{9}
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{12}
}
func (x *NetworkServiceListResponse) GetNetworks() []*v2.Network {
@@ -726,11 +892,149 @@ func (x *NetworkServiceListResponse) GetNetworks() []*v2.Network {
return nil
}
+// NetworkServiceListExternalMemberResponse is the response payload for listing external members of a network.
+type NetworkServiceListExternalMemberResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Members are the queried external members of the network.
+ Members []*v2.ExternalNetworkMembers `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *NetworkServiceListExternalMemberResponse) Reset() {
+ *x = NetworkServiceListExternalMemberResponse{}
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *NetworkServiceListExternalMemberResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NetworkServiceListExternalMemberResponse) ProtoMessage() {}
+
+func (x *NetworkServiceListExternalMemberResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[13]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NetworkServiceListExternalMemberResponse.ProtoReflect.Descriptor instead.
+func (*NetworkServiceListExternalMemberResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *NetworkServiceListExternalMemberResponse) GetMembers() []*v2.ExternalNetworkMembers {
+ if x != nil {
+ return x.Members
+ }
+ return nil
+}
+
+// NetworkServiceAddExternalMemberResponse is the response payload for adding an external member to a network.
+type NetworkServiceAddExternalMemberResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Switch contains the updated switch.
+ Switch *v2.Switch `protobuf:"bytes,1,opt,name=switch,proto3" json:"switch,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *NetworkServiceAddExternalMemberResponse) Reset() {
+ *x = NetworkServiceAddExternalMemberResponse{}
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *NetworkServiceAddExternalMemberResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NetworkServiceAddExternalMemberResponse) ProtoMessage() {}
+
+func (x *NetworkServiceAddExternalMemberResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[14]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NetworkServiceAddExternalMemberResponse.ProtoReflect.Descriptor instead.
+func (*NetworkServiceAddExternalMemberResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *NetworkServiceAddExternalMemberResponse) GetSwitch() *v2.Switch {
+ if x != nil {
+ return x.Switch
+ }
+ return nil
+}
+
+// NetworkServiceRemoveExternalMemberResponse is the response payload for removing an external member from a network.
+type NetworkServiceRemoveExternalMemberResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Switch contains the updated switch.
+ Switch *v2.Switch `protobuf:"bytes,1,opt,name=switch,proto3" json:"switch,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *NetworkServiceRemoveExternalMemberResponse) Reset() {
+ *x = NetworkServiceRemoveExternalMemberResponse{}
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *NetworkServiceRemoveExternalMemberResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NetworkServiceRemoveExternalMemberResponse) ProtoMessage() {}
+
+func (x *NetworkServiceRemoveExternalMemberResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[15]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NetworkServiceRemoveExternalMemberResponse.ProtoReflect.Descriptor instead.
+func (*NetworkServiceRemoveExternalMemberResponse) Descriptor() ([]byte, []int) {
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *NetworkServiceRemoveExternalMemberResponse) GetSwitch() *v2.Switch {
+ if x != nil {
+ return x.Switch
+ }
+ return nil
+}
+
var File_metalstack_admin_v2_network_proto protoreflect.FileDescriptor
const file_metalstack_admin_v2_network_proto_rawDesc = "" +
"\n" +
- "!metalstack/admin/v2/network.proto\x12\x13metalstack.admin.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/network.proto\x1a(metalstack/api/v2/predefined_rules.proto\"7\n" +
+ "!metalstack/admin/v2/network.proto\x12\x13metalstack.admin.v2\x1a\x1bbuf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/network.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/switch.proto\"7\n" +
"\x18NetworkServiceGetRequest\x12\x1b\n" +
"\x02id\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\"Q\n" +
"\x19NetworkServiceGetResponse\x124\n" +
@@ -792,7 +1096,16 @@ const file_metalstack_admin_v2_network_proto_rawDesc = "" +
"\x1bNetworkServiceDeleteRequest\x12\x1b\n" +
"\x02id\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\"R\n" +
"\x19NetworkServiceListRequest\x125\n" +
- "\x05query\x18\x01 \x01(\v2\x1f.metalstack.api.v2.NetworkQueryR\x05query\"T\n" +
+ "\x05query\x18\x01 \x01(\v2\x1f.metalstack.api.v2.NetworkQueryR\x05query\"\x95\x01\n" +
+ "'NetworkServiceListExternalMemberRequest\x12%\n" +
+ "\anetwork\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\anetwork\x12C\n" +
+ "\x05query\x18\x02 \x01(\v2-.metalstack.api.v2.ExternalNetworkMemberQueryR\x05query\"\xa7\x01\n" +
+ "&NetworkServiceAddExternalMemberRequest\x12%\n" +
+ "\anetwork\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\anetwork\x12V\n" +
+ "\fswitch_ports\x18\x02 \x03(\v2).metalstack.api.v2.ExternalNetworkMembersB\b\xbaH\x05\x92\x01\x02\x10\bR\vswitchPorts\"\xaa\x01\n" +
+ ")NetworkServiceRemoveExternalMemberRequest\x12%\n" +
+ "\anetwork\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\anetwork\x12V\n" +
+ "\fswitch_ports\x18\x02 \x03(\v2).metalstack.api.v2.ExternalNetworkMembersB\b\xbaH\x05\x92\x01\x02\x10\bR\vswitchPorts\"T\n" +
"\x1cNetworkServiceCreateResponse\x124\n" +
"\anetwork\x18\x01 \x01(\v2\x1a.metalstack.api.v2.NetworkR\anetwork\"T\n" +
"\x1cNetworkServiceUpdateResponse\x124\n" +
@@ -800,7 +1113,13 @@ const file_metalstack_admin_v2_network_proto_rawDesc = "" +
"\x1cNetworkServiceDeleteResponse\x124\n" +
"\anetwork\x18\x01 \x01(\v2\x1a.metalstack.api.v2.NetworkR\anetwork\"T\n" +
"\x1aNetworkServiceListResponse\x126\n" +
- "\bnetworks\x18\x01 \x03(\v2\x1a.metalstack.api.v2.NetworkR\bnetworks2\xe5\x04\n" +
+ "\bnetworks\x18\x01 \x03(\v2\x1a.metalstack.api.v2.NetworkR\bnetworks\"o\n" +
+ "(NetworkServiceListExternalMemberResponse\x12C\n" +
+ "\amembers\x18\x01 \x03(\v2).metalstack.api.v2.ExternalNetworkMembersR\amembers\"\\\n" +
+ "'NetworkServiceAddExternalMemberResponse\x121\n" +
+ "\x06switch\x18\x01 \x01(\v2\x19.metalstack.api.v2.SwitchR\x06switch\"_\n" +
+ "*NetworkServiceRemoveExternalMemberResponse\x121\n" +
+ "\x06switch\x18\x01 \x01(\v2\x19.metalstack.api.v2.SwitchR\x06switch2\xa6\a\n" +
"\x0eNetworkService\x12p\n" +
"\x03Get\x12-.metalstack.admin.v2.NetworkServiceGetRequest\x1a..metalstack.admin.v2.NetworkServiceGetResponse\"\n" +
"\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12x\n" +
@@ -808,7 +1127,9 @@ const file_metalstack_admin_v2_network_proto_rawDesc = "" +
"\x06Update\x120.metalstack.admin.v2.NetworkServiceUpdateRequest\x1a1.metalstack.admin.v2.NetworkServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12x\n" +
"\x06Delete\x120.metalstack.admin.v2.NetworkServiceDeleteRequest\x1a1.metalstack.admin.v2.NetworkServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12s\n" +
"\x04List\x12..metalstack.admin.v2.NetworkServiceListRequest\x1a/.metalstack.admin.v2.NetworkServiceListResponse\"\n" +
- "\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02B\xd0\x01\n" +
+ "\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\x99\x01\n" +
+ "\x11AddExternalMember\x12;.metalstack.admin.v2.NetworkServiceAddExternalMemberRequest\x1a<.metalstack.admin.v2.NetworkServiceAddExternalMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\xa2\x01\n" +
+ "\x14RemoveExternalMember\x12>.metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest\x1a?.metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01B\xd0\x01\n" +
"\x17com.metalstack.admin.v2B\fNetworkProtoP\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"
var (
@@ -823,62 +1144,81 @@ func file_metalstack_admin_v2_network_proto_rawDescGZIP() []byte {
return file_metalstack_admin_v2_network_proto_rawDescData
}
-var file_metalstack_admin_v2_network_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
+var file_metalstack_admin_v2_network_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
var file_metalstack_admin_v2_network_proto_goTypes = []any{
- (*NetworkServiceGetRequest)(nil), // 0: metalstack.admin.v2.NetworkServiceGetRequest
- (*NetworkServiceGetResponse)(nil), // 1: metalstack.admin.v2.NetworkServiceGetResponse
- (*NetworkServiceCreateRequest)(nil), // 2: metalstack.admin.v2.NetworkServiceCreateRequest
- (*NetworkServiceUpdateRequest)(nil), // 3: metalstack.admin.v2.NetworkServiceUpdateRequest
- (*NetworkServiceDeleteRequest)(nil), // 4: metalstack.admin.v2.NetworkServiceDeleteRequest
- (*NetworkServiceListRequest)(nil), // 5: metalstack.admin.v2.NetworkServiceListRequest
- (*NetworkServiceCreateResponse)(nil), // 6: metalstack.admin.v2.NetworkServiceCreateResponse
- (*NetworkServiceUpdateResponse)(nil), // 7: metalstack.admin.v2.NetworkServiceUpdateResponse
- (*NetworkServiceDeleteResponse)(nil), // 8: metalstack.admin.v2.NetworkServiceDeleteResponse
- (*NetworkServiceListResponse)(nil), // 9: metalstack.admin.v2.NetworkServiceListResponse
- (*v2.Network)(nil), // 10: metalstack.api.v2.Network
- (v2.NetworkType)(0), // 11: metalstack.api.v2.NetworkType
- (*v2.Labels)(nil), // 12: metalstack.api.v2.Labels
- (*v2.ChildPrefixLength)(nil), // 13: metalstack.api.v2.ChildPrefixLength
- (v2.NATType)(0), // 14: metalstack.api.v2.NATType
- (v2.NetworkAddressFamily)(0), // 15: metalstack.api.v2.NetworkAddressFamily
- (*v2.UpdateMeta)(nil), // 16: metalstack.api.v2.UpdateMeta
- (*v2.UpdateLabels)(nil), // 17: metalstack.api.v2.UpdateLabels
- (*v2.NetworkQuery)(nil), // 18: metalstack.api.v2.NetworkQuery
+ (*NetworkServiceGetRequest)(nil), // 0: metalstack.admin.v2.NetworkServiceGetRequest
+ (*NetworkServiceGetResponse)(nil), // 1: metalstack.admin.v2.NetworkServiceGetResponse
+ (*NetworkServiceCreateRequest)(nil), // 2: metalstack.admin.v2.NetworkServiceCreateRequest
+ (*NetworkServiceUpdateRequest)(nil), // 3: metalstack.admin.v2.NetworkServiceUpdateRequest
+ (*NetworkServiceDeleteRequest)(nil), // 4: metalstack.admin.v2.NetworkServiceDeleteRequest
+ (*NetworkServiceListRequest)(nil), // 5: metalstack.admin.v2.NetworkServiceListRequest
+ (*NetworkServiceListExternalMemberRequest)(nil), // 6: metalstack.admin.v2.NetworkServiceListExternalMemberRequest
+ (*NetworkServiceAddExternalMemberRequest)(nil), // 7: metalstack.admin.v2.NetworkServiceAddExternalMemberRequest
+ (*NetworkServiceRemoveExternalMemberRequest)(nil), // 8: metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest
+ (*NetworkServiceCreateResponse)(nil), // 9: metalstack.admin.v2.NetworkServiceCreateResponse
+ (*NetworkServiceUpdateResponse)(nil), // 10: metalstack.admin.v2.NetworkServiceUpdateResponse
+ (*NetworkServiceDeleteResponse)(nil), // 11: metalstack.admin.v2.NetworkServiceDeleteResponse
+ (*NetworkServiceListResponse)(nil), // 12: metalstack.admin.v2.NetworkServiceListResponse
+ (*NetworkServiceListExternalMemberResponse)(nil), // 13: metalstack.admin.v2.NetworkServiceListExternalMemberResponse
+ (*NetworkServiceAddExternalMemberResponse)(nil), // 14: metalstack.admin.v2.NetworkServiceAddExternalMemberResponse
+ (*NetworkServiceRemoveExternalMemberResponse)(nil), // 15: metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse
+ (*v2.Network)(nil), // 16: metalstack.api.v2.Network
+ (v2.NetworkType)(0), // 17: metalstack.api.v2.NetworkType
+ (*v2.Labels)(nil), // 18: metalstack.api.v2.Labels
+ (*v2.ChildPrefixLength)(nil), // 19: metalstack.api.v2.ChildPrefixLength
+ (v2.NATType)(0), // 20: metalstack.api.v2.NATType
+ (v2.NetworkAddressFamily)(0), // 21: metalstack.api.v2.NetworkAddressFamily
+ (*v2.UpdateMeta)(nil), // 22: metalstack.api.v2.UpdateMeta
+ (*v2.UpdateLabels)(nil), // 23: metalstack.api.v2.UpdateLabels
+ (*v2.NetworkQuery)(nil), // 24: metalstack.api.v2.NetworkQuery
+ (*v2.ExternalNetworkMemberQuery)(nil), // 25: metalstack.api.v2.ExternalNetworkMemberQuery
+ (*v2.ExternalNetworkMembers)(nil), // 26: metalstack.api.v2.ExternalNetworkMembers
+ (*v2.Switch)(nil), // 27: metalstack.api.v2.Switch
}
var file_metalstack_admin_v2_network_proto_depIdxs = []int32{
- 10, // 0: metalstack.admin.v2.NetworkServiceGetResponse.network:type_name -> metalstack.api.v2.Network
- 11, // 1: metalstack.admin.v2.NetworkServiceCreateRequest.type:type_name -> metalstack.api.v2.NetworkType
- 12, // 2: metalstack.admin.v2.NetworkServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
- 13, // 3: metalstack.admin.v2.NetworkServiceCreateRequest.default_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
- 13, // 4: metalstack.admin.v2.NetworkServiceCreateRequest.min_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
- 14, // 5: metalstack.admin.v2.NetworkServiceCreateRequest.nat_type:type_name -> metalstack.api.v2.NATType
- 13, // 6: metalstack.admin.v2.NetworkServiceCreateRequest.length:type_name -> metalstack.api.v2.ChildPrefixLength
- 15, // 7: metalstack.admin.v2.NetworkServiceCreateRequest.address_family:type_name -> metalstack.api.v2.NetworkAddressFamily
- 16, // 8: metalstack.admin.v2.NetworkServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
- 17, // 9: metalstack.admin.v2.NetworkServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
- 13, // 10: metalstack.admin.v2.NetworkServiceUpdateRequest.default_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
- 13, // 11: metalstack.admin.v2.NetworkServiceUpdateRequest.min_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
- 14, // 12: metalstack.admin.v2.NetworkServiceUpdateRequest.nat_type:type_name -> metalstack.api.v2.NATType
- 18, // 13: metalstack.admin.v2.NetworkServiceListRequest.query:type_name -> metalstack.api.v2.NetworkQuery
- 10, // 14: metalstack.admin.v2.NetworkServiceCreateResponse.network:type_name -> metalstack.api.v2.Network
- 10, // 15: metalstack.admin.v2.NetworkServiceUpdateResponse.network:type_name -> metalstack.api.v2.Network
- 10, // 16: metalstack.admin.v2.NetworkServiceDeleteResponse.network:type_name -> metalstack.api.v2.Network
- 10, // 17: metalstack.admin.v2.NetworkServiceListResponse.networks:type_name -> metalstack.api.v2.Network
- 0, // 18: metalstack.admin.v2.NetworkService.Get:input_type -> metalstack.admin.v2.NetworkServiceGetRequest
- 2, // 19: metalstack.admin.v2.NetworkService.Create:input_type -> metalstack.admin.v2.NetworkServiceCreateRequest
- 3, // 20: metalstack.admin.v2.NetworkService.Update:input_type -> metalstack.admin.v2.NetworkServiceUpdateRequest
- 4, // 21: metalstack.admin.v2.NetworkService.Delete:input_type -> metalstack.admin.v2.NetworkServiceDeleteRequest
- 5, // 22: metalstack.admin.v2.NetworkService.List:input_type -> metalstack.admin.v2.NetworkServiceListRequest
- 1, // 23: metalstack.admin.v2.NetworkService.Get:output_type -> metalstack.admin.v2.NetworkServiceGetResponse
- 6, // 24: metalstack.admin.v2.NetworkService.Create:output_type -> metalstack.admin.v2.NetworkServiceCreateResponse
- 7, // 25: metalstack.admin.v2.NetworkService.Update:output_type -> metalstack.admin.v2.NetworkServiceUpdateResponse
- 8, // 26: metalstack.admin.v2.NetworkService.Delete:output_type -> metalstack.admin.v2.NetworkServiceDeleteResponse
- 9, // 27: metalstack.admin.v2.NetworkService.List:output_type -> metalstack.admin.v2.NetworkServiceListResponse
- 23, // [23:28] is the sub-list for method output_type
- 18, // [18:23] is the sub-list for method input_type
- 18, // [18:18] is the sub-list for extension type_name
- 18, // [18:18] is the sub-list for extension extendee
- 0, // [0:18] is the sub-list for field type_name
+ 16, // 0: metalstack.admin.v2.NetworkServiceGetResponse.network:type_name -> metalstack.api.v2.Network
+ 17, // 1: metalstack.admin.v2.NetworkServiceCreateRequest.type:type_name -> metalstack.api.v2.NetworkType
+ 18, // 2: metalstack.admin.v2.NetworkServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
+ 19, // 3: metalstack.admin.v2.NetworkServiceCreateRequest.default_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
+ 19, // 4: metalstack.admin.v2.NetworkServiceCreateRequest.min_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
+ 20, // 5: metalstack.admin.v2.NetworkServiceCreateRequest.nat_type:type_name -> metalstack.api.v2.NATType
+ 19, // 6: metalstack.admin.v2.NetworkServiceCreateRequest.length:type_name -> metalstack.api.v2.ChildPrefixLength
+ 21, // 7: metalstack.admin.v2.NetworkServiceCreateRequest.address_family:type_name -> metalstack.api.v2.NetworkAddressFamily
+ 22, // 8: metalstack.admin.v2.NetworkServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
+ 23, // 9: metalstack.admin.v2.NetworkServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
+ 19, // 10: metalstack.admin.v2.NetworkServiceUpdateRequest.default_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
+ 19, // 11: metalstack.admin.v2.NetworkServiceUpdateRequest.min_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
+ 20, // 12: metalstack.admin.v2.NetworkServiceUpdateRequest.nat_type:type_name -> metalstack.api.v2.NATType
+ 24, // 13: metalstack.admin.v2.NetworkServiceListRequest.query:type_name -> metalstack.api.v2.NetworkQuery
+ 25, // 14: metalstack.admin.v2.NetworkServiceListExternalMemberRequest.query:type_name -> metalstack.api.v2.ExternalNetworkMemberQuery
+ 26, // 15: metalstack.admin.v2.NetworkServiceAddExternalMemberRequest.switch_ports:type_name -> metalstack.api.v2.ExternalNetworkMembers
+ 26, // 16: metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest.switch_ports:type_name -> metalstack.api.v2.ExternalNetworkMembers
+ 16, // 17: metalstack.admin.v2.NetworkServiceCreateResponse.network:type_name -> metalstack.api.v2.Network
+ 16, // 18: metalstack.admin.v2.NetworkServiceUpdateResponse.network:type_name -> metalstack.api.v2.Network
+ 16, // 19: metalstack.admin.v2.NetworkServiceDeleteResponse.network:type_name -> metalstack.api.v2.Network
+ 16, // 20: metalstack.admin.v2.NetworkServiceListResponse.networks:type_name -> metalstack.api.v2.Network
+ 26, // 21: metalstack.admin.v2.NetworkServiceListExternalMemberResponse.members:type_name -> metalstack.api.v2.ExternalNetworkMembers
+ 27, // 22: metalstack.admin.v2.NetworkServiceAddExternalMemberResponse.switch:type_name -> metalstack.api.v2.Switch
+ 27, // 23: metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse.switch:type_name -> metalstack.api.v2.Switch
+ 0, // 24: metalstack.admin.v2.NetworkService.Get:input_type -> metalstack.admin.v2.NetworkServiceGetRequest
+ 2, // 25: metalstack.admin.v2.NetworkService.Create:input_type -> metalstack.admin.v2.NetworkServiceCreateRequest
+ 3, // 26: metalstack.admin.v2.NetworkService.Update:input_type -> metalstack.admin.v2.NetworkServiceUpdateRequest
+ 4, // 27: metalstack.admin.v2.NetworkService.Delete:input_type -> metalstack.admin.v2.NetworkServiceDeleteRequest
+ 5, // 28: metalstack.admin.v2.NetworkService.List:input_type -> metalstack.admin.v2.NetworkServiceListRequest
+ 7, // 29: metalstack.admin.v2.NetworkService.AddExternalMember:input_type -> metalstack.admin.v2.NetworkServiceAddExternalMemberRequest
+ 8, // 30: metalstack.admin.v2.NetworkService.RemoveExternalMember:input_type -> metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest
+ 1, // 31: metalstack.admin.v2.NetworkService.Get:output_type -> metalstack.admin.v2.NetworkServiceGetResponse
+ 9, // 32: metalstack.admin.v2.NetworkService.Create:output_type -> metalstack.admin.v2.NetworkServiceCreateResponse
+ 10, // 33: metalstack.admin.v2.NetworkService.Update:output_type -> metalstack.admin.v2.NetworkServiceUpdateResponse
+ 11, // 34: metalstack.admin.v2.NetworkService.Delete:output_type -> metalstack.admin.v2.NetworkServiceDeleteResponse
+ 12, // 35: metalstack.admin.v2.NetworkService.List:output_type -> metalstack.admin.v2.NetworkServiceListResponse
+ 14, // 36: metalstack.admin.v2.NetworkService.AddExternalMember:output_type -> metalstack.admin.v2.NetworkServiceAddExternalMemberResponse
+ 15, // 37: metalstack.admin.v2.NetworkService.RemoveExternalMember:output_type -> metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse
+ 31, // [31:38] is the sub-list for method output_type
+ 24, // [24:31] is the sub-list for method input_type
+ 24, // [24:24] is the sub-list for extension type_name
+ 24, // [24:24] is the sub-list for extension extendee
+ 0, // [0:24] is the sub-list for field type_name
}
func init() { file_metalstack_admin_v2_network_proto_init() }
@@ -894,7 +1234,7 @@ func file_metalstack_admin_v2_network_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_admin_v2_network_proto_rawDesc), len(file_metalstack_admin_v2_network_proto_rawDesc)),
NumEnums: 0,
- NumMessages: 10,
+ NumMessages: 16,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/go/metalstack/api/v2/network.pb.go b/go/metalstack/api/v2/network.pb.go
index 3485903f..120c948a 100644
--- a/go/metalstack/api/v2/network.pb.go
+++ b/go/metalstack/api/v2/network.pb.go
@@ -1274,6 +1274,61 @@ func (x *NetworkQuery) GetLabels() *Labels {
return nil
}
+// ExternalNetworkMemberQuery defines which filters to apply when looking up external network members.
+type ExternalNetworkMemberQuery struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Switch whose ports are queried.
+ Switch *string `protobuf:"bytes,1,opt,name=switch,proto3,oneof" json:"switch,omitempty"`
+ // Rack for which the members of the network are queried.
+ Rack *string `protobuf:"bytes,2,opt,name=rack,proto3,oneof" json:"rack,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ExternalNetworkMemberQuery) Reset() {
+ *x = ExternalNetworkMemberQuery{}
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ExternalNetworkMemberQuery) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExternalNetworkMemberQuery) ProtoMessage() {}
+
+func (x *ExternalNetworkMemberQuery) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[14]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ExternalNetworkMemberQuery.ProtoReflect.Descriptor instead.
+func (*ExternalNetworkMemberQuery) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *ExternalNetworkMemberQuery) GetSwitch() string {
+ if x != nil && x.Switch != nil {
+ return *x.Switch
+ }
+ return ""
+}
+
+func (x *ExternalNetworkMemberQuery) GetRack() string {
+ if x != nil && x.Rack != nil {
+ return *x.Rack
+ }
+ return ""
+}
+
// ChildPrefixLength.
type ChildPrefixLength struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -1287,7 +1342,7 @@ type ChildPrefixLength struct {
func (x *ChildPrefixLength) Reset() {
*x = ChildPrefixLength{}
- mi := &file_metalstack_api_v2_network_proto_msgTypes[14]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1299,7 +1354,7 @@ func (x *ChildPrefixLength) String() string {
func (*ChildPrefixLength) ProtoMessage() {}
func (x *ChildPrefixLength) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_network_proto_msgTypes[14]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[15]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1312,7 +1367,7 @@ func (x *ChildPrefixLength) ProtoReflect() protoreflect.Message {
// Deprecated: Use ChildPrefixLength.ProtoReflect.Descriptor instead.
func (*ChildPrefixLength) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{14}
+ return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{15}
}
func (x *ChildPrefixLength) GetIpv4() uint32 {
@@ -1342,7 +1397,7 @@ type NetworkConsumption struct {
func (x *NetworkConsumption) Reset() {
*x = NetworkConsumption{}
- mi := &file_metalstack_api_v2_network_proto_msgTypes[15]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1354,7 +1409,7 @@ func (x *NetworkConsumption) String() string {
func (*NetworkConsumption) ProtoMessage() {}
func (x *NetworkConsumption) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_network_proto_msgTypes[15]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1367,7 +1422,7 @@ func (x *NetworkConsumption) ProtoReflect() protoreflect.Message {
// Deprecated: Use NetworkConsumption.ProtoReflect.Descriptor instead.
func (*NetworkConsumption) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{15}
+ return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{16}
}
func (x *NetworkConsumption) GetIpv4() *NetworkUsage {
@@ -1401,7 +1456,7 @@ type NetworkUsage struct {
func (x *NetworkUsage) Reset() {
*x = NetworkUsage{}
- mi := &file_metalstack_api_v2_network_proto_msgTypes[16]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1413,7 +1468,7 @@ func (x *NetworkUsage) String() string {
func (*NetworkUsage) ProtoMessage() {}
func (x *NetworkUsage) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_network_proto_msgTypes[16]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[17]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1426,7 +1481,7 @@ func (x *NetworkUsage) ProtoReflect() protoreflect.Message {
// Deprecated: Use NetworkUsage.ProtoReflect.Descriptor instead.
func (*NetworkUsage) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{16}
+ return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{17}
}
func (x *NetworkUsage) GetAvailableIps() uint64 {
@@ -1457,6 +1512,61 @@ func (x *NetworkUsage) GetUsedPrefixes() uint64 {
return 0
}
+// ExternalNetworkMembers are the ports of a switch that participate in a network and are connected to machines not known to metal-stack.
+type ExternalNetworkMembers struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Switch the external members are connected to.
+ Switch string `protobuf:"bytes,1,opt,name=switch,proto3" json:"switch,omitempty"`
+ // Ports of the switch that participate in the network.
+ Ports []string `protobuf:"bytes,2,rep,name=ports,proto3" json:"ports,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ExternalNetworkMembers) Reset() {
+ *x = ExternalNetworkMembers{}
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ExternalNetworkMembers) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExternalNetworkMembers) ProtoMessage() {}
+
+func (x *ExternalNetworkMembers) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[18]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ExternalNetworkMembers.ProtoReflect.Descriptor instead.
+func (*ExternalNetworkMembers) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *ExternalNetworkMembers) GetSwitch() string {
+ if x != nil {
+ return x.Switch
+ }
+ return ""
+}
+
+func (x *ExternalNetworkMembers) GetPorts() []string {
+ if x != nil {
+ return x.Ports
+ }
+ return nil
+}
+
var File_metalstack_api_v2_network_proto protoreflect.FileDescriptor
const file_metalstack_api_v2_network_proto_rawDesc = "" +
@@ -1573,7 +1683,13 @@ const file_metalstack_api_v2_network_proto_rawDesc = "" +
"\x0f_address_familyB\a\n" +
"\x05_typeB\v\n" +
"\t_nat_typeB\t\n" +
- "\a_labels\"n\n" +
+ "\a_labels\"\x82\x01\n" +
+ "\x1aExternalNetworkMemberQuery\x12*\n" +
+ "\x06switch\x18\x01 \x01(\tB\r\xbaH\n" +
+ "r\b\xc0\xb3\xae\xb1\x02\x01h\x01H\x00R\x06switch\x88\x01\x01\x12$\n" +
+ "\x04rack\x18\x02 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04rack\x88\x01\x01B\t\n" +
+ "\a_switchB\a\n" +
+ "\x05_rack\"n\n" +
"\x11ChildPrefixLength\x12\"\n" +
"\x04ipv4\x18\x01 \x01(\rB\t\xbaH\x06*\x04\x18 \x00H\x00R\x04ipv4\x88\x01\x01\x12#\n" +
"\x04ipv6\x18\x02 \x01(\rB\n" +
@@ -1587,7 +1703,10 @@ const file_metalstack_api_v2_network_proto_rawDesc = "" +
"\ravailable_ips\x18\x01 \x01(\x04R\favailableIps\x12\x19\n" +
"\bused_ips\x18\x02 \x01(\x04R\ausedIps\x12-\n" +
"\x12available_prefixes\x18\x03 \x01(\x04R\x11availablePrefixes\x12#\n" +
- "\rused_prefixes\x18\x04 \x01(\x04R\fusedPrefixes*m\n" +
+ "\rused_prefixes\x18\x04 \x01(\x04R\fusedPrefixes\"d\n" +
+ "\x16ExternalNetworkMembers\x12#\n" +
+ "\x06switch\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x06switch\x12%\n" +
+ "\x05ports\x18\x02 \x03(\tB\x0f\xbaH\f\x92\x01\tФ\xb3\xb1\x02\x01\x10\x80\x10R\x05ports*m\n" +
"\aNATType\x12\x18\n" +
"\x14NAT_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n" +
"\rNAT_TYPE_NONE\x10\x01\x1a\b\x82\xb2\x19\x04none\x12+\n" +
@@ -1631,7 +1750,7 @@ func file_metalstack_api_v2_network_proto_rawDescGZIP() []byte {
}
var file_metalstack_api_v2_network_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_metalstack_api_v2_network_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
+var file_metalstack_api_v2_network_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
var file_metalstack_api_v2_network_proto_goTypes = []any{
(NATType)(0), // 0: metalstack.api.v2.NATType
(NetworkType)(0), // 1: metalstack.api.v2.NetworkType
@@ -1650,40 +1769,42 @@ var file_metalstack_api_v2_network_proto_goTypes = []any{
(*NetworkServiceDeleteResponse)(nil), // 14: metalstack.api.v2.NetworkServiceDeleteResponse
(*Network)(nil), // 15: metalstack.api.v2.Network
(*NetworkQuery)(nil), // 16: metalstack.api.v2.NetworkQuery
- (*ChildPrefixLength)(nil), // 17: metalstack.api.v2.ChildPrefixLength
- (*NetworkConsumption)(nil), // 18: metalstack.api.v2.NetworkConsumption
- (*NetworkUsage)(nil), // 19: metalstack.api.v2.NetworkUsage
- (*Labels)(nil), // 20: metalstack.api.v2.Labels
- (*UpdateMeta)(nil), // 21: metalstack.api.v2.UpdateMeta
- (*UpdateLabels)(nil), // 22: metalstack.api.v2.UpdateLabels
- (*Meta)(nil), // 23: metalstack.api.v2.Meta
+ (*ExternalNetworkMemberQuery)(nil), // 17: metalstack.api.v2.ExternalNetworkMemberQuery
+ (*ChildPrefixLength)(nil), // 18: metalstack.api.v2.ChildPrefixLength
+ (*NetworkConsumption)(nil), // 19: metalstack.api.v2.NetworkConsumption
+ (*NetworkUsage)(nil), // 20: metalstack.api.v2.NetworkUsage
+ (*ExternalNetworkMembers)(nil), // 21: metalstack.api.v2.ExternalNetworkMembers
+ (*Labels)(nil), // 22: metalstack.api.v2.Labels
+ (*UpdateMeta)(nil), // 23: metalstack.api.v2.UpdateMeta
+ (*UpdateLabels)(nil), // 24: metalstack.api.v2.UpdateLabels
+ (*Meta)(nil), // 25: metalstack.api.v2.Meta
}
var file_metalstack_api_v2_network_proto_depIdxs = []int32{
15, // 0: metalstack.api.v2.NetworkServiceGetResponse.network:type_name -> metalstack.api.v2.Network
- 20, // 1: metalstack.api.v2.NetworkServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
- 17, // 2: metalstack.api.v2.NetworkServiceCreateRequest.length:type_name -> metalstack.api.v2.ChildPrefixLength
+ 22, // 1: metalstack.api.v2.NetworkServiceCreateRequest.labels:type_name -> metalstack.api.v2.Labels
+ 18, // 2: metalstack.api.v2.NetworkServiceCreateRequest.length:type_name -> metalstack.api.v2.ChildPrefixLength
2, // 3: metalstack.api.v2.NetworkServiceCreateRequest.address_family:type_name -> metalstack.api.v2.NetworkAddressFamily
15, // 4: metalstack.api.v2.NetworkServiceCreateResponse.network:type_name -> metalstack.api.v2.Network
- 21, // 5: metalstack.api.v2.NetworkServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
- 22, // 6: metalstack.api.v2.NetworkServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
+ 23, // 5: metalstack.api.v2.NetworkServiceUpdateRequest.update_meta:type_name -> metalstack.api.v2.UpdateMeta
+ 24, // 6: metalstack.api.v2.NetworkServiceUpdateRequest.labels:type_name -> metalstack.api.v2.UpdateLabels
15, // 7: metalstack.api.v2.NetworkServiceUpdateResponse.network:type_name -> metalstack.api.v2.Network
16, // 8: metalstack.api.v2.NetworkServiceListRequest.query:type_name -> metalstack.api.v2.NetworkQuery
15, // 9: metalstack.api.v2.NetworkServiceListResponse.networks:type_name -> metalstack.api.v2.Network
16, // 10: metalstack.api.v2.NetworkServiceListBaseNetworksRequest.query:type_name -> metalstack.api.v2.NetworkQuery
15, // 11: metalstack.api.v2.NetworkServiceListBaseNetworksResponse.networks:type_name -> metalstack.api.v2.Network
15, // 12: metalstack.api.v2.NetworkServiceDeleteResponse.network:type_name -> metalstack.api.v2.Network
- 23, // 13: metalstack.api.v2.Network.meta:type_name -> metalstack.api.v2.Meta
- 17, // 14: metalstack.api.v2.Network.default_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
- 17, // 15: metalstack.api.v2.Network.min_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
+ 25, // 13: metalstack.api.v2.Network.meta:type_name -> metalstack.api.v2.Meta
+ 18, // 14: metalstack.api.v2.Network.default_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
+ 18, // 15: metalstack.api.v2.Network.min_child_prefix_length:type_name -> metalstack.api.v2.ChildPrefixLength
1, // 16: metalstack.api.v2.Network.type:type_name -> metalstack.api.v2.NetworkType
0, // 17: metalstack.api.v2.Network.nat_type:type_name -> metalstack.api.v2.NATType
- 18, // 18: metalstack.api.v2.Network.consumption:type_name -> metalstack.api.v2.NetworkConsumption
+ 19, // 18: metalstack.api.v2.Network.consumption:type_name -> metalstack.api.v2.NetworkConsumption
2, // 19: metalstack.api.v2.NetworkQuery.address_family:type_name -> metalstack.api.v2.NetworkAddressFamily
1, // 20: metalstack.api.v2.NetworkQuery.type:type_name -> metalstack.api.v2.NetworkType
0, // 21: metalstack.api.v2.NetworkQuery.nat_type:type_name -> metalstack.api.v2.NATType
- 20, // 22: metalstack.api.v2.NetworkQuery.labels:type_name -> metalstack.api.v2.Labels
- 19, // 23: metalstack.api.v2.NetworkConsumption.ipv4:type_name -> metalstack.api.v2.NetworkUsage
- 19, // 24: metalstack.api.v2.NetworkConsumption.ipv6:type_name -> metalstack.api.v2.NetworkUsage
+ 22, // 22: metalstack.api.v2.NetworkQuery.labels:type_name -> metalstack.api.v2.Labels
+ 20, // 23: metalstack.api.v2.NetworkConsumption.ipv4:type_name -> metalstack.api.v2.NetworkUsage
+ 20, // 24: metalstack.api.v2.NetworkConsumption.ipv6:type_name -> metalstack.api.v2.NetworkUsage
3, // 25: metalstack.api.v2.NetworkService.Get:input_type -> metalstack.api.v2.NetworkServiceGetRequest
5, // 26: metalstack.api.v2.NetworkService.Create:input_type -> metalstack.api.v2.NetworkServiceCreateRequest
7, // 27: metalstack.api.v2.NetworkService.Update:input_type -> metalstack.api.v2.NetworkServiceUpdateRequest
@@ -1715,13 +1836,14 @@ func file_metalstack_api_v2_network_proto_init() {
file_metalstack_api_v2_network_proto_msgTypes[12].OneofWrappers = []any{}
file_metalstack_api_v2_network_proto_msgTypes[13].OneofWrappers = []any{}
file_metalstack_api_v2_network_proto_msgTypes[14].OneofWrappers = []any{}
+ file_metalstack_api_v2_network_proto_msgTypes[15].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_metalstack_api_v2_network_proto_rawDesc), len(file_metalstack_api_v2_network_proto_rawDesc)),
NumEnums: 3,
- NumMessages: 17,
+ NumMessages: 19,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/go/permissions/servicepermissions.go b/go/permissions/servicepermissions.go
index b81fca5a..1600a1d4 100755
--- a/go/permissions/servicepermissions.go
+++ b/go/permissions/servicepermissions.go
@@ -55,71 +55,73 @@ func GetServicePermissions() *ServicePermissions {
Roles: Roles{
Admin: Admin{
apiv2.AdminRole_ADMIN_ROLE_EDITOR: map[string]struct{}{
- "/metalstack.admin.v2.AuditService/Get": {},
- "/metalstack.admin.v2.AuditService/List": {},
- "/metalstack.admin.v2.ComponentService/Delete": {},
- "/metalstack.admin.v2.ComponentService/Get": {},
- "/metalstack.admin.v2.ComponentService/List": {},
- "/metalstack.admin.v2.FilesystemService/Create": {},
- "/metalstack.admin.v2.FilesystemService/Delete": {},
- "/metalstack.admin.v2.FilesystemService/Match": {},
- "/metalstack.admin.v2.FilesystemService/Update": {},
- "/metalstack.admin.v2.IPService/List": {},
- "/metalstack.admin.v2.ImageService/Create": {},
- "/metalstack.admin.v2.ImageService/Delete": {},
- "/metalstack.admin.v2.ImageService/Update": {},
- "/metalstack.admin.v2.ImageService/Usage": {},
- "/metalstack.admin.v2.MachineService/BMCCommand": {},
- "/metalstack.admin.v2.MachineService/ConsolePassword": {},
- "/metalstack.admin.v2.MachineService/Delete": {},
- "/metalstack.admin.v2.MachineService/Get": {},
- "/metalstack.admin.v2.MachineService/GetBMC": {},
- "/metalstack.admin.v2.MachineService/Issues": {},
- "/metalstack.admin.v2.MachineService/List": {},
- "/metalstack.admin.v2.MachineService/ListBMC": {},
- "/metalstack.admin.v2.MachineService/SetState": {},
- "/metalstack.admin.v2.NetworkService/Create": {},
- "/metalstack.admin.v2.NetworkService/Delete": {},
- "/metalstack.admin.v2.NetworkService/Get": {},
- "/metalstack.admin.v2.NetworkService/List": {},
- "/metalstack.admin.v2.NetworkService/Update": {},
- "/metalstack.admin.v2.PartitionService/Capacity": {},
- "/metalstack.admin.v2.PartitionService/Create": {},
- "/metalstack.admin.v2.PartitionService/Delete": {},
- "/metalstack.admin.v2.PartitionService/Update": {},
- "/metalstack.admin.v2.ProjectService/List": {},
- "/metalstack.admin.v2.SizeImageConstraintService/Create": {},
- "/metalstack.admin.v2.SizeImageConstraintService/Delete": {},
- "/metalstack.admin.v2.SizeImageConstraintService/Get": {},
- "/metalstack.admin.v2.SizeImageConstraintService/List": {},
- "/metalstack.admin.v2.SizeImageConstraintService/Update": {},
- "/metalstack.admin.v2.SizeReservationService/Create": {},
- "/metalstack.admin.v2.SizeReservationService/Delete": {},
- "/metalstack.admin.v2.SizeReservationService/List": {},
- "/metalstack.admin.v2.SizeReservationService/Update": {},
- "/metalstack.admin.v2.SizeService/Create": {},
- "/metalstack.admin.v2.SizeService/Delete": {},
- "/metalstack.admin.v2.SizeService/Update": {},
- "/metalstack.admin.v2.SwitchService/ConnectedMachines": {},
- "/metalstack.admin.v2.SwitchService/Delete": {},
- "/metalstack.admin.v2.SwitchService/Get": {},
- "/metalstack.admin.v2.SwitchService/List": {},
- "/metalstack.admin.v2.SwitchService/Migrate": {},
- "/metalstack.admin.v2.SwitchService/Port": {},
- "/metalstack.admin.v2.SwitchService/Update": {},
- "/metalstack.admin.v2.TaskService/Delete": {},
- "/metalstack.admin.v2.TaskService/Get": {},
- "/metalstack.admin.v2.TaskService/List": {},
- "/metalstack.admin.v2.TaskService/Queues": {},
- "/metalstack.admin.v2.TenantService/AddMember": {},
- "/metalstack.admin.v2.TenantService/Create": {},
- "/metalstack.admin.v2.TenantService/List": {},
- "/metalstack.admin.v2.TenantService/RemoveMember": {},
- "/metalstack.admin.v2.TokenService/Create": {},
- "/metalstack.admin.v2.TokenService/List": {},
- "/metalstack.admin.v2.TokenService/Revoke": {},
- "/metalstack.admin.v2.VPNService/AuthKey": {},
- "/metalstack.admin.v2.VPNService/ListNodes": {},
+ "/metalstack.admin.v2.AuditService/Get": {},
+ "/metalstack.admin.v2.AuditService/List": {},
+ "/metalstack.admin.v2.ComponentService/Delete": {},
+ "/metalstack.admin.v2.ComponentService/Get": {},
+ "/metalstack.admin.v2.ComponentService/List": {},
+ "/metalstack.admin.v2.FilesystemService/Create": {},
+ "/metalstack.admin.v2.FilesystemService/Delete": {},
+ "/metalstack.admin.v2.FilesystemService/Match": {},
+ "/metalstack.admin.v2.FilesystemService/Update": {},
+ "/metalstack.admin.v2.IPService/List": {},
+ "/metalstack.admin.v2.ImageService/Create": {},
+ "/metalstack.admin.v2.ImageService/Delete": {},
+ "/metalstack.admin.v2.ImageService/Update": {},
+ "/metalstack.admin.v2.ImageService/Usage": {},
+ "/metalstack.admin.v2.MachineService/BMCCommand": {},
+ "/metalstack.admin.v2.MachineService/ConsolePassword": {},
+ "/metalstack.admin.v2.MachineService/Delete": {},
+ "/metalstack.admin.v2.MachineService/Get": {},
+ "/metalstack.admin.v2.MachineService/GetBMC": {},
+ "/metalstack.admin.v2.MachineService/Issues": {},
+ "/metalstack.admin.v2.MachineService/List": {},
+ "/metalstack.admin.v2.MachineService/ListBMC": {},
+ "/metalstack.admin.v2.MachineService/SetState": {},
+ "/metalstack.admin.v2.NetworkService/AddExternalMember": {},
+ "/metalstack.admin.v2.NetworkService/Create": {},
+ "/metalstack.admin.v2.NetworkService/Delete": {},
+ "/metalstack.admin.v2.NetworkService/Get": {},
+ "/metalstack.admin.v2.NetworkService/List": {},
+ "/metalstack.admin.v2.NetworkService/RemoveExternalMember": {},
+ "/metalstack.admin.v2.NetworkService/Update": {},
+ "/metalstack.admin.v2.PartitionService/Capacity": {},
+ "/metalstack.admin.v2.PartitionService/Create": {},
+ "/metalstack.admin.v2.PartitionService/Delete": {},
+ "/metalstack.admin.v2.PartitionService/Update": {},
+ "/metalstack.admin.v2.ProjectService/List": {},
+ "/metalstack.admin.v2.SizeImageConstraintService/Create": {},
+ "/metalstack.admin.v2.SizeImageConstraintService/Delete": {},
+ "/metalstack.admin.v2.SizeImageConstraintService/Get": {},
+ "/metalstack.admin.v2.SizeImageConstraintService/List": {},
+ "/metalstack.admin.v2.SizeImageConstraintService/Update": {},
+ "/metalstack.admin.v2.SizeReservationService/Create": {},
+ "/metalstack.admin.v2.SizeReservationService/Delete": {},
+ "/metalstack.admin.v2.SizeReservationService/List": {},
+ "/metalstack.admin.v2.SizeReservationService/Update": {},
+ "/metalstack.admin.v2.SizeService/Create": {},
+ "/metalstack.admin.v2.SizeService/Delete": {},
+ "/metalstack.admin.v2.SizeService/Update": {},
+ "/metalstack.admin.v2.SwitchService/ConnectedMachines": {},
+ "/metalstack.admin.v2.SwitchService/Delete": {},
+ "/metalstack.admin.v2.SwitchService/Get": {},
+ "/metalstack.admin.v2.SwitchService/List": {},
+ "/metalstack.admin.v2.SwitchService/Migrate": {},
+ "/metalstack.admin.v2.SwitchService/Port": {},
+ "/metalstack.admin.v2.SwitchService/Update": {},
+ "/metalstack.admin.v2.TaskService/Delete": {},
+ "/metalstack.admin.v2.TaskService/Get": {},
+ "/metalstack.admin.v2.TaskService/List": {},
+ "/metalstack.admin.v2.TaskService/Queues": {},
+ "/metalstack.admin.v2.TenantService/AddMember": {},
+ "/metalstack.admin.v2.TenantService/Create": {},
+ "/metalstack.admin.v2.TenantService/List": {},
+ "/metalstack.admin.v2.TenantService/RemoveMember": {},
+ "/metalstack.admin.v2.TokenService/Create": {},
+ "/metalstack.admin.v2.TokenService/List": {},
+ "/metalstack.admin.v2.TokenService/Revoke": {},
+ "/metalstack.admin.v2.VPNService/AuthKey": {},
+ "/metalstack.admin.v2.VPNService/ListNodes": {},
},
apiv2.AdminRole_ADMIN_ROLE_VIEWER: map[string]struct{}{
"/metalstack.admin.v2.AuditService/Get": {},
@@ -305,10 +307,12 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.admin.v2.MachineService/List": {},
"/metalstack.admin.v2.MachineService/ListBMC": {},
"/metalstack.admin.v2.MachineService/SetState": {},
+ "/metalstack.admin.v2.NetworkService/AddExternalMember": {},
"/metalstack.admin.v2.NetworkService/Create": {},
"/metalstack.admin.v2.NetworkService/Delete": {},
"/metalstack.admin.v2.NetworkService/Get": {},
"/metalstack.admin.v2.NetworkService/List": {},
+ "/metalstack.admin.v2.NetworkService/RemoveExternalMember": {},
"/metalstack.admin.v2.NetworkService/Update": {},
"/metalstack.admin.v2.PartitionService/Capacity": {},
"/metalstack.admin.v2.PartitionService/Create": {},
@@ -469,71 +473,73 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.api.v2.UserService/Get": true,
},
Admin: map[string]bool{
- "/metalstack.admin.v2.AuditService/Get": true,
- "/metalstack.admin.v2.AuditService/List": true,
- "/metalstack.admin.v2.ComponentService/Delete": true,
- "/metalstack.admin.v2.ComponentService/Get": true,
- "/metalstack.admin.v2.ComponentService/List": true,
- "/metalstack.admin.v2.FilesystemService/Create": true,
- "/metalstack.admin.v2.FilesystemService/Delete": true,
- "/metalstack.admin.v2.FilesystemService/Match": true,
- "/metalstack.admin.v2.FilesystemService/Update": true,
- "/metalstack.admin.v2.IPService/List": true,
- "/metalstack.admin.v2.ImageService/Create": true,
- "/metalstack.admin.v2.ImageService/Delete": true,
- "/metalstack.admin.v2.ImageService/Update": true,
- "/metalstack.admin.v2.ImageService/Usage": true,
- "/metalstack.admin.v2.MachineService/BMCCommand": true,
- "/metalstack.admin.v2.MachineService/ConsolePassword": true,
- "/metalstack.admin.v2.MachineService/Delete": true,
- "/metalstack.admin.v2.MachineService/Get": true,
- "/metalstack.admin.v2.MachineService/GetBMC": true,
- "/metalstack.admin.v2.MachineService/Issues": true,
- "/metalstack.admin.v2.MachineService/List": true,
- "/metalstack.admin.v2.MachineService/ListBMC": true,
- "/metalstack.admin.v2.MachineService/SetState": true,
- "/metalstack.admin.v2.NetworkService/Create": true,
- "/metalstack.admin.v2.NetworkService/Delete": true,
- "/metalstack.admin.v2.NetworkService/Get": true,
- "/metalstack.admin.v2.NetworkService/List": true,
- "/metalstack.admin.v2.NetworkService/Update": true,
- "/metalstack.admin.v2.PartitionService/Capacity": true,
- "/metalstack.admin.v2.PartitionService/Create": true,
- "/metalstack.admin.v2.PartitionService/Delete": true,
- "/metalstack.admin.v2.PartitionService/Update": true,
- "/metalstack.admin.v2.ProjectService/List": true,
- "/metalstack.admin.v2.SizeImageConstraintService/Create": true,
- "/metalstack.admin.v2.SizeImageConstraintService/Delete": true,
- "/metalstack.admin.v2.SizeImageConstraintService/Get": true,
- "/metalstack.admin.v2.SizeImageConstraintService/List": true,
- "/metalstack.admin.v2.SizeImageConstraintService/Update": true,
- "/metalstack.admin.v2.SizeReservationService/Create": true,
- "/metalstack.admin.v2.SizeReservationService/Delete": true,
- "/metalstack.admin.v2.SizeReservationService/List": true,
- "/metalstack.admin.v2.SizeReservationService/Update": true,
- "/metalstack.admin.v2.SizeService/Create": true,
- "/metalstack.admin.v2.SizeService/Delete": true,
- "/metalstack.admin.v2.SizeService/Update": true,
- "/metalstack.admin.v2.SwitchService/ConnectedMachines": true,
- "/metalstack.admin.v2.SwitchService/Delete": true,
- "/metalstack.admin.v2.SwitchService/Get": true,
- "/metalstack.admin.v2.SwitchService/List": true,
- "/metalstack.admin.v2.SwitchService/Migrate": true,
- "/metalstack.admin.v2.SwitchService/Port": true,
- "/metalstack.admin.v2.SwitchService/Update": true,
- "/metalstack.admin.v2.TaskService/Delete": true,
- "/metalstack.admin.v2.TaskService/Get": true,
- "/metalstack.admin.v2.TaskService/List": true,
- "/metalstack.admin.v2.TaskService/Queues": true,
- "/metalstack.admin.v2.TenantService/AddMember": true,
- "/metalstack.admin.v2.TenantService/Create": true,
- "/metalstack.admin.v2.TenantService/List": true,
- "/metalstack.admin.v2.TenantService/RemoveMember": true,
- "/metalstack.admin.v2.TokenService/Create": true,
- "/metalstack.admin.v2.TokenService/List": true,
- "/metalstack.admin.v2.TokenService/Revoke": true,
- "/metalstack.admin.v2.VPNService/AuthKey": true,
- "/metalstack.admin.v2.VPNService/ListNodes": true,
+ "/metalstack.admin.v2.AuditService/Get": true,
+ "/metalstack.admin.v2.AuditService/List": true,
+ "/metalstack.admin.v2.ComponentService/Delete": true,
+ "/metalstack.admin.v2.ComponentService/Get": true,
+ "/metalstack.admin.v2.ComponentService/List": true,
+ "/metalstack.admin.v2.FilesystemService/Create": true,
+ "/metalstack.admin.v2.FilesystemService/Delete": true,
+ "/metalstack.admin.v2.FilesystemService/Match": true,
+ "/metalstack.admin.v2.FilesystemService/Update": true,
+ "/metalstack.admin.v2.IPService/List": true,
+ "/metalstack.admin.v2.ImageService/Create": true,
+ "/metalstack.admin.v2.ImageService/Delete": true,
+ "/metalstack.admin.v2.ImageService/Update": true,
+ "/metalstack.admin.v2.ImageService/Usage": true,
+ "/metalstack.admin.v2.MachineService/BMCCommand": true,
+ "/metalstack.admin.v2.MachineService/ConsolePassword": true,
+ "/metalstack.admin.v2.MachineService/Delete": true,
+ "/metalstack.admin.v2.MachineService/Get": true,
+ "/metalstack.admin.v2.MachineService/GetBMC": true,
+ "/metalstack.admin.v2.MachineService/Issues": true,
+ "/metalstack.admin.v2.MachineService/List": true,
+ "/metalstack.admin.v2.MachineService/ListBMC": true,
+ "/metalstack.admin.v2.MachineService/SetState": true,
+ "/metalstack.admin.v2.NetworkService/AddExternalMember": true,
+ "/metalstack.admin.v2.NetworkService/Create": true,
+ "/metalstack.admin.v2.NetworkService/Delete": true,
+ "/metalstack.admin.v2.NetworkService/Get": true,
+ "/metalstack.admin.v2.NetworkService/List": true,
+ "/metalstack.admin.v2.NetworkService/RemoveExternalMember": true,
+ "/metalstack.admin.v2.NetworkService/Update": true,
+ "/metalstack.admin.v2.PartitionService/Capacity": true,
+ "/metalstack.admin.v2.PartitionService/Create": true,
+ "/metalstack.admin.v2.PartitionService/Delete": true,
+ "/metalstack.admin.v2.PartitionService/Update": true,
+ "/metalstack.admin.v2.ProjectService/List": true,
+ "/metalstack.admin.v2.SizeImageConstraintService/Create": true,
+ "/metalstack.admin.v2.SizeImageConstraintService/Delete": true,
+ "/metalstack.admin.v2.SizeImageConstraintService/Get": true,
+ "/metalstack.admin.v2.SizeImageConstraintService/List": true,
+ "/metalstack.admin.v2.SizeImageConstraintService/Update": true,
+ "/metalstack.admin.v2.SizeReservationService/Create": true,
+ "/metalstack.admin.v2.SizeReservationService/Delete": true,
+ "/metalstack.admin.v2.SizeReservationService/List": true,
+ "/metalstack.admin.v2.SizeReservationService/Update": true,
+ "/metalstack.admin.v2.SizeService/Create": true,
+ "/metalstack.admin.v2.SizeService/Delete": true,
+ "/metalstack.admin.v2.SizeService/Update": true,
+ "/metalstack.admin.v2.SwitchService/ConnectedMachines": true,
+ "/metalstack.admin.v2.SwitchService/Delete": true,
+ "/metalstack.admin.v2.SwitchService/Get": true,
+ "/metalstack.admin.v2.SwitchService/List": true,
+ "/metalstack.admin.v2.SwitchService/Migrate": true,
+ "/metalstack.admin.v2.SwitchService/Port": true,
+ "/metalstack.admin.v2.SwitchService/Update": true,
+ "/metalstack.admin.v2.TaskService/Delete": true,
+ "/metalstack.admin.v2.TaskService/Get": true,
+ "/metalstack.admin.v2.TaskService/List": true,
+ "/metalstack.admin.v2.TaskService/Queues": true,
+ "/metalstack.admin.v2.TenantService/AddMember": true,
+ "/metalstack.admin.v2.TenantService/Create": true,
+ "/metalstack.admin.v2.TenantService/List": true,
+ "/metalstack.admin.v2.TenantService/RemoveMember": true,
+ "/metalstack.admin.v2.TokenService/Create": true,
+ "/metalstack.admin.v2.TokenService/List": true,
+ "/metalstack.admin.v2.TokenService/Revoke": true,
+ "/metalstack.admin.v2.VPNService/AuthKey": true,
+ "/metalstack.admin.v2.VPNService/ListNodes": true,
},
Infra: map[string]bool{
"/metalstack.infra.v2.BMCService/BMCCommandDone": true,
@@ -602,156 +608,158 @@ func GetServicePermissions() *ServicePermissions {
},
},
Auditable: map[string]bool{
- "/metalstack.admin.v2.AuditService/Get": true,
- "/metalstack.admin.v2.AuditService/List": true,
- "/metalstack.admin.v2.ComponentService/Delete": true,
- "/metalstack.admin.v2.ComponentService/Get": false,
- "/metalstack.admin.v2.ComponentService/List": false,
- "/metalstack.admin.v2.FilesystemService/Create": true,
- "/metalstack.admin.v2.FilesystemService/Delete": true,
- "/metalstack.admin.v2.FilesystemService/Match": false,
- "/metalstack.admin.v2.FilesystemService/Update": true,
- "/metalstack.admin.v2.IPService/List": false,
- "/metalstack.admin.v2.ImageService/Create": true,
- "/metalstack.admin.v2.ImageService/Delete": true,
- "/metalstack.admin.v2.ImageService/Update": true,
- "/metalstack.admin.v2.ImageService/Usage": true,
- "/metalstack.admin.v2.MachineService/BMCCommand": true,
- "/metalstack.admin.v2.MachineService/ConsolePassword": true,
- "/metalstack.admin.v2.MachineService/Delete": true,
- "/metalstack.admin.v2.MachineService/Get": false,
- "/metalstack.admin.v2.MachineService/GetBMC": true,
- "/metalstack.admin.v2.MachineService/Issues": false,
- "/metalstack.admin.v2.MachineService/List": false,
- "/metalstack.admin.v2.MachineService/ListBMC": true,
- "/metalstack.admin.v2.MachineService/SetState": true,
- "/metalstack.admin.v2.NetworkService/Create": true,
- "/metalstack.admin.v2.NetworkService/Delete": true,
- "/metalstack.admin.v2.NetworkService/Get": false,
- "/metalstack.admin.v2.NetworkService/List": false,
- "/metalstack.admin.v2.NetworkService/Update": true,
- "/metalstack.admin.v2.PartitionService/Capacity": false,
- "/metalstack.admin.v2.PartitionService/Create": true,
- "/metalstack.admin.v2.PartitionService/Delete": true,
- "/metalstack.admin.v2.PartitionService/Update": true,
- "/metalstack.admin.v2.ProjectService/List": false,
- "/metalstack.admin.v2.SizeImageConstraintService/Create": true,
- "/metalstack.admin.v2.SizeImageConstraintService/Delete": true,
- "/metalstack.admin.v2.SizeImageConstraintService/Get": false,
- "/metalstack.admin.v2.SizeImageConstraintService/List": false,
- "/metalstack.admin.v2.SizeImageConstraintService/Update": true,
- "/metalstack.admin.v2.SizeReservationService/Create": true,
- "/metalstack.admin.v2.SizeReservationService/Delete": true,
- "/metalstack.admin.v2.SizeReservationService/List": false,
- "/metalstack.admin.v2.SizeReservationService/Update": true,
- "/metalstack.admin.v2.SizeService/Create": true,
- "/metalstack.admin.v2.SizeService/Delete": true,
- "/metalstack.admin.v2.SizeService/Update": true,
- "/metalstack.admin.v2.SwitchService/ConnectedMachines": false,
- "/metalstack.admin.v2.SwitchService/Delete": true,
- "/metalstack.admin.v2.SwitchService/Get": false,
- "/metalstack.admin.v2.SwitchService/List": false,
- "/metalstack.admin.v2.SwitchService/Migrate": true,
- "/metalstack.admin.v2.SwitchService/Port": true,
- "/metalstack.admin.v2.SwitchService/Update": true,
- "/metalstack.admin.v2.TaskService/Delete": true,
- "/metalstack.admin.v2.TaskService/Get": true,
- "/metalstack.admin.v2.TaskService/List": true,
- "/metalstack.admin.v2.TaskService/Queues": true,
- "/metalstack.admin.v2.TenantService/AddMember": true,
- "/metalstack.admin.v2.TenantService/Create": true,
- "/metalstack.admin.v2.TenantService/List": true,
- "/metalstack.admin.v2.TenantService/RemoveMember": true,
- "/metalstack.admin.v2.TokenService/Create": true,
- "/metalstack.admin.v2.TokenService/List": true,
- "/metalstack.admin.v2.TokenService/Revoke": true,
- "/metalstack.admin.v2.VPNService/AuthKey": true,
- "/metalstack.admin.v2.VPNService/ListNodes": true,
- "/metalstack.api.v2.AuditService/Get": false,
- "/metalstack.api.v2.AuditService/List": false,
- "/metalstack.api.v2.FilesystemService/Get": false,
- "/metalstack.api.v2.FilesystemService/List": false,
- "/metalstack.api.v2.HealthService/Get": false,
- "/metalstack.api.v2.IPService/Create": true,
- "/metalstack.api.v2.IPService/Delete": true,
- "/metalstack.api.v2.IPService/Get": false,
- "/metalstack.api.v2.IPService/List": false,
- "/metalstack.api.v2.IPService/Update": true,
- "/metalstack.api.v2.ImageService/Get": false,
- "/metalstack.api.v2.ImageService/Latest": false,
- "/metalstack.api.v2.ImageService/List": false,
- "/metalstack.api.v2.MachineService/BMCCommand": true,
- "/metalstack.api.v2.MachineService/Create": true,
- "/metalstack.api.v2.MachineService/Delete": true,
- "/metalstack.api.v2.MachineService/Get": false,
- "/metalstack.api.v2.MachineService/GetBMC": true,
- "/metalstack.api.v2.MachineService/List": false,
- "/metalstack.api.v2.MachineService/Update": true,
- "/metalstack.api.v2.MethodService/List": true,
- "/metalstack.api.v2.MethodService/TokenScopedList": true,
- "/metalstack.api.v2.NetworkService/Create": true,
- "/metalstack.api.v2.NetworkService/Delete": true,
- "/metalstack.api.v2.NetworkService/Get": false,
- "/metalstack.api.v2.NetworkService/List": false,
- "/metalstack.api.v2.NetworkService/ListBaseNetworks": false,
- "/metalstack.api.v2.NetworkService/Update": true,
- "/metalstack.api.v2.PartitionService/Get": false,
- "/metalstack.api.v2.PartitionService/List": false,
- "/metalstack.api.v2.ProjectService/AddMember": true,
- "/metalstack.api.v2.ProjectService/Create": true,
- "/metalstack.api.v2.ProjectService/Delete": true,
- "/metalstack.api.v2.ProjectService/Get": false,
- "/metalstack.api.v2.ProjectService/Invite": true,
- "/metalstack.api.v2.ProjectService/InviteAccept": true,
- "/metalstack.api.v2.ProjectService/InviteDelete": true,
- "/metalstack.api.v2.ProjectService/InviteGet": false,
- "/metalstack.api.v2.ProjectService/InvitesList": false,
- "/metalstack.api.v2.ProjectService/Leave": true,
- "/metalstack.api.v2.ProjectService/List": false,
- "/metalstack.api.v2.ProjectService/RemoveMember": true,
- "/metalstack.api.v2.ProjectService/Update": true,
- "/metalstack.api.v2.ProjectService/UpdateMember": true,
- "/metalstack.api.v2.SizeImageConstraintService/Try": false,
- "/metalstack.api.v2.SizeReservationService/Get": false,
- "/metalstack.api.v2.SizeReservationService/List": false,
- "/metalstack.api.v2.SizeService/Get": false,
- "/metalstack.api.v2.SizeService/List": false,
- "/metalstack.api.v2.TenantService/AddMember": true,
- "/metalstack.api.v2.TenantService/Create": true,
- "/metalstack.api.v2.TenantService/Delete": true,
- "/metalstack.api.v2.TenantService/Get": false,
- "/metalstack.api.v2.TenantService/Invite": true,
- "/metalstack.api.v2.TenantService/InviteAccept": true,
- "/metalstack.api.v2.TenantService/InviteDelete": true,
- "/metalstack.api.v2.TenantService/InviteGet": false,
- "/metalstack.api.v2.TenantService/InvitesList": false,
- "/metalstack.api.v2.TenantService/Leave": true,
- "/metalstack.api.v2.TenantService/List": false,
- "/metalstack.api.v2.TenantService/RemoveMember": true,
- "/metalstack.api.v2.TenantService/Update": true,
- "/metalstack.api.v2.TenantService/UpdateMember": true,
- "/metalstack.api.v2.TokenService/Create": true,
- "/metalstack.api.v2.TokenService/Get": true,
- "/metalstack.api.v2.TokenService/List": true,
- "/metalstack.api.v2.TokenService/Refresh": true,
- "/metalstack.api.v2.TokenService/Revoke": true,
- "/metalstack.api.v2.TokenService/Update": true,
- "/metalstack.api.v2.UserService/Get": true,
- "/metalstack.api.v2.VersionService/Get": false,
- "/metalstack.infra.v2.BMCService/BMCCommandDone": true,
- "/metalstack.infra.v2.BMCService/UpdateBMCInfo": false,
- "/metalstack.infra.v2.BMCService/WaitForBMCCommand": false,
- "/metalstack.infra.v2.BootService/Boot": false,
- "/metalstack.infra.v2.BootService/Dhcp": false,
- "/metalstack.infra.v2.BootService/InstallationSucceeded": false,
- "/metalstack.infra.v2.BootService/Register": false,
- "/metalstack.infra.v2.BootService/SuperUserPassword": false,
- "/metalstack.infra.v2.BootService/Wait": false,
- "/metalstack.infra.v2.ComponentService/Ping": false,
- "/metalstack.infra.v2.EventService/Send": false,
- "/metalstack.infra.v2.SwitchService/Get": false,
- "/metalstack.infra.v2.SwitchService/Heartbeat": false,
- "/metalstack.infra.v2.SwitchService/Register": false,
+ "/metalstack.admin.v2.AuditService/Get": true,
+ "/metalstack.admin.v2.AuditService/List": true,
+ "/metalstack.admin.v2.ComponentService/Delete": true,
+ "/metalstack.admin.v2.ComponentService/Get": false,
+ "/metalstack.admin.v2.ComponentService/List": false,
+ "/metalstack.admin.v2.FilesystemService/Create": true,
+ "/metalstack.admin.v2.FilesystemService/Delete": true,
+ "/metalstack.admin.v2.FilesystemService/Match": false,
+ "/metalstack.admin.v2.FilesystemService/Update": true,
+ "/metalstack.admin.v2.IPService/List": false,
+ "/metalstack.admin.v2.ImageService/Create": true,
+ "/metalstack.admin.v2.ImageService/Delete": true,
+ "/metalstack.admin.v2.ImageService/Update": true,
+ "/metalstack.admin.v2.ImageService/Usage": true,
+ "/metalstack.admin.v2.MachineService/BMCCommand": true,
+ "/metalstack.admin.v2.MachineService/ConsolePassword": true,
+ "/metalstack.admin.v2.MachineService/Delete": true,
+ "/metalstack.admin.v2.MachineService/Get": false,
+ "/metalstack.admin.v2.MachineService/GetBMC": true,
+ "/metalstack.admin.v2.MachineService/Issues": false,
+ "/metalstack.admin.v2.MachineService/List": false,
+ "/metalstack.admin.v2.MachineService/ListBMC": true,
+ "/metalstack.admin.v2.MachineService/SetState": true,
+ "/metalstack.admin.v2.NetworkService/AddExternalMember": true,
+ "/metalstack.admin.v2.NetworkService/Create": true,
+ "/metalstack.admin.v2.NetworkService/Delete": true,
+ "/metalstack.admin.v2.NetworkService/Get": false,
+ "/metalstack.admin.v2.NetworkService/List": false,
+ "/metalstack.admin.v2.NetworkService/RemoveExternalMember": true,
+ "/metalstack.admin.v2.NetworkService/Update": true,
+ "/metalstack.admin.v2.PartitionService/Capacity": false,
+ "/metalstack.admin.v2.PartitionService/Create": true,
+ "/metalstack.admin.v2.PartitionService/Delete": true,
+ "/metalstack.admin.v2.PartitionService/Update": true,
+ "/metalstack.admin.v2.ProjectService/List": false,
+ "/metalstack.admin.v2.SizeImageConstraintService/Create": true,
+ "/metalstack.admin.v2.SizeImageConstraintService/Delete": true,
+ "/metalstack.admin.v2.SizeImageConstraintService/Get": false,
+ "/metalstack.admin.v2.SizeImageConstraintService/List": false,
+ "/metalstack.admin.v2.SizeImageConstraintService/Update": true,
+ "/metalstack.admin.v2.SizeReservationService/Create": true,
+ "/metalstack.admin.v2.SizeReservationService/Delete": true,
+ "/metalstack.admin.v2.SizeReservationService/List": false,
+ "/metalstack.admin.v2.SizeReservationService/Update": true,
+ "/metalstack.admin.v2.SizeService/Create": true,
+ "/metalstack.admin.v2.SizeService/Delete": true,
+ "/metalstack.admin.v2.SizeService/Update": true,
+ "/metalstack.admin.v2.SwitchService/ConnectedMachines": false,
+ "/metalstack.admin.v2.SwitchService/Delete": true,
+ "/metalstack.admin.v2.SwitchService/Get": false,
+ "/metalstack.admin.v2.SwitchService/List": false,
+ "/metalstack.admin.v2.SwitchService/Migrate": true,
+ "/metalstack.admin.v2.SwitchService/Port": true,
+ "/metalstack.admin.v2.SwitchService/Update": true,
+ "/metalstack.admin.v2.TaskService/Delete": true,
+ "/metalstack.admin.v2.TaskService/Get": true,
+ "/metalstack.admin.v2.TaskService/List": true,
+ "/metalstack.admin.v2.TaskService/Queues": true,
+ "/metalstack.admin.v2.TenantService/AddMember": true,
+ "/metalstack.admin.v2.TenantService/Create": true,
+ "/metalstack.admin.v2.TenantService/List": true,
+ "/metalstack.admin.v2.TenantService/RemoveMember": true,
+ "/metalstack.admin.v2.TokenService/Create": true,
+ "/metalstack.admin.v2.TokenService/List": true,
+ "/metalstack.admin.v2.TokenService/Revoke": true,
+ "/metalstack.admin.v2.VPNService/AuthKey": true,
+ "/metalstack.admin.v2.VPNService/ListNodes": true,
+ "/metalstack.api.v2.AuditService/Get": false,
+ "/metalstack.api.v2.AuditService/List": false,
+ "/metalstack.api.v2.FilesystemService/Get": false,
+ "/metalstack.api.v2.FilesystemService/List": false,
+ "/metalstack.api.v2.HealthService/Get": false,
+ "/metalstack.api.v2.IPService/Create": true,
+ "/metalstack.api.v2.IPService/Delete": true,
+ "/metalstack.api.v2.IPService/Get": false,
+ "/metalstack.api.v2.IPService/List": false,
+ "/metalstack.api.v2.IPService/Update": true,
+ "/metalstack.api.v2.ImageService/Get": false,
+ "/metalstack.api.v2.ImageService/Latest": false,
+ "/metalstack.api.v2.ImageService/List": false,
+ "/metalstack.api.v2.MachineService/BMCCommand": true,
+ "/metalstack.api.v2.MachineService/Create": true,
+ "/metalstack.api.v2.MachineService/Delete": true,
+ "/metalstack.api.v2.MachineService/Get": false,
+ "/metalstack.api.v2.MachineService/GetBMC": true,
+ "/metalstack.api.v2.MachineService/List": false,
+ "/metalstack.api.v2.MachineService/Update": true,
+ "/metalstack.api.v2.MethodService/List": true,
+ "/metalstack.api.v2.MethodService/TokenScopedList": true,
+ "/metalstack.api.v2.NetworkService/Create": true,
+ "/metalstack.api.v2.NetworkService/Delete": true,
+ "/metalstack.api.v2.NetworkService/Get": false,
+ "/metalstack.api.v2.NetworkService/List": false,
+ "/metalstack.api.v2.NetworkService/ListBaseNetworks": false,
+ "/metalstack.api.v2.NetworkService/Update": true,
+ "/metalstack.api.v2.PartitionService/Get": false,
+ "/metalstack.api.v2.PartitionService/List": false,
+ "/metalstack.api.v2.ProjectService/AddMember": true,
+ "/metalstack.api.v2.ProjectService/Create": true,
+ "/metalstack.api.v2.ProjectService/Delete": true,
+ "/metalstack.api.v2.ProjectService/Get": false,
+ "/metalstack.api.v2.ProjectService/Invite": true,
+ "/metalstack.api.v2.ProjectService/InviteAccept": true,
+ "/metalstack.api.v2.ProjectService/InviteDelete": true,
+ "/metalstack.api.v2.ProjectService/InviteGet": false,
+ "/metalstack.api.v2.ProjectService/InvitesList": false,
+ "/metalstack.api.v2.ProjectService/Leave": true,
+ "/metalstack.api.v2.ProjectService/List": false,
+ "/metalstack.api.v2.ProjectService/RemoveMember": true,
+ "/metalstack.api.v2.ProjectService/Update": true,
+ "/metalstack.api.v2.ProjectService/UpdateMember": true,
+ "/metalstack.api.v2.SizeImageConstraintService/Try": false,
+ "/metalstack.api.v2.SizeReservationService/Get": false,
+ "/metalstack.api.v2.SizeReservationService/List": false,
+ "/metalstack.api.v2.SizeService/Get": false,
+ "/metalstack.api.v2.SizeService/List": false,
+ "/metalstack.api.v2.TenantService/AddMember": true,
+ "/metalstack.api.v2.TenantService/Create": true,
+ "/metalstack.api.v2.TenantService/Delete": true,
+ "/metalstack.api.v2.TenantService/Get": false,
+ "/metalstack.api.v2.TenantService/Invite": true,
+ "/metalstack.api.v2.TenantService/InviteAccept": true,
+ "/metalstack.api.v2.TenantService/InviteDelete": true,
+ "/metalstack.api.v2.TenantService/InviteGet": false,
+ "/metalstack.api.v2.TenantService/InvitesList": false,
+ "/metalstack.api.v2.TenantService/Leave": true,
+ "/metalstack.api.v2.TenantService/List": false,
+ "/metalstack.api.v2.TenantService/RemoveMember": true,
+ "/metalstack.api.v2.TenantService/Update": true,
+ "/metalstack.api.v2.TenantService/UpdateMember": true,
+ "/metalstack.api.v2.TokenService/Create": true,
+ "/metalstack.api.v2.TokenService/Get": true,
+ "/metalstack.api.v2.TokenService/List": true,
+ "/metalstack.api.v2.TokenService/Refresh": true,
+ "/metalstack.api.v2.TokenService/Revoke": true,
+ "/metalstack.api.v2.TokenService/Update": true,
+ "/metalstack.api.v2.UserService/Get": true,
+ "/metalstack.api.v2.VersionService/Get": false,
+ "/metalstack.infra.v2.BMCService/BMCCommandDone": true,
+ "/metalstack.infra.v2.BMCService/UpdateBMCInfo": false,
+ "/metalstack.infra.v2.BMCService/WaitForBMCCommand": false,
+ "/metalstack.infra.v2.BootService/Boot": false,
+ "/metalstack.infra.v2.BootService/Dhcp": false,
+ "/metalstack.infra.v2.BootService/InstallationSucceeded": false,
+ "/metalstack.infra.v2.BootService/Register": false,
+ "/metalstack.infra.v2.BootService/SuperUserPassword": false,
+ "/metalstack.infra.v2.BootService/Wait": false,
+ "/metalstack.infra.v2.ComponentService/Ping": false,
+ "/metalstack.infra.v2.EventService/Send": false,
+ "/metalstack.infra.v2.SwitchService/Get": false,
+ "/metalstack.infra.v2.SwitchService/Heartbeat": false,
+ "/metalstack.infra.v2.SwitchService/Register": false,
},
}
}
diff --git a/js/metalstack/admin/v2/network_pb.d.ts b/js/metalstack/admin/v2/network_pb.d.ts
index 39031fbf..d7f31747 100644
--- a/js/metalstack/admin/v2/network_pb.d.ts
+++ b/js/metalstack/admin/v2/network_pb.d.ts
@@ -1,6 +1,7 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import type { Labels, UpdateLabels, UpdateMeta } from "../../api/v2/common_pb";
-import type { ChildPrefixLength, NATType, Network, NetworkAddressFamily, NetworkQuery, NetworkType } from "../../api/v2/network_pb";
+import type { ChildPrefixLength, ExternalNetworkMemberQuery, ExternalNetworkMembers, NATType, Network, NetworkAddressFamily, NetworkQuery, NetworkType } from "../../api/v2/network_pb";
+import type { Switch } from "../../api/v2/switch_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/admin/v2/network.proto.
@@ -276,6 +277,79 @@ export type NetworkServiceListRequest = Message<"metalstack.admin.v2.NetworkServ
* Use `create(NetworkServiceListRequestSchema)` to create a new message.
*/
export declare const NetworkServiceListRequestSchema: GenMessage;
+/**
+ * NetworkServiceListExternalMemberRequest is the request payload for listing external members of a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceListExternalMemberRequest
+ */
+export type NetworkServiceListExternalMemberRequest = Message<"metalstack.admin.v2.NetworkServiceListExternalMemberRequest"> & {
+ /**
+ * Network to list the members for.
+ *
+ * @generated from field: string network = 1;
+ */
+ network: string;
+ /**
+ * Query specifies additional filters for the list request.
+ *
+ * @generated from field: metalstack.api.v2.ExternalNetworkMemberQuery query = 2;
+ */
+ query?: ExternalNetworkMemberQuery | undefined;
+};
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceListExternalMemberRequest.
+ * Use `create(NetworkServiceListExternalMemberRequestSchema)` to create a new message.
+ */
+export declare const NetworkServiceListExternalMemberRequestSchema: GenMessage;
+/**
+ * NetworkServiceAddExternalMemberRequest is the request payload for adding an external member to a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceAddExternalMemberRequest
+ */
+export type NetworkServiceAddExternalMemberRequest = Message<"metalstack.admin.v2.NetworkServiceAddExternalMemberRequest"> & {
+ /**
+ * Network to add the member to.
+ *
+ * @generated from field: string network = 1;
+ */
+ network: string;
+ /**
+ * SwitchPorts contains the ports of a switch that should be added to the network.
+ * Make sure to add both switches of a rack and the same ports of both in the same request.
+ *
+ * @generated from field: repeated metalstack.api.v2.ExternalNetworkMembers switch_ports = 2;
+ */
+ switchPorts: ExternalNetworkMembers[];
+};
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMemberRequest.
+ * Use `create(NetworkServiceAddExternalMemberRequestSchema)` to create a new message.
+ */
+export declare const NetworkServiceAddExternalMemberRequestSchema: GenMessage;
+/**
+ * NetworkServiceRemoveExternalMemberRequest is the request payload for removing an external member from a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest
+ */
+export type NetworkServiceRemoveExternalMemberRequest = Message<"metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest"> & {
+ /**
+ * Network to remove the member from.
+ *
+ * @generated from field: string network = 1;
+ */
+ network: string;
+ /**
+ * SwitchPorts contains the ports of a switch that should be removed from the network.
+ *
+ * @generated from field: repeated metalstack.api.v2.ExternalNetworkMembers switch_ports = 2;
+ */
+ switchPorts: ExternalNetworkMembers[];
+};
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest.
+ * Use `create(NetworkServiceRemoveExternalMemberRequestSchema)` to create a new message.
+ */
+export declare const NetworkServiceRemoveExternalMemberRequestSchema: GenMessage;
/**
* NetworkServiceCreateResponse is the response payload for creating a network.
*
@@ -348,6 +422,60 @@ export type NetworkServiceListResponse = Message<"metalstack.admin.v2.NetworkSer
* Use `create(NetworkServiceListResponseSchema)` to create a new message.
*/
export declare const NetworkServiceListResponseSchema: GenMessage;
+/**
+ * NetworkServiceListExternalMemberResponse is the response payload for listing external members of a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceListExternalMemberResponse
+ */
+export type NetworkServiceListExternalMemberResponse = Message<"metalstack.admin.v2.NetworkServiceListExternalMemberResponse"> & {
+ /**
+ * Members are the queried external members of the network.
+ *
+ * @generated from field: repeated metalstack.api.v2.ExternalNetworkMembers members = 1;
+ */
+ members: ExternalNetworkMembers[];
+};
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceListExternalMemberResponse.
+ * Use `create(NetworkServiceListExternalMemberResponseSchema)` to create a new message.
+ */
+export declare const NetworkServiceListExternalMemberResponseSchema: GenMessage;
+/**
+ * NetworkServiceAddExternalMemberResponse is the response payload for adding an external member to a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceAddExternalMemberResponse
+ */
+export type NetworkServiceAddExternalMemberResponse = Message<"metalstack.admin.v2.NetworkServiceAddExternalMemberResponse"> & {
+ /**
+ * Switch contains the updated switch.
+ *
+ * @generated from field: metalstack.api.v2.Switch switch = 1;
+ */
+ switch?: Switch | undefined;
+};
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMemberResponse.
+ * Use `create(NetworkServiceAddExternalMemberResponseSchema)` to create a new message.
+ */
+export declare const NetworkServiceAddExternalMemberResponseSchema: GenMessage;
+/**
+ * NetworkServiceRemoveExternalMemberResponse is the response payload for removing an external member from a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse
+ */
+export type NetworkServiceRemoveExternalMemberResponse = Message<"metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse"> & {
+ /**
+ * Switch contains the updated switch.
+ *
+ * @generated from field: metalstack.api.v2.Switch switch = 1;
+ */
+ switch?: Switch | undefined;
+};
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse.
+ * Use `create(NetworkServiceRemoveExternalMemberResponseSchema)` to create a new message.
+ */
+export declare const NetworkServiceRemoveExternalMemberResponseSchema: GenMessage;
/**
* NetworkService provides network management operations.
*
@@ -404,4 +532,24 @@ export declare const NetworkService: GenService<{
input: typeof NetworkServiceListRequestSchema;
output: typeof NetworkServiceListResponseSchema;
};
+ /**
+ * Adds an external member to a network.
+ *
+ * @generated from rpc metalstack.admin.v2.NetworkService.AddExternalMember
+ */
+ addExternalMember: {
+ methodKind: "unary";
+ input: typeof NetworkServiceAddExternalMemberRequestSchema;
+ output: typeof NetworkServiceAddExternalMemberResponseSchema;
+ };
+ /**
+ * Removes an external member from a network.
+ *
+ * @generated from rpc metalstack.admin.v2.NetworkService.RemoveExternalMember
+ */
+ removeExternalMember: {
+ methodKind: "unary";
+ input: typeof NetworkServiceRemoveExternalMemberRequestSchema;
+ output: typeof NetworkServiceRemoveExternalMemberResponseSchema;
+ };
}>;
diff --git a/js/metalstack/admin/v2/network_pb.js b/js/metalstack/admin/v2/network_pb.js
index dec61f33..4873973e 100644
--- a/js/metalstack/admin/v2/network_pb.js
+++ b/js/metalstack/admin/v2/network_pb.js
@@ -6,10 +6,11 @@ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
import { file_metalstack_api_v2_common } from "../../api/v2/common_pb";
import { file_metalstack_api_v2_network } from "../../api/v2/network_pb";
import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
+import { file_metalstack_api_v2_switch } from "../../api/v2/switch_pb";
/**
* Describes the file metalstack/admin/v2/network.proto.
*/
-export const file_metalstack_admin_v2_network = /*@__PURE__*/ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL25ldHdvcmsucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMwoYTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECASJIChlOZXR3b3JrU2VydmljZUdldFJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrItAHChtOZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIjCglwYXJ0aXRpb24YBCABKAlCC7pICHIG0LOusQIBSAOIAQESHgoHcHJvamVjdBgFIAEoCUIIukgFcgOwAQFIBIgBARI2CgR0eXBlGAYgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1R5cGVCCLpIBYIBAhABEi4KBmxhYmVscxgHIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjsKCG5hdF90eXBlGAwgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAFIBogBARIQCgN2cmYYDSABKA1IB4gBARIoCg5wYXJlbnRfbmV0d29yaxgOIAEoCUILukgIcgbAs66xAgFICIgBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGA8gAygJQgy6SAmSAQa4pLOxAgESOQoGbGVuZ3RoGBAgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhICYgBARJOCg5hZGRyZXNzX2ZhbWlseRgRIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgKiAEBQgUKA19pZEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX3BhcnRpdGlvbkIKCghfcHJvamVjdEIJCgdfbGFiZWxzQgsKCV9uYXRfdHlwZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSLEBQobTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gCiAEBEh4KCHByZWZpeGVzGAYgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYByADKAlCDLpICZIBBriks7ECARJOChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aEgDiAEBEkoKF21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoGAkgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARI7CghuYXRfdHlwZRgKIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAWIAQESMgocYWRkaXRpb25hbF9hbm5vdW5jYWJsZV9jaWRycxgLIAMoCUIMukgJkgEGuKSzsQIBEg0KBWZvcmNlGAwgASgIQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzQh4KHF9kZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGhCGgoYX21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoQgsKCV9uYXRfdHlwZSI2ChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBIksKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSLgoFcXVlcnkYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkiSwocTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJLChxOZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsiSgoaTmV0d29ya1NlcnZpY2VMaXN0UmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrMuUECg5OZXR3b3JrU2VydmljZRJwCgNHZXQSLS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VHZXRSZXNwb25zZSIK0vMYAgEC4PMYAhJ4CgZDcmVhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEngKBlVwZGF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESeAoGRGVsZXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARJzCgRMaXN0Ei4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAkLQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDE5ldHdvcmtQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [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("CiFtZXRhbHN0YWNrL2FkbWluL3YyL25ldHdvcmsucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMwoYTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECASJIChlOZXR3b3JrU2VydmljZUdldFJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrItAHChtOZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIjCglwYXJ0aXRpb24YBCABKAlCC7pICHIG0LOusQIBSAOIAQESHgoHcHJvamVjdBgFIAEoCUIIukgFcgOwAQFIBIgBARI2CgR0eXBlGAYgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1R5cGVCCLpIBYIBAhABEi4KBmxhYmVscxgHIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjsKCG5hdF90eXBlGAwgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAFIBogBARIQCgN2cmYYDSABKA1IB4gBARIoCg5wYXJlbnRfbmV0d29yaxgOIAEoCUILukgIcgbAs66xAgFICIgBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGA8gAygJQgy6SAmSAQa4pLOxAgESOQoGbGVuZ3RoGBAgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhICYgBARJOCg5hZGRyZXNzX2ZhbWlseRgRIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgKiAEBQgUKA19pZEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX3BhcnRpdGlvbkIKCghfcHJvamVjdEIJCgdfbGFiZWxzQgsKCV9uYXRfdHlwZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSLEBQobTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gCiAEBEh4KCHByZWZpeGVzGAYgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYByADKAlCDLpICZIBBriks7ECARJOChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aEgDiAEBEkoKF21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoGAkgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARI7CghuYXRfdHlwZRgKIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAWIAQESMgocYWRkaXRpb25hbF9hbm5vdW5jYWJsZV9jaWRycxgLIAMoCUIMukgJkgEGuKSzsQIBEg0KBWZvcmNlGAwgASgIQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzQh4KHF9kZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGhCGgoYX21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoQgsKCV9uYXRfdHlwZSI2ChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBIksKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSLgoFcXVlcnkYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkihQEKJ05ldHdvcmtTZXJ2aWNlTGlzdEV4dGVybmFsTWVtYmVyUmVxdWVzdBIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARI8CgVxdWVyeRgCIAEoCzItLm1ldGFsc3RhY2suYXBpLnYyLkV4dGVybmFsTmV0d29ya01lbWJlclF1ZXJ5IpEBCiZOZXR3b3JrU2VydmljZUFkZEV4dGVybmFsTWVtYmVyUmVxdWVzdBIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARJJCgxzd2l0Y2hfcG9ydHMYAiADKAsyKS5tZXRhbHN0YWNrLmFwaS52Mi5FeHRlcm5hbE5ldHdvcmtNZW1iZXJzQgi6SAWSAQIQCCKUAQopTmV0d29ya1NlcnZpY2VSZW1vdmVFeHRlcm5hbE1lbWJlclJlcXVlc3QSHAoHbmV0d29yaxgBIAEoCUILukgIcgbAs66xAgESSQoMc3dpdGNoX3BvcnRzGAIgAygLMikubWV0YWxzdGFjay5hcGkudjIuRXh0ZXJuYWxOZXR3b3JrTWVtYmVyc0IIukgFkgECEAgiSwocTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJLChxOZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsiSgoaTmV0d29ya1NlcnZpY2VMaXN0UmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrImYKKE5ldHdvcmtTZXJ2aWNlTGlzdEV4dGVybmFsTWVtYmVyUmVzcG9uc2USOgoHbWVtYmVycxgBIAMoCzIpLm1ldGFsc3RhY2suYXBpLnYyLkV4dGVybmFsTmV0d29ya01lbWJlcnMiVAonTmV0d29ya1NlcnZpY2VBZGRFeHRlcm5hbE1lbWJlclJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCJXCipOZXR3b3JrU2VydmljZVJlbW92ZUV4dGVybmFsTWVtYmVyUmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoMqYHCg5OZXR3b3JrU2VydmljZRJwCgNHZXQSLS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VHZXRSZXNwb25zZSIK0vMYAgEC4PMYAhJ4CgZDcmVhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEngKBlVwZGF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESeAoGRGVsZXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARJzCgRMaXN0Ei4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAhKZAQoRQWRkRXh0ZXJuYWxNZW1iZXISOy5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQWRkRXh0ZXJuYWxNZW1iZXJSZXF1ZXN0GjwubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUFkZEV4dGVybmFsTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYARKiAQoUUmVtb3ZlRXh0ZXJuYWxNZW1iZXISPi5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlUmVtb3ZlRXh0ZXJuYWxNZW1iZXJSZXF1ZXN0Gj8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVJlbW92ZUV4dGVybmFsTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYAULQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDE5ldHdvcmtQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_network, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]);
/**
* Describes the message metalstack.admin.v2.NetworkServiceGetRequest.
* Use `create(NetworkServiceGetRequestSchema)` to create a new message.
@@ -40,26 +41,56 @@ export const NetworkServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_
* Use `create(NetworkServiceListRequestSchema)` to create a new message.
*/
export const NetworkServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 5);
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceListExternalMemberRequest.
+ * Use `create(NetworkServiceListExternalMemberRequestSchema)` to create a new message.
+ */
+export const NetworkServiceListExternalMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 6);
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMemberRequest.
+ * Use `create(NetworkServiceAddExternalMemberRequestSchema)` to create a new message.
+ */
+export const NetworkServiceAddExternalMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 7);
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest.
+ * Use `create(NetworkServiceRemoveExternalMemberRequestSchema)` to create a new message.
+ */
+export const NetworkServiceRemoveExternalMemberRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 8);
/**
* Describes the message metalstack.admin.v2.NetworkServiceCreateResponse.
* Use `create(NetworkServiceCreateResponseSchema)` to create a new message.
*/
-export const NetworkServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 6);
+export const NetworkServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 9);
/**
* Describes the message metalstack.admin.v2.NetworkServiceUpdateResponse.
* Use `create(NetworkServiceUpdateResponseSchema)` to create a new message.
*/
-export const NetworkServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 7);
+export const NetworkServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 10);
/**
* Describes the message metalstack.admin.v2.NetworkServiceDeleteResponse.
* Use `create(NetworkServiceDeleteResponseSchema)` to create a new message.
*/
-export const NetworkServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 8);
+export const NetworkServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 11);
/**
* Describes the message metalstack.admin.v2.NetworkServiceListResponse.
* Use `create(NetworkServiceListResponseSchema)` to create a new message.
*/
-export const NetworkServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 9);
+export const NetworkServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 12);
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceListExternalMemberResponse.
+ * Use `create(NetworkServiceListExternalMemberResponseSchema)` to create a new message.
+ */
+export const NetworkServiceListExternalMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 13);
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMemberResponse.
+ * Use `create(NetworkServiceAddExternalMemberResponseSchema)` to create a new message.
+ */
+export const NetworkServiceAddExternalMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 14);
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse.
+ * Use `create(NetworkServiceRemoveExternalMemberResponseSchema)` to create a new message.
+ */
+export const NetworkServiceRemoveExternalMemberResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 15);
/**
* NetworkService provides network management operations.
*
diff --git a/js/metalstack/admin/v2/network_pb.ts b/js/metalstack/admin/v2/network_pb.ts
index 11d2dff3..9e355a35 100644
--- a/js/metalstack/admin/v2/network_pb.ts
+++ b/js/metalstack/admin/v2/network_pb.ts
@@ -7,16 +7,18 @@ import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2
import { file_buf_validate_validate } from "../../../buf/validate/validate_pb";
import type { Labels, UpdateLabels, UpdateMeta } from "../../api/v2/common_pb";
import { file_metalstack_api_v2_common } from "../../api/v2/common_pb";
-import type { ChildPrefixLength, NATType, Network, NetworkAddressFamily, NetworkQuery, NetworkType } from "../../api/v2/network_pb";
+import type { ChildPrefixLength, ExternalNetworkMemberQuery, ExternalNetworkMembers, NATType, Network, NetworkAddressFamily, NetworkQuery, NetworkType } from "../../api/v2/network_pb";
import { file_metalstack_api_v2_network } from "../../api/v2/network_pb";
import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
+import type { Switch } from "../../api/v2/switch_pb";
+import { file_metalstack_api_v2_switch } from "../../api/v2/switch_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/admin/v2/network.proto.
*/
export const file_metalstack_admin_v2_network: GenFile = /*@__PURE__*/
- fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL25ldHdvcmsucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMwoYTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECASJIChlOZXR3b3JrU2VydmljZUdldFJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrItAHChtOZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIjCglwYXJ0aXRpb24YBCABKAlCC7pICHIG0LOusQIBSAOIAQESHgoHcHJvamVjdBgFIAEoCUIIukgFcgOwAQFIBIgBARI2CgR0eXBlGAYgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1R5cGVCCLpIBYIBAhABEi4KBmxhYmVscxgHIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjsKCG5hdF90eXBlGAwgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAFIBogBARIQCgN2cmYYDSABKA1IB4gBARIoCg5wYXJlbnRfbmV0d29yaxgOIAEoCUILukgIcgbAs66xAgFICIgBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGA8gAygJQgy6SAmSAQa4pLOxAgESOQoGbGVuZ3RoGBAgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhICYgBARJOCg5hZGRyZXNzX2ZhbWlseRgRIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgKiAEBQgUKA19pZEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX3BhcnRpdGlvbkIKCghfcHJvamVjdEIJCgdfbGFiZWxzQgsKCV9uYXRfdHlwZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSLEBQobTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gCiAEBEh4KCHByZWZpeGVzGAYgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYByADKAlCDLpICZIBBriks7ECARJOChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aEgDiAEBEkoKF21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoGAkgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARI7CghuYXRfdHlwZRgKIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAWIAQESMgocYWRkaXRpb25hbF9hbm5vdW5jYWJsZV9jaWRycxgLIAMoCUIMukgJkgEGuKSzsQIBEg0KBWZvcmNlGAwgASgIQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzQh4KHF9kZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGhCGgoYX21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoQgsKCV9uYXRfdHlwZSI2ChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBIksKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSLgoFcXVlcnkYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkiSwocTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJLChxOZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsiSgoaTmV0d29ya1NlcnZpY2VMaXN0UmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrMuUECg5OZXR3b3JrU2VydmljZRJwCgNHZXQSLS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VHZXRSZXNwb25zZSIK0vMYAgEC4PMYAhJ4CgZDcmVhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEngKBlVwZGF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESeAoGRGVsZXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARJzCgRMaXN0Ei4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAkLQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDE5ldHdvcmtQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_network, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL25ldHdvcmsucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMwoYTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECASJIChlOZXR3b3JrU2VydmljZUdldFJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrItAHChtOZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIjCglwYXJ0aXRpb24YBCABKAlCC7pICHIG0LOusQIBSAOIAQESHgoHcHJvamVjdBgFIAEoCUIIukgFcgOwAQFIBIgBARI2CgR0eXBlGAYgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1R5cGVCCLpIBYIBAhABEi4KBmxhYmVscxgHIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjsKCG5hdF90eXBlGAwgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAFIBogBARIQCgN2cmYYDSABKA1IB4gBARIoCg5wYXJlbnRfbmV0d29yaxgOIAEoCUILukgIcgbAs66xAgFICIgBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGA8gAygJQgy6SAmSAQa4pLOxAgESOQoGbGVuZ3RoGBAgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhICYgBARJOCg5hZGRyZXNzX2ZhbWlseRgRIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgKiAEBQgUKA19pZEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX3BhcnRpdGlvbkIKCghfcHJvamVjdEIJCgdfbGFiZWxzQgsKCV9uYXRfdHlwZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSLEBQobTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gCiAEBEh4KCHByZWZpeGVzGAYgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYByADKAlCDLpICZIBBriks7ECARJOChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aEgDiAEBEkoKF21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoGAkgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARI7CghuYXRfdHlwZRgKIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAWIAQESMgocYWRkaXRpb25hbF9hbm5vdW5jYWJsZV9jaWRycxgLIAMoCUIMukgJkgEGuKSzsQIBEg0KBWZvcmNlGAwgASgIQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzQh4KHF9kZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGhCGgoYX21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoQgsKCV9uYXRfdHlwZSI2ChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBIksKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSLgoFcXVlcnkYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkihQEKJ05ldHdvcmtTZXJ2aWNlTGlzdEV4dGVybmFsTWVtYmVyUmVxdWVzdBIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARI8CgVxdWVyeRgCIAEoCzItLm1ldGFsc3RhY2suYXBpLnYyLkV4dGVybmFsTmV0d29ya01lbWJlclF1ZXJ5IpEBCiZOZXR3b3JrU2VydmljZUFkZEV4dGVybmFsTWVtYmVyUmVxdWVzdBIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARJJCgxzd2l0Y2hfcG9ydHMYAiADKAsyKS5tZXRhbHN0YWNrLmFwaS52Mi5FeHRlcm5hbE5ldHdvcmtNZW1iZXJzQgi6SAWSAQIQCCKUAQopTmV0d29ya1NlcnZpY2VSZW1vdmVFeHRlcm5hbE1lbWJlclJlcXVlc3QSHAoHbmV0d29yaxgBIAEoCUILukgIcgbAs66xAgESSQoMc3dpdGNoX3BvcnRzGAIgAygLMikubWV0YWxzdGFjay5hcGkudjIuRXh0ZXJuYWxOZXR3b3JrTWVtYmVyc0IIukgFkgECEAgiSwocTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJLChxOZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsiSgoaTmV0d29ya1NlcnZpY2VMaXN0UmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrImYKKE5ldHdvcmtTZXJ2aWNlTGlzdEV4dGVybmFsTWVtYmVyUmVzcG9uc2USOgoHbWVtYmVycxgBIAMoCzIpLm1ldGFsc3RhY2suYXBpLnYyLkV4dGVybmFsTmV0d29ya01lbWJlcnMiVAonTmV0d29ya1NlcnZpY2VBZGRFeHRlcm5hbE1lbWJlclJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCJXCipOZXR3b3JrU2VydmljZVJlbW92ZUV4dGVybmFsTWVtYmVyUmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoMqYHCg5OZXR3b3JrU2VydmljZRJwCgNHZXQSLS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VHZXRSZXNwb25zZSIK0vMYAgEC4PMYAhJ4CgZDcmVhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEngKBlVwZGF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESeAoGRGVsZXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARJzCgRMaXN0Ei4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAhKZAQoRQWRkRXh0ZXJuYWxNZW1iZXISOy5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQWRkRXh0ZXJuYWxNZW1iZXJSZXF1ZXN0GjwubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUFkZEV4dGVybmFsTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYARKiAQoUUmVtb3ZlRXh0ZXJuYWxNZW1iZXISPi5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlUmVtb3ZlRXh0ZXJuYWxNZW1iZXJSZXF1ZXN0Gj8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVJlbW92ZUV4dGVybmFsTWVtYmVyUmVzcG9uc2UiCdLzGAEB4PMYAULQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDE5ldHdvcmtQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_network, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]);
/**
* NetworkServiceGetRequest is the request payload for getting a network.
@@ -333,6 +335,91 @@ export type NetworkServiceListRequest = Message<"metalstack.admin.v2.NetworkServ
export const NetworkServiceListRequestSchema: GenMessage = /*@__PURE__*/
messageDesc(file_metalstack_admin_v2_network, 5);
+/**
+ * NetworkServiceListExternalMemberRequest is the request payload for listing external members of a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceListExternalMemberRequest
+ */
+export type NetworkServiceListExternalMemberRequest = Message<"metalstack.admin.v2.NetworkServiceListExternalMemberRequest"> & {
+ /**
+ * Network to list the members for.
+ *
+ * @generated from field: string network = 1;
+ */
+ network: string;
+
+ /**
+ * Query specifies additional filters for the list request.
+ *
+ * @generated from field: metalstack.api.v2.ExternalNetworkMemberQuery query = 2;
+ */
+ query?: ExternalNetworkMemberQuery | undefined;
+};
+
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceListExternalMemberRequest.
+ * Use `create(NetworkServiceListExternalMemberRequestSchema)` to create a new message.
+ */
+export const NetworkServiceListExternalMemberRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_network, 6);
+
+/**
+ * NetworkServiceAddExternalMemberRequest is the request payload for adding an external member to a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceAddExternalMemberRequest
+ */
+export type NetworkServiceAddExternalMemberRequest = Message<"metalstack.admin.v2.NetworkServiceAddExternalMemberRequest"> & {
+ /**
+ * Network to add the member to.
+ *
+ * @generated from field: string network = 1;
+ */
+ network: string;
+
+ /**
+ * SwitchPorts contains the ports of a switch that should be added to the network.
+ * Make sure to add both switches of a rack and the same ports of both in the same request.
+ *
+ * @generated from field: repeated metalstack.api.v2.ExternalNetworkMembers switch_ports = 2;
+ */
+ switchPorts: ExternalNetworkMembers[];
+};
+
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMemberRequest.
+ * Use `create(NetworkServiceAddExternalMemberRequestSchema)` to create a new message.
+ */
+export const NetworkServiceAddExternalMemberRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_network, 7);
+
+/**
+ * NetworkServiceRemoveExternalMemberRequest is the request payload for removing an external member from a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest
+ */
+export type NetworkServiceRemoveExternalMemberRequest = Message<"metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest"> & {
+ /**
+ * Network to remove the member from.
+ *
+ * @generated from field: string network = 1;
+ */
+ network: string;
+
+ /**
+ * SwitchPorts contains the ports of a switch that should be removed from the network.
+ *
+ * @generated from field: repeated metalstack.api.v2.ExternalNetworkMembers switch_ports = 2;
+ */
+ switchPorts: ExternalNetworkMembers[];
+};
+
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest.
+ * Use `create(NetworkServiceRemoveExternalMemberRequestSchema)` to create a new message.
+ */
+export const NetworkServiceRemoveExternalMemberRequestSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_network, 8);
+
/**
* NetworkServiceCreateResponse is the response payload for creating a network.
*
@@ -352,7 +439,7 @@ export type NetworkServiceCreateResponse = Message<"metalstack.admin.v2.NetworkS
* Use `create(NetworkServiceCreateResponseSchema)` to create a new message.
*/
export const NetworkServiceCreateResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_admin_v2_network, 6);
+ messageDesc(file_metalstack_admin_v2_network, 9);
/**
* NetworkServiceUpdateResponse is the response payload for updating a network.
@@ -373,7 +460,7 @@ export type NetworkServiceUpdateResponse = Message<"metalstack.admin.v2.NetworkS
* Use `create(NetworkServiceUpdateResponseSchema)` to create a new message.
*/
export const NetworkServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_admin_v2_network, 7);
+ messageDesc(file_metalstack_admin_v2_network, 10);
/**
* NetworkServiceDeleteResponse is the response payload for deleting a network.
@@ -394,7 +481,7 @@ export type NetworkServiceDeleteResponse = Message<"metalstack.admin.v2.NetworkS
* Use `create(NetworkServiceDeleteResponseSchema)` to create a new message.
*/
export const NetworkServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_admin_v2_network, 8);
+ messageDesc(file_metalstack_admin_v2_network, 11);
/**
* NetworkServiceListResponse is the response payload for listing networks.
@@ -415,7 +502,70 @@ export type NetworkServiceListResponse = Message<"metalstack.admin.v2.NetworkSer
* Use `create(NetworkServiceListResponseSchema)` to create a new message.
*/
export const NetworkServiceListResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_admin_v2_network, 9);
+ messageDesc(file_metalstack_admin_v2_network, 12);
+
+/**
+ * NetworkServiceListExternalMemberResponse is the response payload for listing external members of a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceListExternalMemberResponse
+ */
+export type NetworkServiceListExternalMemberResponse = Message<"metalstack.admin.v2.NetworkServiceListExternalMemberResponse"> & {
+ /**
+ * Members are the queried external members of the network.
+ *
+ * @generated from field: repeated metalstack.api.v2.ExternalNetworkMembers members = 1;
+ */
+ members: ExternalNetworkMembers[];
+};
+
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceListExternalMemberResponse.
+ * Use `create(NetworkServiceListExternalMemberResponseSchema)` to create a new message.
+ */
+export const NetworkServiceListExternalMemberResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_network, 13);
+
+/**
+ * NetworkServiceAddExternalMemberResponse is the response payload for adding an external member to a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceAddExternalMemberResponse
+ */
+export type NetworkServiceAddExternalMemberResponse = Message<"metalstack.admin.v2.NetworkServiceAddExternalMemberResponse"> & {
+ /**
+ * Switch contains the updated switch.
+ *
+ * @generated from field: metalstack.api.v2.Switch switch = 1;
+ */
+ switch?: Switch | undefined;
+};
+
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMemberResponse.
+ * Use `create(NetworkServiceAddExternalMemberResponseSchema)` to create a new message.
+ */
+export const NetworkServiceAddExternalMemberResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_network, 14);
+
+/**
+ * NetworkServiceRemoveExternalMemberResponse is the response payload for removing an external member from a network.
+ *
+ * @generated from message metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse
+ */
+export type NetworkServiceRemoveExternalMemberResponse = Message<"metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse"> & {
+ /**
+ * Switch contains the updated switch.
+ *
+ * @generated from field: metalstack.api.v2.Switch switch = 1;
+ */
+ switch?: Switch | undefined;
+};
+
+/**
+ * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse.
+ * Use `create(NetworkServiceRemoveExternalMemberResponseSchema)` to create a new message.
+ */
+export const NetworkServiceRemoveExternalMemberResponseSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_admin_v2_network, 15);
/**
* NetworkService provides network management operations.
@@ -473,6 +623,26 @@ export const NetworkService: GenService<{
input: typeof NetworkServiceListRequestSchema;
output: typeof NetworkServiceListResponseSchema;
},
+ /**
+ * Adds an external member to a network.
+ *
+ * @generated from rpc metalstack.admin.v2.NetworkService.AddExternalMember
+ */
+ addExternalMember: {
+ methodKind: "unary";
+ input: typeof NetworkServiceAddExternalMemberRequestSchema;
+ output: typeof NetworkServiceAddExternalMemberResponseSchema;
+ },
+ /**
+ * Removes an external member from a network.
+ *
+ * @generated from rpc metalstack.admin.v2.NetworkService.RemoveExternalMember
+ */
+ removeExternalMember: {
+ methodKind: "unary";
+ input: typeof NetworkServiceRemoveExternalMemberRequestSchema;
+ output: typeof NetworkServiceRemoveExternalMemberResponseSchema;
+ },
}> = /*@__PURE__*/
serviceDesc(file_metalstack_admin_v2_network, 0);
diff --git a/js/metalstack/api/v2/network_pb.d.ts b/js/metalstack/api/v2/network_pb.d.ts
index 6e5497e0..f8d1b810 100644
--- a/js/metalstack/api/v2/network_pb.d.ts
+++ b/js/metalstack/api/v2/network_pb.d.ts
@@ -528,6 +528,30 @@ export type NetworkQuery = Message<"metalstack.api.v2.NetworkQuery"> & {
* Use `create(NetworkQuerySchema)` to create a new message.
*/
export declare const NetworkQuerySchema: GenMessage;
+/**
+ * ExternalNetworkMemberQuery defines which filters to apply when looking up external network members.
+ *
+ * @generated from message metalstack.api.v2.ExternalNetworkMemberQuery
+ */
+export type ExternalNetworkMemberQuery = Message<"metalstack.api.v2.ExternalNetworkMemberQuery"> & {
+ /**
+ * Switch whose ports are queried.
+ *
+ * @generated from field: optional string switch = 1;
+ */
+ switch?: string | undefined;
+ /**
+ * Rack for which the members of the network are queried.
+ *
+ * @generated from field: optional string rack = 2;
+ */
+ rack?: string | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.ExternalNetworkMemberQuery.
+ * Use `create(ExternalNetworkMemberQuerySchema)` to create a new message.
+ */
+export declare const ExternalNetworkMemberQuerySchema: GenMessage;
/**
* ChildPrefixLength.
*
@@ -612,6 +636,30 @@ export type NetworkUsage = Message<"metalstack.api.v2.NetworkUsage"> & {
* Use `create(NetworkUsageSchema)` to create a new message.
*/
export declare const NetworkUsageSchema: GenMessage;
+/**
+ * ExternalNetworkMembers are the ports of a switch that participate in a network and are connected to machines not known to metal-stack.
+ *
+ * @generated from message metalstack.api.v2.ExternalNetworkMembers
+ */
+export type ExternalNetworkMembers = Message<"metalstack.api.v2.ExternalNetworkMembers"> & {
+ /**
+ * Switch the external members are connected to.
+ *
+ * @generated from field: string switch = 1;
+ */
+ switch: string;
+ /**
+ * Ports of the switch that participate in the network.
+ *
+ * @generated from field: repeated string ports = 2;
+ */
+ ports: string[];
+};
+/**
+ * Describes the message metalstack.api.v2.ExternalNetworkMembers.
+ * Use `create(ExternalNetworkMembersSchema)` to create a new message.
+ */
+export declare const ExternalNetworkMembersSchema: GenMessage;
/**
* NATType defines how and if outgoing traffic is translated.
*
diff --git a/js/metalstack/api/v2/network_pb.js b/js/metalstack/api/v2/network_pb.js
index 51d7eb64..1dd60339 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("Ch9tZXRhbHN0YWNrL2FwaS92Mi9uZXR3b3JrLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJRChhOZXR3b3JrU2VydmljZUdldFJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhwKB3Byb2plY3QYAiABKAlCC7pICNgBAXIDsAEBIkgKGU5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsi3AMKG05ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgBiAEBEiMKCXBhcnRpdGlvbhgEIAEoCUILukgIcgbQs66xAgFIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMSKAoOcGFyZW50X25ldHdvcmsYBiABKAlCC7pICHIGwLOusQIBSAOIAQESOQoGbGVuZ3RoGAcgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARJOCg5hZGRyZXNzX2ZhbWlseRgIIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgFiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSJLChxOZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIq4CChtOZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESNAoGbGFiZWxzGAYgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAKIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJpChlOZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IkoKGk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJ1CiVOZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IlYKJk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1Jlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJRChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsizQYKB05ldHdvcmsSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECAUgCiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAOIAQESIAoJbmFtZXNwYWNlGAcgASgJQgi6SAVyA7ABAUgEiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjYKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAESNgoIbmF0X3R5cGUYDSABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5OQVRUeXBlQgi6SAWCAQIQARIQCgN2cmYYDiABKA1IBYgBARIoCg5wYXJlbnRfbmV0d29yaxgPIAEoCUILukgIcgbAs66xAgFIBogBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGBAgAygJQgy6SAmSAQa4pLOxAgESOgoLY29uc3VtcHRpb24YESABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrQ29uc3VtcHRpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCDAoKX25hbWVzcGFjZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29yayLzBQoMTmV0d29ya1F1ZXJ5EhwKAmlkGAEgASgJQgu6SAhyBsCzrrECAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgDiAEBEh4KB3Byb2plY3QYBSABKAlCCLpIBXIDsAEBSASIAQESIAoJbmFtZXNwYWNlGAYgASgJQgi6SAVyA7ABAUgFiAEBEh4KCHByZWZpeGVzGAcgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCCADKAlCDLpICZIBBriks7ECARIQCgN2cmYYCSABKA1IBogBARIoCg5wYXJlbnRfbmV0d29yaxgKIAEoCUILukgIcgbAs66xAgFIB4gBARJOCg5hZGRyZXNzX2ZhbWlseRgLIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgIiAEBEjsKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAFICYgBARI7CghuYXRfdHlwZRgNIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAqIAQESLgoGbGFiZWxzGA4gASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAuIAQFCBQoDX2lkQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQgoKCF9wcm9qZWN0QgwKCl9uYW1lc3BhY2VCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmtCEQoPX2FkZHJlc3NfZmFtaWx5QgcKBV90eXBlQgsKCV9uYXRfdHlwZUIJCgdfbGFiZWxzImIKEUNoaWxkUHJlZml4TGVuZ3RoEhwKBGlwdjQYASABKA1CCbpIBioEGCAgAEgAiAEBEh0KBGlwdjYYAiABKA1CCrpIByoFGIABIABIAYgBAUIHCgVfaXB2NEIHCgVfaXB2NiJyChJOZXR3b3JrQ29uc3VtcHRpb24SLQoEaXB2NBgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtVc2FnZRItCgRpcHY2GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1VzYWdlImoKDE5ldHdvcmtVc2FnZRIVCg1hdmFpbGFibGVfaXBzGAEgASgEEhAKCHVzZWRfaXBzGAIgASgEEhoKEmF2YWlsYWJsZV9wcmVmaXhlcxgDIAEoBBIVCg11c2VkX3ByZWZpeGVzGAQgASgEKm0KB05BVFR5cGUSGAoUTkFUX1RZUEVfVU5TUEVDSUZJRUQQABIbCg1OQVRfVFlQRV9OT05FEAEaCIKyGQRub25lEisKGE5BVF9UWVBFX0lQVjRfTUFTUVVFUkFERRACGg2CshkJaXB2NC1tYXNxKq0CCgtOZXR3b3JrVHlwZRIcChhORVRXT1JLX1RZUEVfVU5TUEVDSUZJRUQQABInChVORVRXT1JLX1RZUEVfRVhURVJOQUwQARoMgrIZCGV4dGVybmFsEicKFU5FVFdPUktfVFlQRV9VTkRFUkxBWRACGgyCshkIdW5kZXJsYXkSIQoSTkVUV09SS19UWVBFX1NVUEVSEAMaCYKyGQVzdXBlchI3Ch1ORVRXT1JLX1RZUEVfU1VQRVJfTkFNRVNQQUNFRBAEGhSCshkQc3VwZXItbmFtZXNwYWNlZBIhChJORVRXT1JLX1RZUEVfQ0hJTEQQBRoJgrIZBWNoaWxkEi8KGU5FVFdPUktfVFlQRV9DSElMRF9TSEFSRUQQBhoQgrIZDGNoaWxkLXNoYXJlZCrHAQoUTmV0d29ya0FkZHJlc3NGYW1pbHkSJgoiTkVUV09SS19BRERSRVNTX0ZBTUlMWV9VTlNQRUNJRklFRBAAEicKGU5FVFdPUktfQUREUkVTU19GQU1JTFlfVjQQARoIgrIZBGlwdjQSJwoZTkVUV09SS19BRERSRVNTX0ZBTUlMWV9WNhACGgiCshkEaXB2NhI1CiFORVRXT1JLX0FERFJFU1NfRkFNSUxZX0RVQUxfU1RBQ0sQAxoOgrIZCmR1YWwtc3RhY2sy7QUKDk5ldHdvcmtTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAESdQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZSIKyvMYAgEC4PMYARJwCgRMaXN0EiwubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlIgvK8xgDAQID4PMYAhKUAQoQTGlzdEJhc2VOZXR3b3JrcxI4Lm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1JlcXVlc3QaOS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXNwb25zZSILyvMYAwECA+DzGAISdQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VEZWxldGVSZXNwb25zZSIKyvMYAgEC4PMYAULCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxOZXR3b3JrUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+export const file_metalstack_api_v2_network = /*@__PURE__*/ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9uZXR3b3JrLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJRChhOZXR3b3JrU2VydmljZUdldFJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhwKB3Byb2plY3QYAiABKAlCC7pICNgBAXIDsAEBIkgKGU5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsi3AMKG05ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgBiAEBEiMKCXBhcnRpdGlvbhgEIAEoCUILukgIcgbQs66xAgFIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMSKAoOcGFyZW50X25ldHdvcmsYBiABKAlCC7pICHIGwLOusQIBSAOIAQESOQoGbGVuZ3RoGAcgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARJOCg5hZGRyZXNzX2ZhbWlseRgIIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgFiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSJLChxOZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIq4CChtOZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESNAoGbGFiZWxzGAYgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAKIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJpChlOZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IkoKGk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJ1CiVOZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IlYKJk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1Jlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJRChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsizQYKB05ldHdvcmsSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECAUgCiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAOIAQESIAoJbmFtZXNwYWNlGAcgASgJQgi6SAVyA7ABAUgEiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjYKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAESNgoIbmF0X3R5cGUYDSABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5OQVRUeXBlQgi6SAWCAQIQARIQCgN2cmYYDiABKA1IBYgBARIoCg5wYXJlbnRfbmV0d29yaxgPIAEoCUILukgIcgbAs66xAgFIBogBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGBAgAygJQgy6SAmSAQa4pLOxAgESOgoLY29uc3VtcHRpb24YESABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrQ29uc3VtcHRpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCDAoKX25hbWVzcGFjZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29yayLzBQoMTmV0d29ya1F1ZXJ5EhwKAmlkGAEgASgJQgu6SAhyBsCzrrECAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgDiAEBEh4KB3Byb2plY3QYBSABKAlCCLpIBXIDsAEBSASIAQESIAoJbmFtZXNwYWNlGAYgASgJQgi6SAVyA7ABAUgFiAEBEh4KCHByZWZpeGVzGAcgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCCADKAlCDLpICZIBBriks7ECARIQCgN2cmYYCSABKA1IBogBARIoCg5wYXJlbnRfbmV0d29yaxgKIAEoCUILukgIcgbAs66xAgFIB4gBARJOCg5hZGRyZXNzX2ZhbWlseRgLIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgIiAEBEjsKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAFICYgBARI7CghuYXRfdHlwZRgNIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAqIAQESLgoGbGFiZWxzGA4gASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAuIAQFCBQoDX2lkQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQgoKCF9wcm9qZWN0QgwKCl9uYW1lc3BhY2VCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmtCEQoPX2FkZHJlc3NfZmFtaWx5QgcKBV90eXBlQgsKCV9uYXRfdHlwZUIJCgdfbGFiZWxzInQKGkV4dGVybmFsTmV0d29ya01lbWJlclF1ZXJ5EiIKBnN3aXRjaBgBIAEoCUINukgKcgjAs66xAgFoAUgAiAEBEh4KBHJhY2sYAiABKAlCC7pICHIGwLOusQIBSAGIAQFCCQoHX3N3aXRjaEIHCgVfcmFjayJiChFDaGlsZFByZWZpeExlbmd0aBIcCgRpcHY0GAEgASgNQgm6SAYqBBggIABIAIgBARIdCgRpcHY2GAIgASgNQgq6SAcqBRiAASAASAGIAQFCBwoFX2lwdjRCBwoFX2lwdjYicgoSTmV0d29ya0NvbnN1bXB0aW9uEi0KBGlwdjQYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVXNhZ2USLQoEaXB2NhgCIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtVc2FnZSJqCgxOZXR3b3JrVXNhZ2USFQoNYXZhaWxhYmxlX2lwcxgBIAEoBBIQCgh1c2VkX2lwcxgCIAEoBBIaChJhdmFpbGFibGVfcHJlZml4ZXMYAyABKAQSFQoNdXNlZF9wcmVmaXhlcxgEIAEoBCJVChZFeHRlcm5hbE5ldHdvcmtNZW1iZXJzEhsKBnN3aXRjaBgBIAEoCUILukgIcgbAs66xAgESHgoFcG9ydHMYAiADKAlCD7pIDJIBCdCks7ECARCAECptCgdOQVRUeXBlEhgKFE5BVF9UWVBFX1VOU1BFQ0lGSUVEEAASGwoNTkFUX1RZUEVfTk9ORRABGgiCshkEbm9uZRIrChhOQVRfVFlQRV9JUFY0X01BU1FVRVJBREUQAhoNgrIZCWlwdjQtbWFzcSqtAgoLTmV0d29ya1R5cGUSHAoYTkVUV09SS19UWVBFX1VOU1BFQ0lGSUVEEAASJwoVTkVUV09SS19UWVBFX0VYVEVSTkFMEAEaDIKyGQhleHRlcm5hbBInChVORVRXT1JLX1RZUEVfVU5ERVJMQVkQAhoMgrIZCHVuZGVybGF5EiEKEk5FVFdPUktfVFlQRV9TVVBFUhADGgmCshkFc3VwZXISNwodTkVUV09SS19UWVBFX1NVUEVSX05BTUVTUEFDRUQQBBoUgrIZEHN1cGVyLW5hbWVzcGFjZWQSIQoSTkVUV09SS19UWVBFX0NISUxEEAUaCYKyGQVjaGlsZBIvChlORVRXT1JLX1RZUEVfQ0hJTERfU0hBUkVEEAYaEIKyGQxjaGlsZC1zaGFyZWQqxwEKFE5ldHdvcmtBZGRyZXNzRmFtaWx5EiYKIk5FVFdPUktfQUREUkVTU19GQU1JTFlfVU5TUEVDSUZJRUQQABInChlORVRXT1JLX0FERFJFU1NfRkFNSUxZX1Y0EAEaCIKyGQRpcHY0EicKGU5FVFdPUktfQUREUkVTU19GQU1JTFlfVjYQAhoIgrIZBGlwdjYSNQohTkVUV09SS19BRERSRVNTX0ZBTUlMWV9EVUFMX1NUQUNLEAMaDoKyGQpkdWFsLXN0YWNrMu0FCg5OZXR3b3JrU2VydmljZRJtCgNHZXQSKy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUdldFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUdldFJlc3BvbnNlIgvK8xgDAQID4PMYAhJ1CgZDcmVhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlIgrK8xgCAQLg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAISlAEKEExpc3RCYXNlTmV0d29ya3MSOC5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0GjkubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VMaXN0QmFzZU5ldHdvcmtzUmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkRlbGV0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCsrzGAIBAuDzGAFCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTmV0d29ya1Byb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [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.
@@ -79,21 +79,31 @@ export const NetworkSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_ne
* Use `create(NetworkQuerySchema)` to create a new message.
*/
export const NetworkQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 13);
+/**
+ * Describes the message metalstack.api.v2.ExternalNetworkMemberQuery.
+ * Use `create(ExternalNetworkMemberQuerySchema)` to create a new message.
+ */
+export const ExternalNetworkMemberQuerySchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 14);
/**
* Describes the message metalstack.api.v2.ChildPrefixLength.
* Use `create(ChildPrefixLengthSchema)` to create a new message.
*/
-export const ChildPrefixLengthSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 14);
+export const ChildPrefixLengthSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 15);
/**
* Describes the message metalstack.api.v2.NetworkConsumption.
* Use `create(NetworkConsumptionSchema)` to create a new message.
*/
-export const NetworkConsumptionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 15);
+export const NetworkConsumptionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 16);
/**
* Describes the message metalstack.api.v2.NetworkUsage.
* Use `create(NetworkUsageSchema)` to create a new message.
*/
-export const NetworkUsageSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 16);
+export const NetworkUsageSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 17);
+/**
+ * Describes the message metalstack.api.v2.ExternalNetworkMembers.
+ * Use `create(ExternalNetworkMembersSchema)` to create a new message.
+ */
+export const ExternalNetworkMembersSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 18);
/**
* NATType defines how and if outgoing traffic is translated.
*
diff --git a/js/metalstack/api/v2/network_pb.ts b/js/metalstack/api/v2/network_pb.ts
index 0488fdd3..ac780454 100644
--- a/js/metalstack/api/v2/network_pb.ts
+++ b/js/metalstack/api/v2/network_pb.ts
@@ -14,7 +14,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/api/v2/network.proto.
*/
export const file_metalstack_api_v2_network: GenFile = /*@__PURE__*/
- fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9uZXR3b3JrLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJRChhOZXR3b3JrU2VydmljZUdldFJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhwKB3Byb2plY3QYAiABKAlCC7pICNgBAXIDsAEBIkgKGU5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsi3AMKG05ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgBiAEBEiMKCXBhcnRpdGlvbhgEIAEoCUILukgIcgbQs66xAgFIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMSKAoOcGFyZW50X25ldHdvcmsYBiABKAlCC7pICHIGwLOusQIBSAOIAQESOQoGbGVuZ3RoGAcgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARJOCg5hZGRyZXNzX2ZhbWlseRgIIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgFiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSJLChxOZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIq4CChtOZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESNAoGbGFiZWxzGAYgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAKIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJpChlOZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IkoKGk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJ1CiVOZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IlYKJk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1Jlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJRChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsizQYKB05ldHdvcmsSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECAUgCiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAOIAQESIAoJbmFtZXNwYWNlGAcgASgJQgi6SAVyA7ABAUgEiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjYKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAESNgoIbmF0X3R5cGUYDSABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5OQVRUeXBlQgi6SAWCAQIQARIQCgN2cmYYDiABKA1IBYgBARIoCg5wYXJlbnRfbmV0d29yaxgPIAEoCUILukgIcgbAs66xAgFIBogBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGBAgAygJQgy6SAmSAQa4pLOxAgESOgoLY29uc3VtcHRpb24YESABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrQ29uc3VtcHRpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCDAoKX25hbWVzcGFjZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29yayLzBQoMTmV0d29ya1F1ZXJ5EhwKAmlkGAEgASgJQgu6SAhyBsCzrrECAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgDiAEBEh4KB3Byb2plY3QYBSABKAlCCLpIBXIDsAEBSASIAQESIAoJbmFtZXNwYWNlGAYgASgJQgi6SAVyA7ABAUgFiAEBEh4KCHByZWZpeGVzGAcgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCCADKAlCDLpICZIBBriks7ECARIQCgN2cmYYCSABKA1IBogBARIoCg5wYXJlbnRfbmV0d29yaxgKIAEoCUILukgIcgbAs66xAgFIB4gBARJOCg5hZGRyZXNzX2ZhbWlseRgLIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgIiAEBEjsKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAFICYgBARI7CghuYXRfdHlwZRgNIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAqIAQESLgoGbGFiZWxzGA4gASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAuIAQFCBQoDX2lkQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQgoKCF9wcm9qZWN0QgwKCl9uYW1lc3BhY2VCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmtCEQoPX2FkZHJlc3NfZmFtaWx5QgcKBV90eXBlQgsKCV9uYXRfdHlwZUIJCgdfbGFiZWxzImIKEUNoaWxkUHJlZml4TGVuZ3RoEhwKBGlwdjQYASABKA1CCbpIBioEGCAgAEgAiAEBEh0KBGlwdjYYAiABKA1CCrpIByoFGIABIABIAYgBAUIHCgVfaXB2NEIHCgVfaXB2NiJyChJOZXR3b3JrQ29uc3VtcHRpb24SLQoEaXB2NBgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtVc2FnZRItCgRpcHY2GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1VzYWdlImoKDE5ldHdvcmtVc2FnZRIVCg1hdmFpbGFibGVfaXBzGAEgASgEEhAKCHVzZWRfaXBzGAIgASgEEhoKEmF2YWlsYWJsZV9wcmVmaXhlcxgDIAEoBBIVCg11c2VkX3ByZWZpeGVzGAQgASgEKm0KB05BVFR5cGUSGAoUTkFUX1RZUEVfVU5TUEVDSUZJRUQQABIbCg1OQVRfVFlQRV9OT05FEAEaCIKyGQRub25lEisKGE5BVF9UWVBFX0lQVjRfTUFTUVVFUkFERRACGg2CshkJaXB2NC1tYXNxKq0CCgtOZXR3b3JrVHlwZRIcChhORVRXT1JLX1RZUEVfVU5TUEVDSUZJRUQQABInChVORVRXT1JLX1RZUEVfRVhURVJOQUwQARoMgrIZCGV4dGVybmFsEicKFU5FVFdPUktfVFlQRV9VTkRFUkxBWRACGgyCshkIdW5kZXJsYXkSIQoSTkVUV09SS19UWVBFX1NVUEVSEAMaCYKyGQVzdXBlchI3Ch1ORVRXT1JLX1RZUEVfU1VQRVJfTkFNRVNQQUNFRBAEGhSCshkQc3VwZXItbmFtZXNwYWNlZBIhChJORVRXT1JLX1RZUEVfQ0hJTEQQBRoJgrIZBWNoaWxkEi8KGU5FVFdPUktfVFlQRV9DSElMRF9TSEFSRUQQBhoQgrIZDGNoaWxkLXNoYXJlZCrHAQoUTmV0d29ya0FkZHJlc3NGYW1pbHkSJgoiTkVUV09SS19BRERSRVNTX0ZBTUlMWV9VTlNQRUNJRklFRBAAEicKGU5FVFdPUktfQUREUkVTU19GQU1JTFlfVjQQARoIgrIZBGlwdjQSJwoZTkVUV09SS19BRERSRVNTX0ZBTUlMWV9WNhACGgiCshkEaXB2NhI1CiFORVRXT1JLX0FERFJFU1NfRkFNSUxZX0RVQUxfU1RBQ0sQAxoOgrIZCmR1YWwtc3RhY2sy7QUKDk5ldHdvcmtTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAESdQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZSIKyvMYAgEC4PMYARJwCgRMaXN0EiwubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlIgvK8xgDAQID4PMYAhKUAQoQTGlzdEJhc2VOZXR3b3JrcxI4Lm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1JlcXVlc3QaOS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXNwb25zZSILyvMYAwECA+DzGAISdQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VEZWxldGVSZXNwb25zZSIKyvMYAgEC4PMYAULCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxOZXR3b3JrUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9uZXR3b3JrLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJRChhOZXR3b3JrU2VydmljZUdldFJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhwKB3Byb2plY3QYAiABKAlCC7pICNgBAXIDsAEBIkgKGU5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsi3AMKG05ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgBiAEBEiMKCXBhcnRpdGlvbhgEIAEoCUILukgIcgbQs66xAgFIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMSKAoOcGFyZW50X25ldHdvcmsYBiABKAlCC7pICHIGwLOusQIBSAOIAQESOQoGbGVuZ3RoGAcgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARJOCg5hZGRyZXNzX2ZhbWlseRgIIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgFiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSJLChxOZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIq4CChtOZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESNAoGbGFiZWxzGAYgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAKIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJpChlOZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IkoKGk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJ1CiVOZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IlYKJk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1Jlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJRChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsizQYKB05ldHdvcmsSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECAUgCiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAOIAQESIAoJbmFtZXNwYWNlGAcgASgJQgi6SAVyA7ABAUgEiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjYKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAESNgoIbmF0X3R5cGUYDSABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5OQVRUeXBlQgi6SAWCAQIQARIQCgN2cmYYDiABKA1IBYgBARIoCg5wYXJlbnRfbmV0d29yaxgPIAEoCUILukgIcgbAs66xAgFIBogBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGBAgAygJQgy6SAmSAQa4pLOxAgESOgoLY29uc3VtcHRpb24YESABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrQ29uc3VtcHRpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCDAoKX25hbWVzcGFjZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29yayLzBQoMTmV0d29ya1F1ZXJ5EhwKAmlkGAEgASgJQgu6SAhyBsCzrrECAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgDiAEBEh4KB3Byb2plY3QYBSABKAlCCLpIBXIDsAEBSASIAQESIAoJbmFtZXNwYWNlGAYgASgJQgi6SAVyA7ABAUgFiAEBEh4KCHByZWZpeGVzGAcgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCCADKAlCDLpICZIBBriks7ECARIQCgN2cmYYCSABKA1IBogBARIoCg5wYXJlbnRfbmV0d29yaxgKIAEoCUILukgIcgbAs66xAgFIB4gBARJOCg5hZGRyZXNzX2ZhbWlseRgLIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgIiAEBEjsKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAFICYgBARI7CghuYXRfdHlwZRgNIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAqIAQESLgoGbGFiZWxzGA4gASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAuIAQFCBQoDX2lkQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQgoKCF9wcm9qZWN0QgwKCl9uYW1lc3BhY2VCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmtCEQoPX2FkZHJlc3NfZmFtaWx5QgcKBV90eXBlQgsKCV9uYXRfdHlwZUIJCgdfbGFiZWxzInQKGkV4dGVybmFsTmV0d29ya01lbWJlclF1ZXJ5EiIKBnN3aXRjaBgBIAEoCUINukgKcgjAs66xAgFoAUgAiAEBEh4KBHJhY2sYAiABKAlCC7pICHIGwLOusQIBSAGIAQFCCQoHX3N3aXRjaEIHCgVfcmFjayJiChFDaGlsZFByZWZpeExlbmd0aBIcCgRpcHY0GAEgASgNQgm6SAYqBBggIABIAIgBARIdCgRpcHY2GAIgASgNQgq6SAcqBRiAASAASAGIAQFCBwoFX2lwdjRCBwoFX2lwdjYicgoSTmV0d29ya0NvbnN1bXB0aW9uEi0KBGlwdjQYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVXNhZ2USLQoEaXB2NhgCIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtVc2FnZSJqCgxOZXR3b3JrVXNhZ2USFQoNYXZhaWxhYmxlX2lwcxgBIAEoBBIQCgh1c2VkX2lwcxgCIAEoBBIaChJhdmFpbGFibGVfcHJlZml4ZXMYAyABKAQSFQoNdXNlZF9wcmVmaXhlcxgEIAEoBCJVChZFeHRlcm5hbE5ldHdvcmtNZW1iZXJzEhsKBnN3aXRjaBgBIAEoCUILukgIcgbAs66xAgESHgoFcG9ydHMYAiADKAlCD7pIDJIBCdCks7ECARCAECptCgdOQVRUeXBlEhgKFE5BVF9UWVBFX1VOU1BFQ0lGSUVEEAASGwoNTkFUX1RZUEVfTk9ORRABGgiCshkEbm9uZRIrChhOQVRfVFlQRV9JUFY0X01BU1FVRVJBREUQAhoNgrIZCWlwdjQtbWFzcSqtAgoLTmV0d29ya1R5cGUSHAoYTkVUV09SS19UWVBFX1VOU1BFQ0lGSUVEEAASJwoVTkVUV09SS19UWVBFX0VYVEVSTkFMEAEaDIKyGQhleHRlcm5hbBInChVORVRXT1JLX1RZUEVfVU5ERVJMQVkQAhoMgrIZCHVuZGVybGF5EiEKEk5FVFdPUktfVFlQRV9TVVBFUhADGgmCshkFc3VwZXISNwodTkVUV09SS19UWVBFX1NVUEVSX05BTUVTUEFDRUQQBBoUgrIZEHN1cGVyLW5hbWVzcGFjZWQSIQoSTkVUV09SS19UWVBFX0NISUxEEAUaCYKyGQVjaGlsZBIvChlORVRXT1JLX1RZUEVfQ0hJTERfU0hBUkVEEAYaEIKyGQxjaGlsZC1zaGFyZWQqxwEKFE5ldHdvcmtBZGRyZXNzRmFtaWx5EiYKIk5FVFdPUktfQUREUkVTU19GQU1JTFlfVU5TUEVDSUZJRUQQABInChlORVRXT1JLX0FERFJFU1NfRkFNSUxZX1Y0EAEaCIKyGQRpcHY0EicKGU5FVFdPUktfQUREUkVTU19GQU1JTFlfVjYQAhoIgrIZBGlwdjYSNQohTkVUV09SS19BRERSRVNTX0ZBTUlMWV9EVUFMX1NUQUNLEAMaDoKyGQpkdWFsLXN0YWNrMu0FCg5OZXR3b3JrU2VydmljZRJtCgNHZXQSKy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUdldFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUdldFJlc3BvbnNlIgvK8xgDAQID4PMYAhJ1CgZDcmVhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlIgrK8xgCAQLg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAISlAEKEExpc3RCYXNlTmV0d29ya3MSOC5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0GjkubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VMaXN0QmFzZU5ldHdvcmtzUmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkRlbGV0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCsrzGAIBAuDzGAFCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTmV0d29ya1Byb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
/**
* NetworkServiceGetRequest.
@@ -626,6 +626,34 @@ export type NetworkQuery = Message<"metalstack.api.v2.NetworkQuery"> & {
export const NetworkQuerySchema: GenMessage = /*@__PURE__*/
messageDesc(file_metalstack_api_v2_network, 13);
+/**
+ * ExternalNetworkMemberQuery defines which filters to apply when looking up external network members.
+ *
+ * @generated from message metalstack.api.v2.ExternalNetworkMemberQuery
+ */
+export type ExternalNetworkMemberQuery = Message<"metalstack.api.v2.ExternalNetworkMemberQuery"> & {
+ /**
+ * Switch whose ports are queried.
+ *
+ * @generated from field: optional string switch = 1;
+ */
+ switch?: string | undefined;
+
+ /**
+ * Rack for which the members of the network are queried.
+ *
+ * @generated from field: optional string rack = 2;
+ */
+ rack?: string | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.ExternalNetworkMemberQuery.
+ * Use `create(ExternalNetworkMemberQuerySchema)` to create a new message.
+ */
+export const ExternalNetworkMemberQuerySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_network, 14);
+
/**
* ChildPrefixLength.
*
@@ -652,7 +680,7 @@ export type ChildPrefixLength = Message<"metalstack.api.v2.ChildPrefixLength"> &
* Use `create(ChildPrefixLengthSchema)` to create a new message.
*/
export const ChildPrefixLengthSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_network, 14);
+ messageDesc(file_metalstack_api_v2_network, 15);
/**
* NetworkConsumption contains ip and prefix usage by addressfamily.
@@ -680,7 +708,7 @@ export type NetworkConsumption = Message<"metalstack.api.v2.NetworkConsumption">
* Use `create(NetworkConsumptionSchema)` to create a new message.
*/
export const NetworkConsumptionSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_network, 15);
+ messageDesc(file_metalstack_api_v2_network, 16);
/**
* NetworkUsage reports core metrics about available and used IPs or Prefixes in a Network.
@@ -722,7 +750,35 @@ export type NetworkUsage = Message<"metalstack.api.v2.NetworkUsage"> & {
* Use `create(NetworkUsageSchema)` to create a new message.
*/
export const NetworkUsageSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_network, 16);
+ messageDesc(file_metalstack_api_v2_network, 17);
+
+/**
+ * ExternalNetworkMembers are the ports of a switch that participate in a network and are connected to machines not known to metal-stack.
+ *
+ * @generated from message metalstack.api.v2.ExternalNetworkMembers
+ */
+export type ExternalNetworkMembers = Message<"metalstack.api.v2.ExternalNetworkMembers"> & {
+ /**
+ * Switch the external members are connected to.
+ *
+ * @generated from field: string switch = 1;
+ */
+ switch: string;
+
+ /**
+ * Ports of the switch that participate in the network.
+ *
+ * @generated from field: repeated string ports = 2;
+ */
+ ports: string[];
+};
+
+/**
+ * Describes the message metalstack.api.v2.ExternalNetworkMembers.
+ * Use `create(ExternalNetworkMembersSchema)` to create a new message.
+ */
+export const ExternalNetworkMembersSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_network, 18);
/**
* NATType defines how and if outgoing traffic is translated.
diff --git a/proto/metalstack/admin/v2/network.proto b/proto/metalstack/admin/v2/network.proto
index c79bd313..10058830 100644
--- a/proto/metalstack/admin/v2/network.proto
+++ b/proto/metalstack/admin/v2/network.proto
@@ -6,6 +6,7 @@ import "buf/validate/validate.proto";
import "metalstack/api/v2/common.proto";
import "metalstack/api/v2/network.proto";
import "metalstack/api/v2/predefined_rules.proto";
+import "metalstack/api/v2/switch.proto";
// NetworkService provides network management operations.
service NetworkService {
@@ -36,6 +37,16 @@ service NetworkService {
option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_VIEWER;
option (metalstack.api.v2.auditing) = AUDITING_EXCLUDED;
}
+ // Adds an external member to a network.
+ rpc AddExternalMember(NetworkServiceAddExternalMemberRequest) returns (NetworkServiceAddExternalMemberResponse) {
+ option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR;
+ option (metalstack.api.v2.auditing) = AUDITING_INCLUDED;
+ }
+ // Removes an external member from a network.
+ rpc RemoveExternalMember(NetworkServiceRemoveExternalMemberRequest) returns (NetworkServiceRemoveExternalMemberResponse) {
+ option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR;
+ option (metalstack.api.v2.auditing) = AUDITING_INCLUDED;
+ }
}
// NetworkServiceGetRequest is the request payload for getting a network.
@@ -129,6 +140,31 @@ message NetworkServiceListRequest {
metalstack.api.v2.NetworkQuery query = 1;
}
+// NetworkServiceListExternalMemberRequest is the request payload for listing external members of a network.
+message NetworkServiceListExternalMemberRequest {
+ // Network to list the members for.
+ string network = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
+ // Query specifies additional filters for the list request.
+ metalstack.api.v2.ExternalNetworkMemberQuery query = 2;
+}
+
+// NetworkServiceAddExternalMemberRequest is the request payload for adding an external member to a network.
+message NetworkServiceAddExternalMemberRequest {
+ // Network to add the member to.
+ string network = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
+ // SwitchPorts contains the ports of a switch that should be added to the network.
+ // Make sure to add both switches of a rack and the same ports of both in the same request.
+ repeated metalstack.api.v2.ExternalNetworkMembers switch_ports = 2 [(buf.validate.field).repeated.max_items = 8];
+}
+
+// NetworkServiceRemoveExternalMemberRequest is the request payload for removing an external member from a network.
+message NetworkServiceRemoveExternalMemberRequest {
+ // Network to remove the member from.
+ string network = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
+ // SwitchPorts contains the ports of a switch that should be removed from the network.
+ repeated metalstack.api.v2.ExternalNetworkMembers switch_ports = 2 [(buf.validate.field).repeated.max_items = 8];
+}
+
// NetworkServiceCreateResponse is the response payload for creating a network.
message NetworkServiceCreateResponse {
// Network contains the created network.
@@ -152,3 +188,21 @@ message NetworkServiceListResponse {
// Networks contains the list of networks.
repeated metalstack.api.v2.Network networks = 1;
}
+
+// NetworkServiceListExternalMemberResponse is the response payload for listing external members of a network.
+message NetworkServiceListExternalMemberResponse {
+ // Members are the queried external members of the network.
+ repeated metalstack.api.v2.ExternalNetworkMembers members = 1;
+}
+
+// NetworkServiceAddExternalMemberResponse is the response payload for adding an external member to a network.
+message NetworkServiceAddExternalMemberResponse {
+ // Switch contains the updated switch.
+ metalstack.api.v2.Switch switch = 1;
+}
+
+// NetworkServiceRemoveExternalMemberResponse is the response payload for removing an external member from a network.
+message NetworkServiceRemoveExternalMemberResponse {
+ // Switch contains the updated switch.
+ metalstack.api.v2.Switch switch = 1;
+}
diff --git a/proto/metalstack/api/v2/network.proto b/proto/metalstack/api/v2/network.proto
index 80edf6b8..efc5356c 100644
--- a/proto/metalstack/api/v2/network.proto
+++ b/proto/metalstack/api/v2/network.proto
@@ -233,6 +233,17 @@ message NetworkQuery {
optional Labels labels = 14;
}
+// ExternalNetworkMemberQuery defines which filters to apply when looking up external network members.
+message ExternalNetworkMemberQuery {
+ // Switch whose ports are queried.
+ optional string switch = 1 [(buf.validate.field).string = {
+ hostname: true
+ [metalstack.api.v2.is_name]: true
+ }];
+ // Rack for which the members of the network are queried.
+ optional string rack = 2 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
+}
+
// ChildPrefixLength.
message ChildPrefixLength {
// IPv4 bit length of this network in this addressfamily.
@@ -267,6 +278,17 @@ message NetworkUsage {
uint64 used_prefixes = 4;
}
+// ExternalNetworkMembers are the ports of a switch that participate in a network and are connected to machines not known to metal-stack.
+message ExternalNetworkMembers {
+ // Switch the external members are connected to.
+ string switch = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
+ // Ports of the switch that participate in the network.
+ repeated string ports = 2 [
+ (buf.validate.field).repeated.max_items = 2048,
+ (buf.validate.field).repeated.(metalstack.api.v2.all_trimmed) = true
+ ];
+}
+
// NATType defines how and if outgoing traffic is translated.
enum NATType {
// NAT_TYPE_UNSPECIFIED indicates a unspecified nat type.
diff --git a/python/metalstack/admin/v2/network_connect.py b/python/metalstack/admin/v2/network_connect.py
index be2a73bf..c59dfdb2 100644
--- a/python/metalstack/admin/v2/network_connect.py
+++ b/python/metalstack/admin/v2/network_connect.py
@@ -33,6 +33,12 @@ async def delete(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.Net
async def list(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListResponse:
raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
+ async def add_external_member(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse:
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
+
+ async def remove_external_member(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse:
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
+
class NetworkServiceASGIApplication(ConnectASGIApplication[NetworkService]):
def __init__(self, service: NetworkService | AsyncGenerator[NetworkService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None, codecs: Iterable[Codec] | None = None) -> None:
@@ -89,6 +95,26 @@ def __init__(self, service: NetworkService | AsyncGenerator[NetworkService], *,
),
function=svc.list,
),
+ "/metalstack.admin.v2.NetworkService/AddExternalMember": Endpoint.unary(
+ method=MethodInfo(
+ name="AddExternalMember",
+ service_name="metalstack.admin.v2.NetworkService",
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ function=svc.add_external_member,
+ ),
+ "/metalstack.admin.v2.NetworkService/RemoveExternalMember": Endpoint.unary(
+ method=MethodInfo(
+ name="RemoveExternalMember",
+ service_name="metalstack.admin.v2.NetworkService",
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ function=svc.remove_external_member,
+ ),
},
interceptors=interceptors,
read_max_bytes=read_max_bytes,
@@ -203,6 +229,46 @@ async def list(
timeout_ms=timeout_ms,
)
+ async def add_external_member(
+ self,
+ request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
+ *,
+ headers: Headers | Mapping[str, str] | None = None,
+ timeout_ms: int | None = None,
+ ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse:
+ return await self.execute_unary(
+ request=request,
+ method=MethodInfo(
+ name="AddExternalMember",
+ service_name="metalstack.admin.v2.NetworkService",
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ headers=headers,
+ timeout_ms=timeout_ms,
+ )
+
+ async def remove_external_member(
+ self,
+ request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
+ *,
+ headers: Headers | Mapping[str, str] | None = None,
+ timeout_ms: int | None = None,
+ ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse:
+ return await self.execute_unary(
+ request=request,
+ method=MethodInfo(
+ name="RemoveExternalMember",
+ service_name="metalstack.admin.v2.NetworkService",
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ headers=headers,
+ timeout_ms=timeout_ms,
+ )
+
@@ -218,6 +284,10 @@ def delete(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkSe
raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
def list(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListResponse:
raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
+ def add_external_member(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse:
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
+ def remove_external_member(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse:
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
class NetworkServiceWSGIApplication(ConnectWSGIApplication):
@@ -274,6 +344,26 @@ def __init__(self, service: NetworkServiceSync, interceptors: Iterable[Intercept
),
function=service.list,
),
+ "/metalstack.admin.v2.NetworkService/AddExternalMember": EndpointSync.unary(
+ method=MethodInfo(
+ name="AddExternalMember",
+ service_name="metalstack.admin.v2.NetworkService",
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ function=service.add_external_member,
+ ),
+ "/metalstack.admin.v2.NetworkService/RemoveExternalMember": EndpointSync.unary(
+ method=MethodInfo(
+ name="RemoveExternalMember",
+ service_name="metalstack.admin.v2.NetworkService",
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ function=service.remove_external_member,
+ ),
},
interceptors=interceptors,
read_max_bytes=read_max_bytes,
@@ -388,4 +478,44 @@ def list(
timeout_ms=timeout_ms,
)
+ def add_external_member(
+ self,
+ request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
+ *,
+ headers: Headers | Mapping[str, str] | None = None,
+ timeout_ms: int | None = None,
+ ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse:
+ return self.execute_unary(
+ request=request,
+ method=MethodInfo(
+ name="AddExternalMember",
+ service_name="metalstack.admin.v2.NetworkService",
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ headers=headers,
+ timeout_ms=timeout_ms,
+ )
+
+ def remove_external_member(
+ self,
+ request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
+ *,
+ headers: Headers | Mapping[str, str] | None = None,
+ timeout_ms: int | None = None,
+ ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse:
+ return self.execute_unary(
+ request=request,
+ method=MethodInfo(
+ name="RemoveExternalMember",
+ service_name="metalstack.admin.v2.NetworkService",
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse,
+ idempotency_level=IdempotencyLevel.UNKNOWN,
+ ),
+ headers=headers,
+ timeout_ms=timeout_ms,
+ )
+
diff --git a/python/metalstack/admin/v2/network_pb2.py b/python/metalstack/admin/v2/network_pb2.py
index fcb8dda7..c81fc31b 100644
--- a/python/metalstack/admin/v2/network_pb2.py
+++ b/python/metalstack/admin/v2/network_pb2.py
@@ -26,9 +26,10 @@
from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common__pb2
from metalstack.api.v2 import network_pb2 as metalstack_dot_api_dot_v2_dot_network__pb2
from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
+from metalstack.api.v2 import switch_pb2 as metalstack_dot_api_dot_v2_dot_switch__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!metalstack/admin/v2/network.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/network.proto\x1a(metalstack/api/v2/predefined_rules.proto\"7\n\x18NetworkServiceGetRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\"Q\n\x19NetworkServiceGetResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xa8\t\n\x1bNetworkServiceCreateRequest\x12 \n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x03R\tpartition\x88\x01\x01\x12\'\n\x07project\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\x07project\x88\x01\x01\x12<\n\x04type\x18\x06 \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12\x36\n\x06labels\x18\x07 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x05R\x06labels\x88\x01\x01\x12(\n\x08prefixes\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\t \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x63\n\x1b\x64\x65\x66\x61ult_child_prefix_length\x18\n \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x18\x64\x65\x66\x61ultChildPrefixLength\x12[\n\x17min_child_prefix_length\x18\x0b \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x14minChildPrefixLength\x12\x44\n\x08nat_type\x18\x0c \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x07natType\x88\x01\x01\x12\x15\n\x03vrf\x18\r \x01(\rH\x07R\x03vrf\x88\x01\x01\x12\x37\n\x0eparent_network\x18\x0e \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x08R\rparentNetwork\x88\x01\x01\x12N\n\x1c\x61\x64\x64itional_announcable_cidrs\x18\x0f \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x1a\x61\x64\x64itionalAnnouncableCidrs\x12\x41\n\x06length\x18\x10 \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\tR\x06length\x88\x01\x01\x12]\n\x0e\x61\x64\x64ress_family\x18\x11 \x01(\x0e\x32\'.metalstack.api.v2.NetworkAddressFamilyB\x08\xbaH\x05\x82\x01\x02\x10\x01H\nR\raddressFamily\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\n\n\x08_projectB\t\n\x07_labelsB\x0b\n\t_nat_typeB\x06\n\x04_vrfB\x11\n\x0f_parent_networkB\t\n\x07_lengthB\x11\n\x0f_address_family\"\xea\x06\n\x1bNetworkServiceUpdateRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\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$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x05 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x02R\x06labels\x88\x01\x01\x12(\n\x08prefixes\x18\x06 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x07 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12h\n\x1b\x64\x65\x66\x61ult_child_prefix_length\x18\x08 \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\x03R\x18\x64\x65\x66\x61ultChildPrefixLength\x88\x01\x01\x12`\n\x17min_child_prefix_length\x18\t \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\x04R\x14minChildPrefixLength\x88\x01\x01\x12\x44\n\x08nat_type\x18\n \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x05R\x07natType\x88\x01\x01\x12N\n\x1c\x61\x64\x64itional_announcable_cidrs\x18\x0b \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x1a\x61\x64\x64itionalAnnouncableCidrs\x12\x14\n\x05\x66orce\x18\x0c \x01(\x08R\x05\x66orceB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\t\n\x07_labelsB\x1e\n\x1c_default_child_prefix_lengthB\x1a\n\x18_min_child_prefix_lengthB\x0b\n\t_nat_type\":\n\x1bNetworkServiceDeleteRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\"R\n\x19NetworkServiceListRequest\x12\x35\n\x05query\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkQueryR\x05query\"T\n\x1cNetworkServiceCreateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"T\n\x1cNetworkServiceUpdateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"T\n\x1cNetworkServiceDeleteResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"T\n\x1aNetworkServiceListResponse\x12\x36\n\x08networks\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x08networks2\xe5\x04\n\x0eNetworkService\x12p\n\x03Get\x12-.metalstack.admin.v2.NetworkServiceGetRequest\x1a..metalstack.admin.v2.NetworkServiceGetResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12x\n\x06\x43reate\x12\x30.metalstack.admin.v2.NetworkServiceCreateRequest\x1a\x31.metalstack.admin.v2.NetworkServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12x\n\x06Update\x12\x30.metalstack.admin.v2.NetworkServiceUpdateRequest\x1a\x31.metalstack.admin.v2.NetworkServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12x\n\x06\x44\x65lete\x12\x30.metalstack.admin.v2.NetworkServiceDeleteRequest\x1a\x31.metalstack.admin.v2.NetworkServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12s\n\x04List\x12..metalstack.admin.v2.NetworkServiceListRequest\x1a/.metalstack.admin.v2.NetworkServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xd0\x01\n\x17\x63om.metalstack.admin.v2B\x0cNetworkProtoP\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/network.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/network.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/switch.proto\"7\n\x18NetworkServiceGetRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\"Q\n\x19NetworkServiceGetResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xa8\t\n\x1bNetworkServiceCreateRequest\x12 \n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x03R\tpartition\x88\x01\x01\x12\'\n\x07project\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\x07project\x88\x01\x01\x12<\n\x04type\x18\x06 \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12\x36\n\x06labels\x18\x07 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x05R\x06labels\x88\x01\x01\x12(\n\x08prefixes\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\t \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x63\n\x1b\x64\x65\x66\x61ult_child_prefix_length\x18\n \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x18\x64\x65\x66\x61ultChildPrefixLength\x12[\n\x17min_child_prefix_length\x18\x0b \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x14minChildPrefixLength\x12\x44\n\x08nat_type\x18\x0c \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x07natType\x88\x01\x01\x12\x15\n\x03vrf\x18\r \x01(\rH\x07R\x03vrf\x88\x01\x01\x12\x37\n\x0eparent_network\x18\x0e \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x08R\rparentNetwork\x88\x01\x01\x12N\n\x1c\x61\x64\x64itional_announcable_cidrs\x18\x0f \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x1a\x61\x64\x64itionalAnnouncableCidrs\x12\x41\n\x06length\x18\x10 \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\tR\x06length\x88\x01\x01\x12]\n\x0e\x61\x64\x64ress_family\x18\x11 \x01(\x0e\x32\'.metalstack.api.v2.NetworkAddressFamilyB\x08\xbaH\x05\x82\x01\x02\x10\x01H\nR\raddressFamily\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\n\n\x08_projectB\t\n\x07_labelsB\x0b\n\t_nat_typeB\x06\n\x04_vrfB\x11\n\x0f_parent_networkB\t\n\x07_lengthB\x11\n\x0f_address_family\"\xea\x06\n\x1bNetworkServiceUpdateRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\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$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x05 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x02R\x06labels\x88\x01\x01\x12(\n\x08prefixes\x18\x06 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x07 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12h\n\x1b\x64\x65\x66\x61ult_child_prefix_length\x18\x08 \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\x03R\x18\x64\x65\x66\x61ultChildPrefixLength\x88\x01\x01\x12`\n\x17min_child_prefix_length\x18\t \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\x04R\x14minChildPrefixLength\x88\x01\x01\x12\x44\n\x08nat_type\x18\n \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x05R\x07natType\x88\x01\x01\x12N\n\x1c\x61\x64\x64itional_announcable_cidrs\x18\x0b \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x1a\x61\x64\x64itionalAnnouncableCidrs\x12\x14\n\x05\x66orce\x18\x0c \x01(\x08R\x05\x66orceB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\t\n\x07_labelsB\x1e\n\x1c_default_child_prefix_lengthB\x1a\n\x18_min_child_prefix_lengthB\x0b\n\t_nat_type\":\n\x1bNetworkServiceDeleteRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\"R\n\x19NetworkServiceListRequest\x12\x35\n\x05query\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkQueryR\x05query\"\x95\x01\n\'NetworkServiceListExternalMemberRequest\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12\x43\n\x05query\x18\x02 \x01(\x0b\x32-.metalstack.api.v2.ExternalNetworkMemberQueryR\x05query\"\xa7\x01\n&NetworkServiceAddExternalMemberRequest\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12V\n\x0cswitch_ports\x18\x02 \x03(\x0b\x32).metalstack.api.v2.ExternalNetworkMembersB\x08\xbaH\x05\x92\x01\x02\x10\x08R\x0bswitchPorts\"\xaa\x01\n)NetworkServiceRemoveExternalMemberRequest\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12V\n\x0cswitch_ports\x18\x02 \x03(\x0b\x32).metalstack.api.v2.ExternalNetworkMembersB\x08\xbaH\x05\x92\x01\x02\x10\x08R\x0bswitchPorts\"T\n\x1cNetworkServiceCreateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"T\n\x1cNetworkServiceUpdateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"T\n\x1cNetworkServiceDeleteResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"T\n\x1aNetworkServiceListResponse\x12\x36\n\x08networks\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x08networks\"o\n(NetworkServiceListExternalMemberResponse\x12\x43\n\x07members\x18\x01 \x03(\x0b\x32).metalstack.api.v2.ExternalNetworkMembersR\x07members\"\\\n\'NetworkServiceAddExternalMemberResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"_\n*NetworkServiceRemoveExternalMemberResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch2\xa6\x07\n\x0eNetworkService\x12p\n\x03Get\x12-.metalstack.admin.v2.NetworkServiceGetRequest\x1a..metalstack.admin.v2.NetworkServiceGetResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12x\n\x06\x43reate\x12\x30.metalstack.admin.v2.NetworkServiceCreateRequest\x1a\x31.metalstack.admin.v2.NetworkServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12x\n\x06Update\x12\x30.metalstack.admin.v2.NetworkServiceUpdateRequest\x1a\x31.metalstack.admin.v2.NetworkServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12x\n\x06\x44\x65lete\x12\x30.metalstack.admin.v2.NetworkServiceDeleteRequest\x1a\x31.metalstack.admin.v2.NetworkServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12s\n\x04List\x12..metalstack.admin.v2.NetworkServiceListRequest\x1a/.metalstack.admin.v2.NetworkServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\x99\x01\n\x11\x41\x64\x64\x45xternalMember\x12;.metalstack.admin.v2.NetworkServiceAddExternalMemberRequest\x1a<.metalstack.admin.v2.NetworkServiceAddExternalMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\xa2\x01\n\x14RemoveExternalMember\x12>.metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest\x1a?.metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x42\xd0\x01\n\x17\x63om.metalstack.admin.v2B\x0cNetworkProtoP\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)
@@ -80,6 +81,16 @@
_globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['additional_announcable_cidrs']._serialized_options = b'\272H\t\222\001\006\270\244\263\261\002\001'
_globals['_NETWORKSERVICEDELETEREQUEST'].fields_by_name['id']._loaded_options = None
_globals['_NETWORKSERVICEDELETEREQUEST'].fields_by_name['id']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERREQUEST'].fields_by_name['network']._loaded_options = None
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERREQUEST'].fields_by_name['network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST'].fields_by_name['network']._loaded_options = None
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST'].fields_by_name['network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST'].fields_by_name['switch_ports']._loaded_options = None
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST'].fields_by_name['switch_ports']._serialized_options = b'\272H\005\222\001\002\020\010'
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST'].fields_by_name['network']._loaded_options = None
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST'].fields_by_name['network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST'].fields_by_name['switch_ports']._loaded_options = None
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST'].fields_by_name['switch_ports']._serialized_options = b'\272H\005\222\001\002\020\010'
_globals['_NETWORKSERVICE'].methods_by_name['Get']._loaded_options = None
_globals['_NETWORKSERVICE'].methods_by_name['Get']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002'
_globals['_NETWORKSERVICE'].methods_by_name['Create']._loaded_options = None
@@ -90,26 +101,42 @@
_globals['_NETWORKSERVICE'].methods_by_name['Delete']._serialized_options = b'\322\363\030\001\001\340\363\030\001'
_globals['_NETWORKSERVICE'].methods_by_name['List']._loaded_options = None
_globals['_NETWORKSERVICE'].methods_by_name['List']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002'
- _globals['_NETWORKSERVICEGETREQUEST']._serialized_start=194
- _globals['_NETWORKSERVICEGETREQUEST']._serialized_end=249
- _globals['_NETWORKSERVICEGETRESPONSE']._serialized_start=251
- _globals['_NETWORKSERVICEGETRESPONSE']._serialized_end=332
- _globals['_NETWORKSERVICECREATEREQUEST']._serialized_start=335
- _globals['_NETWORKSERVICECREATEREQUEST']._serialized_end=1527
- _globals['_NETWORKSERVICEUPDATEREQUEST']._serialized_start=1530
- _globals['_NETWORKSERVICEUPDATEREQUEST']._serialized_end=2404
- _globals['_NETWORKSERVICEDELETEREQUEST']._serialized_start=2406
- _globals['_NETWORKSERVICEDELETEREQUEST']._serialized_end=2464
- _globals['_NETWORKSERVICELISTREQUEST']._serialized_start=2466
- _globals['_NETWORKSERVICELISTREQUEST']._serialized_end=2548
- _globals['_NETWORKSERVICECREATERESPONSE']._serialized_start=2550
- _globals['_NETWORKSERVICECREATERESPONSE']._serialized_end=2634
- _globals['_NETWORKSERVICEUPDATERESPONSE']._serialized_start=2636
- _globals['_NETWORKSERVICEUPDATERESPONSE']._serialized_end=2720
- _globals['_NETWORKSERVICEDELETERESPONSE']._serialized_start=2722
- _globals['_NETWORKSERVICEDELETERESPONSE']._serialized_end=2806
- _globals['_NETWORKSERVICELISTRESPONSE']._serialized_start=2808
- _globals['_NETWORKSERVICELISTRESPONSE']._serialized_end=2892
- _globals['_NETWORKSERVICE']._serialized_start=2895
- _globals['_NETWORKSERVICE']._serialized_end=3508
+ _globals['_NETWORKSERVICE'].methods_by_name['AddExternalMember']._loaded_options = None
+ _globals['_NETWORKSERVICE'].methods_by_name['AddExternalMember']._serialized_options = b'\322\363\030\001\001\340\363\030\001'
+ _globals['_NETWORKSERVICE'].methods_by_name['RemoveExternalMember']._loaded_options = None
+ _globals['_NETWORKSERVICE'].methods_by_name['RemoveExternalMember']._serialized_options = b'\322\363\030\001\001\340\363\030\001'
+ _globals['_NETWORKSERVICEGETREQUEST']._serialized_start=226
+ _globals['_NETWORKSERVICEGETREQUEST']._serialized_end=281
+ _globals['_NETWORKSERVICEGETRESPONSE']._serialized_start=283
+ _globals['_NETWORKSERVICEGETRESPONSE']._serialized_end=364
+ _globals['_NETWORKSERVICECREATEREQUEST']._serialized_start=367
+ _globals['_NETWORKSERVICECREATEREQUEST']._serialized_end=1559
+ _globals['_NETWORKSERVICEUPDATEREQUEST']._serialized_start=1562
+ _globals['_NETWORKSERVICEUPDATEREQUEST']._serialized_end=2436
+ _globals['_NETWORKSERVICEDELETEREQUEST']._serialized_start=2438
+ _globals['_NETWORKSERVICEDELETEREQUEST']._serialized_end=2496
+ _globals['_NETWORKSERVICELISTREQUEST']._serialized_start=2498
+ _globals['_NETWORKSERVICELISTREQUEST']._serialized_end=2580
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERREQUEST']._serialized_start=2583
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERREQUEST']._serialized_end=2732
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST']._serialized_start=2735
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST']._serialized_end=2902
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST']._serialized_start=2905
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST']._serialized_end=3075
+ _globals['_NETWORKSERVICECREATERESPONSE']._serialized_start=3077
+ _globals['_NETWORKSERVICECREATERESPONSE']._serialized_end=3161
+ _globals['_NETWORKSERVICEUPDATERESPONSE']._serialized_start=3163
+ _globals['_NETWORKSERVICEUPDATERESPONSE']._serialized_end=3247
+ _globals['_NETWORKSERVICEDELETERESPONSE']._serialized_start=3249
+ _globals['_NETWORKSERVICEDELETERESPONSE']._serialized_end=3333
+ _globals['_NETWORKSERVICELISTRESPONSE']._serialized_start=3335
+ _globals['_NETWORKSERVICELISTRESPONSE']._serialized_end=3419
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERRESPONSE']._serialized_start=3421
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERRESPONSE']._serialized_end=3532
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERRESPONSE']._serialized_start=3534
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERRESPONSE']._serialized_end=3626
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERRESPONSE']._serialized_start=3628
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERRESPONSE']._serialized_end=3723
+ _globals['_NETWORKSERVICE']._serialized_start=3726
+ _globals['_NETWORKSERVICE']._serialized_end=4660
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/admin/v2/network_pb2.pyi b/python/metalstack/admin/v2/network_pb2.pyi
index 85ccd36e..58edcca5 100644
--- a/python/metalstack/admin/v2/network_pb2.pyi
+++ b/python/metalstack/admin/v2/network_pb2.pyi
@@ -2,6 +2,7 @@ from buf.validate import validate_pb2 as _validate_pb2
from metalstack.api.v2 import common_pb2 as _common_pb2
from metalstack.api.v2 import network_pb2 as _network_pb2
from metalstack.api.v2 import predefined_rules_pb2 as _predefined_rules_pb2
+from metalstack.api.v2 import switch_pb2 as _switch_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
@@ -100,6 +101,30 @@ class NetworkServiceListRequest(_message.Message):
query: _network_pb2.NetworkQuery
def __init__(self, query: _Optional[_Union[_network_pb2.NetworkQuery, _Mapping]] = ...) -> None: ...
+class NetworkServiceListExternalMemberRequest(_message.Message):
+ __slots__ = ("network", "query")
+ NETWORK_FIELD_NUMBER: _ClassVar[int]
+ QUERY_FIELD_NUMBER: _ClassVar[int]
+ network: str
+ query: _network_pb2.ExternalNetworkMemberQuery
+ def __init__(self, network: _Optional[str] = ..., query: _Optional[_Union[_network_pb2.ExternalNetworkMemberQuery, _Mapping]] = ...) -> None: ...
+
+class NetworkServiceAddExternalMemberRequest(_message.Message):
+ __slots__ = ("network", "switch_ports")
+ NETWORK_FIELD_NUMBER: _ClassVar[int]
+ SWITCH_PORTS_FIELD_NUMBER: _ClassVar[int]
+ network: str
+ switch_ports: _containers.RepeatedCompositeFieldContainer[_network_pb2.ExternalNetworkMembers]
+ def __init__(self, network: _Optional[str] = ..., switch_ports: _Optional[_Iterable[_Union[_network_pb2.ExternalNetworkMembers, _Mapping]]] = ...) -> None: ...
+
+class NetworkServiceRemoveExternalMemberRequest(_message.Message):
+ __slots__ = ("network", "switch_ports")
+ NETWORK_FIELD_NUMBER: _ClassVar[int]
+ SWITCH_PORTS_FIELD_NUMBER: _ClassVar[int]
+ network: str
+ switch_ports: _containers.RepeatedCompositeFieldContainer[_network_pb2.ExternalNetworkMembers]
+ def __init__(self, network: _Optional[str] = ..., switch_ports: _Optional[_Iterable[_Union[_network_pb2.ExternalNetworkMembers, _Mapping]]] = ...) -> None: ...
+
class NetworkServiceCreateResponse(_message.Message):
__slots__ = ("network",)
NETWORK_FIELD_NUMBER: _ClassVar[int]
@@ -123,3 +148,21 @@ class NetworkServiceListResponse(_message.Message):
NETWORKS_FIELD_NUMBER: _ClassVar[int]
networks: _containers.RepeatedCompositeFieldContainer[_network_pb2.Network]
def __init__(self, networks: _Optional[_Iterable[_Union[_network_pb2.Network, _Mapping]]] = ...) -> None: ...
+
+class NetworkServiceListExternalMemberResponse(_message.Message):
+ __slots__ = ("members",)
+ MEMBERS_FIELD_NUMBER: _ClassVar[int]
+ members: _containers.RepeatedCompositeFieldContainer[_network_pb2.ExternalNetworkMembers]
+ def __init__(self, members: _Optional[_Iterable[_Union[_network_pb2.ExternalNetworkMembers, _Mapping]]] = ...) -> None: ...
+
+class NetworkServiceAddExternalMemberResponse(_message.Message):
+ __slots__ = ("switch",)
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
+ switch: _switch_pb2.Switch
+ def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
+
+class NetworkServiceRemoveExternalMemberResponse(_message.Message):
+ __slots__ = ("switch",)
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
+ switch: _switch_pb2.Switch
+ def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
diff --git a/python/metalstack/api/v2/network_pb2.py b/python/metalstack/api/v2/network_pb2.py
index f2956540..fb0b0f50 100644
--- a/python/metalstack/api/v2/network_pb2.py
+++ b/python/metalstack/api/v2/network_pb2.py
@@ -27,7 +27,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\x1fmetalstack/api/v2/network.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"^\n\x18NetworkServiceGetRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12%\n\x07project\x18\x02 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\"Q\n\x19NetworkServiceGetResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xb1\x04\n\x1bNetworkServiceCreateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x02R\tpartition\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12\x37\n\x0eparent_network\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\rparentNetwork\x88\x01\x01\x12\x41\n\x06length\x18\x07 \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\x04R\x06length\x88\x01\x01\x12]\n\x0e\x61\x64\x64ress_family\x18\x08 \x01(\x0e\x32\'.metalstack.api.v2.NetworkAddressFamilyB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x05R\raddressFamily\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\x11\n\x0f_parent_networkB\t\n\x07_lengthB\x11\n\x0f_address_family\"T\n\x1cNetworkServiceCreateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xe2\x02\n\x1bNetworkServiceUpdateRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\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\"\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x02R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\t\n\x07_labels\"T\n\x1cNetworkServiceUpdateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"y\n\x19NetworkServiceListRequest\x12%\n\x07project\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkQueryR\x05query\"T\n\x1aNetworkServiceListResponse\x12\x36\n\x08networks\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x08networks\"\x85\x01\n%NetworkServiceListBaseNetworksRequest\x12%\n\x07project\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkQueryR\x05query\"`\n&NetworkServiceListBaseNetworksResponse\x12\x36\n\x08networks\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x08networks\"^\n\x1bNetworkServiceDeleteRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cNetworkServiceDeleteResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xa4\x08\n\x07Network\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x02R\tpartition\x88\x01\x01\x12\'\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x03R\x07project\x88\x01\x01\x12+\n\tnamespace\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\tnamespace\x88\x01\x01\x12(\n\x08prefixes\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\t \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x63\n\x1b\x64\x65\x66\x61ult_child_prefix_length\x18\n \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x18\x64\x65\x66\x61ultChildPrefixLength\x12[\n\x17min_child_prefix_length\x18\x0b \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x14minChildPrefixLength\x12<\n\x04type\x18\x0c \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12?\n\x08nat_type\x18\r \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07natType\x12\x15\n\x03vrf\x18\x0e \x01(\rH\x05R\x03vrf\x88\x01\x01\x12\x37\n\x0eparent_network\x18\x0f \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x06R\rparentNetwork\x88\x01\x01\x12N\n\x1c\x61\x64\x64itional_announcable_cidrs\x18\x10 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x1a\x61\x64\x64itionalAnnouncableCidrs\x12G\n\x0b\x63onsumption\x18\x11 \x01(\x0b\x32%.metalstack.api.v2.NetworkConsumptionR\x0b\x63onsumptionB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\n\n\x08_projectB\x0c\n\n_namespaceB\x06\n\x04_vrfB\x11\n\x0f_parent_network\"\x82\x07\n\x0cNetworkQuery\x12 \n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x03R\tpartition\x88\x01\x01\x12\'\n\x07project\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\x07project\x88\x01\x01\x12+\n\tnamespace\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x05R\tnamespace\x88\x01\x01\x12(\n\x08prefixes\x18\x07 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x15\n\x03vrf\x18\t \x01(\rH\x06R\x03vrf\x88\x01\x01\x12\x37\n\x0eparent_network\x18\n \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x07R\rparentNetwork\x88\x01\x01\x12]\n\x0e\x61\x64\x64ress_family\x18\x0b \x01(\x0e\x32\'.metalstack.api.v2.NetworkAddressFamilyB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x08R\raddressFamily\x88\x01\x01\x12\x41\n\x04type\x18\x0c \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\tR\x04type\x88\x01\x01\x12\x44\n\x08nat_type\x18\r \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\nR\x07natType\x88\x01\x01\x12\x36\n\x06labels\x18\x0e \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x0bR\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\n\n\x08_projectB\x0c\n\n_namespaceB\x06\n\x04_vrfB\x11\n\x0f_parent_networkB\x11\n\x0f_address_familyB\x07\n\x05_typeB\x0b\n\t_nat_typeB\t\n\x07_labels\"n\n\x11\x43hildPrefixLength\x12\"\n\x04ipv4\x18\x01 \x01(\rB\t\xbaH\x06*\x04\x18 \x00H\x00R\x04ipv4\x88\x01\x01\x12#\n\x04ipv6\x18\x02 \x01(\rB\n\xbaH\x07*\x05\x18\x80\x01 \x00H\x01R\x04ipv6\x88\x01\x01\x42\x07\n\x05_ipv4B\x07\n\x05_ipv6\"~\n\x12NetworkConsumption\x12\x33\n\x04ipv4\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkUsageR\x04ipv4\x12\x33\n\x04ipv6\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkUsageR\x04ipv6\"\xa2\x01\n\x0cNetworkUsage\x12#\n\ravailable_ips\x18\x01 \x01(\x04R\x0c\x61vailableIps\x12\x19\n\x08used_ips\x18\x02 \x01(\x04R\x07usedIps\x12-\n\x12\x61vailable_prefixes\x18\x03 \x01(\x04R\x11\x61vailablePrefixes\x12#\n\rused_prefixes\x18\x04 \x01(\x04R\x0cusedPrefixes*m\n\x07NATType\x12\x18\n\x14NAT_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n\rNAT_TYPE_NONE\x10\x01\x1a\x08\x82\xb2\x19\x04none\x12+\n\x18NAT_TYPE_IPV4_MASQUERADE\x10\x02\x1a\r\x82\xb2\x19\tipv4-masq*\xad\x02\n\x0bNetworkType\x12\x1c\n\x18NETWORK_TYPE_UNSPECIFIED\x10\x00\x12\'\n\x15NETWORK_TYPE_EXTERNAL\x10\x01\x1a\x0c\x82\xb2\x19\x08\x65xternal\x12\'\n\x15NETWORK_TYPE_UNDERLAY\x10\x02\x1a\x0c\x82\xb2\x19\x08underlay\x12!\n\x12NETWORK_TYPE_SUPER\x10\x03\x1a\t\x82\xb2\x19\x05super\x12\x37\n\x1dNETWORK_TYPE_SUPER_NAMESPACED\x10\x04\x1a\x14\x82\xb2\x19\x10super-namespaced\x12!\n\x12NETWORK_TYPE_CHILD\x10\x05\x1a\t\x82\xb2\x19\x05\x63hild\x12/\n\x19NETWORK_TYPE_CHILD_SHARED\x10\x06\x1a\x10\x82\xb2\x19\x0c\x63hild-shared*\xc7\x01\n\x14NetworkAddressFamily\x12&\n\"NETWORK_ADDRESS_FAMILY_UNSPECIFIED\x10\x00\x12\'\n\x19NETWORK_ADDRESS_FAMILY_V4\x10\x01\x1a\x08\x82\xb2\x19\x04ipv4\x12\'\n\x19NETWORK_ADDRESS_FAMILY_V6\x10\x02\x1a\x08\x82\xb2\x19\x04ipv6\x12\x35\n!NETWORK_ADDRESS_FAMILY_DUAL_STACK\x10\x03\x1a\x0e\x82\xb2\x19\ndual-stack2\xed\x05\n\x0eNetworkService\x12m\n\x03Get\x12+.metalstack.api.v2.NetworkServiceGetRequest\x1a,.metalstack.api.v2.NetworkServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x43reate\x12..metalstack.api.v2.NetworkServiceCreateRequest\x1a/.metalstack.api.v2.NetworkServiceCreateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12u\n\x06Update\x12..metalstack.api.v2.NetworkServiceUpdateRequest\x1a/.metalstack.api.v2.NetworkServiceUpdateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12p\n\x04List\x12,.metalstack.api.v2.NetworkServiceListRequest\x1a-.metalstack.api.v2.NetworkServiceListResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12\x94\x01\n\x10ListBaseNetworks\x12\x38.metalstack.api.v2.NetworkServiceListBaseNetworksRequest\x1a\x39.metalstack.api.v2.NetworkServiceListBaseNetworksResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x44\x65lete\x12..metalstack.api.v2.NetworkServiceDeleteRequest\x1a/.metalstack.api.v2.NetworkServiceDeleteResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cNetworkProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/network.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"^\n\x18NetworkServiceGetRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12%\n\x07project\x18\x02 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\"Q\n\x19NetworkServiceGetResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xb1\x04\n\x1bNetworkServiceCreateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x02R\tpartition\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12\x37\n\x0eparent_network\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\rparentNetwork\x88\x01\x01\x12\x41\n\x06length\x18\x07 \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\x04R\x06length\x88\x01\x01\x12]\n\x0e\x61\x64\x64ress_family\x18\x08 \x01(\x0e\x32\'.metalstack.api.v2.NetworkAddressFamilyB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x05R\raddressFamily\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\x11\n\x0f_parent_networkB\t\n\x07_lengthB\x11\n\x0f_address_family\"T\n\x1cNetworkServiceCreateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xe2\x02\n\x1bNetworkServiceUpdateRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\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\"\n\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x02R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\t\n\x07_labels\"T\n\x1cNetworkServiceUpdateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"y\n\x19NetworkServiceListRequest\x12%\n\x07project\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkQueryR\x05query\"T\n\x1aNetworkServiceListResponse\x12\x36\n\x08networks\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x08networks\"\x85\x01\n%NetworkServiceListBaseNetworksRequest\x12%\n\x07project\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkQueryR\x05query\"`\n&NetworkServiceListBaseNetworksResponse\x12\x36\n\x08networks\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x08networks\"^\n\x1bNetworkServiceDeleteRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cNetworkServiceDeleteResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xa4\x08\n\x07Network\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x02R\tpartition\x88\x01\x01\x12\'\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x03R\x07project\x88\x01\x01\x12+\n\tnamespace\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\tnamespace\x88\x01\x01\x12(\n\x08prefixes\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\t \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x63\n\x1b\x64\x65\x66\x61ult_child_prefix_length\x18\n \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x18\x64\x65\x66\x61ultChildPrefixLength\x12[\n\x17min_child_prefix_length\x18\x0b \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x14minChildPrefixLength\x12<\n\x04type\x18\x0c \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12?\n\x08nat_type\x18\r \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07natType\x12\x15\n\x03vrf\x18\x0e \x01(\rH\x05R\x03vrf\x88\x01\x01\x12\x37\n\x0eparent_network\x18\x0f \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x06R\rparentNetwork\x88\x01\x01\x12N\n\x1c\x61\x64\x64itional_announcable_cidrs\x18\x10 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x1a\x61\x64\x64itionalAnnouncableCidrs\x12G\n\x0b\x63onsumption\x18\x11 \x01(\x0b\x32%.metalstack.api.v2.NetworkConsumptionR\x0b\x63onsumptionB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\n\n\x08_projectB\x0c\n\n_namespaceB\x06\n\x04_vrfB\x11\n\x0f_parent_network\"\x82\x07\n\x0cNetworkQuery\x12 \n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x03R\tpartition\x88\x01\x01\x12\'\n\x07project\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\x07project\x88\x01\x01\x12+\n\tnamespace\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x05R\tnamespace\x88\x01\x01\x12(\n\x08prefixes\x18\x07 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x15\n\x03vrf\x18\t \x01(\rH\x06R\x03vrf\x88\x01\x01\x12\x37\n\x0eparent_network\x18\n \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x07R\rparentNetwork\x88\x01\x01\x12]\n\x0e\x61\x64\x64ress_family\x18\x0b \x01(\x0e\x32\'.metalstack.api.v2.NetworkAddressFamilyB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x08R\raddressFamily\x88\x01\x01\x12\x41\n\x04type\x18\x0c \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\tR\x04type\x88\x01\x01\x12\x44\n\x08nat_type\x18\r \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\nR\x07natType\x88\x01\x01\x12\x36\n\x06labels\x18\x0e \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x0bR\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\n\n\x08_projectB\x0c\n\n_namespaceB\x06\n\x04_vrfB\x11\n\x0f_parent_networkB\x11\n\x0f_address_familyB\x07\n\x05_typeB\x0b\n\t_nat_typeB\t\n\x07_labels\"\x82\x01\n\x1a\x45xternalNetworkMemberQuery\x12*\n\x06switch\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01H\x00R\x06switch\x88\x01\x01\x12$\n\x04rack\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04rack\x88\x01\x01\x42\t\n\x07_switchB\x07\n\x05_rack\"n\n\x11\x43hildPrefixLength\x12\"\n\x04ipv4\x18\x01 \x01(\rB\t\xbaH\x06*\x04\x18 \x00H\x00R\x04ipv4\x88\x01\x01\x12#\n\x04ipv6\x18\x02 \x01(\rB\n\xbaH\x07*\x05\x18\x80\x01 \x00H\x01R\x04ipv6\x88\x01\x01\x42\x07\n\x05_ipv4B\x07\n\x05_ipv6\"~\n\x12NetworkConsumption\x12\x33\n\x04ipv4\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkUsageR\x04ipv4\x12\x33\n\x04ipv6\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkUsageR\x04ipv6\"\xa2\x01\n\x0cNetworkUsage\x12#\n\ravailable_ips\x18\x01 \x01(\x04R\x0c\x61vailableIps\x12\x19\n\x08used_ips\x18\x02 \x01(\x04R\x07usedIps\x12-\n\x12\x61vailable_prefixes\x18\x03 \x01(\x04R\x11\x61vailablePrefixes\x12#\n\rused_prefixes\x18\x04 \x01(\x04R\x0cusedPrefixes\"d\n\x16\x45xternalNetworkMembers\x12#\n\x06switch\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x06switch\x12%\n\x05ports\x18\x02 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x80\x10\xd0\xa4\xb3\xb1\x02\x01R\x05ports*m\n\x07NATType\x12\x18\n\x14NAT_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n\rNAT_TYPE_NONE\x10\x01\x1a\x08\x82\xb2\x19\x04none\x12+\n\x18NAT_TYPE_IPV4_MASQUERADE\x10\x02\x1a\r\x82\xb2\x19\tipv4-masq*\xad\x02\n\x0bNetworkType\x12\x1c\n\x18NETWORK_TYPE_UNSPECIFIED\x10\x00\x12\'\n\x15NETWORK_TYPE_EXTERNAL\x10\x01\x1a\x0c\x82\xb2\x19\x08\x65xternal\x12\'\n\x15NETWORK_TYPE_UNDERLAY\x10\x02\x1a\x0c\x82\xb2\x19\x08underlay\x12!\n\x12NETWORK_TYPE_SUPER\x10\x03\x1a\t\x82\xb2\x19\x05super\x12\x37\n\x1dNETWORK_TYPE_SUPER_NAMESPACED\x10\x04\x1a\x14\x82\xb2\x19\x10super-namespaced\x12!\n\x12NETWORK_TYPE_CHILD\x10\x05\x1a\t\x82\xb2\x19\x05\x63hild\x12/\n\x19NETWORK_TYPE_CHILD_SHARED\x10\x06\x1a\x10\x82\xb2\x19\x0c\x63hild-shared*\xc7\x01\n\x14NetworkAddressFamily\x12&\n\"NETWORK_ADDRESS_FAMILY_UNSPECIFIED\x10\x00\x12\'\n\x19NETWORK_ADDRESS_FAMILY_V4\x10\x01\x1a\x08\x82\xb2\x19\x04ipv4\x12\'\n\x19NETWORK_ADDRESS_FAMILY_V6\x10\x02\x1a\x08\x82\xb2\x19\x04ipv6\x12\x35\n!NETWORK_ADDRESS_FAMILY_DUAL_STACK\x10\x03\x1a\x0e\x82\xb2\x19\ndual-stack2\xed\x05\n\x0eNetworkService\x12m\n\x03Get\x12+.metalstack.api.v2.NetworkServiceGetRequest\x1a,.metalstack.api.v2.NetworkServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x43reate\x12..metalstack.api.v2.NetworkServiceCreateRequest\x1a/.metalstack.api.v2.NetworkServiceCreateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12u\n\x06Update\x12..metalstack.api.v2.NetworkServiceUpdateRequest\x1a/.metalstack.api.v2.NetworkServiceUpdateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12p\n\x04List\x12,.metalstack.api.v2.NetworkServiceListRequest\x1a-.metalstack.api.v2.NetworkServiceListResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12\x94\x01\n\x10ListBaseNetworks\x12\x38.metalstack.api.v2.NetworkServiceListBaseNetworksRequest\x1a\x39.metalstack.api.v2.NetworkServiceListBaseNetworksResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x44\x65lete\x12..metalstack.api.v2.NetworkServiceDeleteRequest\x1a/.metalstack.api.v2.NetworkServiceDeleteResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cNetworkProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -139,10 +139,18 @@
_globals['_NETWORKQUERY'].fields_by_name['type']._serialized_options = b'\272H\005\202\001\002\020\001'
_globals['_NETWORKQUERY'].fields_by_name['nat_type']._loaded_options = None
_globals['_NETWORKQUERY'].fields_by_name['nat_type']._serialized_options = b'\272H\005\202\001\002\020\001'
+ _globals['_EXTERNALNETWORKMEMBERQUERY'].fields_by_name['switch']._loaded_options = None
+ _globals['_EXTERNALNETWORKMEMBERQUERY'].fields_by_name['switch']._serialized_options = b'\272H\nr\010h\001\300\263\256\261\002\001'
+ _globals['_EXTERNALNETWORKMEMBERQUERY'].fields_by_name['rack']._loaded_options = None
+ _globals['_EXTERNALNETWORKMEMBERQUERY'].fields_by_name['rack']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
_globals['_CHILDPREFIXLENGTH'].fields_by_name['ipv4']._loaded_options = None
_globals['_CHILDPREFIXLENGTH'].fields_by_name['ipv4']._serialized_options = b'\272H\006*\004\030 \000'
_globals['_CHILDPREFIXLENGTH'].fields_by_name['ipv6']._loaded_options = None
_globals['_CHILDPREFIXLENGTH'].fields_by_name['ipv6']._serialized_options = b'\272H\007*\005\030\200\001 \000'
+ _globals['_EXTERNALNETWORKMEMBERS'].fields_by_name['switch']._loaded_options = None
+ _globals['_EXTERNALNETWORKMEMBERS'].fields_by_name['switch']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
+ _globals['_EXTERNALNETWORKMEMBERS'].fields_by_name['ports']._loaded_options = None
+ _globals['_EXTERNALNETWORKMEMBERS'].fields_by_name['ports']._serialized_options = b'\272H\014\222\001\t\020\200\020\320\244\263\261\002\001'
_globals['_NETWORKSERVICE'].methods_by_name['Get']._loaded_options = None
_globals['_NETWORKSERVICE'].methods_by_name['Get']._serialized_options = b'\312\363\030\003\001\002\003\340\363\030\002'
_globals['_NETWORKSERVICE'].methods_by_name['Create']._loaded_options = None
@@ -155,12 +163,12 @@
_globals['_NETWORKSERVICE'].methods_by_name['ListBaseNetworks']._serialized_options = b'\312\363\030\003\001\002\003\340\363\030\002'
_globals['_NETWORKSERVICE'].methods_by_name['Delete']._loaded_options = None
_globals['_NETWORKSERVICE'].methods_by_name['Delete']._serialized_options = b'\312\363\030\002\001\002\340\363\030\001'
- _globals['_NATTYPE']._serialized_start=4423
- _globals['_NATTYPE']._serialized_end=4532
- _globals['_NETWORKTYPE']._serialized_start=4535
- _globals['_NETWORKTYPE']._serialized_end=4836
- _globals['_NETWORKADDRESSFAMILY']._serialized_start=4839
- _globals['_NETWORKADDRESSFAMILY']._serialized_end=5038
+ _globals['_NATTYPE']._serialized_start=4658
+ _globals['_NATTYPE']._serialized_end=4767
+ _globals['_NETWORKTYPE']._serialized_start=4770
+ _globals['_NETWORKTYPE']._serialized_end=5071
+ _globals['_NETWORKADDRESSFAMILY']._serialized_start=5074
+ _globals['_NETWORKADDRESSFAMILY']._serialized_end=5273
_globals['_NETWORKSERVICEGETREQUEST']._serialized_start=157
_globals['_NETWORKSERVICEGETREQUEST']._serialized_end=251
_globals['_NETWORKSERVICEGETRESPONSE']._serialized_start=253
@@ -189,12 +197,16 @@
_globals['_NETWORK']._serialized_end=3115
_globals['_NETWORKQUERY']._serialized_start=3118
_globals['_NETWORKQUERY']._serialized_end=4016
- _globals['_CHILDPREFIXLENGTH']._serialized_start=4018
- _globals['_CHILDPREFIXLENGTH']._serialized_end=4128
- _globals['_NETWORKCONSUMPTION']._serialized_start=4130
- _globals['_NETWORKCONSUMPTION']._serialized_end=4256
- _globals['_NETWORKUSAGE']._serialized_start=4259
- _globals['_NETWORKUSAGE']._serialized_end=4421
- _globals['_NETWORKSERVICE']._serialized_start=5041
- _globals['_NETWORKSERVICE']._serialized_end=5790
+ _globals['_EXTERNALNETWORKMEMBERQUERY']._serialized_start=4019
+ _globals['_EXTERNALNETWORKMEMBERQUERY']._serialized_end=4149
+ _globals['_CHILDPREFIXLENGTH']._serialized_start=4151
+ _globals['_CHILDPREFIXLENGTH']._serialized_end=4261
+ _globals['_NETWORKCONSUMPTION']._serialized_start=4263
+ _globals['_NETWORKCONSUMPTION']._serialized_end=4389
+ _globals['_NETWORKUSAGE']._serialized_start=4392
+ _globals['_NETWORKUSAGE']._serialized_end=4554
+ _globals['_EXTERNALNETWORKMEMBERS']._serialized_start=4556
+ _globals['_EXTERNALNETWORKMEMBERS']._serialized_end=4656
+ _globals['_NETWORKSERVICE']._serialized_start=5276
+ _globals['_NETWORKSERVICE']._serialized_end=6025
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/network_pb2.pyi b/python/metalstack/api/v2/network_pb2.pyi
index 10502757..58ac5812 100644
--- a/python/metalstack/api/v2/network_pb2.pyi
+++ b/python/metalstack/api/v2/network_pb2.pyi
@@ -221,6 +221,14 @@ class NetworkQuery(_message.Message):
labels: _common_pb2.Labels
def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., partition: _Optional[str] = ..., project: _Optional[str] = ..., namespace: _Optional[str] = ..., prefixes: _Optional[_Iterable[str]] = ..., destination_prefixes: _Optional[_Iterable[str]] = ..., vrf: _Optional[int] = ..., parent_network: _Optional[str] = ..., address_family: _Optional[_Union[NetworkAddressFamily, str]] = ..., type: _Optional[_Union[NetworkType, str]] = ..., nat_type: _Optional[_Union[NATType, str]] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ...) -> None: ...
+class ExternalNetworkMemberQuery(_message.Message):
+ __slots__ = ("switch", "rack")
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
+ RACK_FIELD_NUMBER: _ClassVar[int]
+ switch: str
+ rack: str
+ def __init__(self, switch: _Optional[str] = ..., rack: _Optional[str] = ...) -> None: ...
+
class ChildPrefixLength(_message.Message):
__slots__ = ("ipv4", "ipv6")
IPV4_FIELD_NUMBER: _ClassVar[int]
@@ -248,3 +256,11 @@ class NetworkUsage(_message.Message):
available_prefixes: int
used_prefixes: int
def __init__(self, available_ips: _Optional[int] = ..., used_ips: _Optional[int] = ..., available_prefixes: _Optional[int] = ..., used_prefixes: _Optional[int] = ...) -> None: ...
+
+class ExternalNetworkMembers(_message.Message):
+ __slots__ = ("switch", "ports")
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
+ PORTS_FIELD_NUMBER: _ClassVar[int]
+ switch: str
+ ports: _containers.RepeatedScalarFieldContainer[str]
+ def __init__(self, switch: _Optional[str] = ..., ports: _Optional[_Iterable[str]] = ...) -> None: ...