| Method Name | Request Type | Response Type | Description |
@@ -17151,23 +16595,37 @@
| Create |
- SizeServiceCreateRequest |
- SizeServiceCreateResponse |
- Creates a new size. |
+ SizeImageConstraintServiceCreateRequest |
+ SizeImageConstraintServiceCreateResponse |
+ Creates a size image constraint. |
| Update |
- SizeServiceUpdateRequest |
- SizeServiceUpdateResponse |
- Updates a size. |
+ SizeImageConstraintServiceUpdateRequest |
+ SizeImageConstraintServiceUpdateResponse |
+ Updates a size image constraint. |
| Delete |
- SizeServiceDeleteRequest |
- SizeServiceDeleteResponse |
- Deletes a size. |
+ SizeImageConstraintServiceDeleteRequest |
+ SizeImageConstraintServiceDeleteResponse |
+ Deletes a size image constraint. |
+
+
+
+ | Get |
+ SizeImageConstraintServiceGetRequest |
+ SizeImageConstraintServiceGetResponse |
+ Returns the size image constraint with the specified size. |
+
+
+
+ | List |
+ SizeImageConstraintServiceListRequest |
+ SizeImageConstraintServiceListResponse |
+ Returns the list of size image constraints. |
@@ -17177,13 +16635,13 @@
-
- ImageConstraint defines a constraint for an image.
Examples:
images:
ubuntu: ">= 20.04.20211011
debian: ">= 10.0.20210101
+
+ SizeReservation.
@@ -17193,69 +16651,59 @@
- | image |
+ id |
string |
|
- Image of the constraint. |
+ Id of this size reservation, is generated on creation. |
- | semver_match |
- string |
+ meta |
+ Meta |
|
- SemverMatch which defines in semver match format which image version should apply. |
+ Meta for this size reservation. |
-
-
-
-
-
-
-
-
- SizeImageConstraint expresses optional restrictions for specific size to image combinations.
This might be required if the support for a specific hardware in a given size is only supported with a newer version of the image.
If the size in question is not found, no restrictions apply.
If the image in question is not found, no restrictions apply as well.
If the image in question is found, but does not match the given expression, machine creation must be forbidden.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
- | size |
+ name |
string |
|
- Size where this constraint should apply. |
+ Name of this size reservation. |
- | image_constraints |
- ImageConstraint |
- repeated |
- ImageConstraints to apply to this size. |
+ description |
+ string |
+ |
+ Description of this size reservation. |
- | meta |
- Meta |
+ project |
+ string |
|
- Meta for this size image constraint. |
+ Project of the size reservation. |
- | name |
+ size |
string |
- optional |
- Name of this size image constraint. |
+ |
+ Size id of this size reservation. |
- | description |
+ partitions |
string |
- optional |
- Description of this size image constraint. |
+ repeated |
+ Partition ids of this size reservation. |
+
+
+
+ | amount |
+ int32 |
+ |
+ Amount of reservations of this size reservation. |
@@ -17265,8 +16713,8 @@
-
- SizeImageConstraintQuery is used to search size image constraints.
+
+ SizeReservationQuery is used to search size reservations.
@@ -17276,24 +16724,52 @@
- | size |
+ id |
string |
optional |
- Size of the size image constraint. |
+ ID of the size reservation to get. |
| name |
string |
optional |
- Name of the size image constraint to query. |
+ Name of this size reservation. |
| description |
string |
optional |
- Description of the size image constraint to query. |
+ Description of this size reservation. |
+
+
+
+ | size |
+ string |
+ optional |
+ Size id of this size reservation. |
+
+
+
+ | project |
+ string |
+ optional |
+ Project of the size reservation. |
+
+
+
+ | partition |
+ string |
+ optional |
+ Partition of the size reservation. |
+
+
+
+ | labels |
+ Labels |
+ optional |
+ Labels lists only size reservations containing the given labels. |
@@ -17303,8 +16779,8 @@ SizeImageConstraintServiceTryRequest
- SizeImageConstraintServiceTryRequest is the request payload for a size image constraint try request.
+
+ SizeReservationServiceGetRequest is the request payload for a size get request.
@@ -17314,17 +16790,17 @@ SizeImageConstraintServiceTryResponse is the response payload for a size image constraint try request.
-
-
+ SizeReservationServiceGetResponse
+ SizeReservationServiceGetResponse is the response payload for a size reservation get request.
-
-
-
-
-
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | size_reservation |
+ SizeReservation |
+ |
+ Size reservation. |
+
+
+
+
-
- SizeImageConstraintService
- SizeImageConstraintService provides size and image constraint validation operations.
-
+
-
-
-
-
metalstack/admin/v2/size_imageconstraint.proto
Top
-
-
-
- SizeImageConstraintServiceCreateRequest
- SizeImageConstraintServiceCreateRequest is the request payload for creating a size image constraint.
+ SizeReservationServiceListRequest
+ SizeReservationServiceListRequest is the request payload for a size list request.
@@ -17385,38 +16845,41 @@ SizeImageCo
- | size |
+ project |
string |
|
- Size of the constraint. |
-
-
-
- | image_constraints |
- metalstack.api.v2.ImageConstraint |
- repeated |
- ImageConstraints to apply to this size. |
+ Project of the size reservation. |
- | meta |
- metalstack.api.v2.Meta |
+ query |
+ SizeReservationQuery |
|
- Meta for this size image constraint. |
+ Query for size reservations. |
-
- | name |
- string |
- optional |
- Name of this size image constraint. |
-
+
+
+
+
+
+
+
+ SizeReservationServiceListResponse
+ SizeReservationServiceListResponse is the response payload for a size reservation list request.
+
+
+
+
+ | Field | Type | Label | Description |
+
+
- | description |
- string |
- optional |
- Description of this size image constraint. |
+ size_reservations |
+ SizeReservation |
+ repeated |
+ Size reservations. |
@@ -17426,32 +16889,48 @@ SizeImageCo
- SizeImageConstraintServiceCreateResponse
-
SizeImageConstraintServiceCreateResponse is the response payload for creating a size image constraint.
-
-
-
-
-
-
- SizeImageConstraintServiceDeleteRequest
- SizeImageConstraintServiceDeleteRequest is the request payload for deleting a size image constraint.
+
+
+
+
+ SizeReservationService
+ SizeReservationService provides size reservation management operations.
+
+
+
+
+
+
+
metalstack/admin/v2/size_reservation.proto
Top
+
+
+
+
+ SizeReservationServiceCreateRequest
+ SizeReservationServiceCreateRequest is the request payload for creating a size reservation.
@@ -17461,10 +16940,10 @@ SizeImageCo
- | size |
- string |
+ size_reservation |
+ metalstack.api.v2.SizeReservation |
|
- Size of the constraint. |
+ SizeReservation is the size reservation to create. |
@@ -17474,8 +16953,8 @@ SizeImageCo
- SizeImageConstraintServiceDeleteResponse
-
SizeImageConstraintServiceDeleteResponse is the response payload for deleting a size image constraint.
+ SizeReservationServiceCreateResponse
+ SizeReservationServiceCreateResponse is the response payload for creating a size reservation.
@@ -17485,10 +16964,10 @@ SizeImageC
- | size_image_constraint |
- metalstack.api.v2.SizeImageConstraint |
+ size_reservation |
+ metalstack.api.v2.SizeReservation |
|
- SizeImageConstraint contains the deleted constraint. |
+ SizeReservation contains the created reservation. |
@@ -17498,8 +16977,8 @@ SizeImageC
- SizeImageConstraintServiceGetRequest
-
SizeImageConstraintServiceGetRequest is the request payload for getting a size image constraint.
+ SizeReservationServiceDeleteRequest
+ SizeReservationServiceDeleteRequest is the request payload for deleting a size reservation.
@@ -17509,10 +16988,10 @@ SizeImageConst
- | size |
+ id |
string |
|
- Size of the constraint. |
+ ID of the size reservation to delete. |
@@ -17522,8 +17001,8 @@ SizeImageConst
- SizeImageConstraintServiceGetResponse
-
SizeImageConstraintServiceGetResponse is the response payload for getting a size image constraint.
+ SizeReservationServiceDeleteResponse
+ SizeReservationServiceDeleteResponse is the response payload for deleting a size reservation.
@@ -17533,10 +17012,10 @@ SizeImageCons
- | size_image_constraint |
- metalstack.api.v2.SizeImageConstraint |
+ size_reservation |
+ metalstack.api.v2.SizeReservation |
|
- SizeImageConstraint contains the retrieved constraint. |
+ SizeReservation contains the deleted reservation. |
@@ -17546,8 +17025,8 @@ SizeImageCons
- SizeImageConstraintServiceListRequest
-
SizeImageConstraintServiceListRequest is the request payload for listing size image constraints.
+ SizeReservationServiceListRequest
+ SizeReservationServiceListRequest is the request payload for listing size reservations.
@@ -17558,9 +17037,9 @@ SizeImageCons
| query |
- metalstack.api.v2.SizeImageConstraintQuery |
+ metalstack.api.v2.SizeReservationQuery |
|
- Query for size image constraints. |
+ Query for size reservations. |
@@ -17570,8 +17049,8 @@ SizeImageCons
- SizeImageConstraintServiceListResponse
-
SizeImageConstraintServiceListResponse is the response payload for listing size image constraints.
+ SizeReservationServiceListResponse
+ SizeReservationServiceListResponse is the response payload for listing size reservations.
@@ -17581,10 +17060,10 @@ SizeImageCon
- | size_image_constraints |
- metalstack.api.v2.SizeImageConstraint |
+ size_reservations |
+ metalstack.api.v2.SizeReservation |
repeated |
- SizeImageConstraints contains the list of constraints. |
+ SizeReservations contains the list of reservations. |
@@ -17594,8 +17073,8 @@ SizeImageCon
- SizeImageConstraintServiceUpdateRequest
-
SizeImageConstraintServiceUpdateRequest is the request payload for updating a size image constraint.
+ SizeReservationServiceUpdateRequest
+ SizeReservationServiceUpdateRequest is the request payload for updating a size reservation.
@@ -17605,10 +17084,24 @@ SizeImageCo
- | size |
+ id |
string |
|
- Size of the image constraint to update. |
+ Id of this size reservation. |
+
+
+
+ | name |
+ string |
+ optional |
+ Name of this size reservation. |
+
+
+
+ | description |
+ string |
+ optional |
+ Description of this size reservation. |
@@ -17619,24 +17112,24 @@ SizeImageCo
- | image_constraints |
- metalstack.api.v2.ImageConstraint |
+ partitions |
+ string |
repeated |
- ImageConstraints to apply to this size. |
+ Partition ids of this size reservation. |
- | name |
- string |
+ amount |
+ int32 |
optional |
- Name of this size image constraint. |
+ Amount of reservations of this size reservation. |
- | description |
- string |
+ labels |
+ metalstack.api.v2.UpdateLabels |
optional |
- Description of this size image constraint. |
+ Labels to update of this size reservation. |
@@ -17646,8 +17139,8 @@ SizeImageCo
- SizeImageConstraintServiceUpdateResponse
-
SizeImageConstraintServiceUpdateResponse is the response payload for updating a size image constraint.
+ SizeReservationServiceUpdateResponse
+ SizeReservationServiceUpdateResponse is the response payload for updating a size reservation.
@@ -17657,10 +17150,10 @@ SizeImageC
- | size_image_constraint |
- metalstack.api.v2.SizeImageConstraint |
+ size_reservation |
+ metalstack.api.v2.SizeReservation |
|
- SizeImageConstraint contains the updated constraint. |
+ SizeReservation contains the updated reservation. |
@@ -17676,8 +17169,8 @@ SizeImageC
- SizeImageConstraintService
-
SizeImageConstraintService provides size and image constraint management operations.
+ SizeReservationService
+ SizeReservationService provides size reservation management operations.
-
-
-
-
-
-
metalstack/api/v2/size_reservation.proto
Top
-
-
-
-
- SizeReservation
- SizeReservation.
-
-
-
-
- | Field | Type | Label | Description |
-
-
-
-
- | id |
- string |
- |
- Id of this size reservation, is generated on creation. |
-
-
-
- | meta |
- Meta |
- |
- Meta for this size reservation. |
-
-
-
- | name |
- string |
- |
- Name of this size reservation. |
-
-
-
- | description |
- string |
- |
- Description of this size reservation. |
-
-
-
- | project |
- string |
- |
- Project of the size reservation. |
-
-
-
- | size |
- string |
- |
- Size id of this size reservation. |
-
-
-
- | partitions |
- string |
- repeated |
- Partition ids of this size reservation. |
-
-
-
- | amount |
- int32 |
- |
- Amount of reservations of this size reservation. |
-
-
-
-
-
-
+ List |
+ SizeReservationServiceListRequest |
+ SizeReservationServiceListResponse |
+ Returns the list of size reservations. |
+
+
+
+
+
- SizeReservationQuery
- SizeReservationQuery is used to search size reservations.
+
+
metalstack/api/v2/switch.proto
Top
+
+
+
+
+ BGPFilter
+ BGPFilter can be used to restrict BGP based on CIDRs and VNIs.
@@ -17815,52 +17228,17 @@ SizeReservationQuery
- | id |
- string |
- optional |
- ID of the size reservation to get. |
-
-
-
- | name |
- string |
- optional |
- Name of this size reservation. |
-
-
-
- | description |
- string |
- optional |
- Description of this size reservation. |
-
-
-
- | size |
- string |
- optional |
- Size id of this size reservation. |
-
-
-
- | project |
+ cidrs |
string |
- optional |
- Project of the size reservation. |
+ repeated |
+ CIDRs for which to allow BGP. |
- | partition |
+ vnis |
string |
- optional |
- Partition of the size reservation. |
-
-
-
- | labels |
- Labels |
- optional |
- Labels lists only size reservations containing the given labels. |
+ repeated |
+ VNIs for which to allow BGP. |
@@ -17870,8 +17248,8 @@ SizeReservationQuery
- SizeReservationServiceGetRequest
- SizeReservationServiceGetRequest is the request payload for a size get request.
+ MachineConnection
+ MachineConnection associates a machine with the corresponding switch nic.
@@ -17881,17 +17259,17 @@ SizeReservationServi
- | id |
+ machine_id |
string |
|
- ID of the size reservation to get. |
+ MachineId of the machine connected to the nic. |
- | project |
- string |
+ nic |
+ SwitchNic |
|
- Project of the size reservation. |
+ Nic the machine is connected to. |
@@ -17901,8 +17279,8 @@ SizeReservationServi
- SizeReservationServiceGetResponse
-
SizeReservationServiceGetResponse is the response payload for a size reservation get request.
+ NicState
+ NicState represents the current state of a switch port.
@@ -17912,10 +17290,17 @@ SizeReservationServ
- | size_reservation |
- SizeReservation |
+ desired |
+ SwitchPortStatus |
+ optional |
+ Desired is the desired port state. |
+
+
+
+ | actual |
+ SwitchPortStatus |
|
- Size reservation. |
+ Actual is the actual port state. |
@@ -17925,8 +17310,8 @@ SizeReservationServ
- SizeReservationServiceListRequest
-
SizeReservationServiceListRequest is the request payload for a size list request.
+ StaticPortConfig
+ StaticPortConfig is a config that is statically applied to a port.
@@ -17936,17 +17321,24 @@ SizeReservationServ
- | project |
- string |
+ status |
+ SwitchPortStatus |
|
- Project of the size reservation. |
+ Status is the administrative status of the port. |
- | query |
- SizeReservationQuery |
+ membership |
+ SwitchPortMembership |
|
- Query for size reservations. |
+ Membership specifies whether this port is connected to a registered machine or to an external host or if it is unmanaged. |
+
+
+
+ | network |
+ string |
+ optional |
+ Network the port is a member of. |
@@ -17956,8 +17348,8 @@ SizeReservationServ
- SizeReservationServiceListResponse
-
SizeReservationServiceListResponse is the response payload for a size reservation list request.
+ Switch
+ Switch represents a network switch.
@@ -17967,61 +17359,119 @@ SizeReservationSer
- | size_reservations |
- SizeReservation |
+ id |
+ string |
+ |
+ Id of the switch. |
+
+
+
+ | meta |
+ Meta |
+ |
+ Meta for this switch. |
+
+
+
+ | description |
+ string |
+ |
+ Description of the switch. |
+
+
+
+ | rack |
+ string |
+ optional |
+ Rack ID if the switch resides in a rack. |
+
+
+
+ | room |
+ string |
+ optional |
+ Room ID if the switch resides in a room. |
+
+
+
+ | partition |
+ string |
+ |
+ Partition the switch belongs to. |
+
+
+
+ | replace_mode |
+ SwitchReplaceMode |
+ |
+ ReplaceMode is used to mark a switch ready for replacement. |
+
+
+
+ | management_ip |
+ string |
+ |
+ ManagementIp is the switch's IP for management access. |
+
+
+
+ | management_user |
+ string |
+ optional |
+ ManagementUser is the user name to use for management access. |
+
+
+
+ | console_command |
+ string |
+ optional |
+ ConsoleCommand is the command for accessing the switch's console. |
+
+
+
+ | nics |
+ SwitchNic |
repeated |
- Size reservations. |
+ Nics are the front panel ports of the switch. |
-
-
-
-
-
-
-
-
-
-
-
-
-
- SizeReservationService
- SizeReservationService provides size reservation management operations.
-
+
+ | os |
+ SwitchOS |
+ |
+ SwitchOs is the OS running on the switch. |
+
+
+
+ | machine_connections |
+ MachineConnection |
+ repeated |
+ MachineConnections map machines to the nics they are connected to. |
+
+
+
+ | last_sync |
+ SwitchSync |
+ |
+ LastSync contains information about the last heartbeat of the switch. |
+
+
+
+ | last_sync_error |
+ SwitchSync |
+ |
+ LastSyncError contains information about the last unsuccessful heartbeat of the switch. |
+
+
+
+
-
-
-
-
-
metalstack/admin/v2/size_reservation.proto
Top
-
-
+
+
- SizeReservationServiceCreateRequest
- SizeReservationServiceCreateRequest is the request payload for creating a size reservation.
+ SwitchBGPPortState
+ SwitchBGPPortState holds information about the BGP state of a port.
@@ -18031,10 +17481,52 @@ SizeReservation
- | size_reservation |
- metalstack.api.v2.SizeReservation |
+ neighbor |
+ string |
+ optional |
+ Neighbor of this port. |
+
+
+
+ | peer_group |
+ string |
|
- SizeReservation is the size reservation to create. |
+ PeerGroup of this port. |
+
+
+
+ | vrf_name |
+ string |
+ |
+ VrfName of the VRF this port is bound to. |
+
+
+
+ | bgp_state |
+ BGPState |
+ |
+ BgpState of the connection on this port. |
+
+
+
+ | bgp_timer_up_established |
+ google.protobuf.Timestamp |
+ |
+ BgpTimerUpEstablished reports when this port's BGP connection was established. |
+
+
+
+ | sent_prefix_counter |
+ uint64 |
+ |
+ SentPrefixCounter counts the prefixes sent by the switch on this port. |
+
+
+
+ | accepted_prefix_counter |
+ uint64 |
+ |
+ AcceptedPrefixCounter counts the prefixes received on this port. |
@@ -18044,8 +17536,8 @@ SizeReservation
- SizeReservationServiceCreateResponse
-
SizeReservationServiceCreateResponse is the response payload for creating a size reservation.
+ SwitchNic
+ SwitchNic represents a front panel port and its configuration.
@@ -18055,21 +17547,91 @@ SizeReservatio
- | size_reservation |
- metalstack.api.v2.SizeReservation |
+ name |
+ string |
|
- SizeReservation contains the created reservation. |
+ Name of the switch port. |
+
+
+
+ | identifier |
+ string |
+ |
+ Identifier of the port. |
+
+
+
+ | mac |
+ string |
+ optional |
+ Deprecated. MAC address of the port. This field is deprecated because it was only necessary before SONiC was supported. For SONiC, all these addresses are identical and do not provide any benefit. It will be dropped once the metal-api has been dropped. |
+
+
+
+ | vrf |
+ string |
+ optional |
+ VRF name if the port is bound in one. |
+
+
+
+ | state |
+ NicState |
+ optional |
+ NicState describes the current state of the switch port. |
+
+
+
+ | bgp_filter |
+ BGPFilter |
+ optional |
+ BGPFilter optionally configured on a port. |
+
+
+
+ | bgp_port_state |
+ SwitchBGPPortState |
+ optional |
+ BGPPortState represents the current BGP status of the port. |
+
+
+
+ | membership |
+ SwitchPortMembership |
+ |
+ Membership indicates whether the port is connected to an internal or external host. |
+
+
+ Fields with deprecated option
+
+
+
+ | Name |
+ Option |
+
+
+
+
+
+ | mac |
+ true |
+
+
+
+
+
+
- SizeReservationServiceDeleteRequest
- SizeReservationServiceDeleteRequest is the request payload for deleting a size reservation.
+ SwitchNicWithMachine
+ SwitchNicWithMachine associates a switch port with its connected machine.
@@ -18079,10 +17641,24 @@ SizeReservation
- | id |
- string |
+ nic |
+ SwitchNic |
|
- ID of the size reservation to delete. |
+ Nic is the switch nic the machine is connected to. |
+
+
+
+ | machine |
+ Machine |
+ |
+ Machine connected to this nic. |
+
+
+
+ | fru |
+ MachineFRU |
+ |
+ FRU of the connected machine. |
@@ -18092,8 +17668,8 @@ SizeReservation
- SizeReservationServiceDeleteResponse
-
SizeReservationServiceDeleteResponse is the response payload for deleting a size reservation.
+ SwitchOS
+ SwitchOS holds information about the NOS and versions running on the switch.
@@ -18103,10 +17679,24 @@ SizeReservatio
- | size_reservation |
- metalstack.api.v2.SizeReservation |
+ vendor |
+ SwitchOSVendor |
|
- SizeReservation contains the deleted reservation. |
+ Vendor identifies what NOS distribution is running on the switch, e.g. SONiC. |
+
+
+
+ | version |
+ string |
+ |
+ Version specifies what NOS version is currently installed on the switch. |
+
+
+
+ | metal_core_version |
+ string |
+ |
+ MetalCoreVersion is the currently running version of the metal-core. |
@@ -18116,8 +17706,8 @@ SizeReservatio
- SizeReservationServiceListRequest
-
SizeReservationServiceListRequest is the request payload for listing size reservations.
+ SwitchOSQuery
+ SwitchOSQuery holds OS specific query parameters.
@@ -18127,10 +17717,17 @@ SizeReservationSe
- | query |
- metalstack.api.v2.SizeReservationQuery |
- |
- Query for size reservations. |
+ vendor |
+ SwitchOSVendor |
+ optional |
+ OsVendor of the switch OS by which to filter the switches. |
+
+
+
+ | version |
+ string |
+ optional |
+ OsVersion of the OS by which to filter the switches. |
@@ -18140,8 +17737,8 @@ SizeReservationSe
- SizeReservationServiceListResponse
-
SizeReservationServiceListResponse is the response payload for listing size reservations.
+ SwitchQuery
+ SwitchQuery can be used to query a switch or a list of switches.
@@ -18151,10 +17748,45 @@ SizeReservationS
- | size_reservations |
- metalstack.api.v2.SizeReservation |
- repeated |
- SizeReservations contains the list of reservations. |
+ id |
+ string |
+ optional |
+ Id of the switch to list. |
+
+
+
+ | partition |
+ string |
+ optional |
+ Partition of the switches to list. |
+
+
+
+ | rack |
+ string |
+ optional |
+ Rack of the switches to list. |
+
+
+
+ | room |
+ string |
+ optional |
+ Room ID if the switch resides in a room. |
+
+
+
+ | os |
+ SwitchOSQuery |
+ optional |
+ Switch OS specific queries. |
+
+
+
+ | connected_machine_id |
+ string |
+ optional |
+ ConnectedMachineID lists the switches which have the given machine id in the connected machines map. |
@@ -18164,8 +17796,8 @@ SizeReservationS
- SizeReservationServiceUpdateRequest
-
SizeReservationServiceUpdateRequest is the request payload for updating a size reservation.
+ SwitchSync
+ SwitchSync summarizes information about a switch sync.
@@ -18175,52 +17807,24 @@ SizeReservation
- | id |
- string |
+ time |
+ google.protobuf.Timestamp |
|
- Id of this size reservation. |
-
-
-
- | name |
- string |
- optional |
- Name of this size reservation. |
-
-
-
- | description |
- string |
- optional |
- Description of this size reservation. |
+ Time of the sync. |
- | update_meta |
- metalstack.api.v2.UpdateMeta |
+ duration |
+ google.protobuf.Duration |
|
- UpdateMeta contains the timestamp and strategy to be used in this update request. |
+ Duration of the sync. |
- | partitions |
+ error |
string |
- repeated |
- Partition ids of this size reservation. |
-
-
-
- | amount |
- int32 |
- optional |
- Amount of reservations of this size reservation. |
-
-
-
- | labels |
- metalstack.api.v2.UpdateLabels |
optional |
- Labels to update of this size reservation. |
+ Error if any occurred. |
@@ -18230,8 +17834,8 @@ SizeReservation
- SizeReservationServiceUpdateResponse
-
SizeReservationServiceUpdateResponse is the response payload for updating a size reservation.
+ SwitchWithMachines
+ SwitchWithMachines contains a mapping from switch ports to connected machines.
@@ -18241,10 +17845,31 @@ SizeReservatio
- | size_reservation |
- metalstack.api.v2.SizeReservation |
+ id |
+ string |
|
- SizeReservation contains the updated reservation. |
+ Id of the switch. |
+
+
+
+ | partition |
+ string |
+ |
+ Partition of the switch. |
+
+
+
+ | rack |
+ string |
+ |
+ Rack of the switch. |
+
+
+
+ | connections |
+ SwitchNicWithMachine |
+ repeated |
+ Connections associates switch ports with the machines connected to them. |
@@ -18256,50 +17881,192 @@ SizeReservatio
-
+ BGPState
+
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
+ 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. |
+
+
+
+
- SizeReservationService
- SizeReservationService provides size reservation management operations.
+ SwitchPortMembership
+ SwitchPortMembership indicates whether a switch port is connected to an internal or an external host.
+
+ SwitchPortStatus
+ SwitchPortStatus specifies the state of a switch port.
+
+
+ | Name | Number | 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. |
+
+
+
+
+
+ SwitchReplaceMode
+ SwitchReplaceMode is used to mark a switch ready for replacement.
+
+
+ | Name | Number | Description |
+
+
+
+
+ | SWITCH_REPLACE_MODE_UNSPECIFIED |
+ 0 |
+ SWITCH_REPLACE_MODE_UNSPECIFIED is not specified. |
+
+
+
+ | SWITCH_REPLACE_MODE_REPLACE |
+ 1 |
+ SWITCH_REPLACE_MODE_REPLACE means this switch is waiting to be replaced. |
+
+
+
+ | SWITCH_REPLACE_MODE_OPERATIONAL |
+ 2 |
+ SWITCH_REPLACE_MODE_OPERATIONAL means this switch is operational and cannot be replaced. |
+
-
+
+
+
@@ -18570,7 +18337,7 @@
SwitchServiceMigrateRe
SwitchServicePortRequest
-
SwitchServicePortRequest is the request payload for setting the port status of a switch port.
+
SwitchServicePortRequest is the request payload for setting the port config of a switch port.
@@ -18590,14 +18357,14 @@ SwitchServicePortRequest
| nic_name |
string |
|
- NicName of the port whose status should be changed. |
+ NicName of the affected port. |
- | status |
- metalstack.api.v2.SwitchPortStatus |
+ config |
+ metalstack.api.v2.StaticPortConfig |
|
- Status that the port should have. |
+ Config is the desired port config. |
@@ -18608,7 +18375,7 @@ SwitchServicePortRequest
SwitchServicePortResponse
-
SwitchServicePortResponse is the response payload for setting the port status of a switch port.
+ SwitchServicePortResponse is the response payload for setting the port config of a switch port.
@@ -18621,7 +18388,7 @@ SwitchServicePortResponse
| switch |
metalstack.api.v2.Switch |
|
- Switch after the port status toggle. |
+ Switch after the update. |
@@ -18796,7 +18563,7 @@ SwitchService
Port |
SwitchServicePortRequest |
SwitchServicePortResponse |
- Sets the port status of a switch port. |
+ Sets the port config of a switch port. |
diff --git a/go/metalstack/admin/v2/adminv2connect/network.connect.go b/go/metalstack/admin/v2/adminv2connect/network.connect.go
index da813153..039d93d0 100644
--- a/go/metalstack/admin/v2/adminv2connect/network.connect.go
+++ b/go/metalstack/admin/v2/adminv2connect/network.connect.go
@@ -43,15 +43,6 @@ 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"
- // NetworkServiceListExternalMembersProcedure is the fully-qualified name of the NetworkService's
- // ListExternalMembers RPC.
- NetworkServiceListExternalMembersProcedure = "/metalstack.admin.v2.NetworkService/ListExternalMembers"
- // NetworkServiceAddExternalMembersProcedure is the fully-qualified name of the NetworkService's
- // AddExternalMembers RPC.
- NetworkServiceAddExternalMembersProcedure = "/metalstack.admin.v2.NetworkService/AddExternalMembers"
- // NetworkServiceRemoveExternalMembersProcedure is the fully-qualified name of the NetworkService's
- // RemoveExternalMembers RPC.
- NetworkServiceRemoveExternalMembersProcedure = "/metalstack.admin.v2.NetworkService/RemoveExternalMembers"
)
// NetworkServiceClient is a client for the metalstack.admin.v2.NetworkService service.
@@ -66,12 +57,6 @@ 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)
- // Lists external members of a network.
- ListExternalMembers(context.Context, *v2.NetworkServiceListExternalMembersRequest) (*v2.NetworkServiceListExternalMembersResponse, error)
- // Adds an external member to a network.
- AddExternalMembers(context.Context, *v2.NetworkServiceAddExternalMembersRequest) (*v2.NetworkServiceAddExternalMembersResponse, error)
- // Removes an external member from a network.
- RemoveExternalMembers(context.Context, *v2.NetworkServiceRemoveExternalMembersRequest) (*v2.NetworkServiceRemoveExternalMembersResponse, error)
}
// NewNetworkServiceClient constructs a client for the metalstack.admin.v2.NetworkService service.
@@ -115,37 +100,16 @@ func NewNetworkServiceClient(httpClient connect.HTTPClient, baseURL string, opts
connect.WithSchema(networkServiceMethods.ByName("List")),
connect.WithClientOptions(opts...),
),
- listExternalMembers: connect.NewClient[v2.NetworkServiceListExternalMembersRequest, v2.NetworkServiceListExternalMembersResponse](
- httpClient,
- baseURL+NetworkServiceListExternalMembersProcedure,
- connect.WithSchema(networkServiceMethods.ByName("ListExternalMembers")),
- connect.WithClientOptions(opts...),
- ),
- addExternalMembers: connect.NewClient[v2.NetworkServiceAddExternalMembersRequest, v2.NetworkServiceAddExternalMembersResponse](
- httpClient,
- baseURL+NetworkServiceAddExternalMembersProcedure,
- connect.WithSchema(networkServiceMethods.ByName("AddExternalMembers")),
- connect.WithClientOptions(opts...),
- ),
- removeExternalMembers: connect.NewClient[v2.NetworkServiceRemoveExternalMembersRequest, v2.NetworkServiceRemoveExternalMembersResponse](
- httpClient,
- baseURL+NetworkServiceRemoveExternalMembersProcedure,
- connect.WithSchema(networkServiceMethods.ByName("RemoveExternalMembers")),
- 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]
- listExternalMembers *connect.Client[v2.NetworkServiceListExternalMembersRequest, v2.NetworkServiceListExternalMembersResponse]
- addExternalMembers *connect.Client[v2.NetworkServiceAddExternalMembersRequest, v2.NetworkServiceAddExternalMembersResponse]
- removeExternalMembers *connect.Client[v2.NetworkServiceRemoveExternalMembersRequest, v2.NetworkServiceRemoveExternalMembersResponse]
+ 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 calls metalstack.admin.v2.NetworkService.Get.
@@ -193,33 +157,6 @@ func (c *networkServiceClient) List(ctx context.Context, req *v2.NetworkServiceL
return nil, err
}
-// ListExternalMembers calls metalstack.admin.v2.NetworkService.ListExternalMembers.
-func (c *networkServiceClient) ListExternalMembers(ctx context.Context, req *v2.NetworkServiceListExternalMembersRequest) (*v2.NetworkServiceListExternalMembersResponse, error) {
- response, err := c.listExternalMembers.CallUnary(ctx, connect.NewRequest(req))
- if response != nil {
- return response.Msg, err
- }
- return nil, err
-}
-
-// AddExternalMembers calls metalstack.admin.v2.NetworkService.AddExternalMembers.
-func (c *networkServiceClient) AddExternalMembers(ctx context.Context, req *v2.NetworkServiceAddExternalMembersRequest) (*v2.NetworkServiceAddExternalMembersResponse, error) {
- response, err := c.addExternalMembers.CallUnary(ctx, connect.NewRequest(req))
- if response != nil {
- return response.Msg, err
- }
- return nil, err
-}
-
-// RemoveExternalMembers calls metalstack.admin.v2.NetworkService.RemoveExternalMembers.
-func (c *networkServiceClient) RemoveExternalMembers(ctx context.Context, req *v2.NetworkServiceRemoveExternalMembersRequest) (*v2.NetworkServiceRemoveExternalMembersResponse, error) {
- response, err := c.removeExternalMembers.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.
@@ -232,12 +169,6 @@ 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)
- // Lists external members of a network.
- ListExternalMembers(context.Context, *v2.NetworkServiceListExternalMembersRequest) (*v2.NetworkServiceListExternalMembersResponse, error)
- // Adds an external member to a network.
- AddExternalMembers(context.Context, *v2.NetworkServiceAddExternalMembersRequest) (*v2.NetworkServiceAddExternalMembersResponse, error)
- // Removes an external member from a network.
- RemoveExternalMembers(context.Context, *v2.NetworkServiceRemoveExternalMembersRequest) (*v2.NetworkServiceRemoveExternalMembersResponse, error)
}
// NewNetworkServiceHandler builds an HTTP handler from the service implementation. It returns the
@@ -277,24 +208,6 @@ func NewNetworkServiceHandler(svc NetworkServiceHandler, opts ...connect.Handler
connect.WithSchema(networkServiceMethods.ByName("List")),
connect.WithHandlerOptions(opts...),
)
- networkServiceListExternalMembersHandler := connect.NewUnaryHandlerSimple(
- NetworkServiceListExternalMembersProcedure,
- svc.ListExternalMembers,
- connect.WithSchema(networkServiceMethods.ByName("ListExternalMembers")),
- connect.WithHandlerOptions(opts...),
- )
- networkServiceAddExternalMembersHandler := connect.NewUnaryHandlerSimple(
- NetworkServiceAddExternalMembersProcedure,
- svc.AddExternalMembers,
- connect.WithSchema(networkServiceMethods.ByName("AddExternalMembers")),
- connect.WithHandlerOptions(opts...),
- )
- networkServiceRemoveExternalMembersHandler := connect.NewUnaryHandlerSimple(
- NetworkServiceRemoveExternalMembersProcedure,
- svc.RemoveExternalMembers,
- connect.WithSchema(networkServiceMethods.ByName("RemoveExternalMembers")),
- connect.WithHandlerOptions(opts...),
- )
return "/metalstack.admin.v2.NetworkService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case NetworkServiceGetProcedure:
@@ -307,12 +220,6 @@ func NewNetworkServiceHandler(svc NetworkServiceHandler, opts ...connect.Handler
networkServiceDeleteHandler.ServeHTTP(w, r)
case NetworkServiceListProcedure:
networkServiceListHandler.ServeHTTP(w, r)
- case NetworkServiceListExternalMembersProcedure:
- networkServiceListExternalMembersHandler.ServeHTTP(w, r)
- case NetworkServiceAddExternalMembersProcedure:
- networkServiceAddExternalMembersHandler.ServeHTTP(w, r)
- case NetworkServiceRemoveExternalMembersProcedure:
- networkServiceRemoveExternalMembersHandler.ServeHTTP(w, r)
default:
http.NotFound(w, r)
}
@@ -341,15 +248,3 @@ 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) ListExternalMembers(context.Context, *v2.NetworkServiceListExternalMembersRequest) (*v2.NetworkServiceListExternalMembersResponse, error) {
- return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.NetworkService.ListExternalMembers is not implemented"))
-}
-
-func (UnimplementedNetworkServiceHandler) AddExternalMembers(context.Context, *v2.NetworkServiceAddExternalMembersRequest) (*v2.NetworkServiceAddExternalMembersResponse, error) {
- return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.NetworkService.AddExternalMembers is not implemented"))
-}
-
-func (UnimplementedNetworkServiceHandler) RemoveExternalMembers(context.Context, *v2.NetworkServiceRemoveExternalMembersRequest) (*v2.NetworkServiceRemoveExternalMembersResponse, error) {
- return nil, connect.NewError(connect.CodeUnimplemented, errors.New("metalstack.admin.v2.NetworkService.RemoveExternalMembers is not implemented"))
-}
diff --git a/go/metalstack/admin/v2/adminv2connect/switch.connect.go b/go/metalstack/admin/v2/adminv2connect/switch.connect.go
index a44c2320..fc95a5b8 100644
--- a/go/metalstack/admin/v2/adminv2connect/switch.connect.go
+++ b/go/metalstack/admin/v2/adminv2connect/switch.connect.go
@@ -62,7 +62,7 @@ type SwitchServiceClient interface {
Delete(context.Context, *v2.SwitchServiceDeleteRequest) (*v2.SwitchServiceDeleteResponse, error)
// Migrates a switch.
Migrate(context.Context, *v2.SwitchServiceMigrateRequest) (*v2.SwitchServiceMigrateResponse, error)
- // Sets the port status of a switch port.
+ // Sets the port config of a switch port.
Port(context.Context, *v2.SwitchServicePortRequest) (*v2.SwitchServicePortResponse, error)
// Returns all switches with their machine connections.
ConnectedMachines(context.Context, *v2.SwitchServiceConnectedMachinesRequest) (*v2.SwitchServiceConnectedMachinesResponse, error)
@@ -210,7 +210,7 @@ type SwitchServiceHandler interface {
Delete(context.Context, *v2.SwitchServiceDeleteRequest) (*v2.SwitchServiceDeleteResponse, error)
// Migrates a switch.
Migrate(context.Context, *v2.SwitchServiceMigrateRequest) (*v2.SwitchServiceMigrateResponse, error)
- // Sets the port status of a switch port.
+ // Sets the port config of a switch port.
Port(context.Context, *v2.SwitchServicePortRequest) (*v2.SwitchServicePortResponse, error)
// Returns all switches with their machine connections.
ConnectedMachines(context.Context, *v2.SwitchServiceConnectedMachinesRequest) (*v2.SwitchServiceConnectedMachinesResponse, error)
diff --git a/go/metalstack/admin/v2/network.pb.go b/go/metalstack/admin/v2/network.pb.go
index eafd9476..e2008401 100644
--- a/go/metalstack/admin/v2/network.pb.go
+++ b/go/metalstack/admin/v2/network.pb.go
@@ -542,189 +542,6 @@ func (x *NetworkServiceListRequest) GetQuery() *v2.NetworkQuery {
return nil
}
-// NetworkServiceListExternalMembersRequest is the request payload for listing external members of a network.
-type NetworkServiceListExternalMembersRequest 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 *NetworkServiceListExternalMembersRequest) Reset() {
- *x = NetworkServiceListExternalMembersRequest{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[6]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *NetworkServiceListExternalMembersRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NetworkServiceListExternalMembersRequest) ProtoMessage() {}
-
-func (x *NetworkServiceListExternalMembersRequest) 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 NetworkServiceListExternalMembersRequest.ProtoReflect.Descriptor instead.
-func (*NetworkServiceListExternalMembersRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *NetworkServiceListExternalMembersRequest) GetNetwork() string {
- if x != nil {
- return x.Network
- }
- return ""
-}
-
-func (x *NetworkServiceListExternalMembersRequest) 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 NetworkServiceAddExternalMembersRequest 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"`
- // Rack the members are connected to.
- Rack string `protobuf:"bytes,2,opt,name=rack,proto3" json:"rack,omitempty"`
- // Ports of the switches to add to the network.
- Ports []string `protobuf:"bytes,3,rep,name=ports,proto3" json:"ports,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *NetworkServiceAddExternalMembersRequest) Reset() {
- *x = NetworkServiceAddExternalMembersRequest{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[7]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *NetworkServiceAddExternalMembersRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NetworkServiceAddExternalMembersRequest) ProtoMessage() {}
-
-func (x *NetworkServiceAddExternalMembersRequest) 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 NetworkServiceAddExternalMembersRequest.ProtoReflect.Descriptor instead.
-func (*NetworkServiceAddExternalMembersRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *NetworkServiceAddExternalMembersRequest) GetNetwork() string {
- if x != nil {
- return x.Network
- }
- return ""
-}
-
-func (x *NetworkServiceAddExternalMembersRequest) GetRack() string {
- if x != nil {
- return x.Rack
- }
- return ""
-}
-
-func (x *NetworkServiceAddExternalMembersRequest) GetPorts() []string {
- if x != nil {
- return x.Ports
- }
- return nil
-}
-
-// NetworkServiceRemoveExternalMemberRequest is the request payload for removing an external member from a network.
-type NetworkServiceRemoveExternalMembersRequest 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"`
- // Rack the members are connected to.
- Rack string `protobuf:"bytes,2,opt,name=rack,proto3" json:"rack,omitempty"`
- // Ports of the switches to remove from the network.
- Ports []string `protobuf:"bytes,3,rep,name=ports,proto3" json:"ports,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *NetworkServiceRemoveExternalMembersRequest) Reset() {
- *x = NetworkServiceRemoveExternalMembersRequest{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[8]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *NetworkServiceRemoveExternalMembersRequest) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NetworkServiceRemoveExternalMembersRequest) ProtoMessage() {}
-
-func (x *NetworkServiceRemoveExternalMembersRequest) 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 NetworkServiceRemoveExternalMembersRequest.ProtoReflect.Descriptor instead.
-func (*NetworkServiceRemoveExternalMembersRequest) Descriptor() ([]byte, []int) {
- return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *NetworkServiceRemoveExternalMembersRequest) GetNetwork() string {
- if x != nil {
- return x.Network
- }
- return ""
-}
-
-func (x *NetworkServiceRemoveExternalMembersRequest) GetRack() string {
- if x != nil {
- return x.Rack
- }
- return ""
-}
-
-func (x *NetworkServiceRemoveExternalMembersRequest) GetPorts() []string {
- if x != nil {
- return x.Ports
- }
- return nil
-}
-
// NetworkServiceCreateResponse is the response payload for creating a network.
type NetworkServiceCreateResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -736,7 +553,7 @@ type NetworkServiceCreateResponse struct {
func (x *NetworkServiceCreateResponse) Reset() {
*x = NetworkServiceCreateResponse{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[9]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -748,7 +565,7 @@ func (x *NetworkServiceCreateResponse) String() string {
func (*NetworkServiceCreateResponse) ProtoMessage() {}
func (x *NetworkServiceCreateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[9]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -761,7 +578,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{9}
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{6}
}
func (x *NetworkServiceCreateResponse) GetNetwork() *v2.Network {
@@ -782,7 +599,7 @@ type NetworkServiceUpdateResponse struct {
func (x *NetworkServiceUpdateResponse) Reset() {
*x = NetworkServiceUpdateResponse{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[10]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -794,7 +611,7 @@ func (x *NetworkServiceUpdateResponse) String() string {
func (*NetworkServiceUpdateResponse) ProtoMessage() {}
func (x *NetworkServiceUpdateResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[10]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -807,7 +624,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{10}
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{7}
}
func (x *NetworkServiceUpdateResponse) GetNetwork() *v2.Network {
@@ -828,7 +645,7 @@ type NetworkServiceDeleteResponse struct {
func (x *NetworkServiceDeleteResponse) Reset() {
*x = NetworkServiceDeleteResponse{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[11]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -840,7 +657,7 @@ func (x *NetworkServiceDeleteResponse) String() string {
func (*NetworkServiceDeleteResponse) ProtoMessage() {}
func (x *NetworkServiceDeleteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[11]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -853,7 +670,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{11}
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{8}
}
func (x *NetworkServiceDeleteResponse) GetNetwork() *v2.Network {
@@ -874,7 +691,7 @@ type NetworkServiceListResponse struct {
func (x *NetworkServiceListResponse) Reset() {
*x = NetworkServiceListResponse{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[12]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -886,7 +703,7 @@ func (x *NetworkServiceListResponse) String() string {
func (*NetworkServiceListResponse) ProtoMessage() {}
func (x *NetworkServiceListResponse) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[12]
+ mi := &file_metalstack_admin_v2_network_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -899,7 +716,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{12}
+ return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{9}
}
func (x *NetworkServiceListResponse) GetNetworks() []*v2.Network {
@@ -909,176 +726,11 @@ func (x *NetworkServiceListResponse) GetNetworks() []*v2.Network {
return nil
}
-// NetworkServiceListExternalMembersResponse is the response payload for listing external members of a network.
-type NetworkServiceListExternalMembersResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Network whose members are queried.
- Network string `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"`
- // Members are the queried external members of the network.
- Members []*v2.ExternalNetworkMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *NetworkServiceListExternalMembersResponse) Reset() {
- *x = NetworkServiceListExternalMembersResponse{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[13]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *NetworkServiceListExternalMembersResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NetworkServiceListExternalMembersResponse) ProtoMessage() {}
-
-func (x *NetworkServiceListExternalMembersResponse) 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 NetworkServiceListExternalMembersResponse.ProtoReflect.Descriptor instead.
-func (*NetworkServiceListExternalMembersResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *NetworkServiceListExternalMembersResponse) GetNetwork() string {
- if x != nil {
- return x.Network
- }
- return ""
-}
-
-func (x *NetworkServiceListExternalMembersResponse) GetMembers() []*v2.ExternalNetworkMember {
- if x != nil {
- return x.Members
- }
- return nil
-}
-
-// NetworkServiceAddExternalMemberResponse is the response payload for adding an external member to a network.
-type NetworkServiceAddExternalMembersResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Network the members were added to.
- Network *v2.Network `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"`
- // Switch contains the updated switches.
- Switches []*v2.Switch `protobuf:"bytes,2,rep,name=switches,proto3" json:"switches,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *NetworkServiceAddExternalMembersResponse) Reset() {
- *x = NetworkServiceAddExternalMembersResponse{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[14]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *NetworkServiceAddExternalMembersResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NetworkServiceAddExternalMembersResponse) ProtoMessage() {}
-
-func (x *NetworkServiceAddExternalMembersResponse) 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 NetworkServiceAddExternalMembersResponse.ProtoReflect.Descriptor instead.
-func (*NetworkServiceAddExternalMembersResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *NetworkServiceAddExternalMembersResponse) GetNetwork() *v2.Network {
- if x != nil {
- return x.Network
- }
- return nil
-}
-
-func (x *NetworkServiceAddExternalMembersResponse) GetSwitches() []*v2.Switch {
- if x != nil {
- return x.Switches
- }
- return nil
-}
-
-// NetworkServiceRemoveExternalMemberResponse is the response payload for removing an external member from a network.
-type NetworkServiceRemoveExternalMembersResponse struct {
- state protoimpl.MessageState `protogen:"open.v1"`
- // Network the members were removed from.
- Network *v2.Network `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"`
- // Switch contains the updated switches.
- Switches []*v2.Switch `protobuf:"bytes,2,rep,name=switches,proto3" json:"switches,omitempty"`
- unknownFields protoimpl.UnknownFields
- sizeCache protoimpl.SizeCache
-}
-
-func (x *NetworkServiceRemoveExternalMembersResponse) Reset() {
- *x = NetworkServiceRemoveExternalMembersResponse{}
- mi := &file_metalstack_admin_v2_network_proto_msgTypes[15]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *NetworkServiceRemoveExternalMembersResponse) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NetworkServiceRemoveExternalMembersResponse) ProtoMessage() {}
-
-func (x *NetworkServiceRemoveExternalMembersResponse) 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 NetworkServiceRemoveExternalMembersResponse.ProtoReflect.Descriptor instead.
-func (*NetworkServiceRemoveExternalMembersResponse) Descriptor() ([]byte, []int) {
- return file_metalstack_admin_v2_network_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *NetworkServiceRemoveExternalMembersResponse) GetNetwork() *v2.Network {
- if x != nil {
- return x.Network
- }
- return nil
-}
-
-func (x *NetworkServiceRemoveExternalMembersResponse) GetSwitches() []*v2.Switch {
- if x != nil {
- return x.Switches
- }
- 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\x1a\x1emetalstack/api/v2/switch.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\"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" +
@@ -1140,18 +792,7 @@ 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\"\x96\x01\n" +
- "(NetworkServiceListExternalMembersRequest\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\"\x98\x01\n" +
- "'NetworkServiceAddExternalMembersRequest\x12%\n" +
- "\anetwork\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\anetwork\x12\x1f\n" +
- "\x04rack\x18\x02 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04rack\x12%\n" +
- "\x05ports\x18\x03 \x03(\tB\x0f\xbaH\f\x92\x01\tФ\xb3\xb1\x02\x01\x10\x80\x10R\x05ports\"\x9b\x01\n" +
- "*NetworkServiceRemoveExternalMembersRequest\x12%\n" +
- "\anetwork\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\anetwork\x12\x1f\n" +
- "\x04rack\x18\x02 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04rack\x12%\n" +
- "\x05ports\x18\x03 \x03(\tB\x0f\xbaH\f\x92\x01\tФ\xb3\xb1\x02\x01\x10\x80\x10R\x05ports\"T\n" +
+ "\x05query\x18\x01 \x01(\v2\x1f.metalstack.api.v2.NetworkQueryR\x05query\"T\n" +
"\x1cNetworkServiceCreateResponse\x124\n" +
"\anetwork\x18\x01 \x01(\v2\x1a.metalstack.api.v2.NetworkR\anetwork\"T\n" +
"\x1cNetworkServiceUpdateResponse\x124\n" +
@@ -1159,16 +800,7 @@ 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\bnetworks\"\x89\x01\n" +
- ")NetworkServiceListExternalMembersResponse\x12\x18\n" +
- "\anetwork\x18\x01 \x01(\tR\anetwork\x12B\n" +
- "\amembers\x18\x02 \x03(\v2(.metalstack.api.v2.ExternalNetworkMemberR\amembers\"\x97\x01\n" +
- "(NetworkServiceAddExternalMembersResponse\x124\n" +
- "\anetwork\x18\x01 \x01(\v2\x1a.metalstack.api.v2.NetworkR\anetwork\x125\n" +
- "\bswitches\x18\x02 \x03(\v2\x19.metalstack.api.v2.SwitchR\bswitches\"\x9a\x01\n" +
- "+NetworkServiceRemoveExternalMembersResponse\x124\n" +
- "\anetwork\x18\x01 \x01(\v2\x1a.metalstack.api.v2.NetworkR\anetwork\x125\n" +
- "\bswitches\x18\x02 \x03(\v2\x19.metalstack.api.v2.SwitchR\bswitches2\xcf\b\n" +
+ "\bnetworks\x18\x01 \x03(\v2\x1a.metalstack.api.v2.NetworkR\bnetworks2\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" +
@@ -1176,11 +808,7 @@ 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\x02\x12\xa0\x01\n" +
- "\x13ListExternalMembers\x12=.metalstack.admin.v2.NetworkServiceListExternalMembersRequest\x1a>.metalstack.admin.v2.NetworkServiceListExternalMembersResponse\"\n" +
- "\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\x9c\x01\n" +
- "\x12AddExternalMembers\x12<.metalstack.admin.v2.NetworkServiceAddExternalMembersRequest\x1a=.metalstack.admin.v2.NetworkServiceAddExternalMembersResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\xa5\x01\n" +
- "\x15RemoveExternalMembers\x12?.metalstack.admin.v2.NetworkServiceRemoveExternalMembersRequest\x1a@.metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01B\xd0\x01\n" +
+ "\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02B\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 (
@@ -1195,83 +823,62 @@ 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, 16)
+var file_metalstack_admin_v2_network_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
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
- (*NetworkServiceListExternalMembersRequest)(nil), // 6: metalstack.admin.v2.NetworkServiceListExternalMembersRequest
- (*NetworkServiceAddExternalMembersRequest)(nil), // 7: metalstack.admin.v2.NetworkServiceAddExternalMembersRequest
- (*NetworkServiceRemoveExternalMembersRequest)(nil), // 8: metalstack.admin.v2.NetworkServiceRemoveExternalMembersRequest
- (*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
- (*NetworkServiceListExternalMembersResponse)(nil), // 13: metalstack.admin.v2.NetworkServiceListExternalMembersResponse
- (*NetworkServiceAddExternalMembersResponse)(nil), // 14: metalstack.admin.v2.NetworkServiceAddExternalMembersResponse
- (*NetworkServiceRemoveExternalMembersResponse)(nil), // 15: metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse
- (*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.ExternalNetworkMember)(nil), // 26: metalstack.api.v2.ExternalNetworkMember
- (*v2.Switch)(nil), // 27: metalstack.api.v2.Switch
+ (*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
}
var file_metalstack_admin_v2_network_proto_depIdxs = []int32{
- 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.NetworkServiceListExternalMembersRequest.query:type_name -> metalstack.api.v2.ExternalNetworkMemberQuery
- 16, // 15: metalstack.admin.v2.NetworkServiceCreateResponse.network:type_name -> metalstack.api.v2.Network
- 16, // 16: metalstack.admin.v2.NetworkServiceUpdateResponse.network:type_name -> metalstack.api.v2.Network
- 16, // 17: metalstack.admin.v2.NetworkServiceDeleteResponse.network:type_name -> metalstack.api.v2.Network
- 16, // 18: metalstack.admin.v2.NetworkServiceListResponse.networks:type_name -> metalstack.api.v2.Network
- 26, // 19: metalstack.admin.v2.NetworkServiceListExternalMembersResponse.members:type_name -> metalstack.api.v2.ExternalNetworkMember
- 16, // 20: metalstack.admin.v2.NetworkServiceAddExternalMembersResponse.network:type_name -> metalstack.api.v2.Network
- 27, // 21: metalstack.admin.v2.NetworkServiceAddExternalMembersResponse.switches:type_name -> metalstack.api.v2.Switch
- 16, // 22: metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse.network:type_name -> metalstack.api.v2.Network
- 27, // 23: metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse.switches: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
- 6, // 29: metalstack.admin.v2.NetworkService.ListExternalMembers:input_type -> metalstack.admin.v2.NetworkServiceListExternalMembersRequest
- 7, // 30: metalstack.admin.v2.NetworkService.AddExternalMembers:input_type -> metalstack.admin.v2.NetworkServiceAddExternalMembersRequest
- 8, // 31: metalstack.admin.v2.NetworkService.RemoveExternalMembers:input_type -> metalstack.admin.v2.NetworkServiceRemoveExternalMembersRequest
- 1, // 32: metalstack.admin.v2.NetworkService.Get:output_type -> metalstack.admin.v2.NetworkServiceGetResponse
- 9, // 33: metalstack.admin.v2.NetworkService.Create:output_type -> metalstack.admin.v2.NetworkServiceCreateResponse
- 10, // 34: metalstack.admin.v2.NetworkService.Update:output_type -> metalstack.admin.v2.NetworkServiceUpdateResponse
- 11, // 35: metalstack.admin.v2.NetworkService.Delete:output_type -> metalstack.admin.v2.NetworkServiceDeleteResponse
- 12, // 36: metalstack.admin.v2.NetworkService.List:output_type -> metalstack.admin.v2.NetworkServiceListResponse
- 13, // 37: metalstack.admin.v2.NetworkService.ListExternalMembers:output_type -> metalstack.admin.v2.NetworkServiceListExternalMembersResponse
- 14, // 38: metalstack.admin.v2.NetworkService.AddExternalMembers:output_type -> metalstack.admin.v2.NetworkServiceAddExternalMembersResponse
- 15, // 39: metalstack.admin.v2.NetworkService.RemoveExternalMembers:output_type -> metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse
- 32, // [32:40] is the sub-list for method output_type
- 24, // [24:32] 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
+ 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
}
func init() { file_metalstack_admin_v2_network_proto_init() }
@@ -1287,7 +894,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: 16,
+ NumMessages: 10,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/go/metalstack/admin/v2/switch.pb.go b/go/metalstack/admin/v2/switch.pb.go
index e1602a2b..51bbd9a0 100644
--- a/go/metalstack/admin/v2/switch.pb.go
+++ b/go/metalstack/admin/v2/switch.pb.go
@@ -584,15 +584,15 @@ func (x *SwitchServiceMigrateResponse) GetSwitch() *v2.Switch {
return nil
}
-// SwitchServicePortRequest is the request payload for setting the port status of a switch port.
+// SwitchServicePortRequest is the request payload for setting the port config of a switch port.
type SwitchServicePortRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Id of the switch.
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
- // NicName of the port whose status should be changed.
+ // NicName of the affected port.
NicName string `protobuf:"bytes,2,opt,name=nic_name,json=nicName,proto3" json:"nic_name,omitempty"`
- // Status that the port should have.
- Status v2.SwitchPortStatus `protobuf:"varint,3,opt,name=status,proto3,enum=metalstack.api.v2.SwitchPortStatus" json:"status,omitempty"`
+ // Config is the desired port config.
+ Config *v2.StaticPortConfig `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -641,17 +641,17 @@ func (x *SwitchServicePortRequest) GetNicName() string {
return ""
}
-func (x *SwitchServicePortRequest) GetStatus() v2.SwitchPortStatus {
+func (x *SwitchServicePortRequest) GetConfig() *v2.StaticPortConfig {
if x != nil {
- return x.Status
+ return x.Config
}
- return v2.SwitchPortStatus(0)
+ return nil
}
-// SwitchServicePortResponse is the response payload for setting the port status of a switch port.
+// SwitchServicePortResponse is the response payload for setting the port config of a switch port.
type SwitchServicePortResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
- // Switch after the port status toggle.
+ // Switch after the update.
Switch *v2.Switch `protobuf:"bytes,1,opt,name=switch,proto3" json:"switch,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -846,12 +846,12 @@ const file_metalstack_admin_v2_switch_proto_rawDesc = "" +
"new_switch\x18\x02 \x01(\tB\r\xbaH\n" +
"r\b\xc0\xb3\xae\xb1\x02\x01h\x01R\tnewSwitch\"Q\n" +
"\x1cSwitchServiceMigrateResponse\x121\n" +
- "\x06switch\x18\x01 \x01(\v2\x19.metalstack.api.v2.SwitchR\x06switch\"\xa8\x01\n" +
+ "\x06switch\x18\x01 \x01(\v2\x19.metalstack.api.v2.SwitchR\x06switch\"\x9e\x01\n" +
"\x18SwitchServicePortRequest\x12\x1d\n" +
"\x02id\x18\x01 \x01(\tB\r\xbaH\n" +
"r\b\xc0\xb3\xae\xb1\x02\x01h\x01R\x02id\x12&\n" +
- "\bnic_name\x18\x02 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\anicName\x12E\n" +
- "\x06status\x18\x03 \x01(\x0e2#.metalstack.api.v2.SwitchPortStatusB\b\xbaH\x05\x82\x01\x02\x10\x01R\x06status\"N\n" +
+ "\bnic_name\x18\x02 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\anicName\x12;\n" +
+ "\x06config\x18\x03 \x01(\v2#.metalstack.api.v2.StaticPortConfigR\x06config\"N\n" +
"\x19SwitchServicePortResponse\x121\n" +
"\x06switch\x18\x01 \x01(\v2\x19.metalstack.api.v2.SwitchR\x06switch\"\xa3\x01\n" +
"%SwitchServiceConnectedMachinesRequest\x124\n" +
@@ -907,7 +907,7 @@ var file_metalstack_admin_v2_switch_proto_goTypes = []any{
(v2.SwitchReplaceMode)(0), // 18: metalstack.api.v2.SwitchReplaceMode
(*v2.SwitchNic)(nil), // 19: metalstack.api.v2.SwitchNic
(*v2.SwitchOS)(nil), // 20: metalstack.api.v2.SwitchOS
- (v2.SwitchPortStatus)(0), // 21: metalstack.api.v2.SwitchPortStatus
+ (*v2.StaticPortConfig)(nil), // 21: metalstack.api.v2.StaticPortConfig
(*v2.MachineQuery)(nil), // 22: metalstack.api.v2.MachineQuery
(*v2.SwitchWithMachines)(nil), // 23: metalstack.api.v2.SwitchWithMachines
}
@@ -923,7 +923,7 @@ var file_metalstack_admin_v2_switch_proto_depIdxs = []int32{
14, // 8: metalstack.admin.v2.SwitchServiceUpdateResponse.switch:type_name -> metalstack.api.v2.Switch
14, // 9: metalstack.admin.v2.SwitchServiceDeleteResponse.switch:type_name -> metalstack.api.v2.Switch
14, // 10: metalstack.admin.v2.SwitchServiceMigrateResponse.switch:type_name -> metalstack.api.v2.Switch
- 21, // 11: metalstack.admin.v2.SwitchServicePortRequest.status:type_name -> metalstack.api.v2.SwitchPortStatus
+ 21, // 11: metalstack.admin.v2.SwitchServicePortRequest.config:type_name -> metalstack.api.v2.StaticPortConfig
14, // 12: metalstack.admin.v2.SwitchServicePortResponse.switch:type_name -> metalstack.api.v2.Switch
15, // 13: metalstack.admin.v2.SwitchServiceConnectedMachinesRequest.query:type_name -> metalstack.api.v2.SwitchQuery
22, // 14: metalstack.admin.v2.SwitchServiceConnectedMachinesRequest.machine_query:type_name -> metalstack.api.v2.MachineQuery
diff --git a/go/metalstack/api/v2/network.pb.go b/go/metalstack/api/v2/network.pb.go
index 415b9d93..0dba1c96 100644
--- a/go/metalstack/api/v2/network.pb.go
+++ b/go/metalstack/api/v2/network.pb.go
@@ -1274,70 +1274,6 @@ 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"`
- // Partition where the members of the network reside..
- Partition *string `protobuf:"bytes,3,opt,name=partition,proto3,oneof" json:"partition,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 ""
-}
-
-func (x *ExternalNetworkMemberQuery) GetPartition() string {
- if x != nil && x.Partition != nil {
- return *x.Partition
- }
- return ""
-}
-
// ChildPrefixLength.
type ChildPrefixLength struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -1351,7 +1287,7 @@ type ChildPrefixLength struct {
func (x *ChildPrefixLength) Reset() {
*x = ChildPrefixLength{}
- mi := &file_metalstack_api_v2_network_proto_msgTypes[15]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1363,7 +1299,7 @@ func (x *ChildPrefixLength) String() string {
func (*ChildPrefixLength) ProtoMessage() {}
func (x *ChildPrefixLength) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_network_proto_msgTypes[15]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[14]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1376,7 +1312,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{15}
+ return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{14}
}
func (x *ChildPrefixLength) GetIpv4() uint32 {
@@ -1406,7 +1342,7 @@ type NetworkConsumption struct {
func (x *NetworkConsumption) Reset() {
*x = NetworkConsumption{}
- mi := &file_metalstack_api_v2_network_proto_msgTypes[16]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1418,7 +1354,7 @@ func (x *NetworkConsumption) String() string {
func (*NetworkConsumption) ProtoMessage() {}
func (x *NetworkConsumption) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_network_proto_msgTypes[16]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[15]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1431,7 +1367,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{16}
+ return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{15}
}
func (x *NetworkConsumption) GetIpv4() *NetworkUsage {
@@ -1465,7 +1401,7 @@ type NetworkUsage struct {
func (x *NetworkUsage) Reset() {
*x = NetworkUsage{}
- mi := &file_metalstack_api_v2_network_proto_msgTypes[17]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1477,7 +1413,7 @@ func (x *NetworkUsage) String() string {
func (*NetworkUsage) ProtoMessage() {}
func (x *NetworkUsage) ProtoReflect() protoreflect.Message {
- mi := &file_metalstack_api_v2_network_proto_msgTypes[17]
+ mi := &file_metalstack_api_v2_network_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1490,7 +1426,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{17}
+ return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{16}
}
func (x *NetworkUsage) GetAvailableIps() uint64 {
@@ -1521,61 +1457,6 @@ func (x *NetworkUsage) GetUsedPrefixes() uint64 {
return 0
}
-// ExternalNetworkMember contains the ports of a switch that participate in a network and are connected to machines not known to metal-stack.
-type ExternalNetworkMember 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 *ExternalNetworkMember) Reset() {
- *x = ExternalNetworkMember{}
- mi := &file_metalstack_api_v2_network_proto_msgTypes[18]
- ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
- ms.StoreMessageInfo(mi)
-}
-
-func (x *ExternalNetworkMember) String() string {
- return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExternalNetworkMember) ProtoMessage() {}
-
-func (x *ExternalNetworkMember) 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 ExternalNetworkMember.ProtoReflect.Descriptor instead.
-func (*ExternalNetworkMember) Descriptor() ([]byte, []int) {
- return file_metalstack_api_v2_network_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *ExternalNetworkMember) GetSwitch() string {
- if x != nil {
- return x.Switch
- }
- return ""
-}
-
-func (x *ExternalNetworkMember) 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 = "" +
@@ -1692,16 +1573,7 @@ const file_metalstack_api_v2_network_proto_rawDesc = "" +
"\x0f_address_familyB\a\n" +
"\x05_typeB\v\n" +
"\t_nat_typeB\t\n" +
- "\a_labels\"\xc0\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\x01\x12.\n" +
- "\tpartition\x18\x03 \x01(\tB\v\xbaH\br\x06г\xae\xb1\x02\x01H\x02R\tpartition\x88\x01\x01B\t\n" +
- "\a_switchB\a\n" +
- "\x05_rackB\f\n" +
- "\n" +
- "_partition\"n\n" +
+ "\a_labels\"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" +
@@ -1715,10 +1587,7 @@ 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\"c\n" +
- "\x15ExternalNetworkMember\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" +
+ "\rused_prefixes\x18\x04 \x01(\x04R\fusedPrefixes*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" +
@@ -1762,7 +1631,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, 19)
+var file_metalstack_api_v2_network_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
var file_metalstack_api_v2_network_proto_goTypes = []any{
(NATType)(0), // 0: metalstack.api.v2.NATType
(NetworkType)(0), // 1: metalstack.api.v2.NetworkType
@@ -1781,42 +1650,40 @@ 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
- (*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
- (*ExternalNetworkMember)(nil), // 21: metalstack.api.v2.ExternalNetworkMember
- (*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
+ (*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
}
var file_metalstack_api_v2_network_proto_depIdxs = []int32{
15, // 0: metalstack.api.v2.NetworkServiceGetResponse.network:type_name -> metalstack.api.v2.Network
- 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
+ 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
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
- 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
+ 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
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
- 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
+ 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
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
- 19, // 18: metalstack.api.v2.Network.consumption:type_name -> metalstack.api.v2.NetworkConsumption
+ 18, // 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
- 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
+ 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
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
@@ -1848,14 +1715,13 @@ 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: 19,
+ NumMessages: 17,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/go/metalstack/api/v2/switch.pb.go b/go/metalstack/api/v2/switch.pb.go
index efe295d8..f8bdfa7a 100644
--- a/go/metalstack/api/v2/switch.pb.go
+++ b/go/metalstack/api/v2/switch.pb.go
@@ -256,6 +256,64 @@ func (SwitchPortStatus) EnumDescriptor() ([]byte, []int) {
return file_metalstack_api_v2_switch_proto_rawDescGZIP(), []int{3}
}
+// SwitchPortMembership indicates whether a switch port is connected to an internal or an external host.
+type SwitchPortMembership int32
+
+const (
+ // SWITCH_PORT_MEMBERSHIP_UNSPECIFIED is not specified.
+ SwitchPortMembership_SWITCH_PORT_MEMBERSHIP_UNSPECIFIED SwitchPortMembership = 0
+ // SWITCH_PORT_MEMBERSHIP_UNMANAGED is a port that isn't connected to any host yet.
+ SwitchPortMembership_SWITCH_PORT_MEMBERSHIP_UNMANAGED SwitchPortMembership = 1
+ // SWITCH_PORT_MEMBERSHIP_INTERNAL is port that is connected to a host that is registered at the api, e.g. a registered machine.
+ SwitchPortMembership_SWITCH_PORT_MEMBERSHIP_INTERNAL SwitchPortMembership = 2
+ // SWITCH_PORT_MEMBERSHIP_EXTERNAL is port that is connected to a host that is not registered at the api.
+ // This value allows connecting an external system to a network managed by us.
+ SwitchPortMembership_SWITCH_PORT_MEMBERSHIP_EXTERNAL SwitchPortMembership = 3
+)
+
+// Enum value maps for SwitchPortMembership.
+var (
+ SwitchPortMembership_name = map[int32]string{
+ 0: "SWITCH_PORT_MEMBERSHIP_UNSPECIFIED",
+ 1: "SWITCH_PORT_MEMBERSHIP_UNMANAGED",
+ 2: "SWITCH_PORT_MEMBERSHIP_INTERNAL",
+ 3: "SWITCH_PORT_MEMBERSHIP_EXTERNAL",
+ }
+ SwitchPortMembership_value = map[string]int32{
+ "SWITCH_PORT_MEMBERSHIP_UNSPECIFIED": 0,
+ "SWITCH_PORT_MEMBERSHIP_UNMANAGED": 1,
+ "SWITCH_PORT_MEMBERSHIP_INTERNAL": 2,
+ "SWITCH_PORT_MEMBERSHIP_EXTERNAL": 3,
+ }
+)
+
+func (x SwitchPortMembership) Enum() *SwitchPortMembership {
+ p := new(SwitchPortMembership)
+ *p = x
+ return p
+}
+
+func (x SwitchPortMembership) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SwitchPortMembership) Descriptor() protoreflect.EnumDescriptor {
+ return file_metalstack_api_v2_switch_proto_enumTypes[4].Descriptor()
+}
+
+func (SwitchPortMembership) Type() protoreflect.EnumType {
+ return &file_metalstack_api_v2_switch_proto_enumTypes[4]
+}
+
+func (x SwitchPortMembership) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SwitchPortMembership.Descriptor instead.
+func (SwitchPortMembership) EnumDescriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_switch_proto_rawDescGZIP(), []int{4}
+}
+
// Switch represents a network switch.
type Switch struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -510,7 +568,9 @@ type SwitchNic struct {
// BGPFilter optionally configured on a port.
BgpFilter *BGPFilter `protobuf:"bytes,6,opt,name=bgp_filter,json=bgpFilter,proto3,oneof" json:"bgp_filter,omitempty"`
// BGPPortState represents the current BGP status of the port.
- BgpPortState *SwitchBGPPortState `protobuf:"bytes,7,opt,name=bgp_port_state,json=bgpPortState,proto3,oneof" json:"bgp_port_state,omitempty"`
+ BgpPortState *SwitchBGPPortState `protobuf:"bytes,7,opt,name=bgp_port_state,json=bgpPortState,proto3,oneof" json:"bgp_port_state,omitempty"`
+ // Membership indicates whether the port is connected to an internal or external host.
+ Membership SwitchPortMembership `protobuf:"varint,8,opt,name=membership,proto3,enum=metalstack.api.v2.SwitchPortMembership" json:"membership,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -595,6 +655,13 @@ func (x *SwitchNic) GetBgpPortState() *SwitchBGPPortState {
return nil
}
+func (x *SwitchNic) GetMembership() SwitchPortMembership {
+ if x != nil {
+ return x.Membership
+ }
+ return SwitchPortMembership_SWITCH_PORT_MEMBERSHIP_UNSPECIFIED
+}
+
// BGPFilter can be used to restrict BGP based on CIDRs and VNIs.
type BGPFilter struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -654,7 +721,7 @@ func (x *BGPFilter) GetVnis() []string {
type SwitchBGPPortState struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Neighbor of this port.
- Neighbor string `protobuf:"bytes,1,opt,name=neighbor,proto3" json:"neighbor,omitempty"`
+ Neighbor *string `protobuf:"bytes,1,opt,name=neighbor,proto3,oneof" json:"neighbor,omitempty"`
// PeerGroup of this port.
PeerGroup string `protobuf:"bytes,2,opt,name=peer_group,json=peerGroup,proto3" json:"peer_group,omitempty"`
// VrfName of the VRF this port is bound to.
@@ -702,8 +769,8 @@ func (*SwitchBGPPortState) Descriptor() ([]byte, []int) {
}
func (x *SwitchBGPPortState) GetNeighbor() string {
- if x != nil {
- return x.Neighbor
+ if x != nil && x.Neighbor != nil {
+ return *x.Neighbor
}
return ""
}
@@ -1207,6 +1274,70 @@ func (x *SwitchNicWithMachine) GetFru() *MachineFRU {
return nil
}
+// StaticPortConfig is a config that is statically applied to a port.
+type StaticPortConfig struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Status is the administrative status of the port.
+ Status SwitchPortStatus `protobuf:"varint,1,opt,name=status,proto3,enum=metalstack.api.v2.SwitchPortStatus" json:"status,omitempty"`
+ // Membership specifies whether this port is connected to a registered machine or to an external host or if it is unmanaged.
+ Membership SwitchPortMembership `protobuf:"varint,2,opt,name=membership,proto3,enum=metalstack.api.v2.SwitchPortMembership" json:"membership,omitempty"`
+ // Network the port is a member of.
+ Network *string `protobuf:"bytes,3,opt,name=network,proto3,oneof" json:"network,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *StaticPortConfig) Reset() {
+ *x = StaticPortConfig{}
+ mi := &file_metalstack_api_v2_switch_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *StaticPortConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StaticPortConfig) ProtoMessage() {}
+
+func (x *StaticPortConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_metalstack_api_v2_switch_proto_msgTypes[12]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use StaticPortConfig.ProtoReflect.Descriptor instead.
+func (*StaticPortConfig) Descriptor() ([]byte, []int) {
+ return file_metalstack_api_v2_switch_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *StaticPortConfig) GetStatus() SwitchPortStatus {
+ if x != nil {
+ return x.Status
+ }
+ return SwitchPortStatus_SWITCH_PORT_STATUS_UNSPECIFIED
+}
+
+func (x *StaticPortConfig) GetMembership() SwitchPortMembership {
+ if x != nil {
+ return x.Membership
+ }
+ return SwitchPortMembership_SWITCH_PORT_MEMBERSHIP_UNSPECIFIED
+}
+
+func (x *StaticPortConfig) GetNetwork() string {
+ if x != nil && x.Network != nil {
+ return *x.Network
+ }
+ return ""
+}
+
var File_metalstack_api_v2_switch_proto protoreflect.FileDescriptor
const file_metalstack_api_v2_switch_proto_rawDesc = "" +
@@ -1239,7 +1370,7 @@ const file_metalstack_api_v2_switch_proto_rawDesc = "" +
"\bSwitchOS\x12C\n" +
"\x06vendor\x18\x01 \x01(\x0e2!.metalstack.api.v2.SwitchOSVendorB\b\xbaH\x05\x82\x01\x02\x10\x01R\x06vendor\x12%\n" +
"\aversion\x18\x02 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\aversion\x129\n" +
- "\x12metal_core_version\x18\x03 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x10metalCoreVersion\"\xa0\x03\n" +
+ "\x12metal_core_version\x18\x03 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x10metalCoreVersion\"\xe9\x03\n" +
"\tSwitchNic\x12\x1f\n" +
"\x04name\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12+\n" +
"\n" +
@@ -1250,7 +1381,10 @@ const file_metalstack_api_v2_switch_proto_rawDesc = "" +
"\x05state\x18\x05 \x01(\v2\x1b.metalstack.api.v2.NicStateH\x02R\x05state\x88\x01\x01\x12@\n" +
"\n" +
"bgp_filter\x18\x06 \x01(\v2\x1c.metalstack.api.v2.BGPFilterH\x03R\tbgpFilter\x88\x01\x01\x12P\n" +
- "\x0ebgp_port_state\x18\a \x01(\v2%.metalstack.api.v2.SwitchBGPPortStateH\x04R\fbgpPortState\x88\x01\x01B\x06\n" +
+ "\x0ebgp_port_state\x18\a \x01(\v2%.metalstack.api.v2.SwitchBGPPortStateH\x04R\fbgpPortState\x88\x01\x01\x12G\n" +
+ "\n" +
+ "membership\x18\b \x01(\x0e2'.metalstack.api.v2.SwitchPortMembershipR\n" +
+ "membershipB\x06\n" +
"\x04_macB\x06\n" +
"\x04_vrfB\b\n" +
"\x06_stateB\r\n" +
@@ -1258,16 +1392,17 @@ const file_metalstack_api_v2_switch_proto_rawDesc = "" +
"\x0f_bgp_port_state\"T\n" +
"\tBGPFilter\x12\"\n" +
"\x05cidrs\x18\x01 \x03(\tB\f\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x05cidrs\x12#\n" +
- "\x04vnis\x18\x02 \x03(\tB\x0f\xbaH\f\x92\x01\t\"\ar\x05\x10\x02\x18\x80\x01R\x04vnis\"\x92\x03\n" +
- "\x12SwitchBGPPortState\x12'\n" +
- "\bneighbor\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\bneighbor\x12*\n" +
+ "\x04vnis\x18\x02 \x03(\tB\x0f\xbaH\f\x92\x01\t\"\ar\x05\x10\x02\x18\x80\x01R\x04vnis\"\xa4\x03\n" +
+ "\x12SwitchBGPPortState\x12,\n" +
+ "\bneighbor\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\bneighbor\x88\x01\x01\x12*\n" +
"\n" +
"peer_group\x18\x02 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\tpeerGroup\x12&\n" +
"\bvrf_name\x18\x03 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\avrfName\x12B\n" +
"\tbgp_state\x18\x04 \x01(\x0e2\x1b.metalstack.api.v2.BGPStateB\b\xbaH\x05\x82\x01\x02\x10\x01R\bbgpState\x12S\n" +
"\x18bgp_timer_up_established\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\x15bgpTimerUpEstablished\x12.\n" +
"\x13sent_prefix_counter\x18\x06 \x01(\x04R\x11sentPrefixCounter\x126\n" +
- "\x17accepted_prefix_counter\x18\a \x01(\x04R\x15acceptedPrefixCounter\"\xab\x01\n" +
+ "\x17accepted_prefix_counter\x18\a \x01(\x04R\x15acceptedPrefixCounterB\v\n" +
+ "\t_neighbor\"\xab\x01\n" +
"\bNicState\x12L\n" +
"\adesired\x18\x01 \x01(\x0e2#.metalstack.api.v2.SwitchPortStatusB\b\xbaH\x05\x82\x01\x02\x10\x01H\x00R\adesired\x88\x01\x01\x12E\n" +
"\x06actual\x18\x02 \x01(\x0e2#.metalstack.api.v2.SwitchPortStatusB\b\xbaH\x05\x82\x01\x02\x10\x01R\x06actualB\n" +
@@ -1312,7 +1447,15 @@ const file_metalstack_api_v2_switch_proto_rawDesc = "" +
"\x14SwitchNicWithMachine\x12.\n" +
"\x03nic\x18\x01 \x01(\v2\x1c.metalstack.api.v2.SwitchNicR\x03nic\x124\n" +
"\amachine\x18\x02 \x01(\v2\x1a.metalstack.api.v2.MachineR\amachine\x12/\n" +
- "\x03fru\x18\x03 \x01(\v2\x1d.metalstack.api.v2.MachineFRUR\x03fru*\x89\x02\n" +
+ "\x03fru\x18\x03 \x01(\v2\x1d.metalstack.api.v2.MachineFRUR\x03fru\"\xcd\x01\n" +
+ "\x10StaticPortConfig\x12E\n" +
+ "\x06status\x18\x01 \x01(\x0e2#.metalstack.api.v2.SwitchPortStatusB\b\xbaH\x05\x82\x01\x02\x10\x01R\x06status\x12G\n" +
+ "\n" +
+ "membership\x18\x02 \x01(\x0e2'.metalstack.api.v2.SwitchPortMembershipR\n" +
+ "membership\x12\x1d\n" +
+ "\anetwork\x18\x03 \x01(\tH\x00R\anetwork\x88\x01\x01B\n" +
+ "\n" +
+ "\b_network*\x89\x02\n" +
"\bBGPState\x12\x19\n" +
"\x15BGP_STATE_UNSPECIFIED\x10\x00\x12\x1c\n" +
"\x0eBGP_STATE_IDLE\x10\x01\x1a\b\x82\xb2\x19\x04Idle\x12\"\n" +
@@ -1334,7 +1477,12 @@ const file_metalstack_api_v2_switch_proto_rawDesc = "" +
"\x1eSWITCH_PORT_STATUS_UNSPECIFIED\x10\x00\x12!\n" +
"\x15SWITCH_PORT_STATUS_UP\x10\x01\x1a\x06\x82\xb2\x19\x02up\x12%\n" +
"\x17SWITCH_PORT_STATUS_DOWN\x10\x02\x1a\b\x82\xb2\x19\x04down\x12+\n" +
- "\x1aSWITCH_PORT_STATUS_UNKNOWN\x10\x03\x1a\v\x82\xb2\x19\aunknownB\xc1\x01\n" +
+ "\x1aSWITCH_PORT_STATUS_UNKNOWN\x10\x03\x1a\v\x82\xb2\x19\aunknown*\xd9\x01\n" +
+ "\x14SwitchPortMembership\x12&\n" +
+ "\"SWITCH_PORT_MEMBERSHIP_UNSPECIFIED\x10\x00\x123\n" +
+ " SWITCH_PORT_MEMBERSHIP_UNMANAGED\x10\x01\x1a\r\x82\xb2\x19\tunmanaged\x121\n" +
+ "\x1fSWITCH_PORT_MEMBERSHIP_INTERNAL\x10\x02\x1a\f\x82\xb2\x19\binternal\x121\n" +
+ "\x1fSWITCH_PORT_MEMBERSHIP_EXTERNAL\x10\x03\x1a\f\x82\xb2\x19\bexternalB\xc1\x01\n" +
"\x15com.metalstack.api.v2B\vSwitchProtoP\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"
var (
@@ -1349,61 +1497,66 @@ func file_metalstack_api_v2_switch_proto_rawDescGZIP() []byte {
return file_metalstack_api_v2_switch_proto_rawDescData
}
-var file_metalstack_api_v2_switch_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
-var file_metalstack_api_v2_switch_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
+var file_metalstack_api_v2_switch_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
+var file_metalstack_api_v2_switch_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_metalstack_api_v2_switch_proto_goTypes = []any{
(BGPState)(0), // 0: metalstack.api.v2.BGPState
(SwitchReplaceMode)(0), // 1: metalstack.api.v2.SwitchReplaceMode
(SwitchOSVendor)(0), // 2: metalstack.api.v2.SwitchOSVendor
(SwitchPortStatus)(0), // 3: metalstack.api.v2.SwitchPortStatus
- (*Switch)(nil), // 4: metalstack.api.v2.Switch
- (*SwitchOS)(nil), // 5: metalstack.api.v2.SwitchOS
- (*SwitchNic)(nil), // 6: metalstack.api.v2.SwitchNic
- (*BGPFilter)(nil), // 7: metalstack.api.v2.BGPFilter
- (*SwitchBGPPortState)(nil), // 8: metalstack.api.v2.SwitchBGPPortState
- (*NicState)(nil), // 9: metalstack.api.v2.NicState
- (*MachineConnection)(nil), // 10: metalstack.api.v2.MachineConnection
- (*SwitchQuery)(nil), // 11: metalstack.api.v2.SwitchQuery
- (*SwitchOSQuery)(nil), // 12: metalstack.api.v2.SwitchOSQuery
- (*SwitchSync)(nil), // 13: metalstack.api.v2.SwitchSync
- (*SwitchWithMachines)(nil), // 14: metalstack.api.v2.SwitchWithMachines
- (*SwitchNicWithMachine)(nil), // 15: metalstack.api.v2.SwitchNicWithMachine
- (*Meta)(nil), // 16: metalstack.api.v2.Meta
- (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp
- (*durationpb.Duration)(nil), // 18: google.protobuf.Duration
- (*Machine)(nil), // 19: metalstack.api.v2.Machine
- (*MachineFRU)(nil), // 20: metalstack.api.v2.MachineFRU
+ (SwitchPortMembership)(0), // 4: metalstack.api.v2.SwitchPortMembership
+ (*Switch)(nil), // 5: metalstack.api.v2.Switch
+ (*SwitchOS)(nil), // 6: metalstack.api.v2.SwitchOS
+ (*SwitchNic)(nil), // 7: metalstack.api.v2.SwitchNic
+ (*BGPFilter)(nil), // 8: metalstack.api.v2.BGPFilter
+ (*SwitchBGPPortState)(nil), // 9: metalstack.api.v2.SwitchBGPPortState
+ (*NicState)(nil), // 10: metalstack.api.v2.NicState
+ (*MachineConnection)(nil), // 11: metalstack.api.v2.MachineConnection
+ (*SwitchQuery)(nil), // 12: metalstack.api.v2.SwitchQuery
+ (*SwitchOSQuery)(nil), // 13: metalstack.api.v2.SwitchOSQuery
+ (*SwitchSync)(nil), // 14: metalstack.api.v2.SwitchSync
+ (*SwitchWithMachines)(nil), // 15: metalstack.api.v2.SwitchWithMachines
+ (*SwitchNicWithMachine)(nil), // 16: metalstack.api.v2.SwitchNicWithMachine
+ (*StaticPortConfig)(nil), // 17: metalstack.api.v2.StaticPortConfig
+ (*Meta)(nil), // 18: metalstack.api.v2.Meta
+ (*timestamppb.Timestamp)(nil), // 19: google.protobuf.Timestamp
+ (*durationpb.Duration)(nil), // 20: google.protobuf.Duration
+ (*Machine)(nil), // 21: metalstack.api.v2.Machine
+ (*MachineFRU)(nil), // 22: metalstack.api.v2.MachineFRU
}
var file_metalstack_api_v2_switch_proto_depIdxs = []int32{
- 16, // 0: metalstack.api.v2.Switch.meta:type_name -> metalstack.api.v2.Meta
+ 18, // 0: metalstack.api.v2.Switch.meta:type_name -> metalstack.api.v2.Meta
1, // 1: metalstack.api.v2.Switch.replace_mode:type_name -> metalstack.api.v2.SwitchReplaceMode
- 6, // 2: metalstack.api.v2.Switch.nics:type_name -> metalstack.api.v2.SwitchNic
- 5, // 3: metalstack.api.v2.Switch.os:type_name -> metalstack.api.v2.SwitchOS
- 10, // 4: metalstack.api.v2.Switch.machine_connections:type_name -> metalstack.api.v2.MachineConnection
- 13, // 5: metalstack.api.v2.Switch.last_sync:type_name -> metalstack.api.v2.SwitchSync
- 13, // 6: metalstack.api.v2.Switch.last_sync_error:type_name -> metalstack.api.v2.SwitchSync
+ 7, // 2: metalstack.api.v2.Switch.nics:type_name -> metalstack.api.v2.SwitchNic
+ 6, // 3: metalstack.api.v2.Switch.os:type_name -> metalstack.api.v2.SwitchOS
+ 11, // 4: metalstack.api.v2.Switch.machine_connections:type_name -> metalstack.api.v2.MachineConnection
+ 14, // 5: metalstack.api.v2.Switch.last_sync:type_name -> metalstack.api.v2.SwitchSync
+ 14, // 6: metalstack.api.v2.Switch.last_sync_error:type_name -> metalstack.api.v2.SwitchSync
2, // 7: metalstack.api.v2.SwitchOS.vendor:type_name -> metalstack.api.v2.SwitchOSVendor
- 9, // 8: metalstack.api.v2.SwitchNic.state:type_name -> metalstack.api.v2.NicState
- 7, // 9: metalstack.api.v2.SwitchNic.bgp_filter:type_name -> metalstack.api.v2.BGPFilter
- 8, // 10: metalstack.api.v2.SwitchNic.bgp_port_state:type_name -> metalstack.api.v2.SwitchBGPPortState
- 0, // 11: metalstack.api.v2.SwitchBGPPortState.bgp_state:type_name -> metalstack.api.v2.BGPState
- 17, // 12: metalstack.api.v2.SwitchBGPPortState.bgp_timer_up_established:type_name -> google.protobuf.Timestamp
- 3, // 13: metalstack.api.v2.NicState.desired:type_name -> metalstack.api.v2.SwitchPortStatus
- 3, // 14: metalstack.api.v2.NicState.actual:type_name -> metalstack.api.v2.SwitchPortStatus
- 6, // 15: metalstack.api.v2.MachineConnection.nic:type_name -> metalstack.api.v2.SwitchNic
- 12, // 16: metalstack.api.v2.SwitchQuery.os:type_name -> metalstack.api.v2.SwitchOSQuery
- 2, // 17: metalstack.api.v2.SwitchOSQuery.vendor:type_name -> metalstack.api.v2.SwitchOSVendor
- 17, // 18: metalstack.api.v2.SwitchSync.time:type_name -> google.protobuf.Timestamp
- 18, // 19: metalstack.api.v2.SwitchSync.duration:type_name -> google.protobuf.Duration
- 15, // 20: metalstack.api.v2.SwitchWithMachines.connections:type_name -> metalstack.api.v2.SwitchNicWithMachine
- 6, // 21: metalstack.api.v2.SwitchNicWithMachine.nic:type_name -> metalstack.api.v2.SwitchNic
- 19, // 22: metalstack.api.v2.SwitchNicWithMachine.machine:type_name -> metalstack.api.v2.Machine
- 20, // 23: metalstack.api.v2.SwitchNicWithMachine.fru:type_name -> metalstack.api.v2.MachineFRU
- 24, // [24:24] is the sub-list for method output_type
- 24, // [24:24] 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
+ 10, // 8: metalstack.api.v2.SwitchNic.state:type_name -> metalstack.api.v2.NicState
+ 8, // 9: metalstack.api.v2.SwitchNic.bgp_filter:type_name -> metalstack.api.v2.BGPFilter
+ 9, // 10: metalstack.api.v2.SwitchNic.bgp_port_state:type_name -> metalstack.api.v2.SwitchBGPPortState
+ 4, // 11: metalstack.api.v2.SwitchNic.membership:type_name -> metalstack.api.v2.SwitchPortMembership
+ 0, // 12: metalstack.api.v2.SwitchBGPPortState.bgp_state:type_name -> metalstack.api.v2.BGPState
+ 19, // 13: metalstack.api.v2.SwitchBGPPortState.bgp_timer_up_established:type_name -> google.protobuf.Timestamp
+ 3, // 14: metalstack.api.v2.NicState.desired:type_name -> metalstack.api.v2.SwitchPortStatus
+ 3, // 15: metalstack.api.v2.NicState.actual:type_name -> metalstack.api.v2.SwitchPortStatus
+ 7, // 16: metalstack.api.v2.MachineConnection.nic:type_name -> metalstack.api.v2.SwitchNic
+ 13, // 17: metalstack.api.v2.SwitchQuery.os:type_name -> metalstack.api.v2.SwitchOSQuery
+ 2, // 18: metalstack.api.v2.SwitchOSQuery.vendor:type_name -> metalstack.api.v2.SwitchOSVendor
+ 19, // 19: metalstack.api.v2.SwitchSync.time:type_name -> google.protobuf.Timestamp
+ 20, // 20: metalstack.api.v2.SwitchSync.duration:type_name -> google.protobuf.Duration
+ 16, // 21: metalstack.api.v2.SwitchWithMachines.connections:type_name -> metalstack.api.v2.SwitchNicWithMachine
+ 7, // 22: metalstack.api.v2.SwitchNicWithMachine.nic:type_name -> metalstack.api.v2.SwitchNic
+ 21, // 23: metalstack.api.v2.SwitchNicWithMachine.machine:type_name -> metalstack.api.v2.Machine
+ 22, // 24: metalstack.api.v2.SwitchNicWithMachine.fru:type_name -> metalstack.api.v2.MachineFRU
+ 3, // 25: metalstack.api.v2.StaticPortConfig.status:type_name -> metalstack.api.v2.SwitchPortStatus
+ 4, // 26: metalstack.api.v2.StaticPortConfig.membership:type_name -> metalstack.api.v2.SwitchPortMembership
+ 27, // [27:27] is the sub-list for method output_type
+ 27, // [27:27] is the sub-list for method input_type
+ 27, // [27:27] is the sub-list for extension type_name
+ 27, // [27:27] is the sub-list for extension extendee
+ 0, // [0:27] is the sub-list for field type_name
}
func init() { file_metalstack_api_v2_switch_proto_init() }
@@ -1416,17 +1569,19 @@ func file_metalstack_api_v2_switch_proto_init() {
file_metalstack_api_v2_predefined_rules_proto_init()
file_metalstack_api_v2_switch_proto_msgTypes[0].OneofWrappers = []any{}
file_metalstack_api_v2_switch_proto_msgTypes[2].OneofWrappers = []any{}
+ file_metalstack_api_v2_switch_proto_msgTypes[4].OneofWrappers = []any{}
file_metalstack_api_v2_switch_proto_msgTypes[5].OneofWrappers = []any{}
file_metalstack_api_v2_switch_proto_msgTypes[7].OneofWrappers = []any{}
file_metalstack_api_v2_switch_proto_msgTypes[8].OneofWrappers = []any{}
file_metalstack_api_v2_switch_proto_msgTypes[9].OneofWrappers = []any{}
+ file_metalstack_api_v2_switch_proto_msgTypes[12].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_switch_proto_rawDesc), len(file_metalstack_api_v2_switch_proto_rawDesc)),
- NumEnums: 4,
- NumMessages: 12,
+ NumEnums: 5,
+ NumMessages: 13,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/go/permissions/servicepermissions.go b/go/permissions/servicepermissions.go
index d503829c..b81fca5a 100755
--- a/go/permissions/servicepermissions.go
+++ b/go/permissions/servicepermissions.go
@@ -55,106 +55,102 @@ 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/AddExternalMembers": {},
- "/metalstack.admin.v2.NetworkService/Create": {},
- "/metalstack.admin.v2.NetworkService/Delete": {},
- "/metalstack.admin.v2.NetworkService/Get": {},
- "/metalstack.admin.v2.NetworkService/List": {},
- "/metalstack.admin.v2.NetworkService/ListExternalMembers": {},
- "/metalstack.admin.v2.NetworkService/RemoveExternalMembers": {},
- "/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/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": {},
},
apiv2.AdminRole_ADMIN_ROLE_VIEWER: map[string]struct{}{
- "/metalstack.admin.v2.AuditService/Get": {},
- "/metalstack.admin.v2.AuditService/List": {},
- "/metalstack.admin.v2.ComponentService/Get": {},
- "/metalstack.admin.v2.ComponentService/List": {},
- "/metalstack.admin.v2.FilesystemService/Match": {},
- "/metalstack.admin.v2.IPService/List": {},
- "/metalstack.admin.v2.ImageService/Usage": {},
- "/metalstack.admin.v2.MachineService/ConsolePassword": {},
- "/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.NetworkService/Get": {},
- "/metalstack.admin.v2.NetworkService/List": {},
- "/metalstack.admin.v2.NetworkService/ListExternalMembers": {},
- "/metalstack.admin.v2.PartitionService/Capacity": {},
- "/metalstack.admin.v2.ProjectService/List": {},
- "/metalstack.admin.v2.SizeImageConstraintService/Get": {},
- "/metalstack.admin.v2.SizeImageConstraintService/List": {},
- "/metalstack.admin.v2.SizeReservationService/List": {},
- "/metalstack.admin.v2.SwitchService/ConnectedMachines": {},
- "/metalstack.admin.v2.SwitchService/Get": {},
- "/metalstack.admin.v2.SwitchService/List": {},
- "/metalstack.admin.v2.TaskService/Get": {},
- "/metalstack.admin.v2.TaskService/List": {},
- "/metalstack.admin.v2.TaskService/Queues": {},
- "/metalstack.admin.v2.TenantService/List": {},
- "/metalstack.admin.v2.TokenService/List": {},
- "/metalstack.admin.v2.VPNService/ListNodes": {},
+ "/metalstack.admin.v2.AuditService/Get": {},
+ "/metalstack.admin.v2.AuditService/List": {},
+ "/metalstack.admin.v2.ComponentService/Get": {},
+ "/metalstack.admin.v2.ComponentService/List": {},
+ "/metalstack.admin.v2.FilesystemService/Match": {},
+ "/metalstack.admin.v2.IPService/List": {},
+ "/metalstack.admin.v2.ImageService/Usage": {},
+ "/metalstack.admin.v2.MachineService/ConsolePassword": {},
+ "/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.NetworkService/Get": {},
+ "/metalstack.admin.v2.NetworkService/List": {},
+ "/metalstack.admin.v2.PartitionService/Capacity": {},
+ "/metalstack.admin.v2.ProjectService/List": {},
+ "/metalstack.admin.v2.SizeImageConstraintService/Get": {},
+ "/metalstack.admin.v2.SizeImageConstraintService/List": {},
+ "/metalstack.admin.v2.SizeReservationService/List": {},
+ "/metalstack.admin.v2.SwitchService/ConnectedMachines": {},
+ "/metalstack.admin.v2.SwitchService/Get": {},
+ "/metalstack.admin.v2.SwitchService/List": {},
+ "/metalstack.admin.v2.TaskService/Get": {},
+ "/metalstack.admin.v2.TaskService/List": {},
+ "/metalstack.admin.v2.TaskService/Queues": {},
+ "/metalstack.admin.v2.TenantService/List": {},
+ "/metalstack.admin.v2.TokenService/List": {},
+ "/metalstack.admin.v2.VPNService/ListNodes": {},
},
},
Infra: Infra{
@@ -309,13 +305,10 @@ func GetServicePermissions() *ServicePermissions {
"/metalstack.admin.v2.MachineService/List": {},
"/metalstack.admin.v2.MachineService/ListBMC": {},
"/metalstack.admin.v2.MachineService/SetState": {},
- "/metalstack.admin.v2.NetworkService/AddExternalMembers": {},
"/metalstack.admin.v2.NetworkService/Create": {},
"/metalstack.admin.v2.NetworkService/Delete": {},
"/metalstack.admin.v2.NetworkService/Get": {},
"/metalstack.admin.v2.NetworkService/List": {},
- "/metalstack.admin.v2.NetworkService/ListExternalMembers": {},
- "/metalstack.admin.v2.NetworkService/RemoveExternalMembers": {},
"/metalstack.admin.v2.NetworkService/Update": {},
"/metalstack.admin.v2.PartitionService/Capacity": {},
"/metalstack.admin.v2.PartitionService/Create": {},
@@ -476,74 +469,71 @@ 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/AddExternalMembers": 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/ListExternalMembers": true,
- "/metalstack.admin.v2.NetworkService/RemoveExternalMembers": 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/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,
},
Infra: map[string]bool{
"/metalstack.infra.v2.BMCService/BMCCommandDone": true,
@@ -612,159 +602,156 @@ 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/AddExternalMembers": 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/ListExternalMembers": false,
- "/metalstack.admin.v2.NetworkService/RemoveExternalMembers": 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,
+ "/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,
},
}
}
diff --git a/js/metalstack/admin/v2/network_pb.d.ts b/js/metalstack/admin/v2/network_pb.d.ts
index 09fdeea1..39031fbf 100644
--- a/js/metalstack/admin/v2/network_pb.d.ts
+++ b/js/metalstack/admin/v2/network_pb.d.ts
@@ -1,7 +1,6 @@
import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import type { Labels, UpdateLabels, UpdateMeta } from "../../api/v2/common_pb";
-import type { ChildPrefixLength, ExternalNetworkMember, ExternalNetworkMemberQuery, NATType, Network, NetworkAddressFamily, NetworkQuery, NetworkType } from "../../api/v2/network_pb";
-import type { Switch } from "../../api/v2/switch_pb";
+import type { ChildPrefixLength, NATType, Network, NetworkAddressFamily, NetworkQuery, NetworkType } from "../../api/v2/network_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/admin/v2/network.proto.
@@ -277,90 +276,6 @@ export type NetworkServiceListRequest = Message<"metalstack.admin.v2.NetworkServ
* Use `create(NetworkServiceListRequestSchema)` to create a new message.
*/
export declare const NetworkServiceListRequestSchema: GenMessage;
-/**
- * NetworkServiceListExternalMembersRequest is the request payload for listing external members of a network.
- *
- * @generated from message metalstack.admin.v2.NetworkServiceListExternalMembersRequest
- */
-export type NetworkServiceListExternalMembersRequest = Message<"metalstack.admin.v2.NetworkServiceListExternalMembersRequest"> & {
- /**
- * 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.NetworkServiceListExternalMembersRequest.
- * Use `create(NetworkServiceListExternalMembersRequestSchema)` to create a new message.
- */
-export declare const NetworkServiceListExternalMembersRequestSchema: GenMessage;
-/**
- * NetworkServiceAddExternalMemberRequest is the request payload for adding an external member to a network.
- *
- * @generated from message metalstack.admin.v2.NetworkServiceAddExternalMembersRequest
- */
-export type NetworkServiceAddExternalMembersRequest = Message<"metalstack.admin.v2.NetworkServiceAddExternalMembersRequest"> & {
- /**
- * Network to add the member to.
- *
- * @generated from field: string network = 1;
- */
- network: string;
- /**
- * Rack the members are connected to.
- *
- * @generated from field: string rack = 2;
- */
- rack: string;
- /**
- * Ports of the switches to add to the network.
- *
- * @generated from field: repeated string ports = 3;
- */
- ports: string[];
-};
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMembersRequest.
- * Use `create(NetworkServiceAddExternalMembersRequestSchema)` to create a new message.
- */
-export declare const NetworkServiceAddExternalMembersRequestSchema: GenMessage;
-/**
- * NetworkServiceRemoveExternalMemberRequest is the request payload for removing an external member from a network.
- *
- * @generated from message metalstack.admin.v2.NetworkServiceRemoveExternalMembersRequest
- */
-export type NetworkServiceRemoveExternalMembersRequest = Message<"metalstack.admin.v2.NetworkServiceRemoveExternalMembersRequest"> & {
- /**
- * Network to remove the member from.
- *
- * @generated from field: string network = 1;
- */
- network: string;
- /**
- * Rack the members are connected to.
- *
- * @generated from field: string rack = 2;
- */
- rack: string;
- /**
- * Ports of the switches to remove from the network.
- *
- * @generated from field: repeated string ports = 3;
- */
- ports: string[];
-};
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMembersRequest.
- * Use `create(NetworkServiceRemoveExternalMembersRequestSchema)` to create a new message.
- */
-export declare const NetworkServiceRemoveExternalMembersRequestSchema: GenMessage;
/**
* NetworkServiceCreateResponse is the response payload for creating a network.
*
@@ -433,78 +348,6 @@ export type NetworkServiceListResponse = Message<"metalstack.admin.v2.NetworkSer
* Use `create(NetworkServiceListResponseSchema)` to create a new message.
*/
export declare const NetworkServiceListResponseSchema: GenMessage;
-/**
- * NetworkServiceListExternalMembersResponse is the response payload for listing external members of a network.
- *
- * @generated from message metalstack.admin.v2.NetworkServiceListExternalMembersResponse
- */
-export type NetworkServiceListExternalMembersResponse = Message<"metalstack.admin.v2.NetworkServiceListExternalMembersResponse"> & {
- /**
- * Network whose members are queried.
- *
- * @generated from field: string network = 1;
- */
- network: string;
- /**
- * Members are the queried external members of the network.
- *
- * @generated from field: repeated metalstack.api.v2.ExternalNetworkMember members = 2;
- */
- members: ExternalNetworkMember[];
-};
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceListExternalMembersResponse.
- * Use `create(NetworkServiceListExternalMembersResponseSchema)` to create a new message.
- */
-export declare const NetworkServiceListExternalMembersResponseSchema: GenMessage;
-/**
- * NetworkServiceAddExternalMemberResponse is the response payload for adding an external member to a network.
- *
- * @generated from message metalstack.admin.v2.NetworkServiceAddExternalMembersResponse
- */
-export type NetworkServiceAddExternalMembersResponse = Message<"metalstack.admin.v2.NetworkServiceAddExternalMembersResponse"> & {
- /**
- * Network the members were added to.
- *
- * @generated from field: metalstack.api.v2.Network network = 1;
- */
- network?: Network | undefined;
- /**
- * Switch contains the updated switches.
- *
- * @generated from field: repeated metalstack.api.v2.Switch switches = 2;
- */
- switches: Switch[];
-};
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMembersResponse.
- * Use `create(NetworkServiceAddExternalMembersResponseSchema)` to create a new message.
- */
-export declare const NetworkServiceAddExternalMembersResponseSchema: GenMessage;
-/**
- * NetworkServiceRemoveExternalMemberResponse is the response payload for removing an external member from a network.
- *
- * @generated from message metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse
- */
-export type NetworkServiceRemoveExternalMembersResponse = Message<"metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse"> & {
- /**
- * Network the members were removed from.
- *
- * @generated from field: metalstack.api.v2.Network network = 1;
- */
- network?: Network | undefined;
- /**
- * Switch contains the updated switches.
- *
- * @generated from field: repeated metalstack.api.v2.Switch switches = 2;
- */
- switches: Switch[];
-};
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse.
- * Use `create(NetworkServiceRemoveExternalMembersResponseSchema)` to create a new message.
- */
-export declare const NetworkServiceRemoveExternalMembersResponseSchema: GenMessage;
/**
* NetworkService provides network management operations.
*
@@ -561,34 +404,4 @@ export declare const NetworkService: GenService<{
input: typeof NetworkServiceListRequestSchema;
output: typeof NetworkServiceListResponseSchema;
};
- /**
- * Lists external members of a network.
- *
- * @generated from rpc metalstack.admin.v2.NetworkService.ListExternalMembers
- */
- listExternalMembers: {
- methodKind: "unary";
- input: typeof NetworkServiceListExternalMembersRequestSchema;
- output: typeof NetworkServiceListExternalMembersResponseSchema;
- };
- /**
- * Adds an external member to a network.
- *
- * @generated from rpc metalstack.admin.v2.NetworkService.AddExternalMembers
- */
- addExternalMembers: {
- methodKind: "unary";
- input: typeof NetworkServiceAddExternalMembersRequestSchema;
- output: typeof NetworkServiceAddExternalMembersResponseSchema;
- };
- /**
- * Removes an external member from a network.
- *
- * @generated from rpc metalstack.admin.v2.NetworkService.RemoveExternalMembers
- */
- removeExternalMembers: {
- methodKind: "unary";
- input: typeof NetworkServiceRemoveExternalMembersRequestSchema;
- output: typeof NetworkServiceRemoveExternalMembersResponseSchema;
- };
}>;
diff --git a/js/metalstack/admin/v2/network_pb.js b/js/metalstack/admin/v2/network_pb.js
index c23310bd..e0dad1f5 100644
--- a/js/metalstack/admin/v2/network_pb.js
+++ b/js/metalstack/admin/v2/network_pb.js
@@ -6,11 +6,10 @@ 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("CiFtZXRhbHN0YWNrL2FkbWluL3YyL25ldHdvcmsucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMwoYTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECASJIChlOZXR3b3JrU2VydmljZUdldFJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrItAHChtOZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIjCglwYXJ0aXRpb24YBCABKAlCC7pICHIG0LOusQIBSAOIAQESHgoHcHJvamVjdBgFIAEoCUIIukgFcgOwAQFIBIgBARI2CgR0eXBlGAYgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1R5cGVCCLpIBYIBAhABEi4KBmxhYmVscxgHIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjsKCG5hdF90eXBlGAwgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAFIBogBARIQCgN2cmYYDSABKA1IB4gBARIoCg5wYXJlbnRfbmV0d29yaxgOIAEoCUILukgIcgbAs66xAgFICIgBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGA8gAygJQgy6SAmSAQa4pLOxAgESOQoGbGVuZ3RoGBAgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhICYgBARJOCg5hZGRyZXNzX2ZhbWlseRgRIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgKiAEBQgUKA19pZEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX3BhcnRpdGlvbkIKCghfcHJvamVjdEIJCgdfbGFiZWxzQgsKCV9uYXRfdHlwZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSLEBQobTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gCiAEBEh4KCHByZWZpeGVzGAYgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYByADKAlCDLpICZIBBriks7ECARJOChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aEgDiAEBEkoKF21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoGAkgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARI7CghuYXRfdHlwZRgKIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAWIAQESMgocYWRkaXRpb25hbF9hbm5vdW5jYWJsZV9jaWRycxgLIAMoCUIMukgJkgEGuKSzsQIBEg0KBWZvcmNlGAwgASgIQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzQh4KHF9kZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGhCGgoYX21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoQgsKCV9uYXRfdHlwZSI2ChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBIksKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSLgoFcXVlcnkYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkihgEKKE5ldHdvcmtTZXJ2aWNlTGlzdEV4dGVybmFsTWVtYmVyc1JlcXVlc3QSHAoHbmV0d29yaxgBIAEoCUILukgIcgbAs66xAgESPAoFcXVlcnkYAiABKAsyLS5tZXRhbHN0YWNrLmFwaS52Mi5FeHRlcm5hbE5ldHdvcmtNZW1iZXJRdWVyeSKCAQonTmV0d29ya1NlcnZpY2VBZGRFeHRlcm5hbE1lbWJlcnNSZXF1ZXN0EhwKB25ldHdvcmsYASABKAlCC7pICHIGwLOusQIBEhkKBHJhY2sYAiABKAlCC7pICHIGwLOusQIBEh4KBXBvcnRzGAMgAygJQg+6SAySAQnQpLOxAgEQgBAihQEKKk5ldHdvcmtTZXJ2aWNlUmVtb3ZlRXh0ZXJuYWxNZW1iZXJzUmVxdWVzdBIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARIZCgRyYWNrGAIgASgJQgu6SAhyBsCzrrECARIeCgVwb3J0cxgDIAMoCUIPukgMkgEJ0KSzsQIBEIAQIksKHE5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsiSwocTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJLChxOZXR3b3JrU2VydmljZURlbGV0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIkoKGk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJ3CilOZXR3b3JrU2VydmljZUxpc3RFeHRlcm5hbE1lbWJlcnNSZXNwb25zZRIPCgduZXR3b3JrGAEgASgJEjkKB21lbWJlcnMYAiADKAsyKC5tZXRhbHN0YWNrLmFwaS52Mi5FeHRlcm5hbE5ldHdvcmtNZW1iZXIihAEKKE5ldHdvcmtTZXJ2aWNlQWRkRXh0ZXJuYWxNZW1iZXJzUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsSKwoIc3dpdGNoZXMYAiADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gihwEKK05ldHdvcmtTZXJ2aWNlUmVtb3ZlRXh0ZXJuYWxNZW1iZXJzUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsSKwoIc3dpdGNoZXMYAiADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gyzwgKDk5ldHdvcmtTZXJ2aWNlEnAKA0dldBItLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUdldFJlc3BvbnNlIgrS8xgCAQLg8xgCEngKBkNyZWF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESeAoGVXBkYXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJ4CgZEZWxldGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VEZWxldGVSZXNwb25zZSIJ0vMYAQHg8xgBEnMKBExpc3QSLi5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCEqABChNMaXN0RXh0ZXJuYWxNZW1iZXJzEj0ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RFeHRlcm5hbE1lbWJlcnNSZXF1ZXN0Gj4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RFeHRlcm5hbE1lbWJlcnNSZXNwb25zZSIK0vMYAgEC4PMYAhKcAQoSQWRkRXh0ZXJuYWxNZW1iZXJzEjwubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUFkZEV4dGVybmFsTWVtYmVyc1JlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQWRkRXh0ZXJuYWxNZW1iZXJzUmVzcG9uc2UiCdLzGAEB4PMYARKlAQoVUmVtb3ZlRXh0ZXJuYWxNZW1iZXJzEj8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVJlbW92ZUV4dGVybmFsTWVtYmVyc1JlcXVlc3QaQC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlUmVtb3ZlRXh0ZXJuYWxNZW1iZXJzUmVzcG9uc2UiCdLzGAEB4PMYAULQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDE5ldHdvcmtQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [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]);
+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]);
/**
* Describes the message metalstack.admin.v2.NetworkServiceGetRequest.
* Use `create(NetworkServiceGetRequestSchema)` to create a new message.
@@ -41,56 +40,26 @@ 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.NetworkServiceListExternalMembersRequest.
- * Use `create(NetworkServiceListExternalMembersRequestSchema)` to create a new message.
- */
-export const NetworkServiceListExternalMembersRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 6);
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMembersRequest.
- * Use `create(NetworkServiceAddExternalMembersRequestSchema)` to create a new message.
- */
-export const NetworkServiceAddExternalMembersRequestSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 7);
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMembersRequest.
- * Use `create(NetworkServiceRemoveExternalMembersRequestSchema)` to create a new message.
- */
-export const NetworkServiceRemoveExternalMembersRequestSchema = /*@__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, 9);
+export const NetworkServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 6);
/**
* Describes the message metalstack.admin.v2.NetworkServiceUpdateResponse.
* Use `create(NetworkServiceUpdateResponseSchema)` to create a new message.
*/
-export const NetworkServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 10);
+export const NetworkServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 7);
/**
* Describes the message metalstack.admin.v2.NetworkServiceDeleteResponse.
* Use `create(NetworkServiceDeleteResponseSchema)` to create a new message.
*/
-export const NetworkServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 11);
+export const NetworkServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 8);
/**
* Describes the message metalstack.admin.v2.NetworkServiceListResponse.
* Use `create(NetworkServiceListResponseSchema)` to create a new message.
*/
-export const NetworkServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 12);
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceListExternalMembersResponse.
- * Use `create(NetworkServiceListExternalMembersResponseSchema)` to create a new message.
- */
-export const NetworkServiceListExternalMembersResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 13);
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMembersResponse.
- * Use `create(NetworkServiceAddExternalMembersResponseSchema)` to create a new message.
- */
-export const NetworkServiceAddExternalMembersResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 14);
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse.
- * Use `create(NetworkServiceRemoveExternalMembersResponseSchema)` to create a new message.
- */
-export const NetworkServiceRemoveExternalMembersResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 15);
+export const NetworkServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_metalstack_admin_v2_network, 9);
/**
* NetworkService provides network management operations.
*
diff --git a/js/metalstack/admin/v2/network_pb.ts b/js/metalstack/admin/v2/network_pb.ts
index 53b816ed..284ef1f4 100644
--- a/js/metalstack/admin/v2/network_pb.ts
+++ b/js/metalstack/admin/v2/network_pb.ts
@@ -7,18 +7,16 @@ 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, ExternalNetworkMember, ExternalNetworkMemberQuery, NATType, Network, NetworkAddressFamily, NetworkQuery, NetworkType } from "../../api/v2/network_pb";
+import type { ChildPrefixLength, NATType, Network, NetworkAddressFamily, NetworkQuery, NetworkType } from "../../api/v2/network_pb";
import { file_metalstack_api_v2_network } from "../../api/v2/network_pb";
import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
-import type { 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("CiFtZXRhbHN0YWNrL2FkbWluL3YyL25ldHdvcmsucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMwoYTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECASJIChlOZXR3b3JrU2VydmljZUdldFJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrItAHChtOZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIjCglwYXJ0aXRpb24YBCABKAlCC7pICHIG0LOusQIBSAOIAQESHgoHcHJvamVjdBgFIAEoCUIIukgFcgOwAQFIBIgBARI2CgR0eXBlGAYgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1R5cGVCCLpIBYIBAhABEi4KBmxhYmVscxgHIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjsKCG5hdF90eXBlGAwgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAFIBogBARIQCgN2cmYYDSABKA1IB4gBARIoCg5wYXJlbnRfbmV0d29yaxgOIAEoCUILukgIcgbAs66xAgFICIgBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGA8gAygJQgy6SAmSAQa4pLOxAgESOQoGbGVuZ3RoGBAgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhICYgBARJOCg5hZGRyZXNzX2ZhbWlseRgRIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgKiAEBQgUKA19pZEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX3BhcnRpdGlvbkIKCghfcHJvamVjdEIJCgdfbGFiZWxzQgsKCV9uYXRfdHlwZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSLEBQobTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gCiAEBEh4KCHByZWZpeGVzGAYgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYByADKAlCDLpICZIBBriks7ECARJOChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aEgDiAEBEkoKF21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoGAkgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARI7CghuYXRfdHlwZRgKIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAWIAQESMgocYWRkaXRpb25hbF9hbm5vdW5jYWJsZV9jaWRycxgLIAMoCUIMukgJkgEGuKSzsQIBEg0KBWZvcmNlGAwgASgIQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzQh4KHF9kZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGhCGgoYX21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoQgsKCV9uYXRfdHlwZSI2ChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBIksKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSLgoFcXVlcnkYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkihgEKKE5ldHdvcmtTZXJ2aWNlTGlzdEV4dGVybmFsTWVtYmVyc1JlcXVlc3QSHAoHbmV0d29yaxgBIAEoCUILukgIcgbAs66xAgESPAoFcXVlcnkYAiABKAsyLS5tZXRhbHN0YWNrLmFwaS52Mi5FeHRlcm5hbE5ldHdvcmtNZW1iZXJRdWVyeSKCAQonTmV0d29ya1NlcnZpY2VBZGRFeHRlcm5hbE1lbWJlcnNSZXF1ZXN0EhwKB25ldHdvcmsYASABKAlCC7pICHIGwLOusQIBEhkKBHJhY2sYAiABKAlCC7pICHIGwLOusQIBEh4KBXBvcnRzGAMgAygJQg+6SAySAQnQpLOxAgEQgBAihQEKKk5ldHdvcmtTZXJ2aWNlUmVtb3ZlRXh0ZXJuYWxNZW1iZXJzUmVxdWVzdBIcCgduZXR3b3JrGAEgASgJQgu6SAhyBsCzrrECARIZCgRyYWNrGAIgASgJQgu6SAhyBsCzrrECARIeCgVwb3J0cxgDIAMoCUIPukgMkgEJ0KSzsQIBEIAQIksKHE5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsiSwocTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJLChxOZXR3b3JrU2VydmljZURlbGV0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIkoKGk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJ3CilOZXR3b3JrU2VydmljZUxpc3RFeHRlcm5hbE1lbWJlcnNSZXNwb25zZRIPCgduZXR3b3JrGAEgASgJEjkKB21lbWJlcnMYAiADKAsyKC5tZXRhbHN0YWNrLmFwaS52Mi5FeHRlcm5hbE5ldHdvcmtNZW1iZXIihAEKKE5ldHdvcmtTZXJ2aWNlQWRkRXh0ZXJuYWxNZW1iZXJzUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsSKwoIc3dpdGNoZXMYAiADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gihwEKK05ldHdvcmtTZXJ2aWNlUmVtb3ZlRXh0ZXJuYWxNZW1iZXJzUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsSKwoIc3dpdGNoZXMYAiADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gyzwgKDk5ldHdvcmtTZXJ2aWNlEnAKA0dldBItLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUdldFJlc3BvbnNlIgrS8xgCAQLg8xgCEngKBkNyZWF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESeAoGVXBkYXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJ4CgZEZWxldGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VEZWxldGVSZXNwb25zZSIJ0vMYAQHg8xgBEnMKBExpc3QSLi5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QaLy5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCEqABChNMaXN0RXh0ZXJuYWxNZW1iZXJzEj0ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RFeHRlcm5hbE1lbWJlcnNSZXF1ZXN0Gj4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RFeHRlcm5hbE1lbWJlcnNSZXNwb25zZSIK0vMYAgEC4PMYAhKcAQoSQWRkRXh0ZXJuYWxNZW1iZXJzEjwubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUFkZEV4dGVybmFsTWVtYmVyc1JlcXVlc3QaPS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQWRkRXh0ZXJuYWxNZW1iZXJzUmVzcG9uc2UiCdLzGAEB4PMYARKlAQoVUmVtb3ZlRXh0ZXJuYWxNZW1iZXJzEj8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVJlbW92ZUV4dGVybmFsTWVtYmVyc1JlcXVlc3QaQC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlUmVtb3ZlRXh0ZXJuYWxNZW1iZXJzUmVzcG9uc2UiCdLzGAEB4PMYAULQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDE5ldHdvcmtQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [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]);
+ fileDesc("CiFtZXRhbHN0YWNrL2FkbWluL3YyL25ldHdvcmsucHJvdG8SE21ldGFsc3RhY2suYWRtaW4udjIiMwoYTmV0d29ya1NlcnZpY2VHZXRSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECASJIChlOZXR3b3JrU2VydmljZUdldFJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrItAHChtOZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QSHAoCaWQYASABKAlCC7pICHIGwLOusQIBSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAogBARIjCglwYXJ0aXRpb24YBCABKAlCC7pICHIG0LOusQIBSAOIAQESHgoHcHJvamVjdBgFIAEoCUIIukgFcgOwAQFIBIgBARI2CgR0eXBlGAYgASgOMh4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1R5cGVCCLpIBYIBAhABEi4KBmxhYmVscxgHIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gFiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjsKCG5hdF90eXBlGAwgASgOMhoubWV0YWxzdGFjay5hcGkudjIuTkFUVHlwZUIIukgFggECEAFIBogBARIQCgN2cmYYDSABKA1IB4gBARIoCg5wYXJlbnRfbmV0d29yaxgOIAEoCUILukgIcgbAs66xAgFICIgBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGA8gAygJQgy6SAmSAQa4pLOxAgESOQoGbGVuZ3RoGBAgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhICYgBARJOCg5hZGRyZXNzX2ZhbWlseRgRIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgKiAEBQgUKA19pZEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDAoKX3BhcnRpdGlvbkIKCghfcHJvamVjdEIJCgdfbGFiZWxzQgsKCV9uYXRfdHlwZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSLEBQobTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0EhcKAmlkGAEgASgJQgu6SAhyBsCzrrECARI6Cgt1cGRhdGVfbWV0YRgCIAEoCzIdLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZU1ldGFCBrpIA8gBARIeCgRuYW1lGAMgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgBiAEBEjQKBmxhYmVscxgFIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLlVwZGF0ZUxhYmVsc0gCiAEBEh4KCHByZWZpeGVzGAYgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYByADKAlCDLpICZIBBriks7ECARJOChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCCABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aEgDiAEBEkoKF21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoGAkgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARI7CghuYXRfdHlwZRgKIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAWIAQESMgocYWRkaXRpb25hbF9hbm5vdW5jYWJsZV9jaWRycxgLIAMoCUIMukgJkgEGuKSzsQIBEg0KBWZvcmNlGAwgASgIQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfbGFiZWxzQh4KHF9kZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGhCGgoYX21pbl9jaGlsZF9wcmVmaXhfbGVuZ3RoQgsKCV9uYXRfdHlwZSI2ChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBIksKGU5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QSLgoFcXVlcnkYASABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrUXVlcnkiSwocTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJLChxOZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsiSgoaTmV0d29ya1NlcnZpY2VMaXN0UmVzcG9uc2USLAoIbmV0d29ya3MYASADKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrMuUECg5OZXR3b3JrU2VydmljZRJwCgNHZXQSLS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VHZXRSZXNwb25zZSIK0vMYAgEC4PMYAhJ4CgZDcmVhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VDcmVhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEngKBlVwZGF0ZRIwLm1ldGFsc3RhY2suYWRtaW4udjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0GjEubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZVVwZGF0ZVJlc3BvbnNlIgnS8xgBAeDzGAESeAoGRGVsZXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARJzCgRMaXN0Ei4ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hZG1pbi52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAkLQAQoXY29tLm1ldGFsc3RhY2suYWRtaW4udjJCDE5ldHdvcmtQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_network, file_metalstack_api_v2_predefined_rules]);
/**
* NetworkServiceGetRequest is the request payload for getting a network.
@@ -335,104 +333,6 @@ export type NetworkServiceListRequest = Message<"metalstack.admin.v2.NetworkServ
export const NetworkServiceListRequestSchema: GenMessage = /*@__PURE__*/
messageDesc(file_metalstack_admin_v2_network, 5);
-/**
- * NetworkServiceListExternalMembersRequest is the request payload for listing external members of a network.
- *
- * @generated from message metalstack.admin.v2.NetworkServiceListExternalMembersRequest
- */
-export type NetworkServiceListExternalMembersRequest = Message<"metalstack.admin.v2.NetworkServiceListExternalMembersRequest"> & {
- /**
- * 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.NetworkServiceListExternalMembersRequest.
- * Use `create(NetworkServiceListExternalMembersRequestSchema)` to create a new message.
- */
-export const NetworkServiceListExternalMembersRequestSchema: 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.NetworkServiceAddExternalMembersRequest
- */
-export type NetworkServiceAddExternalMembersRequest = Message<"metalstack.admin.v2.NetworkServiceAddExternalMembersRequest"> & {
- /**
- * Network to add the member to.
- *
- * @generated from field: string network = 1;
- */
- network: string;
-
- /**
- * Rack the members are connected to.
- *
- * @generated from field: string rack = 2;
- */
- rack: string;
-
- /**
- * Ports of the switches to add to the network.
- *
- * @generated from field: repeated string ports = 3;
- */
- ports: string[];
-};
-
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMembersRequest.
- * Use `create(NetworkServiceAddExternalMembersRequestSchema)` to create a new message.
- */
-export const NetworkServiceAddExternalMembersRequestSchema: 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.NetworkServiceRemoveExternalMembersRequest
- */
-export type NetworkServiceRemoveExternalMembersRequest = Message<"metalstack.admin.v2.NetworkServiceRemoveExternalMembersRequest"> & {
- /**
- * Network to remove the member from.
- *
- * @generated from field: string network = 1;
- */
- network: string;
-
- /**
- * Rack the members are connected to.
- *
- * @generated from field: string rack = 2;
- */
- rack: string;
-
- /**
- * Ports of the switches to remove from the network.
- *
- * @generated from field: repeated string ports = 3;
- */
- ports: string[];
-};
-
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMembersRequest.
- * Use `create(NetworkServiceRemoveExternalMembersRequestSchema)` to create a new message.
- */
-export const NetworkServiceRemoveExternalMembersRequestSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_admin_v2_network, 8);
-
/**
* NetworkServiceCreateResponse is the response payload for creating a network.
*
@@ -452,7 +352,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, 9);
+ messageDesc(file_metalstack_admin_v2_network, 6);
/**
* NetworkServiceUpdateResponse is the response payload for updating a network.
@@ -473,7 +373,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, 10);
+ messageDesc(file_metalstack_admin_v2_network, 7);
/**
* NetworkServiceDeleteResponse is the response payload for deleting a network.
@@ -494,7 +394,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, 11);
+ messageDesc(file_metalstack_admin_v2_network, 8);
/**
* NetworkServiceListResponse is the response payload for listing networks.
@@ -515,91 +415,7 @@ 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, 12);
-
-/**
- * NetworkServiceListExternalMembersResponse is the response payload for listing external members of a network.
- *
- * @generated from message metalstack.admin.v2.NetworkServiceListExternalMembersResponse
- */
-export type NetworkServiceListExternalMembersResponse = Message<"metalstack.admin.v2.NetworkServiceListExternalMembersResponse"> & {
- /**
- * Network whose members are queried.
- *
- * @generated from field: string network = 1;
- */
- network: string;
-
- /**
- * Members are the queried external members of the network.
- *
- * @generated from field: repeated metalstack.api.v2.ExternalNetworkMember members = 2;
- */
- members: ExternalNetworkMember[];
-};
-
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceListExternalMembersResponse.
- * Use `create(NetworkServiceListExternalMembersResponseSchema)` to create a new message.
- */
-export const NetworkServiceListExternalMembersResponseSchema: 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.NetworkServiceAddExternalMembersResponse
- */
-export type NetworkServiceAddExternalMembersResponse = Message<"metalstack.admin.v2.NetworkServiceAddExternalMembersResponse"> & {
- /**
- * Network the members were added to.
- *
- * @generated from field: metalstack.api.v2.Network network = 1;
- */
- network?: Network | undefined;
-
- /**
- * Switch contains the updated switches.
- *
- * @generated from field: repeated metalstack.api.v2.Switch switches = 2;
- */
- switches: Switch[];
-};
-
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceAddExternalMembersResponse.
- * Use `create(NetworkServiceAddExternalMembersResponseSchema)` to create a new message.
- */
-export const NetworkServiceAddExternalMembersResponseSchema: 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.NetworkServiceRemoveExternalMembersResponse
- */
-export type NetworkServiceRemoveExternalMembersResponse = Message<"metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse"> & {
- /**
- * Network the members were removed from.
- *
- * @generated from field: metalstack.api.v2.Network network = 1;
- */
- network?: Network | undefined;
-
- /**
- * Switch contains the updated switches.
- *
- * @generated from field: repeated metalstack.api.v2.Switch switches = 2;
- */
- switches: Switch[];
-};
-
-/**
- * Describes the message metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse.
- * Use `create(NetworkServiceRemoveExternalMembersResponseSchema)` to create a new message.
- */
-export const NetworkServiceRemoveExternalMembersResponseSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_admin_v2_network, 15);
+ messageDesc(file_metalstack_admin_v2_network, 9);
/**
* NetworkService provides network management operations.
@@ -657,36 +473,6 @@ export const NetworkService: GenService<{
input: typeof NetworkServiceListRequestSchema;
output: typeof NetworkServiceListResponseSchema;
},
- /**
- * Lists external members of a network.
- *
- * @generated from rpc metalstack.admin.v2.NetworkService.ListExternalMembers
- */
- listExternalMembers: {
- methodKind: "unary";
- input: typeof NetworkServiceListExternalMembersRequestSchema;
- output: typeof NetworkServiceListExternalMembersResponseSchema;
- },
- /**
- * Adds an external member to a network.
- *
- * @generated from rpc metalstack.admin.v2.NetworkService.AddExternalMembers
- */
- addExternalMembers: {
- methodKind: "unary";
- input: typeof NetworkServiceAddExternalMembersRequestSchema;
- output: typeof NetworkServiceAddExternalMembersResponseSchema;
- },
- /**
- * Removes an external member from a network.
- *
- * @generated from rpc metalstack.admin.v2.NetworkService.RemoveExternalMembers
- */
- removeExternalMembers: {
- methodKind: "unary";
- input: typeof NetworkServiceRemoveExternalMembersRequestSchema;
- output: typeof NetworkServiceRemoveExternalMembersResponseSchema;
- },
}> = /*@__PURE__*/
serviceDesc(file_metalstack_admin_v2_network, 0);
diff --git a/js/metalstack/admin/v2/switch_pb.d.ts b/js/metalstack/admin/v2/switch_pb.d.ts
index 34306cf1..d945d4f3 100644
--- a/js/metalstack/admin/v2/switch_pb.d.ts
+++ b/js/metalstack/admin/v2/switch_pb.d.ts
@@ -2,7 +2,7 @@ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegen
import type { Timestamp } from "@bufbuild/protobuf/wkt";
import type { UpdateMeta } from "../../api/v2/common_pb";
import type { MachineQuery } from "../../api/v2/machine_pb";
-import type { Switch, SwitchNic, SwitchOS, SwitchPortStatus, SwitchQuery, SwitchReplaceMode, SwitchWithMachines } from "../../api/v2/switch_pb";
+import type { StaticPortConfig, Switch, SwitchNic, SwitchOS, SwitchQuery, SwitchReplaceMode, SwitchWithMachines } from "../../api/v2/switch_pb";
import type { Message } from "@bufbuild/protobuf";
/**
* Describes the file metalstack/admin/v2/switch.proto.
@@ -256,7 +256,7 @@ export type SwitchServiceMigrateResponse = Message<"metalstack.admin.v2.SwitchSe
*/
export declare const SwitchServiceMigrateResponseSchema: GenMessage;
/**
- * SwitchServicePortRequest is the request payload for setting the port status of a switch port.
+ * SwitchServicePortRequest is the request payload for setting the port config of a switch port.
*
* @generated from message metalstack.admin.v2.SwitchServicePortRequest
*/
@@ -268,17 +268,17 @@ export type SwitchServicePortRequest = Message<"metalstack.admin.v2.SwitchServic
*/
id: string;
/**
- * NicName of the port whose status should be changed.
+ * NicName of the affected port.
*
* @generated from field: string nic_name = 2;
*/
nicName: string;
/**
- * Status that the port should have.
+ * Config is the desired port config.
*
- * @generated from field: metalstack.api.v2.SwitchPortStatus status = 3;
+ * @generated from field: metalstack.api.v2.StaticPortConfig config = 3;
*/
- status: SwitchPortStatus;
+ config?: StaticPortConfig | undefined;
};
/**
* Describes the message metalstack.admin.v2.SwitchServicePortRequest.
@@ -286,13 +286,13 @@ export type SwitchServicePortRequest = Message<"metalstack.admin.v2.SwitchServic
*/
export declare const SwitchServicePortRequestSchema: GenMessage;
/**
- * SwitchServicePortResponse is the response payload for setting the port status of a switch port.
+ * SwitchServicePortResponse is the response payload for setting the port config of a switch port.
*
* @generated from message metalstack.admin.v2.SwitchServicePortResponse
*/
export type SwitchServicePortResponse = Message<"metalstack.admin.v2.SwitchServicePortResponse"> & {
/**
- * Switch after the port status toggle.
+ * Switch after the update.
*
* @generated from field: metalstack.api.v2.Switch switch = 1;
*/
@@ -402,7 +402,7 @@ export declare const SwitchService: GenService<{
output: typeof SwitchServiceMigrateResponseSchema;
};
/**
- * Sets the port status of a switch port.
+ * Sets the port config of a switch port.
*
* @generated from rpc metalstack.admin.v2.SwitchService.Port
*/
diff --git a/js/metalstack/admin/v2/switch_pb.js b/js/metalstack/admin/v2/switch_pb.js
index 142370b6..95c02678 100644
--- a/js/metalstack/admin/v2/switch_pb.js
+++ b/js/metalstack/admin/v2/switch_pb.js
@@ -11,7 +11,7 @@ import { file_metalstack_api_v2_switch } from "../../api/v2/switch_pb";
/**
* Describes the file metalstack/admin/v2/switch.proto.
*/
-export const file_metalstack_admin_v2_switch = /*@__PURE__*/ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3N3aXRjaC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiI0ChdTd2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoASJFChhTd2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkkKGFN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFF1ZXJ5IkgKGVN3aXRjaFNlcnZpY2VMaXN0UmVzcG9uc2USKwoIc3dpdGNoZXMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gizAQKGlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKAmlkGAEgASgJQg26SApyCMCzrrECAWgBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEkkKDHJlcGxhY2VfbW9kZRgFIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQAUgBiAEBEiMKDW1hbmFnZW1lbnRfaXAYBiABKAlCB7pIBHICcAFIAogBARIpCg9tYW5hZ2VtZW50X3VzZXIYByABKAlCC7pICHIGwLOusQIBSAOIAQESKQoPY29uc29sZV9jb21tYW5kGAggASgJQgu6SAhyBsizrrECAUgEiAEBEioKBG5pY3MYCSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSLAoCb3MYCiABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU0gFiAEBQg4KDF9kZXNjcmlwdGlvbkIPCg1fcmVwbGFjZV9tb2RlQhAKDl9tYW5hZ2VtZW50X2lwQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZEIFCgNfb3MiSAobU3dpdGNoU2VydmljZVVwZGF0ZVJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCJGChpTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARINCgVmb3JjZRgCIAEoCCJIChtTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoImMKG1N3aXRjaFNlcnZpY2VNaWdyYXRlUmVxdWVzdBIhCgpvbGRfc3dpdGNoGAEgASgJQg26SApyCMCzrrECAWgBEiEKCm5ld19zd2l0Y2gYAiABKAlCDbpICnIIwLOusQIBaAEiSQocU3dpdGNoU2VydmljZU1pZ3JhdGVSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gikwEKGFN3aXRjaFNlcnZpY2VQb3J0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARIdCghuaWNfbmFtZRgCIAEoCUILukgIcgbAs66xAgESPQoGc3RhdHVzGAMgASgOMiMubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydFN0YXR1c0IIukgFggECEAEiRgoZU3dpdGNoU2VydmljZVBvcnRSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gijgEKJVN3aXRjaFNlcnZpY2VDb25uZWN0ZWRNYWNoaW5lc1JlcXVlc3QSLQoFcXVlcnkYASABKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hRdWVyeRI2Cg1tYWNoaW5lX3F1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5Im8KJlN3aXRjaFNlcnZpY2VDb25uZWN0ZWRNYWNoaW5lc1Jlc3BvbnNlEkUKFnN3aXRjaGVzX3dpdGhfbWFjaGluZXMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hXaXRoTWFjaGluZXMy6gYKDVN3aXRjaFNlcnZpY2USbgoDR2V0EiwubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBotLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUdldFJlc3BvbnNlIgrS8xgCAQLg8xgCEnEKBExpc3QSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAhJ2CgZVcGRhdGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJ2CgZEZWxldGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VEZWxldGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARJ5CgdNaWdyYXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlTWlncmF0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VNaWdyYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJwCgRQb3J0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlUG9ydFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VQb3J0UmVzcG9uc2UiCdLzGAEB4PMYARKYAQoRQ29ubmVjdGVkTWFjaGluZXMSOi5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VDb25uZWN0ZWRNYWNoaW5lc1JlcXVlc3QaOy5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VDb25uZWN0ZWRNYWNoaW5lc1Jlc3BvbnNlIgrS8xgCAQLg8xgCQs8BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkILU3dpdGNoUHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]);
+export const file_metalstack_admin_v2_switch = /*@__PURE__*/ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3N3aXRjaC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiI0ChdTd2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoASJFChhTd2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkkKGFN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFF1ZXJ5IkgKGVN3aXRjaFNlcnZpY2VMaXN0UmVzcG9uc2USKwoIc3dpdGNoZXMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gizAQKGlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKAmlkGAEgASgJQg26SApyCMCzrrECAWgBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEkkKDHJlcGxhY2VfbW9kZRgFIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQAUgBiAEBEiMKDW1hbmFnZW1lbnRfaXAYBiABKAlCB7pIBHICcAFIAogBARIpCg9tYW5hZ2VtZW50X3VzZXIYByABKAlCC7pICHIGwLOusQIBSAOIAQESKQoPY29uc29sZV9jb21tYW5kGAggASgJQgu6SAhyBsizrrECAUgEiAEBEioKBG5pY3MYCSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSLAoCb3MYCiABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU0gFiAEBQg4KDF9kZXNjcmlwdGlvbkIPCg1fcmVwbGFjZV9tb2RlQhAKDl9tYW5hZ2VtZW50X2lwQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZEIFCgNfb3MiSAobU3dpdGNoU2VydmljZVVwZGF0ZVJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCJGChpTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARINCgVmb3JjZRgCIAEoCCJIChtTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoImMKG1N3aXRjaFNlcnZpY2VNaWdyYXRlUmVxdWVzdBIhCgpvbGRfc3dpdGNoGAEgASgJQg26SApyCMCzrrECAWgBEiEKCm5ld19zd2l0Y2gYAiABKAlCDbpICnIIwLOusQIBaAEiSQocU3dpdGNoU2VydmljZU1pZ3JhdGVSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2giiQEKGFN3aXRjaFNlcnZpY2VQb3J0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARIdCghuaWNfbmFtZRgCIAEoCUILukgIcgbAs66xAgESMwoGY29uZmlnGAMgASgLMiMubWV0YWxzdGFjay5hcGkudjIuU3RhdGljUG9ydENvbmZpZyJGChlTd2l0Y2hTZXJ2aWNlUG9ydFJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCKOAQolU3dpdGNoU2VydmljZUNvbm5lY3RlZE1hY2hpbmVzUmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFF1ZXJ5EjYKDW1hY2hpbmVfcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUXVlcnkibwomU3dpdGNoU2VydmljZUNvbm5lY3RlZE1hY2hpbmVzUmVzcG9uc2USRQoWc3dpdGNoZXNfd2l0aF9tYWNoaW5lcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFdpdGhNYWNoaW5lczLqBgoNU3dpdGNoU2VydmljZRJuCgNHZXQSLC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VHZXRSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2UiCtLzGAIBAuDzGAIScQoETGlzdBItLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUxpc3RSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCEnYKBlVwZGF0ZRIvLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZVVwZGF0ZVJlcXVlc3QaMC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VVcGRhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnYKBkRlbGV0ZRIvLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZURlbGV0ZVJlcXVlc3QaMC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VEZWxldGVSZXNwb25zZSIJ0vMYAQHg8xgBEnkKB01pZ3JhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VNaWdyYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZU1pZ3JhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnAKBFBvcnQSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VQb3J0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZVBvcnRSZXNwb25zZSIJ0vMYAQHg8xgBEpgBChFDb25uZWN0ZWRNYWNoaW5lcxI6Lm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUNvbm5lY3RlZE1hY2hpbmVzUmVxdWVzdBo7Lm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUNvbm5lY3RlZE1hY2hpbmVzUmVzcG9uc2UiCtLzGAIBAuDzGAJCzwEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgtTd2l0Y2hQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]);
/**
* Describes the message metalstack.admin.v2.SwitchServiceGetRequest.
* Use `create(SwitchServiceGetRequestSchema)` to create a new message.
diff --git a/js/metalstack/admin/v2/switch_pb.ts b/js/metalstack/admin/v2/switch_pb.ts
index 4948faa9..39d3c204 100644
--- a/js/metalstack/admin/v2/switch_pb.ts
+++ b/js/metalstack/admin/v2/switch_pb.ts
@@ -12,7 +12,7 @@ import { file_metalstack_api_v2_common } from "../../api/v2/common_pb";
import type { MachineQuery } from "../../api/v2/machine_pb";
import { file_metalstack_api_v2_machine } from "../../api/v2/machine_pb";
import { file_metalstack_api_v2_predefined_rules } from "../../api/v2/predefined_rules_pb";
-import type { Switch, SwitchNic, SwitchOS, SwitchPortStatus, SwitchQuery, SwitchReplaceMode, SwitchWithMachines } from "../../api/v2/switch_pb";
+import type { StaticPortConfig, Switch, SwitchNic, SwitchOS, SwitchQuery, SwitchReplaceMode, SwitchWithMachines } from "../../api/v2/switch_pb";
import { file_metalstack_api_v2_switch } from "../../api/v2/switch_pb";
import type { Message } from "@bufbuild/protobuf";
@@ -20,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/admin/v2/switch.proto.
*/
export const file_metalstack_admin_v2_switch: GenFile = /*@__PURE__*/
- fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3N3aXRjaC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiI0ChdTd2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoASJFChhTd2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkkKGFN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFF1ZXJ5IkgKGVN3aXRjaFNlcnZpY2VMaXN0UmVzcG9uc2USKwoIc3dpdGNoZXMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gizAQKGlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKAmlkGAEgASgJQg26SApyCMCzrrECAWgBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEkkKDHJlcGxhY2VfbW9kZRgFIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQAUgBiAEBEiMKDW1hbmFnZW1lbnRfaXAYBiABKAlCB7pIBHICcAFIAogBARIpCg9tYW5hZ2VtZW50X3VzZXIYByABKAlCC7pICHIGwLOusQIBSAOIAQESKQoPY29uc29sZV9jb21tYW5kGAggASgJQgu6SAhyBsizrrECAUgEiAEBEioKBG5pY3MYCSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSLAoCb3MYCiABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU0gFiAEBQg4KDF9kZXNjcmlwdGlvbkIPCg1fcmVwbGFjZV9tb2RlQhAKDl9tYW5hZ2VtZW50X2lwQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZEIFCgNfb3MiSAobU3dpdGNoU2VydmljZVVwZGF0ZVJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCJGChpTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARINCgVmb3JjZRgCIAEoCCJIChtTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoImMKG1N3aXRjaFNlcnZpY2VNaWdyYXRlUmVxdWVzdBIhCgpvbGRfc3dpdGNoGAEgASgJQg26SApyCMCzrrECAWgBEiEKCm5ld19zd2l0Y2gYAiABKAlCDbpICnIIwLOusQIBaAEiSQocU3dpdGNoU2VydmljZU1pZ3JhdGVSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gikwEKGFN3aXRjaFNlcnZpY2VQb3J0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARIdCghuaWNfbmFtZRgCIAEoCUILukgIcgbAs66xAgESPQoGc3RhdHVzGAMgASgOMiMubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydFN0YXR1c0IIukgFggECEAEiRgoZU3dpdGNoU2VydmljZVBvcnRSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gijgEKJVN3aXRjaFNlcnZpY2VDb25uZWN0ZWRNYWNoaW5lc1JlcXVlc3QSLQoFcXVlcnkYASABKAsyHi5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hRdWVyeRI2Cg1tYWNoaW5lX3F1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZVF1ZXJ5Im8KJlN3aXRjaFNlcnZpY2VDb25uZWN0ZWRNYWNoaW5lc1Jlc3BvbnNlEkUKFnN3aXRjaGVzX3dpdGhfbWFjaGluZXMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hXaXRoTWFjaGluZXMy6gYKDVN3aXRjaFNlcnZpY2USbgoDR2V0EiwubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBotLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUdldFJlc3BvbnNlIgrS8xgCAQLg8xgCEnEKBExpc3QSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUxpc3RSZXNwb25zZSIK0vMYAgEC4PMYAhJ2CgZVcGRhdGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJ2CgZEZWxldGUSLy5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VEZWxldGVSZXF1ZXN0GjAubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCdLzGAEB4PMYARJ5CgdNaWdyYXRlEjAubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlTWlncmF0ZVJlcXVlc3QaMS5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VNaWdyYXRlUmVzcG9uc2UiCdLzGAEB4PMYARJwCgRQb3J0Ei0ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlUG9ydFJlcXVlc3QaLi5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VQb3J0UmVzcG9uc2UiCdLzGAEB4PMYARKYAQoRQ29ubmVjdGVkTWFjaGluZXMSOi5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VDb25uZWN0ZWRNYWNoaW5lc1JlcXVlc3QaOy5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VDb25uZWN0ZWRNYWNoaW5lc1Jlc3BvbnNlIgrS8xgCAQLg8xgCQs8BChdjb20ubWV0YWxzdGFjay5hZG1pbi52MkILU3dpdGNoUHJvdG9QAVo5Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hZG1pbi92MjthZG1pbnYyogIDTUFYqgITTWV0YWxzdGFjay5BZG1pbi5WMsoCE01ldGFsc3RhY2tcQWRtaW5cVjLiAh9NZXRhbHN0YWNrXEFkbWluXFYyXEdQQk1ldGFkYXRh6gIVTWV0YWxzdGFjazo6QWRtaW46OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]);
+ fileDesc("CiBtZXRhbHN0YWNrL2FkbWluL3YyL3N3aXRjaC5wcm90bxITbWV0YWxzdGFjay5hZG1pbi52MiI0ChdTd2l0Y2hTZXJ2aWNlR2V0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoASJFChhTd2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoIkkKGFN3aXRjaFNlcnZpY2VMaXN0UmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFF1ZXJ5IkgKGVN3aXRjaFNlcnZpY2VMaXN0UmVzcG9uc2USKwoIc3dpdGNoZXMYASADKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2gizAQKGlN3aXRjaFNlcnZpY2VVcGRhdGVSZXF1ZXN0EhkKAmlkGAEgASgJQg26SApyCMCzrrECAWgBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKC2Rlc2NyaXB0aW9uGAQgASgJQgu6SAhyBsizrrECAUgAiAEBEkkKDHJlcGxhY2VfbW9kZRgFIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQAUgBiAEBEiMKDW1hbmFnZW1lbnRfaXAYBiABKAlCB7pIBHICcAFIAogBARIpCg9tYW5hZ2VtZW50X3VzZXIYByABKAlCC7pICHIGwLOusQIBSAOIAQESKQoPY29uc29sZV9jb21tYW5kGAggASgJQgu6SAhyBsizrrECAUgEiAEBEioKBG5pY3MYCSADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSLAoCb3MYCiABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU0gFiAEBQg4KDF9kZXNjcmlwdGlvbkIPCg1fcmVwbGFjZV9tb2RlQhAKDl9tYW5hZ2VtZW50X2lwQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZEIFCgNfb3MiSAobU3dpdGNoU2VydmljZVVwZGF0ZVJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCJGChpTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARINCgVmb3JjZRgCIAEoCCJIChtTd2l0Y2hTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKQoGc3dpdGNoGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoImMKG1N3aXRjaFNlcnZpY2VNaWdyYXRlUmVxdWVzdBIhCgpvbGRfc3dpdGNoGAEgASgJQg26SApyCMCzrrECAWgBEiEKCm5ld19zd2l0Y2gYAiABKAlCDbpICnIIwLOusQIBaAEiSQocU3dpdGNoU2VydmljZU1pZ3JhdGVSZXNwb25zZRIpCgZzd2l0Y2gYASABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2giiQEKGFN3aXRjaFNlcnZpY2VQb3J0UmVxdWVzdBIZCgJpZBgBIAEoCUINukgKcgjAs66xAgFoARIdCghuaWNfbmFtZRgCIAEoCUILukgIcgbAs66xAgESMwoGY29uZmlnGAMgASgLMiMubWV0YWxzdGFjay5hcGkudjIuU3RhdGljUG9ydENvbmZpZyJGChlTd2l0Y2hTZXJ2aWNlUG9ydFJlc3BvbnNlEikKBnN3aXRjaBgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaCKOAQolU3dpdGNoU2VydmljZUNvbm5lY3RlZE1hY2hpbmVzUmVxdWVzdBItCgVxdWVyeRgBIAEoCzIeLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFF1ZXJ5EjYKDW1hY2hpbmVfcXVlcnkYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUXVlcnkibwomU3dpdGNoU2VydmljZUNvbm5lY3RlZE1hY2hpbmVzUmVzcG9uc2USRQoWc3dpdGNoZXNfd2l0aF9tYWNoaW5lcxgBIAMoCzIlLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFdpdGhNYWNoaW5lczLqBgoNU3dpdGNoU2VydmljZRJuCgNHZXQSLC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VHZXRSZXF1ZXN0Gi0ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlR2V0UmVzcG9uc2UiCtLzGAIBAuDzGAIScQoETGlzdBItLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUxpc3RSZXF1ZXN0Gi4ubWV0YWxzdGFjay5hZG1pbi52Mi5Td2l0Y2hTZXJ2aWNlTGlzdFJlc3BvbnNlIgrS8xgCAQLg8xgCEnYKBlVwZGF0ZRIvLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZVVwZGF0ZVJlcXVlc3QaMC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VVcGRhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnYKBkRlbGV0ZRIvLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZURlbGV0ZVJlcXVlc3QaMC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VEZWxldGVSZXNwb25zZSIJ0vMYAQHg8xgBEnkKB01pZ3JhdGUSMC5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VNaWdyYXRlUmVxdWVzdBoxLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZU1pZ3JhdGVSZXNwb25zZSIJ0vMYAQHg8xgBEnAKBFBvcnQSLS5tZXRhbHN0YWNrLmFkbWluLnYyLlN3aXRjaFNlcnZpY2VQb3J0UmVxdWVzdBouLm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZVBvcnRSZXNwb25zZSIJ0vMYAQHg8xgBEpgBChFDb25uZWN0ZWRNYWNoaW5lcxI6Lm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUNvbm5lY3RlZE1hY2hpbmVzUmVxdWVzdBo7Lm1ldGFsc3RhY2suYWRtaW4udjIuU3dpdGNoU2VydmljZUNvbm5lY3RlZE1hY2hpbmVzUmVzcG9uc2UiCtLzGAIBAuDzGAJCzwEKF2NvbS5tZXRhbHN0YWNrLmFkbWluLnYyQgtTd2l0Y2hQcm90b1ABWjlnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FkbWluL3YyO2FkbWludjKiAgNNQViqAhNNZXRhbHN0YWNrLkFkbWluLlYyygITTWV0YWxzdGFja1xBZG1pblxWMuICH01ldGFsc3RhY2tcQWRtaW5cVjJcR1BCTWV0YWRhdGHqAhVNZXRhbHN0YWNrOjpBZG1pbjo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules, file_metalstack_api_v2_switch]);
/**
* SwitchServiceGetRequest is the request payload for getting a switch.
@@ -311,7 +311,7 @@ export const SwitchServiceMigrateResponseSchema: GenMessage & {
/**
- * Switch after the port status toggle.
+ * Switch after the update.
*
* @generated from field: metalstack.api.v2.Switch switch = 1;
*/
@@ -472,7 +472,7 @@ export const SwitchService: GenService<{
output: typeof SwitchServiceMigrateResponseSchema;
},
/**
- * Sets the port status of a switch port.
+ * Sets the port config of a switch port.
*
* @generated from rpc metalstack.admin.v2.SwitchService.Port
*/
diff --git a/js/metalstack/api/v2/network_pb.d.ts b/js/metalstack/api/v2/network_pb.d.ts
index d03f38e2..6e5497e0 100644
--- a/js/metalstack/api/v2/network_pb.d.ts
+++ b/js/metalstack/api/v2/network_pb.d.ts
@@ -528,36 +528,6 @@ 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;
- /**
- * Partition where the members of the network reside..
- *
- * @generated from field: optional string partition = 3;
- */
- partition?: string | undefined;
-};
-/**
- * Describes the message metalstack.api.v2.ExternalNetworkMemberQuery.
- * Use `create(ExternalNetworkMemberQuerySchema)` to create a new message.
- */
-export declare const ExternalNetworkMemberQuerySchema: GenMessage;
/**
* ChildPrefixLength.
*
@@ -642,30 +612,6 @@ export type NetworkUsage = Message<"metalstack.api.v2.NetworkUsage"> & {
* Use `create(NetworkUsageSchema)` to create a new message.
*/
export declare const NetworkUsageSchema: GenMessage;
-/**
- * ExternalNetworkMember contains 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.ExternalNetworkMember
- */
-export type ExternalNetworkMember = Message<"metalstack.api.v2.ExternalNetworkMember"> & {
- /**
- * 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.ExternalNetworkMember.
- * Use `create(ExternalNetworkMemberSchema)` to create a new message.
- */
-export declare const ExternalNetworkMemberSchema: 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 655a4824..695da36b 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("Ch9tZXRhbHN0YWNrL2FwaS92Mi9uZXR3b3JrLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJRChhOZXR3b3JrU2VydmljZUdldFJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhwKB3Byb2plY3QYAiABKAlCC7pICNgBAXIDsAEBIkgKGU5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsi3AMKG05ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgBiAEBEiMKCXBhcnRpdGlvbhgEIAEoCUILukgIcgbQs66xAgFIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMSKAoOcGFyZW50X25ldHdvcmsYBiABKAlCC7pICHIGwLOusQIBSAOIAQESOQoGbGVuZ3RoGAcgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARJOCg5hZGRyZXNzX2ZhbWlseRgIIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgFiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSJLChxOZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIq4CChtOZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESNAoGbGFiZWxzGAYgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAKIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJpChlOZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IkoKGk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJ1CiVOZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IlYKJk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1Jlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJRChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsizQYKB05ldHdvcmsSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECAUgCiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAOIAQESIAoJbmFtZXNwYWNlGAcgASgJQgi6SAVyA7ABAUgEiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjYKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAESNgoIbmF0X3R5cGUYDSABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5OQVRUeXBlQgi6SAWCAQIQARIQCgN2cmYYDiABKA1IBYgBARIoCg5wYXJlbnRfbmV0d29yaxgPIAEoCUILukgIcgbAs66xAgFIBogBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGBAgAygJQgy6SAmSAQa4pLOxAgESOgoLY29uc3VtcHRpb24YESABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrQ29uc3VtcHRpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCDAoKX25hbWVzcGFjZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29yayLzBQoMTmV0d29ya1F1ZXJ5EhwKAmlkGAEgASgJQgu6SAhyBsCzrrECAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgDiAEBEh4KB3Byb2plY3QYBSABKAlCCLpIBXIDsAEBSASIAQESIAoJbmFtZXNwYWNlGAYgASgJQgi6SAVyA7ABAUgFiAEBEh4KCHByZWZpeGVzGAcgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCCADKAlCDLpICZIBBriks7ECARIQCgN2cmYYCSABKA1IBogBARIoCg5wYXJlbnRfbmV0d29yaxgKIAEoCUILukgIcgbAs66xAgFIB4gBARJOCg5hZGRyZXNzX2ZhbWlseRgLIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgIiAEBEjsKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAFICYgBARI7CghuYXRfdHlwZRgNIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAqIAQESLgoGbGFiZWxzGA4gASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAuIAQFCBQoDX2lkQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQgoKCF9wcm9qZWN0QgwKCl9uYW1lc3BhY2VCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmtCEQoPX2FkZHJlc3NfZmFtaWx5QgcKBV90eXBlQgsKCV9uYXRfdHlwZUIJCgdfbGFiZWxzIqcBChpFeHRlcm5hbE5ldHdvcmtNZW1iZXJRdWVyeRIiCgZzd2l0Y2gYASABKAlCDbpICnIIwLOusQIBaAFIAIgBARIeCgRyYWNrGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiMKCXBhcnRpdGlvbhgDIAEoCUILukgIcgbQs66xAgFIAogBAUIJCgdfc3dpdGNoQgcKBV9yYWNrQgwKCl9wYXJ0aXRpb24iYgoRQ2hpbGRQcmVmaXhMZW5ndGgSHAoEaXB2NBgBIAEoDUIJukgGKgQYICAASACIAQESHQoEaXB2NhgCIAEoDUIKukgHKgUYgAEgAEgBiAEBQgcKBV9pcHY0QgcKBV9pcHY2InIKEk5ldHdvcmtDb25zdW1wdGlvbhItCgRpcHY0GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1VzYWdlEi0KBGlwdjYYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVXNhZ2UiagoMTmV0d29ya1VzYWdlEhUKDWF2YWlsYWJsZV9pcHMYASABKAQSEAoIdXNlZF9pcHMYAiABKAQSGgoSYXZhaWxhYmxlX3ByZWZpeGVzGAMgASgEEhUKDXVzZWRfcHJlZml4ZXMYBCABKAQiVAoVRXh0ZXJuYWxOZXR3b3JrTWVtYmVyEhsKBnN3aXRjaBgBIAEoCUILukgIcgbAs66xAgESHgoFcG9ydHMYAiADKAlCD7pIDJIBCdCks7ECARCAECptCgdOQVRUeXBlEhgKFE5BVF9UWVBFX1VOU1BFQ0lGSUVEEAASGwoNTkFUX1RZUEVfTk9ORRABGgiCshkEbm9uZRIrChhOQVRfVFlQRV9JUFY0X01BU1FVRVJBREUQAhoNgrIZCWlwdjQtbWFzcSqtAgoLTmV0d29ya1R5cGUSHAoYTkVUV09SS19UWVBFX1VOU1BFQ0lGSUVEEAASJwoVTkVUV09SS19UWVBFX0VYVEVSTkFMEAEaDIKyGQhleHRlcm5hbBInChVORVRXT1JLX1RZUEVfVU5ERVJMQVkQAhoMgrIZCHVuZGVybGF5EiEKEk5FVFdPUktfVFlQRV9TVVBFUhADGgmCshkFc3VwZXISNwodTkVUV09SS19UWVBFX1NVUEVSX05BTUVTUEFDRUQQBBoUgrIZEHN1cGVyLW5hbWVzcGFjZWQSIQoSTkVUV09SS19UWVBFX0NISUxEEAUaCYKyGQVjaGlsZBIvChlORVRXT1JLX1RZUEVfQ0hJTERfU0hBUkVEEAYaEIKyGQxjaGlsZC1zaGFyZWQqxwEKFE5ldHdvcmtBZGRyZXNzRmFtaWx5EiYKIk5FVFdPUktfQUREUkVTU19GQU1JTFlfVU5TUEVDSUZJRUQQABInChlORVRXT1JLX0FERFJFU1NfRkFNSUxZX1Y0EAEaCIKyGQRpcHY0EicKGU5FVFdPUktfQUREUkVTU19GQU1JTFlfVjYQAhoIgrIZBGlwdjYSNQohTkVUV09SS19BRERSRVNTX0ZBTUlMWV9EVUFMX1NUQUNLEAMaDoKyGQpkdWFsLXN0YWNrMu0FCg5OZXR3b3JrU2VydmljZRJtCgNHZXQSKy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUdldFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUdldFJlc3BvbnNlIgvK8xgDAQID4PMYAhJ1CgZDcmVhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlIgrK8xgCAQLg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAISlAEKEExpc3RCYXNlTmV0d29ya3MSOC5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0GjkubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VMaXN0QmFzZU5ldHdvcmtzUmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkRlbGV0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCsrzGAIBAuDzGAFCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTmV0d29ya1Byb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+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]);
/**
* Describes the message metalstack.api.v2.NetworkServiceGetRequest.
* Use `create(NetworkServiceGetRequestSchema)` to create a new message.
@@ -79,31 +79,21 @@ 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, 15);
+export const ChildPrefixLengthSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 14);
/**
* Describes the message metalstack.api.v2.NetworkConsumption.
* Use `create(NetworkConsumptionSchema)` to create a new message.
*/
-export const NetworkConsumptionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 16);
+export const NetworkConsumptionSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 15);
/**
* Describes the message metalstack.api.v2.NetworkUsage.
* Use `create(NetworkUsageSchema)` to create a new message.
*/
-export const NetworkUsageSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 17);
-/**
- * Describes the message metalstack.api.v2.ExternalNetworkMember.
- * Use `create(ExternalNetworkMemberSchema)` to create a new message.
- */
-export const ExternalNetworkMemberSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 18);
+export const NetworkUsageSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_network, 16);
/**
* 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 e7e10ae9..f4526826 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("Ch9tZXRhbHN0YWNrL2FwaS92Mi9uZXR3b3JrLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJRChhOZXR3b3JrU2VydmljZUdldFJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhwKB3Byb2plY3QYAiABKAlCC7pICNgBAXIDsAEBIkgKGU5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsi3AMKG05ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgBiAEBEiMKCXBhcnRpdGlvbhgEIAEoCUILukgIcgbQs66xAgFIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMSKAoOcGFyZW50X25ldHdvcmsYBiABKAlCC7pICHIGwLOusQIBSAOIAQESOQoGbGVuZ3RoGAcgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARJOCg5hZGRyZXNzX2ZhbWlseRgIIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgFiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSJLChxOZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIq4CChtOZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESNAoGbGFiZWxzGAYgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAKIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJpChlOZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IkoKGk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJ1CiVOZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IlYKJk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1Jlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJRChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsizQYKB05ldHdvcmsSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECAUgCiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAOIAQESIAoJbmFtZXNwYWNlGAcgASgJQgi6SAVyA7ABAUgEiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjYKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAESNgoIbmF0X3R5cGUYDSABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5OQVRUeXBlQgi6SAWCAQIQARIQCgN2cmYYDiABKA1IBYgBARIoCg5wYXJlbnRfbmV0d29yaxgPIAEoCUILukgIcgbAs66xAgFIBogBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGBAgAygJQgy6SAmSAQa4pLOxAgESOgoLY29uc3VtcHRpb24YESABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrQ29uc3VtcHRpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCDAoKX25hbWVzcGFjZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29yayLzBQoMTmV0d29ya1F1ZXJ5EhwKAmlkGAEgASgJQgu6SAhyBsCzrrECAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgDiAEBEh4KB3Byb2plY3QYBSABKAlCCLpIBXIDsAEBSASIAQESIAoJbmFtZXNwYWNlGAYgASgJQgi6SAVyA7ABAUgFiAEBEh4KCHByZWZpeGVzGAcgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCCADKAlCDLpICZIBBriks7ECARIQCgN2cmYYCSABKA1IBogBARIoCg5wYXJlbnRfbmV0d29yaxgKIAEoCUILukgIcgbAs66xAgFIB4gBARJOCg5hZGRyZXNzX2ZhbWlseRgLIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgIiAEBEjsKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAFICYgBARI7CghuYXRfdHlwZRgNIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAqIAQESLgoGbGFiZWxzGA4gASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAuIAQFCBQoDX2lkQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQgoKCF9wcm9qZWN0QgwKCl9uYW1lc3BhY2VCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmtCEQoPX2FkZHJlc3NfZmFtaWx5QgcKBV90eXBlQgsKCV9uYXRfdHlwZUIJCgdfbGFiZWxzIqcBChpFeHRlcm5hbE5ldHdvcmtNZW1iZXJRdWVyeRIiCgZzd2l0Y2gYASABKAlCDbpICnIIwLOusQIBaAFIAIgBARIeCgRyYWNrGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBEiMKCXBhcnRpdGlvbhgDIAEoCUILukgIcgbQs66xAgFIAogBAUIJCgdfc3dpdGNoQgcKBV9yYWNrQgwKCl9wYXJ0aXRpb24iYgoRQ2hpbGRQcmVmaXhMZW5ndGgSHAoEaXB2NBgBIAEoDUIJukgGKgQYICAASACIAQESHQoEaXB2NhgCIAEoDUIKukgHKgUYgAEgAEgBiAEBQgcKBV9pcHY0QgcKBV9pcHY2InIKEk5ldHdvcmtDb25zdW1wdGlvbhItCgRpcHY0GAEgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1VzYWdlEi0KBGlwdjYYAiABKAsyHy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVXNhZ2UiagoMTmV0d29ya1VzYWdlEhUKDWF2YWlsYWJsZV9pcHMYASABKAQSEAoIdXNlZF9pcHMYAiABKAQSGgoSYXZhaWxhYmxlX3ByZWZpeGVzGAMgASgEEhUKDXVzZWRfcHJlZml4ZXMYBCABKAQiVAoVRXh0ZXJuYWxOZXR3b3JrTWVtYmVyEhsKBnN3aXRjaBgBIAEoCUILukgIcgbAs66xAgESHgoFcG9ydHMYAiADKAlCD7pIDJIBCdCks7ECARCAECptCgdOQVRUeXBlEhgKFE5BVF9UWVBFX1VOU1BFQ0lGSUVEEAASGwoNTkFUX1RZUEVfTk9ORRABGgiCshkEbm9uZRIrChhOQVRfVFlQRV9JUFY0X01BU1FVRVJBREUQAhoNgrIZCWlwdjQtbWFzcSqtAgoLTmV0d29ya1R5cGUSHAoYTkVUV09SS19UWVBFX1VOU1BFQ0lGSUVEEAASJwoVTkVUV09SS19UWVBFX0VYVEVSTkFMEAEaDIKyGQhleHRlcm5hbBInChVORVRXT1JLX1RZUEVfVU5ERVJMQVkQAhoMgrIZCHVuZGVybGF5EiEKEk5FVFdPUktfVFlQRV9TVVBFUhADGgmCshkFc3VwZXISNwodTkVUV09SS19UWVBFX1NVUEVSX05BTUVTUEFDRUQQBBoUgrIZEHN1cGVyLW5hbWVzcGFjZWQSIQoSTkVUV09SS19UWVBFX0NISUxEEAUaCYKyGQVjaGlsZBIvChlORVRXT1JLX1RZUEVfQ0hJTERfU0hBUkVEEAYaEIKyGQxjaGlsZC1zaGFyZWQqxwEKFE5ldHdvcmtBZGRyZXNzRmFtaWx5EiYKIk5FVFdPUktfQUREUkVTU19GQU1JTFlfVU5TUEVDSUZJRUQQABInChlORVRXT1JLX0FERFJFU1NfRkFNSUxZX1Y0EAEaCIKyGQRpcHY0EicKGU5FVFdPUktfQUREUkVTU19GQU1JTFlfVjYQAhoIgrIZBGlwdjYSNQohTkVUV09SS19BRERSRVNTX0ZBTUlMWV9EVUFMX1NUQUNLEAMaDoKyGQpkdWFsLXN0YWNrMu0FCg5OZXR3b3JrU2VydmljZRJtCgNHZXQSKy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUdldFJlcXVlc3QaLC5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUdldFJlc3BvbnNlIgvK8xgDAQID4PMYAhJ1CgZDcmVhdGUSLi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUNyZWF0ZVJlcXVlc3QaLy5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlIgrK8xgCAQLg8xgBEnUKBlVwZGF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAEScAoETGlzdBIsLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlcXVlc3QaLS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RSZXNwb25zZSILyvMYAwECA+DzGAISlAEKEExpc3RCYXNlTmV0d29ya3MSOC5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0GjkubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VMaXN0QmFzZU5ldHdvcmtzUmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkRlbGV0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2UiCsrzGAIBAuDzGAFCwgEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkIMTmV0d29ya1Byb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("Ch9tZXRhbHN0YWNrL2FwaS92Mi9uZXR3b3JrLnByb3RvEhFtZXRhbHN0YWNrLmFwaS52MiJRChhOZXR3b3JrU2VydmljZUdldFJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhwKB3Byb2plY3QYAiABKAlCC7pICNgBAXIDsAEBIkgKGU5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsi3AMKG05ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBIZCgdwcm9qZWN0GAEgASgJQgi6SAVyA7ABARIeCgRuYW1lGAIgASgJQgu6SAhyBsCzrrECAUgAiAEBEiUKC2Rlc2NyaXB0aW9uGAMgASgJQgu6SAhyBsizrrECAUgBiAEBEiMKCXBhcnRpdGlvbhgEIAEoCUILukgIcgbQs66xAgFIAogBARIpCgZsYWJlbHMYBSABKAsyGS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMSKAoOcGFyZW50X25ldHdvcmsYBiABKAlCC7pICHIGwLOusQIBSAOIAQESOQoGbGVuZ3RoGAcgASgLMiQubWV0YWxzdGFjay5hcGkudjIuQ2hpbGRQcmVmaXhMZW5ndGhIBIgBARJOCg5hZGRyZXNzX2ZhbWlseRgIIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgFiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQhEKD19wYXJlbnRfbmV0d29ya0IJCgdfbGVuZ3RoQhEKD19hZGRyZXNzX2ZhbWlseSJLChxOZXR3b3JrU2VydmljZUNyZWF0ZVJlc3BvbnNlEisKB25ldHdvcmsYASABKAsyGi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrIq4CChtOZXR3b3JrU2VydmljZVVwZGF0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEjoKC3VwZGF0ZV9tZXRhGAIgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTWV0YUIGukgDyAEBEhkKB3Byb2plY3QYAyABKAlCCLpIBXIDsAEBEh4KBG5hbWUYBCABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBSAGIAQESNAoGbGFiZWxzGAYgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuVXBkYXRlTGFiZWxzSAKIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19sYWJlbHMiSwocTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZRIrCgduZXR3b3JrGAEgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJpChlOZXR3b3JrU2VydmljZUxpc3RSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IkoKGk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJ1CiVOZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXF1ZXN0EhwKB3Byb2plY3QYASABKAlCC7pICNgBAXIDsAEBEi4KBXF1ZXJ5GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1F1ZXJ5IlYKJk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1Jlc3BvbnNlEiwKCG5ldHdvcmtzGAEgAygLMhoubWV0YWxzdGFjay5hcGkudjIuTmV0d29yayJRChtOZXR3b3JrU2VydmljZURlbGV0ZVJlcXVlc3QSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEhkKB3Byb2plY3QYAiABKAlCCLpIBXIDsAEBIksKHE5ldHdvcmtTZXJ2aWNlRGVsZXRlUmVzcG9uc2USKwoHbmV0d29yaxgBIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmsizQYKB05ldHdvcmsSFwoCaWQYASABKAlCC7pICHIGwLOusQIBEiUKBG1ldGEYAiABKAsyFy5tZXRhbHN0YWNrLmFwaS52Mi5NZXRhEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESJQoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBSAGIAQESIwoJcGFydGl0aW9uGAUgASgJQgu6SAhyBtCzrrECAUgCiAEBEh4KB3Byb2plY3QYBiABKAlCCLpIBXIDsAEBSAOIAQESIAoJbmFtZXNwYWNlGAcgASgJQgi6SAVyA7ABAUgEiAEBEh4KCHByZWZpeGVzGAggAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCSADKAlCDLpICZIBBriks7ECARJJChtkZWZhdWx0X2NoaWxkX3ByZWZpeF9sZW5ndGgYCiABKAsyJC5tZXRhbHN0YWNrLmFwaS52Mi5DaGlsZFByZWZpeExlbmd0aBJFChdtaW5fY2hpbGRfcHJlZml4X2xlbmd0aBgLIAEoCzIkLm1ldGFsc3RhY2suYXBpLnYyLkNoaWxkUHJlZml4TGVuZ3RoEjYKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAESNgoIbmF0X3R5cGUYDSABKA4yGi5tZXRhbHN0YWNrLmFwaS52Mi5OQVRUeXBlQgi6SAWCAQIQARIQCgN2cmYYDiABKA1IBYgBARIoCg5wYXJlbnRfbmV0d29yaxgPIAEoCUILukgIcgbAs66xAgFIBogBARIyChxhZGRpdGlvbmFsX2Fubm91bmNhYmxlX2NpZHJzGBAgAygJQgy6SAmSAQa4pLOxAgESOgoLY29uc3VtcHRpb24YESABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrQ29uc3VtcHRpb25CBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9wYXJ0aXRpb25CCgoIX3Byb2plY3RCDAoKX25hbWVzcGFjZUIGCgRfdnJmQhEKD19wYXJlbnRfbmV0d29yayLzBQoMTmV0d29ya1F1ZXJ5EhwKAmlkGAEgASgJQgu6SAhyBsCzrrECAUgAiAEBEh4KBG5hbWUYAiABKAlCC7pICHIGwLOusQIBSAGIAQESJQoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBSAKIAQESIwoJcGFydGl0aW9uGAQgASgJQgu6SAhyBtCzrrECAUgDiAEBEh4KB3Byb2plY3QYBSABKAlCCLpIBXIDsAEBSASIAQESIAoJbmFtZXNwYWNlGAYgASgJQgi6SAVyA7ABAUgFiAEBEh4KCHByZWZpeGVzGAcgAygJQgy6SAmSAQa4pLOxAgESKgoUZGVzdGluYXRpb25fcHJlZml4ZXMYCCADKAlCDLpICZIBBriks7ECARIQCgN2cmYYCSABKA1IBogBARIoCg5wYXJlbnRfbmV0d29yaxgKIAEoCUILukgIcgbAs66xAgFIB4gBARJOCg5hZGRyZXNzX2ZhbWlseRgLIAEoDjInLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtBZGRyZXNzRmFtaWx5Qgi6SAWCAQIQAUgIiAEBEjsKBHR5cGUYDCABKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrVHlwZUIIukgFggECEAFICYgBARI7CghuYXRfdHlwZRgNIAEoDjIaLm1ldGFsc3RhY2suYXBpLnYyLk5BVFR5cGVCCLpIBYIBAhABSAqIAQESLgoGbGFiZWxzGA4gASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzSAuIAQFCBQoDX2lkQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfcGFydGl0aW9uQgoKCF9wcm9qZWN0QgwKCl9uYW1lc3BhY2VCBgoEX3ZyZkIRCg9fcGFyZW50X25ldHdvcmtCEQoPX2FkZHJlc3NfZmFtaWx5QgcKBV90eXBlQgsKCV9uYXRfdHlwZUIJCgdfbGFiZWxzImIKEUNoaWxkUHJlZml4TGVuZ3RoEhwKBGlwdjQYASABKA1CCbpIBioEGCAgAEgAiAEBEh0KBGlwdjYYAiABKA1CCrpIByoFGIABIABIAYgBAUIHCgVfaXB2NEIHCgVfaXB2NiJyChJOZXR3b3JrQ29uc3VtcHRpb24SLQoEaXB2NBgBIAEoCzIfLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtVc2FnZRItCgRpcHY2GAIgASgLMh8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1VzYWdlImoKDE5ldHdvcmtVc2FnZRIVCg1hdmFpbGFibGVfaXBzGAEgASgEEhAKCHVzZWRfaXBzGAIgASgEEhoKEmF2YWlsYWJsZV9wcmVmaXhlcxgDIAEoBBIVCg11c2VkX3ByZWZpeGVzGAQgASgEKm0KB05BVFR5cGUSGAoUTkFUX1RZUEVfVU5TUEVDSUZJRUQQABIbCg1OQVRfVFlQRV9OT05FEAEaCIKyGQRub25lEisKGE5BVF9UWVBFX0lQVjRfTUFTUVVFUkFERRACGg2CshkJaXB2NC1tYXNxKq0CCgtOZXR3b3JrVHlwZRIcChhORVRXT1JLX1RZUEVfVU5TUEVDSUZJRUQQABInChVORVRXT1JLX1RZUEVfRVhURVJOQUwQARoMgrIZCGV4dGVybmFsEicKFU5FVFdPUktfVFlQRV9VTkRFUkxBWRACGgyCshkIdW5kZXJsYXkSIQoSTkVUV09SS19UWVBFX1NVUEVSEAMaCYKyGQVzdXBlchI3Ch1ORVRXT1JLX1RZUEVfU1VQRVJfTkFNRVNQQUNFRBAEGhSCshkQc3VwZXItbmFtZXNwYWNlZBIhChJORVRXT1JLX1RZUEVfQ0hJTEQQBRoJgrIZBWNoaWxkEi8KGU5FVFdPUktfVFlQRV9DSElMRF9TSEFSRUQQBhoQgrIZDGNoaWxkLXNoYXJlZCrHAQoUTmV0d29ya0FkZHJlc3NGYW1pbHkSJgoiTkVUV09SS19BRERSRVNTX0ZBTUlMWV9VTlNQRUNJRklFRBAAEicKGU5FVFdPUktfQUREUkVTU19GQU1JTFlfVjQQARoIgrIZBGlwdjQSJwoZTkVUV09SS19BRERSRVNTX0ZBTUlMWV9WNhACGgiCshkEaXB2NhI1CiFORVRXT1JLX0FERFJFU1NfRkFNSUxZX0RVQUxfU1RBQ0sQAxoOgrIZCmR1YWwtc3RhY2sy7QUKDk5ldHdvcmtTZXJ2aWNlEm0KA0dldBIrLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVxdWVzdBosLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlR2V0UmVzcG9uc2UiC8rzGAMBAgPg8xgCEnUKBkNyZWF0ZRIuLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVxdWVzdBovLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlQ3JlYXRlUmVzcG9uc2UiCsrzGAIBAuDzGAESdQoGVXBkYXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VVcGRhdGVSZXNwb25zZSIKyvMYAgEC4PMYARJwCgRMaXN0EiwubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VMaXN0UmVxdWVzdBotLm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdFJlc3BvbnNlIgvK8xgDAQID4PMYAhKUAQoQTGlzdEJhc2VOZXR3b3JrcxI4Lm1ldGFsc3RhY2suYXBpLnYyLk5ldHdvcmtTZXJ2aWNlTGlzdEJhc2VOZXR3b3Jrc1JlcXVlc3QaOS5tZXRhbHN0YWNrLmFwaS52Mi5OZXR3b3JrU2VydmljZUxpc3RCYXNlTmV0d29ya3NSZXNwb25zZSILyvMYAwECA+DzGAISdQoGRGVsZXRlEi4ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VEZWxldGVSZXF1ZXN0Gi8ubWV0YWxzdGFjay5hcGkudjIuTmV0d29ya1NlcnZpY2VEZWxldGVSZXNwb25zZSIKyvMYAgEC4PMYAULCAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgxOZXR3b3JrUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_metalstack_api_v2_common, file_metalstack_api_v2_predefined_rules]);
/**
* NetworkServiceGetRequest.
@@ -626,41 +626,6 @@ 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;
-
- /**
- * Partition where the members of the network reside..
- *
- * @generated from field: optional string partition = 3;
- */
- partition?: 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.
*
@@ -687,7 +652,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, 15);
+ messageDesc(file_metalstack_api_v2_network, 14);
/**
* NetworkConsumption contains ip and prefix usage by addressfamily.
@@ -715,7 +680,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, 16);
+ messageDesc(file_metalstack_api_v2_network, 15);
/**
* NetworkUsage reports core metrics about available and used IPs or Prefixes in a Network.
@@ -757,35 +722,7 @@ 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, 17);
-
-/**
- * ExternalNetworkMember contains 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.ExternalNetworkMember
- */
-export type ExternalNetworkMember = Message<"metalstack.api.v2.ExternalNetworkMember"> & {
- /**
- * 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.ExternalNetworkMember.
- * Use `create(ExternalNetworkMemberSchema)` to create a new message.
- */
-export const ExternalNetworkMemberSchema: GenMessage = /*@__PURE__*/
- messageDesc(file_metalstack_api_v2_network, 18);
+ messageDesc(file_metalstack_api_v2_network, 16);
/**
* NATType defines how and if outgoing traffic is translated.
diff --git a/js/metalstack/api/v2/switch_pb.d.ts b/js/metalstack/api/v2/switch_pb.d.ts
index 431734cd..eee9ee26 100644
--- a/js/metalstack/api/v2/switch_pb.d.ts
+++ b/js/metalstack/api/v2/switch_pb.d.ts
@@ -188,6 +188,12 @@ export type SwitchNic = Message<"metalstack.api.v2.SwitchNic"> & {
* @generated from field: optional metalstack.api.v2.SwitchBGPPortState bgp_port_state = 7;
*/
bgpPortState?: SwitchBGPPortState | undefined;
+ /**
+ * Membership indicates whether the port is connected to an internal or external host.
+ *
+ * @generated from field: metalstack.api.v2.SwitchPortMembership membership = 8;
+ */
+ membership: SwitchPortMembership;
};
/**
* Describes the message metalstack.api.v2.SwitchNic.
@@ -227,9 +233,9 @@ export type SwitchBGPPortState = Message<"metalstack.api.v2.SwitchBGPPortState">
/**
* Neighbor of this port.
*
- * @generated from field: string neighbor = 1;
+ * @generated from field: optional string neighbor = 1;
*/
- neighbor: string;
+ neighbor?: string | undefined;
/**
* PeerGroup of this port.
*
@@ -488,6 +494,36 @@ export type SwitchNicWithMachine = Message<"metalstack.api.v2.SwitchNicWithMachi
* Use `create(SwitchNicWithMachineSchema)` to create a new message.
*/
export declare const SwitchNicWithMachineSchema: GenMessage;
+/**
+ * StaticPortConfig is a config that is statically applied to a port.
+ *
+ * @generated from message metalstack.api.v2.StaticPortConfig
+ */
+export type StaticPortConfig = Message<"metalstack.api.v2.StaticPortConfig"> & {
+ /**
+ * Status is the administrative status of the port.
+ *
+ * @generated from field: metalstack.api.v2.SwitchPortStatus status = 1;
+ */
+ status: SwitchPortStatus;
+ /**
+ * Membership specifies whether this port is connected to a registered machine or to an external host or if it is unmanaged.
+ *
+ * @generated from field: metalstack.api.v2.SwitchPortMembership membership = 2;
+ */
+ membership: SwitchPortMembership;
+ /**
+ * Network the port is a member of.
+ *
+ * @generated from field: optional string network = 3;
+ */
+ network?: string | undefined;
+};
+/**
+ * Describes the message metalstack.api.v2.StaticPortConfig.
+ * Use `create(StaticPortConfigSchema)` to create a new message.
+ */
+export declare const StaticPortConfigSchema: GenMessage;
/**
* BGPState represents the state of a BGP session.
*
@@ -634,3 +670,39 @@ export declare enum SwitchPortStatus {
* Describes the enum metalstack.api.v2.SwitchPortStatus.
*/
export declare const SwitchPortStatusSchema: GenEnum;
+/**
+ * SwitchPortMembership indicates whether a switch port is connected to an internal or an external host.
+ *
+ * @generated from enum metalstack.api.v2.SwitchPortMembership
+ */
+export declare enum SwitchPortMembership {
+ /**
+ * SWITCH_PORT_MEMBERSHIP_UNSPECIFIED is not specified.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+ /**
+ * SWITCH_PORT_MEMBERSHIP_UNMANAGED is a port that isn't connected to any host yet.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_UNMANAGED = 1;
+ */
+ UNMANAGED = 1,
+ /**
+ * SWITCH_PORT_MEMBERSHIP_INTERNAL is port that is connected to a host that is registered at the api, e.g. a registered machine.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_INTERNAL = 2;
+ */
+ INTERNAL = 2,
+ /**
+ * SWITCH_PORT_MEMBERSHIP_EXTERNAL is port that is connected to a host that is not registered at the api.
+ * This value allows connecting an external system to a network managed by us.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_EXTERNAL = 3;
+ */
+ EXTERNAL = 3
+}
+/**
+ * Describes the enum metalstack.api.v2.SwitchPortMembership.
+ */
+export declare const SwitchPortMembershipSchema: GenEnum;
diff --git a/js/metalstack/api/v2/switch_pb.js b/js/metalstack/api/v2/switch_pb.js
index 40304df4..f5cbeb47 100644
--- a/js/metalstack/api/v2/switch_pb.js
+++ b/js/metalstack/api/v2/switch_pb.js
@@ -10,7 +10,7 @@ import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
/**
* Describes the file metalstack/api/v2/switch.proto.
*/
-export const file_metalstack_api_v2_switch = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9zd2l0Y2gucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIsIFCgZTd2l0Y2gSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEh4KBHJhY2sYBCABKAlCC7pICHIGwLOusQIBSACIAQESHgoEcm9vbRgFIAEoCUILukgIcgbAs66xAgFIAYgBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEkQKDHJlcGxhY2VfbW9kZRgHIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQARIeCg1tYW5hZ2VtZW50X2lwGAggASgJQge6SARyAnABEigKD21hbmFnZW1lbnRfdXNlchgJIAEoCUIKukgHcgUQAhiAAUgCiAEBEigKD2NvbnNvbGVfY29tbWFuZBgKIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKBG5pY3MYCyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSJwoCb3MYDCABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPUxJBChNtYWNoaW5lX2Nvbm5lY3Rpb25zGA0gAygLMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNvbm5lY3Rpb24SMAoJbGFzdF9zeW5jGA4gASgLMh0ubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoU3luYxI2Cg9sYXN0X3N5bmNfZXJyb3IYDyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hTeW5jQgcKBV9yYWNrQgcKBV9yb29tQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZCKOAQoIU3dpdGNoT1MSOwoGdmVuZG9yGAEgASgOMiEubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NWZW5kb3JCCLpIBYIBAhABEhwKB3ZlcnNpb24YAiABKAlCC7pICHIGwLOusQIBEicKEm1ldGFsX2NvcmVfdmVyc2lvbhgDIAEoCUILukgIcgbAs66xAgEi5AIKCVN3aXRjaE5pYxIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIfCgppZGVudGlmaWVyGAIgASgJQgu6SAhyBsCzrrECARIUCgNtYWMYAyABKAlCAhgBSACIAQESHQoDdnJmGAQgASgJQgu6SAhyBsCzrrECAUgBiAEBEi8KBXN0YXRlGAUgASgLMhsubWV0YWxzdGFjay5hcGkudjIuTmljU3RhdGVIAogBARI1CgpiZ3BfZmlsdGVyGAYgASgLMhwubWV0YWxzdGFjay5hcGkudjIuQkdQRmlsdGVySAOIAQESQgoOYmdwX3BvcnRfc3RhdGUYByABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hCR1BQb3J0U3RhdGVIBIgBAUIGCgRfbWFjQgYKBF92cmZCCAoGX3N0YXRlQg0KC19iZ3BfZmlsdGVyQhEKD19iZ3BfcG9ydF9zdGF0ZSJHCglCR1BGaWx0ZXISGwoFY2lkcnMYASADKAlCDLpICZIBBriks7ECARIdCgR2bmlzGAIgAygJQg+6SAySAQkiB3IFEAIYgAEiqQIKElN3aXRjaEJHUFBvcnRTdGF0ZRIdCghuZWlnaGJvchgBIAEoCUILukgIcgbAs66xAgESHwoKcGVlcl9ncm91cBgCIAEoCUILukgIcgbAs66xAgESHQoIdnJmX25hbWUYAyABKAlCC7pICHIGwLOusQIBEjgKCWJncF9zdGF0ZRgEIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkJHUFN0YXRlQgi6SAWCAQIQARI8ChhiZ3BfdGltZXJfdXBfZXN0YWJsaXNoZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKE3NlbnRfcHJlZml4X2NvdW50ZXIYBiABKAQSHwoXYWNjZXB0ZWRfcHJlZml4X2NvdW50ZXIYByABKAQimgEKCE5pY1N0YXRlEkMKB2Rlc2lyZWQYASABKA4yIy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hQb3J0U3RhdHVzQgi6SAWCAQIQAUgAiAEBEj0KBmFjdHVhbBgCIAEoDjIjLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFBvcnRTdGF0dXNCCLpIBYIBAhABQgoKCF9kZXNpcmVkIlIKEU1hY2hpbmVDb25uZWN0aW9uEhIKCm1hY2hpbmVfaWQYASABKAkSKQoDbmljGAIgASgLMhwubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoTmljIrkCCgtTd2l0Y2hRdWVyeRIeCgJpZBgBIAEoCUINukgKcgjAs66xAgFoAUgAiAEBEiMKCXBhcnRpdGlvbhgCIAEoCUILukgIcgbQs66xAgFIAYgBARIeCgRyYWNrGAMgASgJQgu6SAhyBsCzrrECAUgCiAEBEh4KBHJvb20YBCABKAlCC7pICHIGwLOusQIBSAOIAQESMQoCb3MYBSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU1F1ZXJ5SASIAQESKwoUY29ubmVjdGVkX21hY2hpbmVfaWQYBiABKAlCCLpIBXIDsAEBSAWIAQFCBQoDX2lkQgwKCl9wYXJ0aXRpb25CBwoFX3JhY2tCBwoFX3Jvb21CBQoDX29zQhcKFV9jb25uZWN0ZWRfbWFjaGluZV9pZCKLAQoNU3dpdGNoT1NRdWVyeRJACgZ2ZW5kb3IYASABKA4yIS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU1ZlbmRvckIIukgFggECEAFIAIgBARIhCgd2ZXJzaW9uGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBQgkKB192ZW5kb3JCCgoIX3ZlcnNpb24igQEKClN3aXRjaFN5bmMSKAoEdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoIZHVyYXRpb24YAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SEgoFZXJyb3IYAyABKAlIAIgBAUIICgZfZXJyb3IifwoSU3dpdGNoV2l0aE1hY2hpbmVzEgoKAmlkGAEgASgJEhEKCXBhcnRpdGlvbhgCIAEoCRIMCgRyYWNrGAMgASgJEjwKC2Nvbm5lY3Rpb25zGAQgAygLMicubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoTmljV2l0aE1hY2hpbmUimgEKFFN3aXRjaE5pY1dpdGhNYWNoaW5lEikKA25pYxgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaE5pYxIrCgdtYWNoaW5lGAIgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZRIqCgNmcnUYAyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVKokCCghCR1BTdGF0ZRIZChVCR1BfU1RBVEVfVU5TUEVDSUZJRUQQABIcCg5CR1BfU1RBVEVfSURMRRABGgiCshkESWRsZRIiChFCR1BfU1RBVEVfQ09OTkVDVBACGguCshkHQ29ubmVjdBIgChBCR1BfU1RBVEVfQUNUSVZFEAMaCoKyGQZBY3RpdmUSJQoTQkdQX1NUQVRFX09QRU5fU0VOVBAEGgyCshkIT3BlblNlbnQSKwoWQkdQX1NUQVRFX09QRU5fQ09ORklSTRAFGg+CshkLT3BlbkNvbmZpcm0SKgoVQkdQX1NUQVRFX0VTVEFCTElTSEVEEAYaD4KyGQtFc3RhYmxpc2hlZCqiAQoRU3dpdGNoUmVwbGFjZU1vZGUSKQofU1dJVENIX1JFUExBQ0VfTU9ERV9VTlNQRUNJRklFRBAAGgSCshkAEiwKG1NXSVRDSF9SRVBMQUNFX01PREVfUkVQTEFDRRABGguCshkHcmVwbGFjZRI0Ch9TV0lUQ0hfUkVQTEFDRV9NT0RFX09QRVJBVElPTkFMEAIaD4KyGQtvcGVyYXRpb25hbCqEAQoOU3dpdGNoT1NWZW5kb3ISIAocU1dJVENIX09TX1ZFTkRPUl9VTlNQRUNJRklFRBAAEikKGFNXSVRDSF9PU19WRU5ET1JfQ1VNVUxVUxABGguCshkHQ3VtdWx1cxIlChZTV0lUQ0hfT1NfVkVORE9SX1NPTklDEAIaCYKyGQVTT05pQyqtAQoQU3dpdGNoUG9ydFN0YXR1cxIiCh5TV0lUQ0hfUE9SVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIhChVTV0lUQ0hfUE9SVF9TVEFUVVNfVVAQARoGgrIZAnVwEiUKF1NXSVRDSF9QT1JUX1NUQVRVU19ET1dOEAIaCIKyGQRkb3duEisKGlNXSVRDSF9QT1JUX1NUQVRVU19VTktOT1dOEAMaC4KyGQd1bmtub3duQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC1N3aXRjaFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules]);
+export const file_metalstack_api_v2_switch = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9zd2l0Y2gucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIsIFCgZTd2l0Y2gSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEh4KBHJhY2sYBCABKAlCC7pICHIGwLOusQIBSACIAQESHgoEcm9vbRgFIAEoCUILukgIcgbAs66xAgFIAYgBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEkQKDHJlcGxhY2VfbW9kZRgHIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQARIeCg1tYW5hZ2VtZW50X2lwGAggASgJQge6SARyAnABEigKD21hbmFnZW1lbnRfdXNlchgJIAEoCUIKukgHcgUQAhiAAUgCiAEBEigKD2NvbnNvbGVfY29tbWFuZBgKIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKBG5pY3MYCyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSJwoCb3MYDCABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPUxJBChNtYWNoaW5lX2Nvbm5lY3Rpb25zGA0gAygLMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNvbm5lY3Rpb24SMAoJbGFzdF9zeW5jGA4gASgLMh0ubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoU3luYxI2Cg9sYXN0X3N5bmNfZXJyb3IYDyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hTeW5jQgcKBV9yYWNrQgcKBV9yb29tQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZCKOAQoIU3dpdGNoT1MSOwoGdmVuZG9yGAEgASgOMiEubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NWZW5kb3JCCLpIBYIBAhABEhwKB3ZlcnNpb24YAiABKAlCC7pICHIGwLOusQIBEicKEm1ldGFsX2NvcmVfdmVyc2lvbhgDIAEoCUILukgIcgbAs66xAgEioQMKCVN3aXRjaE5pYxIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIfCgppZGVudGlmaWVyGAIgASgJQgu6SAhyBsCzrrECARIUCgNtYWMYAyABKAlCAhgBSACIAQESHQoDdnJmGAQgASgJQgu6SAhyBsCzrrECAUgBiAEBEi8KBXN0YXRlGAUgASgLMhsubWV0YWxzdGFjay5hcGkudjIuTmljU3RhdGVIAogBARI1CgpiZ3BfZmlsdGVyGAYgASgLMhwubWV0YWxzdGFjay5hcGkudjIuQkdQRmlsdGVySAOIAQESQgoOYmdwX3BvcnRfc3RhdGUYByABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hCR1BQb3J0U3RhdGVIBIgBARI7CgptZW1iZXJzaGlwGAggASgOMicubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydE1lbWJlcnNoaXBCBgoEX21hY0IGCgRfdnJmQggKBl9zdGF0ZUINCgtfYmdwX2ZpbHRlckIRCg9fYmdwX3BvcnRfc3RhdGUiRwoJQkdQRmlsdGVyEhsKBWNpZHJzGAEgAygJQgy6SAmSAQa4pLOxAgESHQoEdm5pcxgCIAMoCUIPukgMkgEJIgdyBRACGIABIrsCChJTd2l0Y2hCR1BQb3J0U3RhdGUSIgoIbmVpZ2hib3IYASABKAlCC7pICHIGwLOusQIBSACIAQESHwoKcGVlcl9ncm91cBgCIAEoCUILukgIcgbAs66xAgESHQoIdnJmX25hbWUYAyABKAlCC7pICHIGwLOusQIBEjgKCWJncF9zdGF0ZRgEIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkJHUFN0YXRlQgi6SAWCAQIQARI8ChhiZ3BfdGltZXJfdXBfZXN0YWJsaXNoZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKE3NlbnRfcHJlZml4X2NvdW50ZXIYBiABKAQSHwoXYWNjZXB0ZWRfcHJlZml4X2NvdW50ZXIYByABKARCCwoJX25laWdoYm9yIpoBCghOaWNTdGF0ZRJDCgdkZXNpcmVkGAEgASgOMiMubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydFN0YXR1c0IIukgFggECEAFIAIgBARI9CgZhY3R1YWwYAiABKA4yIy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hQb3J0U3RhdHVzQgi6SAWCAQIQAUIKCghfZGVzaXJlZCJSChFNYWNoaW5lQ29ubmVjdGlvbhISCgptYWNoaW5lX2lkGAEgASgJEikKA25pYxgCIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaE5pYyK5AgoLU3dpdGNoUXVlcnkSHgoCaWQYASABKAlCDbpICnIIwLOusQIBaAFIAIgBARIjCglwYXJ0aXRpb24YAiABKAlCC7pICHIG0LOusQIBSAGIAQESHgoEcmFjaxgDIAEoCUILukgIcgbAs66xAgFIAogBARIeCgRyb29tGAQgASgJQgu6SAhyBsCzrrECAUgDiAEBEjEKAm9zGAUgASgLMiAubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NRdWVyeUgEiAEBEisKFGNvbm5lY3RlZF9tYWNoaW5lX2lkGAYgASgJQgi6SAVyA7ABAUgFiAEBQgUKA19pZEIMCgpfcGFydGl0aW9uQgcKBV9yYWNrQgcKBV9yb29tQgUKA19vc0IXChVfY29ubmVjdGVkX21hY2hpbmVfaWQiiwEKDVN3aXRjaE9TUXVlcnkSQAoGdmVuZG9yGAEgASgOMiEubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NWZW5kb3JCCLpIBYIBAhABSACIAQESIQoHdmVyc2lvbhgCIAEoCUILukgIcgbAs66xAgFIAYgBAUIJCgdfdmVuZG9yQgoKCF92ZXJzaW9uIoEBCgpTd2l0Y2hTeW5jEigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKCGR1cmF0aW9uGAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEhIKBWVycm9yGAMgASgJSACIAQFCCAoGX2Vycm9yIn8KElN3aXRjaFdpdGhNYWNoaW5lcxIKCgJpZBgBIAEoCRIRCglwYXJ0aXRpb24YAiABKAkSDAoEcmFjaxgDIAEoCRI8Cgtjb25uZWN0aW9ucxgEIAMoCzInLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaE5pY1dpdGhNYWNoaW5lIpoBChRTd2l0Y2hOaWNXaXRoTWFjaGluZRIpCgNuaWMYASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSKwoHbWFjaGluZRgCIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmUSKgoDZnJ1GAMgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUZSVSKwAQoQU3RhdGljUG9ydENvbmZpZxI9CgZzdGF0dXMYASABKA4yIy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hQb3J0U3RhdHVzQgi6SAWCAQIQARI7CgptZW1iZXJzaGlwGAIgASgOMicubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydE1lbWJlcnNoaXASFAoHbmV0d29yaxgDIAEoCUgAiAEBQgoKCF9uZXR3b3JrKokCCghCR1BTdGF0ZRIZChVCR1BfU1RBVEVfVU5TUEVDSUZJRUQQABIcCg5CR1BfU1RBVEVfSURMRRABGgiCshkESWRsZRIiChFCR1BfU1RBVEVfQ09OTkVDVBACGguCshkHQ29ubmVjdBIgChBCR1BfU1RBVEVfQUNUSVZFEAMaCoKyGQZBY3RpdmUSJQoTQkdQX1NUQVRFX09QRU5fU0VOVBAEGgyCshkIT3BlblNlbnQSKwoWQkdQX1NUQVRFX09QRU5fQ09ORklSTRAFGg+CshkLT3BlbkNvbmZpcm0SKgoVQkdQX1NUQVRFX0VTVEFCTElTSEVEEAYaD4KyGQtFc3RhYmxpc2hlZCqiAQoRU3dpdGNoUmVwbGFjZU1vZGUSKQofU1dJVENIX1JFUExBQ0VfTU9ERV9VTlNQRUNJRklFRBAAGgSCshkAEiwKG1NXSVRDSF9SRVBMQUNFX01PREVfUkVQTEFDRRABGguCshkHcmVwbGFjZRI0Ch9TV0lUQ0hfUkVQTEFDRV9NT0RFX09QRVJBVElPTkFMEAIaD4KyGQtvcGVyYXRpb25hbCqEAQoOU3dpdGNoT1NWZW5kb3ISIAocU1dJVENIX09TX1ZFTkRPUl9VTlNQRUNJRklFRBAAEikKGFNXSVRDSF9PU19WRU5ET1JfQ1VNVUxVUxABGguCshkHQ3VtdWx1cxIlChZTV0lUQ0hfT1NfVkVORE9SX1NPTklDEAIaCYKyGQVTT05pQyqtAQoQU3dpdGNoUG9ydFN0YXR1cxIiCh5TV0lUQ0hfUE9SVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIhChVTV0lUQ0hfUE9SVF9TVEFUVVNfVVAQARoGgrIZAnVwEiUKF1NXSVRDSF9QT1JUX1NUQVRVU19ET1dOEAIaCIKyGQRkb3duEisKGlNXSVRDSF9QT1JUX1NUQVRVU19VTktOT1dOEAMaC4KyGQd1bmtub3duKtkBChRTd2l0Y2hQb3J0TWVtYmVyc2hpcBImCiJTV0lUQ0hfUE9SVF9NRU1CRVJTSElQX1VOU1BFQ0lGSUVEEAASMwogU1dJVENIX1BPUlRfTUVNQkVSU0hJUF9VTk1BTkFHRUQQARoNgrIZCXVubWFuYWdlZBIxCh9TV0lUQ0hfUE9SVF9NRU1CRVJTSElQX0lOVEVSTkFMEAIaDIKyGQhpbnRlcm5hbBIxCh9TV0lUQ0hfUE9SVF9NRU1CRVJTSElQX0VYVEVSTkFMEAMaDIKyGQhleHRlcm5hbELBAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgtTd2l0Y2hQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules]);
/**
* Describes the message metalstack.api.v2.Switch.
* Use `create(SwitchSchema)` to create a new message.
@@ -71,6 +71,11 @@ export const SwitchWithMachinesSchema = /*@__PURE__*/ messageDesc(file_metalstac
* Use `create(SwitchNicWithMachineSchema)` to create a new message.
*/
export const SwitchNicWithMachineSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_switch, 11);
+/**
+ * Describes the message metalstack.api.v2.StaticPortConfig.
+ * Use `create(StaticPortConfigSchema)` to create a new message.
+ */
+export const StaticPortConfigSchema = /*@__PURE__*/ messageDesc(file_metalstack_api_v2_switch, 12);
/**
* BGPState represents the state of a BGP session.
*
@@ -221,3 +226,40 @@ export var SwitchPortStatus;
* Describes the enum metalstack.api.v2.SwitchPortStatus.
*/
export const SwitchPortStatusSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_switch, 3);
+/**
+ * SwitchPortMembership indicates whether a switch port is connected to an internal or an external host.
+ *
+ * @generated from enum metalstack.api.v2.SwitchPortMembership
+ */
+export var SwitchPortMembership;
+(function (SwitchPortMembership) {
+ /**
+ * SWITCH_PORT_MEMBERSHIP_UNSPECIFIED is not specified.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_UNSPECIFIED = 0;
+ */
+ SwitchPortMembership[SwitchPortMembership["UNSPECIFIED"] = 0] = "UNSPECIFIED";
+ /**
+ * SWITCH_PORT_MEMBERSHIP_UNMANAGED is a port that isn't connected to any host yet.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_UNMANAGED = 1;
+ */
+ SwitchPortMembership[SwitchPortMembership["UNMANAGED"] = 1] = "UNMANAGED";
+ /**
+ * SWITCH_PORT_MEMBERSHIP_INTERNAL is port that is connected to a host that is registered at the api, e.g. a registered machine.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_INTERNAL = 2;
+ */
+ SwitchPortMembership[SwitchPortMembership["INTERNAL"] = 2] = "INTERNAL";
+ /**
+ * SWITCH_PORT_MEMBERSHIP_EXTERNAL is port that is connected to a host that is not registered at the api.
+ * This value allows connecting an external system to a network managed by us.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_EXTERNAL = 3;
+ */
+ SwitchPortMembership[SwitchPortMembership["EXTERNAL"] = 3] = "EXTERNAL";
+})(SwitchPortMembership || (SwitchPortMembership = {}));
+/**
+ * Describes the enum metalstack.api.v2.SwitchPortMembership.
+ */
+export const SwitchPortMembershipSchema = /*@__PURE__*/ enumDesc(file_metalstack_api_v2_switch, 4);
diff --git a/js/metalstack/api/v2/switch_pb.ts b/js/metalstack/api/v2/switch_pb.ts
index b94e93ac..44a7dfa2 100644
--- a/js/metalstack/api/v2/switch_pb.ts
+++ b/js/metalstack/api/v2/switch_pb.ts
@@ -18,7 +18,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/api/v2/switch.proto.
*/
export const file_metalstack_api_v2_switch: GenFile = /*@__PURE__*/
- fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9zd2l0Y2gucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIsIFCgZTd2l0Y2gSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEh4KBHJhY2sYBCABKAlCC7pICHIGwLOusQIBSACIAQESHgoEcm9vbRgFIAEoCUILukgIcgbAs66xAgFIAYgBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEkQKDHJlcGxhY2VfbW9kZRgHIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQARIeCg1tYW5hZ2VtZW50X2lwGAggASgJQge6SARyAnABEigKD21hbmFnZW1lbnRfdXNlchgJIAEoCUIKukgHcgUQAhiAAUgCiAEBEigKD2NvbnNvbGVfY29tbWFuZBgKIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKBG5pY3MYCyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSJwoCb3MYDCABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPUxJBChNtYWNoaW5lX2Nvbm5lY3Rpb25zGA0gAygLMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNvbm5lY3Rpb24SMAoJbGFzdF9zeW5jGA4gASgLMh0ubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoU3luYxI2Cg9sYXN0X3N5bmNfZXJyb3IYDyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hTeW5jQgcKBV9yYWNrQgcKBV9yb29tQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZCKOAQoIU3dpdGNoT1MSOwoGdmVuZG9yGAEgASgOMiEubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NWZW5kb3JCCLpIBYIBAhABEhwKB3ZlcnNpb24YAiABKAlCC7pICHIGwLOusQIBEicKEm1ldGFsX2NvcmVfdmVyc2lvbhgDIAEoCUILukgIcgbAs66xAgEi5AIKCVN3aXRjaE5pYxIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIfCgppZGVudGlmaWVyGAIgASgJQgu6SAhyBsCzrrECARIUCgNtYWMYAyABKAlCAhgBSACIAQESHQoDdnJmGAQgASgJQgu6SAhyBsCzrrECAUgBiAEBEi8KBXN0YXRlGAUgASgLMhsubWV0YWxzdGFjay5hcGkudjIuTmljU3RhdGVIAogBARI1CgpiZ3BfZmlsdGVyGAYgASgLMhwubWV0YWxzdGFjay5hcGkudjIuQkdQRmlsdGVySAOIAQESQgoOYmdwX3BvcnRfc3RhdGUYByABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hCR1BQb3J0U3RhdGVIBIgBAUIGCgRfbWFjQgYKBF92cmZCCAoGX3N0YXRlQg0KC19iZ3BfZmlsdGVyQhEKD19iZ3BfcG9ydF9zdGF0ZSJHCglCR1BGaWx0ZXISGwoFY2lkcnMYASADKAlCDLpICZIBBriks7ECARIdCgR2bmlzGAIgAygJQg+6SAySAQkiB3IFEAIYgAEiqQIKElN3aXRjaEJHUFBvcnRTdGF0ZRIdCghuZWlnaGJvchgBIAEoCUILukgIcgbAs66xAgESHwoKcGVlcl9ncm91cBgCIAEoCUILukgIcgbAs66xAgESHQoIdnJmX25hbWUYAyABKAlCC7pICHIGwLOusQIBEjgKCWJncF9zdGF0ZRgEIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkJHUFN0YXRlQgi6SAWCAQIQARI8ChhiZ3BfdGltZXJfdXBfZXN0YWJsaXNoZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKE3NlbnRfcHJlZml4X2NvdW50ZXIYBiABKAQSHwoXYWNjZXB0ZWRfcHJlZml4X2NvdW50ZXIYByABKAQimgEKCE5pY1N0YXRlEkMKB2Rlc2lyZWQYASABKA4yIy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hQb3J0U3RhdHVzQgi6SAWCAQIQAUgAiAEBEj0KBmFjdHVhbBgCIAEoDjIjLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFBvcnRTdGF0dXNCCLpIBYIBAhABQgoKCF9kZXNpcmVkIlIKEU1hY2hpbmVDb25uZWN0aW9uEhIKCm1hY2hpbmVfaWQYASABKAkSKQoDbmljGAIgASgLMhwubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoTmljIrkCCgtTd2l0Y2hRdWVyeRIeCgJpZBgBIAEoCUINukgKcgjAs66xAgFoAUgAiAEBEiMKCXBhcnRpdGlvbhgCIAEoCUILukgIcgbQs66xAgFIAYgBARIeCgRyYWNrGAMgASgJQgu6SAhyBsCzrrECAUgCiAEBEh4KBHJvb20YBCABKAlCC7pICHIGwLOusQIBSAOIAQESMQoCb3MYBSABKAsyIC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU1F1ZXJ5SASIAQESKwoUY29ubmVjdGVkX21hY2hpbmVfaWQYBiABKAlCCLpIBXIDsAEBSAWIAQFCBQoDX2lkQgwKCl9wYXJ0aXRpb25CBwoFX3JhY2tCBwoFX3Jvb21CBQoDX29zQhcKFV9jb25uZWN0ZWRfbWFjaGluZV9pZCKLAQoNU3dpdGNoT1NRdWVyeRJACgZ2ZW5kb3IYASABKA4yIS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPU1ZlbmRvckIIukgFggECEAFIAIgBARIhCgd2ZXJzaW9uGAIgASgJQgu6SAhyBsCzrrECAUgBiAEBQgkKB192ZW5kb3JCCgoIX3ZlcnNpb24igQEKClN3aXRjaFN5bmMSKAoEdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoIZHVyYXRpb24YAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SEgoFZXJyb3IYAyABKAlIAIgBAUIICgZfZXJyb3IifwoSU3dpdGNoV2l0aE1hY2hpbmVzEgoKAmlkGAEgASgJEhEKCXBhcnRpdGlvbhgCIAEoCRIMCgRyYWNrGAMgASgJEjwKC2Nvbm5lY3Rpb25zGAQgAygLMicubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoTmljV2l0aE1hY2hpbmUimgEKFFN3aXRjaE5pY1dpdGhNYWNoaW5lEikKA25pYxgBIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaE5pYxIrCgdtYWNoaW5lGAIgASgLMhoubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZRIqCgNmcnUYAyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lRlJVKokCCghCR1BTdGF0ZRIZChVCR1BfU1RBVEVfVU5TUEVDSUZJRUQQABIcCg5CR1BfU1RBVEVfSURMRRABGgiCshkESWRsZRIiChFCR1BfU1RBVEVfQ09OTkVDVBACGguCshkHQ29ubmVjdBIgChBCR1BfU1RBVEVfQUNUSVZFEAMaCoKyGQZBY3RpdmUSJQoTQkdQX1NUQVRFX09QRU5fU0VOVBAEGgyCshkIT3BlblNlbnQSKwoWQkdQX1NUQVRFX09QRU5fQ09ORklSTRAFGg+CshkLT3BlbkNvbmZpcm0SKgoVQkdQX1NUQVRFX0VTVEFCTElTSEVEEAYaD4KyGQtFc3RhYmxpc2hlZCqiAQoRU3dpdGNoUmVwbGFjZU1vZGUSKQofU1dJVENIX1JFUExBQ0VfTU9ERV9VTlNQRUNJRklFRBAAGgSCshkAEiwKG1NXSVRDSF9SRVBMQUNFX01PREVfUkVQTEFDRRABGguCshkHcmVwbGFjZRI0Ch9TV0lUQ0hfUkVQTEFDRV9NT0RFX09QRVJBVElPTkFMEAIaD4KyGQtvcGVyYXRpb25hbCqEAQoOU3dpdGNoT1NWZW5kb3ISIAocU1dJVENIX09TX1ZFTkRPUl9VTlNQRUNJRklFRBAAEikKGFNXSVRDSF9PU19WRU5ET1JfQ1VNVUxVUxABGguCshkHQ3VtdWx1cxIlChZTV0lUQ0hfT1NfVkVORE9SX1NPTklDEAIaCYKyGQVTT05pQyqtAQoQU3dpdGNoUG9ydFN0YXR1cxIiCh5TV0lUQ0hfUE9SVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIhChVTV0lUQ0hfUE9SVF9TVEFUVVNfVVAQARoGgrIZAnVwEiUKF1NXSVRDSF9QT1JUX1NUQVRVU19ET1dOEAIaCIKyGQRkb3duEisKGlNXSVRDSF9QT1JUX1NUQVRVU19VTktOT1dOEAMaC4KyGQd1bmtub3duQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC1N3aXRjaFByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9zd2l0Y2gucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIsIFCgZTd2l0Y2gSGQoCaWQYASABKAlCDbpICnIIwLOusQIBaAESJQoEbWV0YRgCIAEoCzIXLm1ldGFsc3RhY2suYXBpLnYyLk1ldGESIAoLZGVzY3JpcHRpb24YAyABKAlCC7pICHIGyLOusQIBEh4KBHJhY2sYBCABKAlCC7pICHIGwLOusQIBSACIAQESHgoEcm9vbRgFIAEoCUILukgIcgbAs66xAgFIAYgBARIeCglwYXJ0aXRpb24YBiABKAlCC7pICHIG0LOusQIBEkQKDHJlcGxhY2VfbW9kZRgHIAEoDjIkLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaFJlcGxhY2VNb2RlQgi6SAWCAQIQARIeCg1tYW5hZ2VtZW50X2lwGAggASgJQge6SARyAnABEigKD21hbmFnZW1lbnRfdXNlchgJIAEoCUIKukgHcgUQAhiAAUgCiAEBEigKD2NvbnNvbGVfY29tbWFuZBgKIAEoCUIKukgHcgUQAhiAAUgDiAEBEioKBG5pY3MYCyADKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSJwoCb3MYDCABKAsyGy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hPUxJBChNtYWNoaW5lX2Nvbm5lY3Rpb25zGA0gAygLMiQubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUNvbm5lY3Rpb24SMAoJbGFzdF9zeW5jGA4gASgLMh0ubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoU3luYxI2Cg9sYXN0X3N5bmNfZXJyb3IYDyABKAsyHS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hTeW5jQgcKBV9yYWNrQgcKBV9yb29tQhIKEF9tYW5hZ2VtZW50X3VzZXJCEgoQX2NvbnNvbGVfY29tbWFuZCKOAQoIU3dpdGNoT1MSOwoGdmVuZG9yGAEgASgOMiEubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NWZW5kb3JCCLpIBYIBAhABEhwKB3ZlcnNpb24YAiABKAlCC7pICHIGwLOusQIBEicKEm1ldGFsX2NvcmVfdmVyc2lvbhgDIAEoCUILukgIcgbAs66xAgEioQMKCVN3aXRjaE5pYxIZCgRuYW1lGAEgASgJQgu6SAhyBsCzrrECARIfCgppZGVudGlmaWVyGAIgASgJQgu6SAhyBsCzrrECARIUCgNtYWMYAyABKAlCAhgBSACIAQESHQoDdnJmGAQgASgJQgu6SAhyBsCzrrECAUgBiAEBEi8KBXN0YXRlGAUgASgLMhsubWV0YWxzdGFjay5hcGkudjIuTmljU3RhdGVIAogBARI1CgpiZ3BfZmlsdGVyGAYgASgLMhwubWV0YWxzdGFjay5hcGkudjIuQkdQRmlsdGVySAOIAQESQgoOYmdwX3BvcnRfc3RhdGUYByABKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hCR1BQb3J0U3RhdGVIBIgBARI7CgptZW1iZXJzaGlwGAggASgOMicubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydE1lbWJlcnNoaXBCBgoEX21hY0IGCgRfdnJmQggKBl9zdGF0ZUINCgtfYmdwX2ZpbHRlckIRCg9fYmdwX3BvcnRfc3RhdGUiRwoJQkdQRmlsdGVyEhsKBWNpZHJzGAEgAygJQgy6SAmSAQa4pLOxAgESHQoEdm5pcxgCIAMoCUIPukgMkgEJIgdyBRACGIABIrsCChJTd2l0Y2hCR1BQb3J0U3RhdGUSIgoIbmVpZ2hib3IYASABKAlCC7pICHIGwLOusQIBSACIAQESHwoKcGVlcl9ncm91cBgCIAEoCUILukgIcgbAs66xAgESHQoIdnJmX25hbWUYAyABKAlCC7pICHIGwLOusQIBEjgKCWJncF9zdGF0ZRgEIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkJHUFN0YXRlQgi6SAWCAQIQARI8ChhiZ3BfdGltZXJfdXBfZXN0YWJsaXNoZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKE3NlbnRfcHJlZml4X2NvdW50ZXIYBiABKAQSHwoXYWNjZXB0ZWRfcHJlZml4X2NvdW50ZXIYByABKARCCwoJX25laWdoYm9yIpoBCghOaWNTdGF0ZRJDCgdkZXNpcmVkGAEgASgOMiMubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydFN0YXR1c0IIukgFggECEAFIAIgBARI9CgZhY3R1YWwYAiABKA4yIy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hQb3J0U3RhdHVzQgi6SAWCAQIQAUIKCghfZGVzaXJlZCJSChFNYWNoaW5lQ29ubmVjdGlvbhISCgptYWNoaW5lX2lkGAEgASgJEikKA25pYxgCIAEoCzIcLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaE5pYyK5AgoLU3dpdGNoUXVlcnkSHgoCaWQYASABKAlCDbpICnIIwLOusQIBaAFIAIgBARIjCglwYXJ0aXRpb24YAiABKAlCC7pICHIG0LOusQIBSAGIAQESHgoEcmFjaxgDIAEoCUILukgIcgbAs66xAgFIAogBARIeCgRyb29tGAQgASgJQgu6SAhyBsCzrrECAUgDiAEBEjEKAm9zGAUgASgLMiAubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NRdWVyeUgEiAEBEisKFGNvbm5lY3RlZF9tYWNoaW5lX2lkGAYgASgJQgi6SAVyA7ABAUgFiAEBQgUKA19pZEIMCgpfcGFydGl0aW9uQgcKBV9yYWNrQgcKBV9yb29tQgUKA19vc0IXChVfY29ubmVjdGVkX21hY2hpbmVfaWQiiwEKDVN3aXRjaE9TUXVlcnkSQAoGdmVuZG9yGAEgASgOMiEubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoT1NWZW5kb3JCCLpIBYIBAhABSACIAQESIQoHdmVyc2lvbhgCIAEoCUILukgIcgbAs66xAgFIAYgBAUIJCgdfdmVuZG9yQgoKCF92ZXJzaW9uIoEBCgpTd2l0Y2hTeW5jEigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKCGR1cmF0aW9uGAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEhIKBWVycm9yGAMgASgJSACIAQFCCAoGX2Vycm9yIn8KElN3aXRjaFdpdGhNYWNoaW5lcxIKCgJpZBgBIAEoCRIRCglwYXJ0aXRpb24YAiABKAkSDAoEcmFjaxgDIAEoCRI8Cgtjb25uZWN0aW9ucxgEIAMoCzInLm1ldGFsc3RhY2suYXBpLnYyLlN3aXRjaE5pY1dpdGhNYWNoaW5lIpoBChRTd2l0Y2hOaWNXaXRoTWFjaGluZRIpCgNuaWMYASABKAsyHC5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hOaWMSKwoHbWFjaGluZRgCIAEoCzIaLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmUSKgoDZnJ1GAMgASgLMh0ubWV0YWxzdGFjay5hcGkudjIuTWFjaGluZUZSVSKwAQoQU3RhdGljUG9ydENvbmZpZxI9CgZzdGF0dXMYASABKA4yIy5tZXRhbHN0YWNrLmFwaS52Mi5Td2l0Y2hQb3J0U3RhdHVzQgi6SAWCAQIQARI7CgptZW1iZXJzaGlwGAIgASgOMicubWV0YWxzdGFjay5hcGkudjIuU3dpdGNoUG9ydE1lbWJlcnNoaXASFAoHbmV0d29yaxgDIAEoCUgAiAEBQgoKCF9uZXR3b3JrKokCCghCR1BTdGF0ZRIZChVCR1BfU1RBVEVfVU5TUEVDSUZJRUQQABIcCg5CR1BfU1RBVEVfSURMRRABGgiCshkESWRsZRIiChFCR1BfU1RBVEVfQ09OTkVDVBACGguCshkHQ29ubmVjdBIgChBCR1BfU1RBVEVfQUNUSVZFEAMaCoKyGQZBY3RpdmUSJQoTQkdQX1NUQVRFX09QRU5fU0VOVBAEGgyCshkIT3BlblNlbnQSKwoWQkdQX1NUQVRFX09QRU5fQ09ORklSTRAFGg+CshkLT3BlbkNvbmZpcm0SKgoVQkdQX1NUQVRFX0VTVEFCTElTSEVEEAYaD4KyGQtFc3RhYmxpc2hlZCqiAQoRU3dpdGNoUmVwbGFjZU1vZGUSKQofU1dJVENIX1JFUExBQ0VfTU9ERV9VTlNQRUNJRklFRBAAGgSCshkAEiwKG1NXSVRDSF9SRVBMQUNFX01PREVfUkVQTEFDRRABGguCshkHcmVwbGFjZRI0Ch9TV0lUQ0hfUkVQTEFDRV9NT0RFX09QRVJBVElPTkFMEAIaD4KyGQtvcGVyYXRpb25hbCqEAQoOU3dpdGNoT1NWZW5kb3ISIAocU1dJVENIX09TX1ZFTkRPUl9VTlNQRUNJRklFRBAAEikKGFNXSVRDSF9PU19WRU5ET1JfQ1VNVUxVUxABGguCshkHQ3VtdWx1cxIlChZTV0lUQ0hfT1NfVkVORE9SX1NPTklDEAIaCYKyGQVTT05pQyqtAQoQU3dpdGNoUG9ydFN0YXR1cxIiCh5TV0lUQ0hfUE9SVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIhChVTV0lUQ0hfUE9SVF9TVEFUVVNfVVAQARoGgrIZAnVwEiUKF1NXSVRDSF9QT1JUX1NUQVRVU19ET1dOEAIaCIKyGQRkb3duEisKGlNXSVRDSF9QT1JUX1NUQVRVU19VTktOT1dOEAMaC4KyGQd1bmtub3duKtkBChRTd2l0Y2hQb3J0TWVtYmVyc2hpcBImCiJTV0lUQ0hfUE9SVF9NRU1CRVJTSElQX1VOU1BFQ0lGSUVEEAASMwogU1dJVENIX1BPUlRfTUVNQkVSU0hJUF9VTk1BTkFHRUQQARoNgrIZCXVubWFuYWdlZBIxCh9TV0lUQ0hfUE9SVF9NRU1CRVJTSElQX0lOVEVSTkFMEAIaDIKyGQhpbnRlcm5hbBIxCh9TV0lUQ0hfUE9SVF9NRU1CRVJTSElQX0VYVEVSTkFMEAMaDIKyGQhleHRlcm5hbELBAQoVY29tLm1ldGFsc3RhY2suYXBpLnYyQgtTd2l0Y2hQcm90b1ABWjVnaXRodWIuY29tL21ldGFsLXN0YWNrL2FwaS9nby9tZXRhbHN0YWNrL2FwaS92MjthcGl2MqICA01BWKoCEU1ldGFsc3RhY2suQXBpLlYyygIRTWV0YWxzdGFja1xBcGlcVjLiAh1NZXRhbHN0YWNrXEFwaVxWMlxHUEJNZXRhZGF0YeoCE01ldGFsc3RhY2s6OkFwaTo6VjJiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_metalstack_api_v2_common, file_metalstack_api_v2_machine, file_metalstack_api_v2_predefined_rules]);
/**
* Switch represents a network switch.
@@ -229,6 +229,13 @@ export type SwitchNic = Message<"metalstack.api.v2.SwitchNic"> & {
* @generated from field: optional metalstack.api.v2.SwitchBGPPortState bgp_port_state = 7;
*/
bgpPortState?: SwitchBGPPortState | undefined;
+
+ /**
+ * Membership indicates whether the port is connected to an internal or external host.
+ *
+ * @generated from field: metalstack.api.v2.SwitchPortMembership membership = 8;
+ */
+ membership: SwitchPortMembership;
};
/**
@@ -275,9 +282,9 @@ export type SwitchBGPPortState = Message<"metalstack.api.v2.SwitchBGPPortState">
/**
* Neighbor of this port.
*
- * @generated from field: string neighbor = 1;
+ * @generated from field: optional string neighbor = 1;
*/
- neighbor: string;
+ neighbor?: string | undefined;
/**
* PeerGroup of this port.
@@ -581,6 +588,41 @@ export type SwitchNicWithMachine = Message<"metalstack.api.v2.SwitchNicWithMachi
export const SwitchNicWithMachineSchema: GenMessage = /*@__PURE__*/
messageDesc(file_metalstack_api_v2_switch, 11);
+/**
+ * StaticPortConfig is a config that is statically applied to a port.
+ *
+ * @generated from message metalstack.api.v2.StaticPortConfig
+ */
+export type StaticPortConfig = Message<"metalstack.api.v2.StaticPortConfig"> & {
+ /**
+ * Status is the administrative status of the port.
+ *
+ * @generated from field: metalstack.api.v2.SwitchPortStatus status = 1;
+ */
+ status: SwitchPortStatus;
+
+ /**
+ * Membership specifies whether this port is connected to a registered machine or to an external host or if it is unmanaged.
+ *
+ * @generated from field: metalstack.api.v2.SwitchPortMembership membership = 2;
+ */
+ membership: SwitchPortMembership;
+
+ /**
+ * Network the port is a member of.
+ *
+ * @generated from field: optional string network = 3;
+ */
+ network?: string | undefined;
+};
+
+/**
+ * Describes the message metalstack.api.v2.StaticPortConfig.
+ * Use `create(StaticPortConfigSchema)` to create a new message.
+ */
+export const StaticPortConfigSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_metalstack_api_v2_switch, 12);
+
/**
* BGPState represents the state of a BGP session.
*
@@ -752,3 +794,45 @@ export enum SwitchPortStatus {
export const SwitchPortStatusSchema: GenEnum = /*@__PURE__*/
enumDesc(file_metalstack_api_v2_switch, 3);
+/**
+ * SwitchPortMembership indicates whether a switch port is connected to an internal or an external host.
+ *
+ * @generated from enum metalstack.api.v2.SwitchPortMembership
+ */
+export enum SwitchPortMembership {
+ /**
+ * SWITCH_PORT_MEMBERSHIP_UNSPECIFIED is not specified.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_UNSPECIFIED = 0;
+ */
+ UNSPECIFIED = 0,
+
+ /**
+ * SWITCH_PORT_MEMBERSHIP_UNMANAGED is a port that isn't connected to any host yet.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_UNMANAGED = 1;
+ */
+ UNMANAGED = 1,
+
+ /**
+ * SWITCH_PORT_MEMBERSHIP_INTERNAL is port that is connected to a host that is registered at the api, e.g. a registered machine.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_INTERNAL = 2;
+ */
+ INTERNAL = 2,
+
+ /**
+ * SWITCH_PORT_MEMBERSHIP_EXTERNAL is port that is connected to a host that is not registered at the api.
+ * This value allows connecting an external system to a network managed by us.
+ *
+ * @generated from enum value: SWITCH_PORT_MEMBERSHIP_EXTERNAL = 3;
+ */
+ EXTERNAL = 3,
+}
+
+/**
+ * Describes the enum metalstack.api.v2.SwitchPortMembership.
+ */
+export const SwitchPortMembershipSchema: GenEnum = /*@__PURE__*/
+ enumDesc(file_metalstack_api_v2_switch, 4);
+
diff --git a/js/package.json b/js/package.json
index 4fd550a5..14e3bff7 100644
--- a/js/package.json
+++ b/js/package.json
@@ -20,5 +20,5 @@
"files": [
"./*"
],
- "version": "deprecate-switchnic-mac"
+ "version": "explicit-external-member-field"
}
diff --git a/proto/metalstack/admin/v2/network.proto b/proto/metalstack/admin/v2/network.proto
index 7f3b58af..c79bd313 100644
--- a/proto/metalstack/admin/v2/network.proto
+++ b/proto/metalstack/admin/v2/network.proto
@@ -6,7 +6,6 @@ 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 {
@@ -37,22 +36,6 @@ service NetworkService {
option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_VIEWER;
option (metalstack.api.v2.auditing) = AUDITING_EXCLUDED;
}
- // Lists external members of a network.
- rpc ListExternalMembers(NetworkServiceListExternalMembersRequest) returns (NetworkServiceListExternalMembersResponse) {
- option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR;
- option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_VIEWER;
- option (metalstack.api.v2.auditing) = AUDITING_EXCLUDED;
- }
- // Adds an external member to a network.
- rpc AddExternalMembers(NetworkServiceAddExternalMembersRequest) returns (NetworkServiceAddExternalMembersResponse) {
- option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR;
- option (metalstack.api.v2.auditing) = AUDITING_INCLUDED;
- }
- // Removes an external member from a network.
- rpc RemoveExternalMembers(NetworkServiceRemoveExternalMembersRequest) returns (NetworkServiceRemoveExternalMembersResponse) {
- 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.
@@ -146,40 +129,6 @@ message NetworkServiceListRequest {
metalstack.api.v2.NetworkQuery query = 1;
}
-// NetworkServiceListExternalMembersRequest is the request payload for listing external members of a network.
-message NetworkServiceListExternalMembersRequest {
- // 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 NetworkServiceAddExternalMembersRequest {
- // Network to add the member to.
- string network = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
- // Rack the members are connected to.
- string rack = 2 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
- // Ports of the switches to add to the network.
- repeated string ports = 3 [
- (buf.validate.field).repeated.max_items = 2048,
- (buf.validate.field).repeated.(metalstack.api.v2.all_trimmed) = true
- ];
-}
-
-// NetworkServiceRemoveExternalMemberRequest is the request payload for removing an external member from a network.
-message NetworkServiceRemoveExternalMembersRequest {
- // Network to remove the member from.
- string network = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
- // Rack the members are connected to.
- string rack = 2 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
- // Ports of the switches to remove from the network.
- repeated string ports = 3 [
- (buf.validate.field).repeated.max_items = 2048,
- (buf.validate.field).repeated.(metalstack.api.v2.all_trimmed) = true
- ];
-}
-
// NetworkServiceCreateResponse is the response payload for creating a network.
message NetworkServiceCreateResponse {
// Network contains the created network.
@@ -203,27 +152,3 @@ message NetworkServiceListResponse {
// Networks contains the list of networks.
repeated metalstack.api.v2.Network networks = 1;
}
-
-// NetworkServiceListExternalMembersResponse is the response payload for listing external members of a network.
-message NetworkServiceListExternalMembersResponse {
- // Network whose members are queried.
- string network = 1;
- // Members are the queried external members of the network.
- repeated metalstack.api.v2.ExternalNetworkMember members = 2;
-}
-
-// NetworkServiceAddExternalMemberResponse is the response payload for adding an external member to a network.
-message NetworkServiceAddExternalMembersResponse {
- // Network the members were added to.
- metalstack.api.v2.Network network = 1;
- // Switch contains the updated switches.
- repeated metalstack.api.v2.Switch switches = 2;
-}
-
-// NetworkServiceRemoveExternalMemberResponse is the response payload for removing an external member from a network.
-message NetworkServiceRemoveExternalMembersResponse {
- // Network the members were removed from.
- metalstack.api.v2.Network network = 1;
- // Switch contains the updated switches.
- repeated metalstack.api.v2.Switch switches = 2;
-}
diff --git a/proto/metalstack/admin/v2/switch.proto b/proto/metalstack/admin/v2/switch.proto
index 4d8edd63..58822aa4 100644
--- a/proto/metalstack/admin/v2/switch.proto
+++ b/proto/metalstack/admin/v2/switch.proto
@@ -38,7 +38,7 @@ service SwitchService {
option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR;
option (metalstack.api.v2.auditing) = AUDITING_INCLUDED;
}
- // Sets the port status of a switch port.
+ // Sets the port config of a switch port.
rpc Port(SwitchServicePortRequest) returns (SwitchServicePortResponse) {
option (metalstack.api.v2.admin_roles) = ADMIN_ROLE_EDITOR;
option (metalstack.api.v2.auditing) = AUDITING_INCLUDED;
@@ -149,22 +149,22 @@ message SwitchServiceMigrateResponse {
metalstack.api.v2.Switch switch = 1;
}
-// SwitchServicePortRequest is the request payload for setting the port status of a switch port.
+// SwitchServicePortRequest is the request payload for setting the port config of a switch port.
message SwitchServicePortRequest {
// Id of the switch.
string id = 1 [(buf.validate.field).string = {
hostname: true
[metalstack.api.v2.is_name]: true
}];
- // NicName of the port whose status should be changed.
+ // NicName of the affected port.
string nic_name = 2 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
- // Status that the port should have.
- metalstack.api.v2.SwitchPortStatus status = 3 [(buf.validate.field).enum.defined_only = true];
+ // Config is the desired port config.
+ metalstack.api.v2.StaticPortConfig config = 3;
}
-// SwitchServicePortResponse is the response payload for setting the port status of a switch port.
+// SwitchServicePortResponse is the response payload for setting the port config of a switch port.
message SwitchServicePortResponse {
- // Switch after the port status toggle.
+ // Switch after the update.
metalstack.api.v2.Switch switch = 1;
}
diff --git a/proto/metalstack/api/v2/network.proto b/proto/metalstack/api/v2/network.proto
index 05a86e29..80edf6b8 100644
--- a/proto/metalstack/api/v2/network.proto
+++ b/proto/metalstack/api/v2/network.proto
@@ -233,19 +233,6 @@ 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];
- // Partition where the members of the network reside..
- optional string partition = 3 [(buf.validate.field).string.(metalstack.api.v2.is_partition) = true];
-}
-
// ChildPrefixLength.
message ChildPrefixLength {
// IPv4 bit length of this network in this addressfamily.
@@ -280,17 +267,6 @@ message NetworkUsage {
uint64 used_prefixes = 4;
}
-// ExternalNetworkMember contains the ports of a switch that participate in a network and are connected to machines not known to metal-stack.
-message ExternalNetworkMember {
- // 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/proto/metalstack/api/v2/switch.proto b/proto/metalstack/api/v2/switch.proto
index 3217a4a6..948c9974 100644
--- a/proto/metalstack/api/v2/switch.proto
+++ b/proto/metalstack/api/v2/switch.proto
@@ -78,6 +78,8 @@ message SwitchNic {
optional BGPFilter bgp_filter = 6;
// BGPPortState represents the current BGP status of the port.
optional SwitchBGPPortState bgp_port_state = 7;
+ // Membership indicates whether the port is connected to an internal or external host.
+ SwitchPortMembership membership = 8;
}
// BGPFilter can be used to restrict BGP based on CIDRs and VNIs.
@@ -94,7 +96,7 @@ message BGPFilter {
// SwitchBGPPortState holds information about the BGP state of a port.
message SwitchBGPPortState {
// Neighbor of this port.
- string neighbor = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
+ optional string neighbor = 1 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
// PeerGroup of this port.
string peer_group = 2 [(buf.validate.field).string.(metalstack.api.v2.is_name) = true];
// VrfName of the VRF this port is bound to.
@@ -184,6 +186,16 @@ message SwitchNicWithMachine {
metalstack.api.v2.MachineFRU fru = 3;
}
+// StaticPortConfig is a config that is statically applied to a port.
+message StaticPortConfig {
+ // Status is the administrative status of the port.
+ SwitchPortStatus status = 1 [(buf.validate.field).enum.defined_only = true];
+ // Membership specifies whether this port is connected to a registered machine or to an external host or if it is unmanaged.
+ SwitchPortMembership membership = 2;
+ // Network the port is a member of.
+ optional string network = 3;
+}
+
// BGPState represents the state of a BGP session.
enum BGPState {
// BGP_STATE_UNSPECIFIED is not specified.
@@ -233,3 +245,16 @@ enum SwitchPortStatus {
// SWITCH_PORT_STATUS_UNKNOWN means the status of this port is unknown.
SWITCH_PORT_STATUS_UNKNOWN = 3 [(enum_string_value) = "unknown"];
}
+
+// SwitchPortMembership indicates whether a switch port is connected to an internal or an external host.
+enum SwitchPortMembership {
+ // SWITCH_PORT_MEMBERSHIP_UNSPECIFIED is not specified.
+ SWITCH_PORT_MEMBERSHIP_UNSPECIFIED = 0;
+ // SWITCH_PORT_MEMBERSHIP_UNMANAGED is a port that isn't connected to any host yet.
+ SWITCH_PORT_MEMBERSHIP_UNMANAGED = 1 [(enum_string_value) = "unmanaged"];
+ // SWITCH_PORT_MEMBERSHIP_INTERNAL is port that is connected to a host that is registered at the api, e.g. a registered machine.
+ SWITCH_PORT_MEMBERSHIP_INTERNAL = 2 [(enum_string_value) = "internal"];
+ // SWITCH_PORT_MEMBERSHIP_EXTERNAL is port that is connected to a host that is not registered at the api.
+ // This value allows connecting an external system to a network managed by us.
+ SWITCH_PORT_MEMBERSHIP_EXTERNAL = 3 [(enum_string_value) = "external"];
+}
diff --git a/python/metalstack/admin/v2/network_connect.py b/python/metalstack/admin/v2/network_connect.py
index 3666c6db..be2a73bf 100644
--- a/python/metalstack/admin/v2/network_connect.py
+++ b/python/metalstack/admin/v2/network_connect.py
@@ -33,15 +33,6 @@ 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 list_external_members(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse:
- raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
-
- async def add_external_members(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersResponse:
- raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
-
- async def remove_external_members(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersResponse:
- 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:
@@ -98,36 +89,6 @@ def __init__(self, service: NetworkService | AsyncGenerator[NetworkService], *,
),
function=svc.list,
),
- "/metalstack.admin.v2.NetworkService/ListExternalMembers": Endpoint.unary(
- method=MethodInfo(
- name="ListExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse,
- idempotency_level=IdempotencyLevel.UNKNOWN,
- ),
- function=svc.list_external_members,
- ),
- "/metalstack.admin.v2.NetworkService/AddExternalMembers": Endpoint.unary(
- method=MethodInfo(
- name="AddExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersResponse,
- idempotency_level=IdempotencyLevel.UNKNOWN,
- ),
- function=svc.add_external_members,
- ),
- "/metalstack.admin.v2.NetworkService/RemoveExternalMembers": Endpoint.unary(
- method=MethodInfo(
- name="RemoveExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersResponse,
- idempotency_level=IdempotencyLevel.UNKNOWN,
- ),
- function=svc.remove_external_members,
- ),
},
interceptors=interceptors,
read_max_bytes=read_max_bytes,
@@ -242,66 +203,6 @@ async def list(
timeout_ms=timeout_ms,
)
- async def list_external_members(
- self,
- request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
- *,
- headers: Headers | Mapping[str, str] | None = None,
- timeout_ms: int | None = None,
- ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse:
- return await self.execute_unary(
- request=request,
- method=MethodInfo(
- name="ListExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse,
- idempotency_level=IdempotencyLevel.UNKNOWN,
- ),
- headers=headers,
- timeout_ms=timeout_ms,
- )
-
- async def add_external_members(
- self,
- request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersRequest,
- *,
- headers: Headers | Mapping[str, str] | None = None,
- timeout_ms: int | None = None,
- ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersResponse:
- return await self.execute_unary(
- request=request,
- method=MethodInfo(
- name="AddExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersResponse,
- idempotency_level=IdempotencyLevel.UNKNOWN,
- ),
- headers=headers,
- timeout_ms=timeout_ms,
- )
-
- async def remove_external_members(
- self,
- request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersRequest,
- *,
- headers: Headers | Mapping[str, str] | None = None,
- timeout_ms: int | None = None,
- ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersResponse:
- return await self.execute_unary(
- request=request,
- method=MethodInfo(
- name="RemoveExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersResponse,
- idempotency_level=IdempotencyLevel.UNKNOWN,
- ),
- headers=headers,
- timeout_ms=timeout_ms,
- )
-
@@ -317,12 +218,6 @@ 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 list_external_members(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse:
- raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
- def add_external_members(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersResponse:
- raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
- def remove_external_members(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersResponse:
- raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
class NetworkServiceWSGIApplication(ConnectWSGIApplication):
@@ -379,36 +274,6 @@ def __init__(self, service: NetworkServiceSync, interceptors: Iterable[Intercept
),
function=service.list,
),
- "/metalstack.admin.v2.NetworkService/ListExternalMembers": EndpointSync.unary(
- method=MethodInfo(
- name="ListExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse,
- idempotency_level=IdempotencyLevel.UNKNOWN,
- ),
- function=service.list_external_members,
- ),
- "/metalstack.admin.v2.NetworkService/AddExternalMembers": EndpointSync.unary(
- method=MethodInfo(
- name="AddExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersResponse,
- idempotency_level=IdempotencyLevel.UNKNOWN,
- ),
- function=service.add_external_members,
- ),
- "/metalstack.admin.v2.NetworkService/RemoveExternalMembers": EndpointSync.unary(
- method=MethodInfo(
- name="RemoveExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersResponse,
- idempotency_level=IdempotencyLevel.UNKNOWN,
- ),
- function=service.remove_external_members,
- ),
},
interceptors=interceptors,
read_max_bytes=read_max_bytes,
@@ -523,64 +388,4 @@ def list(
timeout_ms=timeout_ms,
)
- def list_external_members(
- self,
- request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
- *,
- headers: Headers | Mapping[str, str] | None = None,
- timeout_ms: int | None = None,
- ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse:
- return self.execute_unary(
- request=request,
- method=MethodInfo(
- name="ListExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse,
- idempotency_level=IdempotencyLevel.UNKNOWN,
- ),
- headers=headers,
- timeout_ms=timeout_ms,
- )
-
- def add_external_members(
- self,
- request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersRequest,
- *,
- headers: Headers | Mapping[str, str] | None = None,
- timeout_ms: int | None = None,
- ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersResponse:
- return self.execute_unary(
- request=request,
- method=MethodInfo(
- name="AddExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMembersResponse,
- idempotency_level=IdempotencyLevel.UNKNOWN,
- ),
- headers=headers,
- timeout_ms=timeout_ms,
- )
-
- def remove_external_members(
- self,
- request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersRequest,
- *,
- headers: Headers | Mapping[str, str] | None = None,
- timeout_ms: int | None = None,
- ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersResponse:
- return self.execute_unary(
- request=request,
- method=MethodInfo(
- name="RemoveExternalMembers",
- service_name="metalstack.admin.v2.NetworkService",
- input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersRequest,
- output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMembersResponse,
- 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 26ce531d..b79a7c4f 100644
--- a/python/metalstack/admin/v2/network_pb2.py
+++ b/python/metalstack/admin/v2/network_pb2.py
@@ -26,10 +26,9 @@
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\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\"\x96\x01\n(NetworkServiceListExternalMembersRequest\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\"\x98\x01\n\'NetworkServiceAddExternalMembersRequest\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12\x1f\n\x04rack\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04rack\x12%\n\x05ports\x18\x03 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x80\x10\xd0\xa4\xb3\xb1\x02\x01R\x05ports\"\x9b\x01\n*NetworkServiceRemoveExternalMembersRequest\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12\x1f\n\x04rack\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04rack\x12%\n\x05ports\x18\x03 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x80\x10\xd0\xa4\xb3\xb1\x02\x01R\x05ports\"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\"\x89\x01\n)NetworkServiceListExternalMembersResponse\x12\x18\n\x07network\x18\x01 \x01(\tR\x07network\x12\x42\n\x07members\x18\x02 \x03(\x0b\x32(.metalstack.api.v2.ExternalNetworkMemberR\x07members\"\x97\x01\n(NetworkServiceAddExternalMembersResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\x12\x35\n\x08switches\x18\x02 \x03(\x0b\x32\x19.metalstack.api.v2.SwitchR\x08switches\"\x9a\x01\n+NetworkServiceRemoveExternalMembersResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\x12\x35\n\x08switches\x18\x02 \x03(\x0b\x32\x19.metalstack.api.v2.SwitchR\x08switches2\xcf\x08\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\xa0\x01\n\x13ListExternalMembers\x12=.metalstack.admin.v2.NetworkServiceListExternalMembersRequest\x1a>.metalstack.admin.v2.NetworkServiceListExternalMembersResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\x9c\x01\n\x12\x41\x64\x64\x45xternalMembers\x12<.metalstack.admin.v2.NetworkServiceAddExternalMembersRequest\x1a=.metalstack.admin.v2.NetworkServiceAddExternalMembersResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\xa5\x01\n\x15RemoveExternalMembers\x12?.metalstack.admin.v2.NetworkServiceRemoveExternalMembersRequest\x1a@.metalstack.admin.v2.NetworkServiceRemoveExternalMembersResponse\"\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')
+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')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -81,20 +80,6 @@
_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['_NETWORKSERVICELISTEXTERNALMEMBERSREQUEST'].fields_by_name['network']._loaded_options = None
- _globals['_NETWORKSERVICELISTEXTERNALMEMBERSREQUEST'].fields_by_name['network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
- _globals['_NETWORKSERVICEADDEXTERNALMEMBERSREQUEST'].fields_by_name['network']._loaded_options = None
- _globals['_NETWORKSERVICEADDEXTERNALMEMBERSREQUEST'].fields_by_name['network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
- _globals['_NETWORKSERVICEADDEXTERNALMEMBERSREQUEST'].fields_by_name['rack']._loaded_options = None
- _globals['_NETWORKSERVICEADDEXTERNALMEMBERSREQUEST'].fields_by_name['rack']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
- _globals['_NETWORKSERVICEADDEXTERNALMEMBERSREQUEST'].fields_by_name['ports']._loaded_options = None
- _globals['_NETWORKSERVICEADDEXTERNALMEMBERSREQUEST'].fields_by_name['ports']._serialized_options = b'\272H\014\222\001\t\020\200\020\320\244\263\261\002\001'
- _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERSREQUEST'].fields_by_name['network']._loaded_options = None
- _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERSREQUEST'].fields_by_name['network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
- _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERSREQUEST'].fields_by_name['rack']._loaded_options = None
- _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERSREQUEST'].fields_by_name['rack']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
- _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERSREQUEST'].fields_by_name['ports']._loaded_options = None
- _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERSREQUEST'].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'\322\363\030\002\001\002\340\363\030\002'
_globals['_NETWORKSERVICE'].methods_by_name['Create']._loaded_options = None
@@ -105,44 +90,26 @@
_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['_NETWORKSERVICE'].methods_by_name['ListExternalMembers']._loaded_options = None
- _globals['_NETWORKSERVICE'].methods_by_name['ListExternalMembers']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002'
- _globals['_NETWORKSERVICE'].methods_by_name['AddExternalMembers']._loaded_options = None
- _globals['_NETWORKSERVICE'].methods_by_name['AddExternalMembers']._serialized_options = b'\322\363\030\001\001\340\363\030\001'
- _globals['_NETWORKSERVICE'].methods_by_name['RemoveExternalMembers']._loaded_options = None
- _globals['_NETWORKSERVICE'].methods_by_name['RemoveExternalMembers']._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['_NETWORKSERVICELISTEXTERNALMEMBERSREQUEST']._serialized_start=2583
- _globals['_NETWORKSERVICELISTEXTERNALMEMBERSREQUEST']._serialized_end=2733
- _globals['_NETWORKSERVICEADDEXTERNALMEMBERSREQUEST']._serialized_start=2736
- _globals['_NETWORKSERVICEADDEXTERNALMEMBERSREQUEST']._serialized_end=2888
- _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERSREQUEST']._serialized_start=2891
- _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERSREQUEST']._serialized_end=3046
- _globals['_NETWORKSERVICECREATERESPONSE']._serialized_start=3048
- _globals['_NETWORKSERVICECREATERESPONSE']._serialized_end=3132
- _globals['_NETWORKSERVICEUPDATERESPONSE']._serialized_start=3134
- _globals['_NETWORKSERVICEUPDATERESPONSE']._serialized_end=3218
- _globals['_NETWORKSERVICEDELETERESPONSE']._serialized_start=3220
- _globals['_NETWORKSERVICEDELETERESPONSE']._serialized_end=3304
- _globals['_NETWORKSERVICELISTRESPONSE']._serialized_start=3306
- _globals['_NETWORKSERVICELISTRESPONSE']._serialized_end=3390
- _globals['_NETWORKSERVICELISTEXTERNALMEMBERSRESPONSE']._serialized_start=3393
- _globals['_NETWORKSERVICELISTEXTERNALMEMBERSRESPONSE']._serialized_end=3530
- _globals['_NETWORKSERVICEADDEXTERNALMEMBERSRESPONSE']._serialized_start=3533
- _globals['_NETWORKSERVICEADDEXTERNALMEMBERSRESPONSE']._serialized_end=3684
- _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERSRESPONSE']._serialized_start=3687
- _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERSRESPONSE']._serialized_end=3841
- _globals['_NETWORKSERVICE']._serialized_start=3844
- _globals['_NETWORKSERVICE']._serialized_end=4947
+ _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
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/admin/v2/network_pb2.pyi b/python/metalstack/admin/v2/network_pb2.pyi
index 0dc93b49..85ccd36e 100644
--- a/python/metalstack/admin/v2/network_pb2.pyi
+++ b/python/metalstack/admin/v2/network_pb2.pyi
@@ -2,7 +2,6 @@ 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
@@ -101,34 +100,6 @@ class NetworkServiceListRequest(_message.Message):
query: _network_pb2.NetworkQuery
def __init__(self, query: _Optional[_Union[_network_pb2.NetworkQuery, _Mapping]] = ...) -> None: ...
-class NetworkServiceListExternalMembersRequest(_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 NetworkServiceAddExternalMembersRequest(_message.Message):
- __slots__ = ("network", "rack", "ports")
- NETWORK_FIELD_NUMBER: _ClassVar[int]
- RACK_FIELD_NUMBER: _ClassVar[int]
- PORTS_FIELD_NUMBER: _ClassVar[int]
- network: str
- rack: str
- ports: _containers.RepeatedScalarFieldContainer[str]
- def __init__(self, network: _Optional[str] = ..., rack: _Optional[str] = ..., ports: _Optional[_Iterable[str]] = ...) -> None: ...
-
-class NetworkServiceRemoveExternalMembersRequest(_message.Message):
- __slots__ = ("network", "rack", "ports")
- NETWORK_FIELD_NUMBER: _ClassVar[int]
- RACK_FIELD_NUMBER: _ClassVar[int]
- PORTS_FIELD_NUMBER: _ClassVar[int]
- network: str
- rack: str
- ports: _containers.RepeatedScalarFieldContainer[str]
- def __init__(self, network: _Optional[str] = ..., rack: _Optional[str] = ..., ports: _Optional[_Iterable[str]] = ...) -> None: ...
-
class NetworkServiceCreateResponse(_message.Message):
__slots__ = ("network",)
NETWORK_FIELD_NUMBER: _ClassVar[int]
@@ -152,27 +123,3 @@ 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 NetworkServiceListExternalMembersResponse(_message.Message):
- __slots__ = ("network", "members")
- NETWORK_FIELD_NUMBER: _ClassVar[int]
- MEMBERS_FIELD_NUMBER: _ClassVar[int]
- network: str
- members: _containers.RepeatedCompositeFieldContainer[_network_pb2.ExternalNetworkMember]
- def __init__(self, network: _Optional[str] = ..., members: _Optional[_Iterable[_Union[_network_pb2.ExternalNetworkMember, _Mapping]]] = ...) -> None: ...
-
-class NetworkServiceAddExternalMembersResponse(_message.Message):
- __slots__ = ("network", "switches")
- NETWORK_FIELD_NUMBER: _ClassVar[int]
- SWITCHES_FIELD_NUMBER: _ClassVar[int]
- network: _network_pb2.Network
- switches: _containers.RepeatedCompositeFieldContainer[_switch_pb2.Switch]
- def __init__(self, network: _Optional[_Union[_network_pb2.Network, _Mapping]] = ..., switches: _Optional[_Iterable[_Union[_switch_pb2.Switch, _Mapping]]] = ...) -> None: ...
-
-class NetworkServiceRemoveExternalMembersResponse(_message.Message):
- __slots__ = ("network", "switches")
- NETWORK_FIELD_NUMBER: _ClassVar[int]
- SWITCHES_FIELD_NUMBER: _ClassVar[int]
- network: _network_pb2.Network
- switches: _containers.RepeatedCompositeFieldContainer[_switch_pb2.Switch]
- def __init__(self, network: _Optional[_Union[_network_pb2.Network, _Mapping]] = ..., switches: _Optional[_Iterable[_Union[_switch_pb2.Switch, _Mapping]]] = ...) -> None: ...
diff --git a/python/metalstack/admin/v2/switch_pb2.py b/python/metalstack/admin/v2/switch_pb2.py
index 36f51994..3756ce71 100644
--- a/python/metalstack/admin/v2/switch_pb2.py
+++ b/python/metalstack/admin/v2/switch_pb2.py
@@ -30,7 +30,7 @@
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/switch.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/machine.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/switch.proto\"8\n\x17SwitchServiceGetRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\"M\n\x18SwitchServiceGetResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"P\n\x18SwitchServiceListRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.SwitchQueryR\x05query\"R\n\x19SwitchServiceListResponse\x12\x35\n\x08switches\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.SwitchR\x08switches\"\xb9\x05\n\x1aSwitchServiceUpdateRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\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\x39\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12V\n\x0creplace_mode\x18\x05 \x01(\x0e\x32$.metalstack.api.v2.SwitchReplaceModeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\x0breplaceMode\x88\x01\x01\x12\x31\n\rmanagement_ip\x18\x06 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x02R\x0cmanagementIp\x88\x01\x01\x12\x39\n\x0fmanagement_user\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\x0emanagementUser\x88\x01\x01\x12\x39\n\x0f\x63onsole_command\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x04R\x0e\x63onsoleCommand\x88\x01\x01\x12\x30\n\x04nics\x18\t \x03(\x0b\x32\x1c.metalstack.api.v2.SwitchNicR\x04nics\x12\x30\n\x02os\x18\n \x01(\x0b\x32\x1b.metalstack.api.v2.SwitchOSH\x05R\x02os\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0f\n\r_replace_modeB\x10\n\x0e_management_ipB\x12\n\x10_management_userB\x12\n\x10_console_commandB\x05\n\x03_os\"P\n\x1bSwitchServiceUpdateResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"Q\n\x1aSwitchServiceDeleteRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\x12\x14\n\x05\x66orce\x18\x02 \x01(\x08R\x05\x66orce\"P\n\x1bSwitchServiceDeleteResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"y\n\x1bSwitchServiceMigrateRequest\x12,\n\nold_switch\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\toldSwitch\x12,\n\nnew_switch\x18\x02 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\tnewSwitch\"Q\n\x1cSwitchServiceMigrateResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"\xa8\x01\n\x18SwitchServicePortRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\x12&\n\x08nic_name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07nicName\x12\x45\n\x06status\x18\x03 \x01(\x0e\x32#.metalstack.api.v2.SwitchPortStatusB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06status\"N\n\x19SwitchServicePortResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"\xa3\x01\n%SwitchServiceConnectedMachinesRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.SwitchQueryR\x05query\x12\x44\n\rmachine_query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.MachineQueryR\x0cmachineQuery\"\x85\x01\n&SwitchServiceConnectedMachinesResponse\x12[\n\x16switches_with_machines\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.SwitchWithMachinesR\x14switchesWithMachines2\xea\x06\n\rSwitchService\x12n\n\x03Get\x12,.metalstack.admin.v2.SwitchServiceGetRequest\x1a-.metalstack.admin.v2.SwitchServiceGetResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12q\n\x04List\x12-.metalstack.admin.v2.SwitchServiceListRequest\x1a..metalstack.admin.v2.SwitchServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12v\n\x06Update\x12/.metalstack.admin.v2.SwitchServiceUpdateRequest\x1a\x30.metalstack.admin.v2.SwitchServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12v\n\x06\x44\x65lete\x12/.metalstack.admin.v2.SwitchServiceDeleteRequest\x1a\x30.metalstack.admin.v2.SwitchServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12y\n\x07Migrate\x12\x30.metalstack.admin.v2.SwitchServiceMigrateRequest\x1a\x31.metalstack.admin.v2.SwitchServiceMigrateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12p\n\x04Port\x12-.metalstack.admin.v2.SwitchServicePortRequest\x1a..metalstack.admin.v2.SwitchServicePortResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x98\x01\n\x11\x43onnectedMachines\x12:.metalstack.admin.v2.SwitchServiceConnectedMachinesRequest\x1a;.metalstack.admin.v2.SwitchServiceConnectedMachinesResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xcf\x01\n\x17\x63om.metalstack.admin.v2B\x0bSwitchProtoP\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/switch.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/machine.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/switch.proto\"8\n\x17SwitchServiceGetRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\"M\n\x18SwitchServiceGetResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"P\n\x18SwitchServiceListRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.SwitchQueryR\x05query\"R\n\x19SwitchServiceListResponse\x12\x35\n\x08switches\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.SwitchR\x08switches\"\xb9\x05\n\x1aSwitchServiceUpdateRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\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\x39\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12V\n\x0creplace_mode\x18\x05 \x01(\x0e\x32$.metalstack.api.v2.SwitchReplaceModeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\x0breplaceMode\x88\x01\x01\x12\x31\n\rmanagement_ip\x18\x06 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x02R\x0cmanagementIp\x88\x01\x01\x12\x39\n\x0fmanagement_user\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\x0emanagementUser\x88\x01\x01\x12\x39\n\x0f\x63onsole_command\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x04R\x0e\x63onsoleCommand\x88\x01\x01\x12\x30\n\x04nics\x18\t \x03(\x0b\x32\x1c.metalstack.api.v2.SwitchNicR\x04nics\x12\x30\n\x02os\x18\n \x01(\x0b\x32\x1b.metalstack.api.v2.SwitchOSH\x05R\x02os\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0f\n\r_replace_modeB\x10\n\x0e_management_ipB\x12\n\x10_management_userB\x12\n\x10_console_commandB\x05\n\x03_os\"P\n\x1bSwitchServiceUpdateResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"Q\n\x1aSwitchServiceDeleteRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\x12\x14\n\x05\x66orce\x18\x02 \x01(\x08R\x05\x66orce\"P\n\x1bSwitchServiceDeleteResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"y\n\x1bSwitchServiceMigrateRequest\x12,\n\nold_switch\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\toldSwitch\x12,\n\nnew_switch\x18\x02 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\tnewSwitch\"Q\n\x1cSwitchServiceMigrateResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"\x9e\x01\n\x18SwitchServicePortRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\x12&\n\x08nic_name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07nicName\x12;\n\x06\x63onfig\x18\x03 \x01(\x0b\x32#.metalstack.api.v2.StaticPortConfigR\x06\x63onfig\"N\n\x19SwitchServicePortResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"\xa3\x01\n%SwitchServiceConnectedMachinesRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.SwitchQueryR\x05query\x12\x44\n\rmachine_query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.MachineQueryR\x0cmachineQuery\"\x85\x01\n&SwitchServiceConnectedMachinesResponse\x12[\n\x16switches_with_machines\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.SwitchWithMachinesR\x14switchesWithMachines2\xea\x06\n\rSwitchService\x12n\n\x03Get\x12,.metalstack.admin.v2.SwitchServiceGetRequest\x1a-.metalstack.admin.v2.SwitchServiceGetResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12q\n\x04List\x12-.metalstack.admin.v2.SwitchServiceListRequest\x1a..metalstack.admin.v2.SwitchServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12v\n\x06Update\x12/.metalstack.admin.v2.SwitchServiceUpdateRequest\x1a\x30.metalstack.admin.v2.SwitchServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12v\n\x06\x44\x65lete\x12/.metalstack.admin.v2.SwitchServiceDeleteRequest\x1a\x30.metalstack.admin.v2.SwitchServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12y\n\x07Migrate\x12\x30.metalstack.admin.v2.SwitchServiceMigrateRequest\x1a\x31.metalstack.admin.v2.SwitchServiceMigrateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12p\n\x04Port\x12-.metalstack.admin.v2.SwitchServicePortRequest\x1a..metalstack.admin.v2.SwitchServicePortResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x98\x01\n\x11\x43onnectedMachines\x12:.metalstack.admin.v2.SwitchServiceConnectedMachinesRequest\x1a;.metalstack.admin.v2.SwitchServiceConnectedMachinesResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xcf\x01\n\x17\x63om.metalstack.admin.v2B\x0bSwitchProtoP\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)
@@ -64,8 +64,6 @@
_globals['_SWITCHSERVICEPORTREQUEST'].fields_by_name['id']._serialized_options = b'\272H\nr\010h\001\300\263\256\261\002\001'
_globals['_SWITCHSERVICEPORTREQUEST'].fields_by_name['nic_name']._loaded_options = None
_globals['_SWITCHSERVICEPORTREQUEST'].fields_by_name['nic_name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
- _globals['_SWITCHSERVICEPORTREQUEST'].fields_by_name['status']._loaded_options = None
- _globals['_SWITCHSERVICEPORTREQUEST'].fields_by_name['status']._serialized_options = b'\272H\005\202\001\002\020\001'
_globals['_SWITCHSERVICE'].methods_by_name['Get']._loaded_options = None
_globals['_SWITCHSERVICE'].methods_by_name['Get']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002'
_globals['_SWITCHSERVICE'].methods_by_name['List']._loaded_options = None
@@ -101,13 +99,13 @@
_globals['_SWITCHSERVICEMIGRATERESPONSE']._serialized_start=1631
_globals['_SWITCHSERVICEMIGRATERESPONSE']._serialized_end=1712
_globals['_SWITCHSERVICEPORTREQUEST']._serialized_start=1715
- _globals['_SWITCHSERVICEPORTREQUEST']._serialized_end=1883
- _globals['_SWITCHSERVICEPORTRESPONSE']._serialized_start=1885
- _globals['_SWITCHSERVICEPORTRESPONSE']._serialized_end=1963
- _globals['_SWITCHSERVICECONNECTEDMACHINESREQUEST']._serialized_start=1966
- _globals['_SWITCHSERVICECONNECTEDMACHINESREQUEST']._serialized_end=2129
- _globals['_SWITCHSERVICECONNECTEDMACHINESRESPONSE']._serialized_start=2132
- _globals['_SWITCHSERVICECONNECTEDMACHINESRESPONSE']._serialized_end=2265
- _globals['_SWITCHSERVICE']._serialized_start=2268
- _globals['_SWITCHSERVICE']._serialized_end=3142
+ _globals['_SWITCHSERVICEPORTREQUEST']._serialized_end=1873
+ _globals['_SWITCHSERVICEPORTRESPONSE']._serialized_start=1875
+ _globals['_SWITCHSERVICEPORTRESPONSE']._serialized_end=1953
+ _globals['_SWITCHSERVICECONNECTEDMACHINESREQUEST']._serialized_start=1956
+ _globals['_SWITCHSERVICECONNECTEDMACHINESREQUEST']._serialized_end=2119
+ _globals['_SWITCHSERVICECONNECTEDMACHINESRESPONSE']._serialized_start=2122
+ _globals['_SWITCHSERVICECONNECTEDMACHINESRESPONSE']._serialized_end=2255
+ _globals['_SWITCHSERVICE']._serialized_start=2258
+ _globals['_SWITCHSERVICE']._serialized_end=3132
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/admin/v2/switch_pb2.pyi b/python/metalstack/admin/v2/switch_pb2.pyi
index 3fe369a6..e48d6174 100644
--- a/python/metalstack/admin/v2/switch_pb2.pyi
+++ b/python/metalstack/admin/v2/switch_pb2.pyi
@@ -97,14 +97,14 @@ class SwitchServiceMigrateResponse(_message.Message):
def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
class SwitchServicePortRequest(_message.Message):
- __slots__ = ("id", "nic_name", "status")
+ __slots__ = ("id", "nic_name", "config")
ID_FIELD_NUMBER: _ClassVar[int]
NIC_NAME_FIELD_NUMBER: _ClassVar[int]
- STATUS_FIELD_NUMBER: _ClassVar[int]
+ CONFIG_FIELD_NUMBER: _ClassVar[int]
id: str
nic_name: str
- status: _switch_pb2.SwitchPortStatus
- def __init__(self, id: _Optional[str] = ..., nic_name: _Optional[str] = ..., status: _Optional[_Union[_switch_pb2.SwitchPortStatus, str]] = ...) -> None: ...
+ config: _switch_pb2.StaticPortConfig
+ def __init__(self, id: _Optional[str] = ..., nic_name: _Optional[str] = ..., config: _Optional[_Union[_switch_pb2.StaticPortConfig, _Mapping]] = ...) -> None: ...
class SwitchServicePortResponse(_message.Message):
__slots__ = ("switch",)
diff --git a/python/metalstack/api/v2/network_pb2.py b/python/metalstack/api/v2/network_pb2.py
index 598ae26e..40c40586 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\"\xc0\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\x12.\n\tpartition\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x02R\tpartition\x88\x01\x01\x42\t\n\x07_switchB\x07\n\x05_rackB\x0c\n\n_partition\"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\"c\n\x15\x45xternalNetworkMember\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')
+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')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -139,20 +139,10 @@
_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['_EXTERNALNETWORKMEMBERQUERY'].fields_by_name['partition']._loaded_options = None
- _globals['_EXTERNALNETWORKMEMBERQUERY'].fields_by_name['partition']._serialized_options = b'\272H\010r\006\320\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['_EXTERNALNETWORKMEMBER'].fields_by_name['switch']._loaded_options = None
- _globals['_EXTERNALNETWORKMEMBER'].fields_by_name['switch']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
- _globals['_EXTERNALNETWORKMEMBER'].fields_by_name['ports']._loaded_options = None
- _globals['_EXTERNALNETWORKMEMBER'].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
@@ -165,12 +155,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=4719
- _globals['_NATTYPE']._serialized_end=4828
- _globals['_NETWORKTYPE']._serialized_start=4831
- _globals['_NETWORKTYPE']._serialized_end=5132
- _globals['_NETWORKADDRESSFAMILY']._serialized_start=5135
- _globals['_NETWORKADDRESSFAMILY']._serialized_end=5334
+ _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['_NETWORKSERVICEGETREQUEST']._serialized_start=157
_globals['_NETWORKSERVICEGETREQUEST']._serialized_end=251
_globals['_NETWORKSERVICEGETRESPONSE']._serialized_start=253
@@ -199,16 +189,12 @@
_globals['_NETWORK']._serialized_end=3115
_globals['_NETWORKQUERY']._serialized_start=3118
_globals['_NETWORKQUERY']._serialized_end=4016
- _globals['_EXTERNALNETWORKMEMBERQUERY']._serialized_start=4019
- _globals['_EXTERNALNETWORKMEMBERQUERY']._serialized_end=4211
- _globals['_CHILDPREFIXLENGTH']._serialized_start=4213
- _globals['_CHILDPREFIXLENGTH']._serialized_end=4323
- _globals['_NETWORKCONSUMPTION']._serialized_start=4325
- _globals['_NETWORKCONSUMPTION']._serialized_end=4451
- _globals['_NETWORKUSAGE']._serialized_start=4454
- _globals['_NETWORKUSAGE']._serialized_end=4616
- _globals['_EXTERNALNETWORKMEMBER']._serialized_start=4618
- _globals['_EXTERNALNETWORKMEMBER']._serialized_end=4717
- _globals['_NETWORKSERVICE']._serialized_start=5337
- _globals['_NETWORKSERVICE']._serialized_end=6086
+ _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
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/network_pb2.pyi b/python/metalstack/api/v2/network_pb2.pyi
index bd760212..10502757 100644
--- a/python/metalstack/api/v2/network_pb2.pyi
+++ b/python/metalstack/api/v2/network_pb2.pyi
@@ -221,16 +221,6 @@ 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", "partition")
- SWITCH_FIELD_NUMBER: _ClassVar[int]
- RACK_FIELD_NUMBER: _ClassVar[int]
- PARTITION_FIELD_NUMBER: _ClassVar[int]
- switch: str
- rack: str
- partition: str
- def __init__(self, switch: _Optional[str] = ..., rack: _Optional[str] = ..., partition: _Optional[str] = ...) -> None: ...
-
class ChildPrefixLength(_message.Message):
__slots__ = ("ipv4", "ipv6")
IPV4_FIELD_NUMBER: _ClassVar[int]
@@ -258,11 +248,3 @@ 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 ExternalNetworkMember(_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: ...
diff --git a/python/metalstack/api/v2/switch_pb2.py b/python/metalstack/api/v2/switch_pb2.py
index b9d5c109..35f7649d 100644
--- a/python/metalstack/api/v2/switch_pb2.py
+++ b/python/metalstack/api/v2/switch_pb2.py
@@ -30,7 +30,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\x1emetalstack/api/v2/switch.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/machine.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xe2\x06\n\x06Switch\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12$\n\x04rack\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04rack\x88\x01\x01\x12$\n\x04room\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04room\x88\x01\x01\x12)\n\tpartition\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\x12Q\n\x0creplace_mode\x18\x07 \x01(\x0e\x32$.metalstack.api.v2.SwitchReplaceModeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0breplaceMode\x12,\n\rmanagement_ip\x18\x08 \x01(\tB\x07\xbaH\x04r\x02p\x01R\x0cmanagementIp\x12\x38\n\x0fmanagement_user\x18\t \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\x0emanagementUser\x88\x01\x01\x12\x38\n\x0f\x63onsole_command\x18\n \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x0e\x63onsoleCommand\x88\x01\x01\x12\x30\n\x04nics\x18\x0b \x03(\x0b\x32\x1c.metalstack.api.v2.SwitchNicR\x04nics\x12+\n\x02os\x18\x0c \x01(\x0b\x32\x1b.metalstack.api.v2.SwitchOSR\x02os\x12U\n\x13machine_connections\x18\r \x03(\x0b\x32$.metalstack.api.v2.MachineConnectionR\x12machineConnections\x12:\n\tlast_sync\x18\x0e \x01(\x0b\x32\x1d.metalstack.api.v2.SwitchSyncR\x08lastSync\x12\x45\n\x0flast_sync_error\x18\x0f \x01(\x0b\x32\x1d.metalstack.api.v2.SwitchSyncR\rlastSyncErrorB\x07\n\x05_rackB\x07\n\x05_roomB\x12\n\x10_management_userB\x12\n\x10_console_command\"\xb1\x01\n\x08SwitchOS\x12\x43\n\x06vendor\x18\x01 \x01(\x0e\x32!.metalstack.api.v2.SwitchOSVendorB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06vendor\x12%\n\x07version\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07version\x12\x39\n\x12metal_core_version\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x10metalCoreVersion\"\xa0\x03\n\tSwitchNic\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12+\n\nidentifier\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\nidentifier\x12\x19\n\x03mac\x18\x03 \x01(\tB\x02\x18\x01H\x00R\x03mac\x88\x01\x01\x12\"\n\x03vrf\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x03vrf\x88\x01\x01\x12\x36\n\x05state\x18\x05 \x01(\x0b\x32\x1b.metalstack.api.v2.NicStateH\x02R\x05state\x88\x01\x01\x12@\n\nbgp_filter\x18\x06 \x01(\x0b\x32\x1c.metalstack.api.v2.BGPFilterH\x03R\tbgpFilter\x88\x01\x01\x12P\n\x0e\x62gp_port_state\x18\x07 \x01(\x0b\x32%.metalstack.api.v2.SwitchBGPPortStateH\x04R\x0c\x62gpPortState\x88\x01\x01\x42\x06\n\x04_macB\x06\n\x04_vrfB\x08\n\x06_stateB\r\n\x0b_bgp_filterB\x11\n\x0f_bgp_port_state\"T\n\tBGPFilter\x12\"\n\x05\x63idrs\x18\x01 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x05\x63idrs\x12#\n\x04vnis\x18\x02 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\"\x07r\x05\x10\x02\x18\x80\x01R\x04vnis\"\x92\x03\n\x12SwitchBGPPortState\x12\'\n\x08neighbor\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x08neighbor\x12*\n\npeer_group\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\tpeerGroup\x12&\n\x08vrf_name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07vrfName\x12\x42\n\tbgp_state\x18\x04 \x01(\x0e\x32\x1b.metalstack.api.v2.BGPStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08\x62gpState\x12S\n\x18\x62gp_timer_up_established\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x15\x62gpTimerUpEstablished\x12.\n\x13sent_prefix_counter\x18\x06 \x01(\x04R\x11sentPrefixCounter\x12\x36\n\x17\x61\x63\x63\x65pted_prefix_counter\x18\x07 \x01(\x04R\x15\x61\x63\x63\x65ptedPrefixCounter\"\xab\x01\n\x08NicState\x12L\n\x07\x64\x65sired\x18\x01 \x01(\x0e\x32#.metalstack.api.v2.SwitchPortStatusB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\x07\x64\x65sired\x88\x01\x01\x12\x45\n\x06\x61\x63tual\x18\x02 \x01(\x0e\x32#.metalstack.api.v2.SwitchPortStatusB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06\x61\x63tualB\n\n\x08_desired\"b\n\x11MachineConnection\x12\x1d\n\nmachine_id\x18\x01 \x01(\tR\tmachineId\x12.\n\x03nic\x18\x02 \x01(\x0b\x32\x1c.metalstack.api.v2.SwitchNicR\x03nic\"\xec\x02\n\x0bSwitchQuery\x12\"\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01H\x00R\x02id\x88\x01\x01\x12.\n\tpartition\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x01R\tpartition\x88\x01\x01\x12$\n\x04rack\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x02R\x04rack\x88\x01\x01\x12$\n\x04room\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\x04room\x88\x01\x01\x12\x35\n\x02os\x18\x05 \x01(\x0b\x32 .metalstack.api.v2.SwitchOSQueryH\x04R\x02os\x88\x01\x01\x12?\n\x14\x63onnected_machine_id\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x05R\x12\x63onnectedMachineId\x88\x01\x01\x42\x05\n\x03_idB\x0c\n\n_partitionB\x07\n\x05_rackB\x07\n\x05_roomB\x05\n\x03_osB\x17\n\x15_connected_machine_id\"\x9c\x01\n\rSwitchOSQuery\x12H\n\x06vendor\x18\x01 \x01(\x0e\x32!.metalstack.api.v2.SwitchOSVendorB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\x06vendor\x88\x01\x01\x12*\n\x07version\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x07version\x88\x01\x01\x42\t\n\x07_vendorB\n\n\x08_version\"\x98\x01\n\nSwitchSync\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x35\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x19\n\x05\x65rror\x18\x03 \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error\"\xa1\x01\n\x12SwitchWithMachines\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1c\n\tpartition\x18\x02 \x01(\tR\tpartition\x12\x12\n\x04rack\x18\x03 \x01(\tR\x04rack\x12I\n\x0b\x63onnections\x18\x04 \x03(\x0b\x32\'.metalstack.api.v2.SwitchNicWithMachineR\x0b\x63onnections\"\xad\x01\n\x14SwitchNicWithMachine\x12.\n\x03nic\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.SwitchNicR\x03nic\x12\x34\n\x07machine\x18\x02 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\x12/\n\x03\x66ru\x18\x03 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineFRUR\x03\x66ru*\x89\x02\n\x08\x42GPState\x12\x19\n\x15\x42GP_STATE_UNSPECIFIED\x10\x00\x12\x1c\n\x0e\x42GP_STATE_IDLE\x10\x01\x1a\x08\x82\xb2\x19\x04Idle\x12\"\n\x11\x42GP_STATE_CONNECT\x10\x02\x1a\x0b\x82\xb2\x19\x07\x43onnect\x12 \n\x10\x42GP_STATE_ACTIVE\x10\x03\x1a\n\x82\xb2\x19\x06\x41\x63tive\x12%\n\x13\x42GP_STATE_OPEN_SENT\x10\x04\x1a\x0c\x82\xb2\x19\x08OpenSent\x12+\n\x16\x42GP_STATE_OPEN_CONFIRM\x10\x05\x1a\x0f\x82\xb2\x19\x0bOpenConfirm\x12*\n\x15\x42GP_STATE_ESTABLISHED\x10\x06\x1a\x0f\x82\xb2\x19\x0b\x45stablished*\xa2\x01\n\x11SwitchReplaceMode\x12)\n\x1fSWITCH_REPLACE_MODE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12,\n\x1bSWITCH_REPLACE_MODE_REPLACE\x10\x01\x1a\x0b\x82\xb2\x19\x07replace\x12\x34\n\x1fSWITCH_REPLACE_MODE_OPERATIONAL\x10\x02\x1a\x0f\x82\xb2\x19\x0boperational*\x84\x01\n\x0eSwitchOSVendor\x12 \n\x1cSWITCH_OS_VENDOR_UNSPECIFIED\x10\x00\x12)\n\x18SWITCH_OS_VENDOR_CUMULUS\x10\x01\x1a\x0b\x82\xb2\x19\x07\x43umulus\x12%\n\x16SWITCH_OS_VENDOR_SONIC\x10\x02\x1a\t\x82\xb2\x19\x05SONiC*\xad\x01\n\x10SwitchPortStatus\x12\"\n\x1eSWITCH_PORT_STATUS_UNSPECIFIED\x10\x00\x12!\n\x15SWITCH_PORT_STATUS_UP\x10\x01\x1a\x06\x82\xb2\x19\x02up\x12%\n\x17SWITCH_PORT_STATUS_DOWN\x10\x02\x1a\x08\x82\xb2\x19\x04\x64own\x12+\n\x1aSWITCH_PORT_STATUS_UNKNOWN\x10\x03\x1a\x0b\x82\xb2\x19\x07unknownB\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0bSwitchProtoP\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\x1emetalstack/api/v2/switch.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/machine.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xe2\x06\n\x06Switch\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12$\n\x04rack\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04rack\x88\x01\x01\x12$\n\x04room\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04room\x88\x01\x01\x12)\n\tpartition\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01R\tpartition\x12Q\n\x0creplace_mode\x18\x07 \x01(\x0e\x32$.metalstack.api.v2.SwitchReplaceModeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0breplaceMode\x12,\n\rmanagement_ip\x18\x08 \x01(\tB\x07\xbaH\x04r\x02p\x01R\x0cmanagementIp\x12\x38\n\x0fmanagement_user\x18\t \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\x0emanagementUser\x88\x01\x01\x12\x38\n\x0f\x63onsole_command\x18\n \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x03R\x0e\x63onsoleCommand\x88\x01\x01\x12\x30\n\x04nics\x18\x0b \x03(\x0b\x32\x1c.metalstack.api.v2.SwitchNicR\x04nics\x12+\n\x02os\x18\x0c \x01(\x0b\x32\x1b.metalstack.api.v2.SwitchOSR\x02os\x12U\n\x13machine_connections\x18\r \x03(\x0b\x32$.metalstack.api.v2.MachineConnectionR\x12machineConnections\x12:\n\tlast_sync\x18\x0e \x01(\x0b\x32\x1d.metalstack.api.v2.SwitchSyncR\x08lastSync\x12\x45\n\x0flast_sync_error\x18\x0f \x01(\x0b\x32\x1d.metalstack.api.v2.SwitchSyncR\rlastSyncErrorB\x07\n\x05_rackB\x07\n\x05_roomB\x12\n\x10_management_userB\x12\n\x10_console_command\"\xb1\x01\n\x08SwitchOS\x12\x43\n\x06vendor\x18\x01 \x01(\x0e\x32!.metalstack.api.v2.SwitchOSVendorB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06vendor\x12%\n\x07version\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07version\x12\x39\n\x12metal_core_version\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x10metalCoreVersion\"\xe9\x03\n\tSwitchNic\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12+\n\nidentifier\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\nidentifier\x12\x19\n\x03mac\x18\x03 \x01(\tB\x02\x18\x01H\x00R\x03mac\x88\x01\x01\x12\"\n\x03vrf\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x03vrf\x88\x01\x01\x12\x36\n\x05state\x18\x05 \x01(\x0b\x32\x1b.metalstack.api.v2.NicStateH\x02R\x05state\x88\x01\x01\x12@\n\nbgp_filter\x18\x06 \x01(\x0b\x32\x1c.metalstack.api.v2.BGPFilterH\x03R\tbgpFilter\x88\x01\x01\x12P\n\x0e\x62gp_port_state\x18\x07 \x01(\x0b\x32%.metalstack.api.v2.SwitchBGPPortStateH\x04R\x0c\x62gpPortState\x88\x01\x01\x12G\n\nmembership\x18\x08 \x01(\x0e\x32\'.metalstack.api.v2.SwitchPortMembershipR\nmembershipB\x06\n\x04_macB\x06\n\x04_vrfB\x08\n\x06_stateB\r\n\x0b_bgp_filterB\x11\n\x0f_bgp_port_state\"T\n\tBGPFilter\x12\"\n\x05\x63idrs\x18\x01 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x05\x63idrs\x12#\n\x04vnis\x18\x02 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\"\x07r\x05\x10\x02\x18\x80\x01R\x04vnis\"\xa4\x03\n\x12SwitchBGPPortState\x12,\n\x08neighbor\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x08neighbor\x88\x01\x01\x12*\n\npeer_group\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\tpeerGroup\x12&\n\x08vrf_name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07vrfName\x12\x42\n\tbgp_state\x18\x04 \x01(\x0e\x32\x1b.metalstack.api.v2.BGPStateB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08\x62gpState\x12S\n\x18\x62gp_timer_up_established\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x15\x62gpTimerUpEstablished\x12.\n\x13sent_prefix_counter\x18\x06 \x01(\x04R\x11sentPrefixCounter\x12\x36\n\x17\x61\x63\x63\x65pted_prefix_counter\x18\x07 \x01(\x04R\x15\x61\x63\x63\x65ptedPrefixCounterB\x0b\n\t_neighbor\"\xab\x01\n\x08NicState\x12L\n\x07\x64\x65sired\x18\x01 \x01(\x0e\x32#.metalstack.api.v2.SwitchPortStatusB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\x07\x64\x65sired\x88\x01\x01\x12\x45\n\x06\x61\x63tual\x18\x02 \x01(\x0e\x32#.metalstack.api.v2.SwitchPortStatusB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06\x61\x63tualB\n\n\x08_desired\"b\n\x11MachineConnection\x12\x1d\n\nmachine_id\x18\x01 \x01(\tR\tmachineId\x12.\n\x03nic\x18\x02 \x01(\x0b\x32\x1c.metalstack.api.v2.SwitchNicR\x03nic\"\xec\x02\n\x0bSwitchQuery\x12\"\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01H\x00R\x02id\x88\x01\x01\x12.\n\tpartition\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x01R\tpartition\x88\x01\x01\x12$\n\x04rack\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x02R\x04rack\x88\x01\x01\x12$\n\x04room\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\x04room\x88\x01\x01\x12\x35\n\x02os\x18\x05 \x01(\x0b\x32 .metalstack.api.v2.SwitchOSQueryH\x04R\x02os\x88\x01\x01\x12?\n\x14\x63onnected_machine_id\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x05R\x12\x63onnectedMachineId\x88\x01\x01\x42\x05\n\x03_idB\x0c\n\n_partitionB\x07\n\x05_rackB\x07\n\x05_roomB\x05\n\x03_osB\x17\n\x15_connected_machine_id\"\x9c\x01\n\rSwitchOSQuery\x12H\n\x06vendor\x18\x01 \x01(\x0e\x32!.metalstack.api.v2.SwitchOSVendorB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\x06vendor\x88\x01\x01\x12*\n\x07version\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x07version\x88\x01\x01\x42\t\n\x07_vendorB\n\n\x08_version\"\x98\x01\n\nSwitchSync\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x35\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x19\n\x05\x65rror\x18\x03 \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error\"\xa1\x01\n\x12SwitchWithMachines\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1c\n\tpartition\x18\x02 \x01(\tR\tpartition\x12\x12\n\x04rack\x18\x03 \x01(\tR\x04rack\x12I\n\x0b\x63onnections\x18\x04 \x03(\x0b\x32\'.metalstack.api.v2.SwitchNicWithMachineR\x0b\x63onnections\"\xad\x01\n\x14SwitchNicWithMachine\x12.\n\x03nic\x18\x01 \x01(\x0b\x32\x1c.metalstack.api.v2.SwitchNicR\x03nic\x12\x34\n\x07machine\x18\x02 \x01(\x0b\x32\x1a.metalstack.api.v2.MachineR\x07machine\x12/\n\x03\x66ru\x18\x03 \x01(\x0b\x32\x1d.metalstack.api.v2.MachineFRUR\x03\x66ru\"\xcd\x01\n\x10StaticPortConfig\x12\x45\n\x06status\x18\x01 \x01(\x0e\x32#.metalstack.api.v2.SwitchPortStatusB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06status\x12G\n\nmembership\x18\x02 \x01(\x0e\x32\'.metalstack.api.v2.SwitchPortMembershipR\nmembership\x12\x1d\n\x07network\x18\x03 \x01(\tH\x00R\x07network\x88\x01\x01\x42\n\n\x08_network*\x89\x02\n\x08\x42GPState\x12\x19\n\x15\x42GP_STATE_UNSPECIFIED\x10\x00\x12\x1c\n\x0e\x42GP_STATE_IDLE\x10\x01\x1a\x08\x82\xb2\x19\x04Idle\x12\"\n\x11\x42GP_STATE_CONNECT\x10\x02\x1a\x0b\x82\xb2\x19\x07\x43onnect\x12 \n\x10\x42GP_STATE_ACTIVE\x10\x03\x1a\n\x82\xb2\x19\x06\x41\x63tive\x12%\n\x13\x42GP_STATE_OPEN_SENT\x10\x04\x1a\x0c\x82\xb2\x19\x08OpenSent\x12+\n\x16\x42GP_STATE_OPEN_CONFIRM\x10\x05\x1a\x0f\x82\xb2\x19\x0bOpenConfirm\x12*\n\x15\x42GP_STATE_ESTABLISHED\x10\x06\x1a\x0f\x82\xb2\x19\x0b\x45stablished*\xa2\x01\n\x11SwitchReplaceMode\x12)\n\x1fSWITCH_REPLACE_MODE_UNSPECIFIED\x10\x00\x1a\x04\x82\xb2\x19\x00\x12,\n\x1bSWITCH_REPLACE_MODE_REPLACE\x10\x01\x1a\x0b\x82\xb2\x19\x07replace\x12\x34\n\x1fSWITCH_REPLACE_MODE_OPERATIONAL\x10\x02\x1a\x0f\x82\xb2\x19\x0boperational*\x84\x01\n\x0eSwitchOSVendor\x12 \n\x1cSWITCH_OS_VENDOR_UNSPECIFIED\x10\x00\x12)\n\x18SWITCH_OS_VENDOR_CUMULUS\x10\x01\x1a\x0b\x82\xb2\x19\x07\x43umulus\x12%\n\x16SWITCH_OS_VENDOR_SONIC\x10\x02\x1a\t\x82\xb2\x19\x05SONiC*\xad\x01\n\x10SwitchPortStatus\x12\"\n\x1eSWITCH_PORT_STATUS_UNSPECIFIED\x10\x00\x12!\n\x15SWITCH_PORT_STATUS_UP\x10\x01\x1a\x06\x82\xb2\x19\x02up\x12%\n\x17SWITCH_PORT_STATUS_DOWN\x10\x02\x1a\x08\x82\xb2\x19\x04\x64own\x12+\n\x1aSWITCH_PORT_STATUS_UNKNOWN\x10\x03\x1a\x0b\x82\xb2\x19\x07unknown*\xd9\x01\n\x14SwitchPortMembership\x12&\n\"SWITCH_PORT_MEMBERSHIP_UNSPECIFIED\x10\x00\x12\x33\n SWITCH_PORT_MEMBERSHIP_UNMANAGED\x10\x01\x1a\r\x82\xb2\x19\tunmanaged\x12\x31\n\x1fSWITCH_PORT_MEMBERSHIP_INTERNAL\x10\x02\x1a\x0c\x82\xb2\x19\x08internal\x12\x31\n\x1fSWITCH_PORT_MEMBERSHIP_EXTERNAL\x10\x03\x1a\x0c\x82\xb2\x19\x08\x65xternalB\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0bSwitchProtoP\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)
@@ -66,6 +66,12 @@
_globals['_SWITCHPORTSTATUS'].values_by_name["SWITCH_PORT_STATUS_DOWN"]._serialized_options = b'\202\262\031\004down'
_globals['_SWITCHPORTSTATUS'].values_by_name["SWITCH_PORT_STATUS_UNKNOWN"]._loaded_options = None
_globals['_SWITCHPORTSTATUS'].values_by_name["SWITCH_PORT_STATUS_UNKNOWN"]._serialized_options = b'\202\262\031\007unknown'
+ _globals['_SWITCHPORTMEMBERSHIP'].values_by_name["SWITCH_PORT_MEMBERSHIP_UNMANAGED"]._loaded_options = None
+ _globals['_SWITCHPORTMEMBERSHIP'].values_by_name["SWITCH_PORT_MEMBERSHIP_UNMANAGED"]._serialized_options = b'\202\262\031\tunmanaged'
+ _globals['_SWITCHPORTMEMBERSHIP'].values_by_name["SWITCH_PORT_MEMBERSHIP_INTERNAL"]._loaded_options = None
+ _globals['_SWITCHPORTMEMBERSHIP'].values_by_name["SWITCH_PORT_MEMBERSHIP_INTERNAL"]._serialized_options = b'\202\262\031\010internal'
+ _globals['_SWITCHPORTMEMBERSHIP'].values_by_name["SWITCH_PORT_MEMBERSHIP_EXTERNAL"]._loaded_options = None
+ _globals['_SWITCHPORTMEMBERSHIP'].values_by_name["SWITCH_PORT_MEMBERSHIP_EXTERNAL"]._serialized_options = b'\202\262\031\010external'
_globals['_SWITCH'].fields_by_name['id']._loaded_options = None
_globals['_SWITCH'].fields_by_name['id']._serialized_options = b'\272H\nr\010h\001\300\263\256\261\002\001'
_globals['_SWITCH'].fields_by_name['description']._loaded_options = None
@@ -128,36 +134,42 @@
_globals['_SWITCHOSQUERY'].fields_by_name['vendor']._serialized_options = b'\272H\005\202\001\002\020\001'
_globals['_SWITCHOSQUERY'].fields_by_name['version']._loaded_options = None
_globals['_SWITCHOSQUERY'].fields_by_name['version']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
- _globals['_BGPSTATE']._serialized_start=3509
- _globals['_BGPSTATE']._serialized_end=3774
- _globals['_SWITCHREPLACEMODE']._serialized_start=3777
- _globals['_SWITCHREPLACEMODE']._serialized_end=3939
- _globals['_SWITCHOSVENDOR']._serialized_start=3942
- _globals['_SWITCHOSVENDOR']._serialized_end=4074
- _globals['_SWITCHPORTSTATUS']._serialized_start=4077
- _globals['_SWITCHPORTSTATUS']._serialized_end=4250
+ _globals['_STATICPORTCONFIG'].fields_by_name['status']._loaded_options = None
+ _globals['_STATICPORTCONFIG'].fields_by_name['status']._serialized_options = b'\272H\005\202\001\002\020\001'
+ _globals['_BGPSTATE']._serialized_start=3808
+ _globals['_BGPSTATE']._serialized_end=4073
+ _globals['_SWITCHREPLACEMODE']._serialized_start=4076
+ _globals['_SWITCHREPLACEMODE']._serialized_end=4238
+ _globals['_SWITCHOSVENDOR']._serialized_start=4241
+ _globals['_SWITCHOSVENDOR']._serialized_end=4373
+ _globals['_SWITCHPORTSTATUS']._serialized_start=4376
+ _globals['_SWITCHPORTSTATUS']._serialized_end=4549
+ _globals['_SWITCHPORTMEMBERSHIP']._serialized_start=4552
+ _globals['_SWITCHPORTMEMBERSHIP']._serialized_end=4769
_globals['_SWITCH']._serialized_start=255
_globals['_SWITCH']._serialized_end=1121
_globals['_SWITCHOS']._serialized_start=1124
_globals['_SWITCHOS']._serialized_end=1301
_globals['_SWITCHNIC']._serialized_start=1304
- _globals['_SWITCHNIC']._serialized_end=1720
- _globals['_BGPFILTER']._serialized_start=1722
- _globals['_BGPFILTER']._serialized_end=1806
- _globals['_SWITCHBGPPORTSTATE']._serialized_start=1809
- _globals['_SWITCHBGPPORTSTATE']._serialized_end=2211
- _globals['_NICSTATE']._serialized_start=2214
- _globals['_NICSTATE']._serialized_end=2385
- _globals['_MACHINECONNECTION']._serialized_start=2387
- _globals['_MACHINECONNECTION']._serialized_end=2485
- _globals['_SWITCHQUERY']._serialized_start=2488
- _globals['_SWITCHQUERY']._serialized_end=2852
- _globals['_SWITCHOSQUERY']._serialized_start=2855
- _globals['_SWITCHOSQUERY']._serialized_end=3011
- _globals['_SWITCHSYNC']._serialized_start=3014
- _globals['_SWITCHSYNC']._serialized_end=3166
- _globals['_SWITCHWITHMACHINES']._serialized_start=3169
- _globals['_SWITCHWITHMACHINES']._serialized_end=3330
- _globals['_SWITCHNICWITHMACHINE']._serialized_start=3333
- _globals['_SWITCHNICWITHMACHINE']._serialized_end=3506
+ _globals['_SWITCHNIC']._serialized_end=1793
+ _globals['_BGPFILTER']._serialized_start=1795
+ _globals['_BGPFILTER']._serialized_end=1879
+ _globals['_SWITCHBGPPORTSTATE']._serialized_start=1882
+ _globals['_SWITCHBGPPORTSTATE']._serialized_end=2302
+ _globals['_NICSTATE']._serialized_start=2305
+ _globals['_NICSTATE']._serialized_end=2476
+ _globals['_MACHINECONNECTION']._serialized_start=2478
+ _globals['_MACHINECONNECTION']._serialized_end=2576
+ _globals['_SWITCHQUERY']._serialized_start=2579
+ _globals['_SWITCHQUERY']._serialized_end=2943
+ _globals['_SWITCHOSQUERY']._serialized_start=2946
+ _globals['_SWITCHOSQUERY']._serialized_end=3102
+ _globals['_SWITCHSYNC']._serialized_start=3105
+ _globals['_SWITCHSYNC']._serialized_end=3257
+ _globals['_SWITCHWITHMACHINES']._serialized_start=3260
+ _globals['_SWITCHWITHMACHINES']._serialized_end=3421
+ _globals['_SWITCHNICWITHMACHINE']._serialized_start=3424
+ _globals['_SWITCHNICWITHMACHINE']._serialized_end=3597
+ _globals['_STATICPORTCONFIG']._serialized_start=3600
+ _globals['_STATICPORTCONFIG']._serialized_end=3805
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/switch_pb2.pyi b/python/metalstack/api/v2/switch_pb2.pyi
index 01b86fcb..30e9bd5f 100644
--- a/python/metalstack/api/v2/switch_pb2.pyi
+++ b/python/metalstack/api/v2/switch_pb2.pyi
@@ -43,6 +43,13 @@ class SwitchPortStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
SWITCH_PORT_STATUS_UP: _ClassVar[SwitchPortStatus]
SWITCH_PORT_STATUS_DOWN: _ClassVar[SwitchPortStatus]
SWITCH_PORT_STATUS_UNKNOWN: _ClassVar[SwitchPortStatus]
+
+class SwitchPortMembership(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
+ __slots__ = ()
+ SWITCH_PORT_MEMBERSHIP_UNSPECIFIED: _ClassVar[SwitchPortMembership]
+ SWITCH_PORT_MEMBERSHIP_UNMANAGED: _ClassVar[SwitchPortMembership]
+ SWITCH_PORT_MEMBERSHIP_INTERNAL: _ClassVar[SwitchPortMembership]
+ SWITCH_PORT_MEMBERSHIP_EXTERNAL: _ClassVar[SwitchPortMembership]
BGP_STATE_UNSPECIFIED: BGPState
BGP_STATE_IDLE: BGPState
BGP_STATE_CONNECT: BGPState
@@ -60,6 +67,10 @@ SWITCH_PORT_STATUS_UNSPECIFIED: SwitchPortStatus
SWITCH_PORT_STATUS_UP: SwitchPortStatus
SWITCH_PORT_STATUS_DOWN: SwitchPortStatus
SWITCH_PORT_STATUS_UNKNOWN: SwitchPortStatus
+SWITCH_PORT_MEMBERSHIP_UNSPECIFIED: SwitchPortMembership
+SWITCH_PORT_MEMBERSHIP_UNMANAGED: SwitchPortMembership
+SWITCH_PORT_MEMBERSHIP_INTERNAL: SwitchPortMembership
+SWITCH_PORT_MEMBERSHIP_EXTERNAL: SwitchPortMembership
class Switch(_message.Message):
__slots__ = ("id", "meta", "description", "rack", "room", "partition", "replace_mode", "management_ip", "management_user", "console_command", "nics", "os", "machine_connections", "last_sync", "last_sync_error")
@@ -106,7 +117,7 @@ class SwitchOS(_message.Message):
def __init__(self, vendor: _Optional[_Union[SwitchOSVendor, str]] = ..., version: _Optional[str] = ..., metal_core_version: _Optional[str] = ...) -> None: ...
class SwitchNic(_message.Message):
- __slots__ = ("name", "identifier", "mac", "vrf", "state", "bgp_filter", "bgp_port_state")
+ __slots__ = ("name", "identifier", "mac", "vrf", "state", "bgp_filter", "bgp_port_state", "membership")
NAME_FIELD_NUMBER: _ClassVar[int]
IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
MAC_FIELD_NUMBER: _ClassVar[int]
@@ -114,6 +125,7 @@ class SwitchNic(_message.Message):
STATE_FIELD_NUMBER: _ClassVar[int]
BGP_FILTER_FIELD_NUMBER: _ClassVar[int]
BGP_PORT_STATE_FIELD_NUMBER: _ClassVar[int]
+ MEMBERSHIP_FIELD_NUMBER: _ClassVar[int]
name: str
identifier: str
mac: str
@@ -121,7 +133,8 @@ class SwitchNic(_message.Message):
state: NicState
bgp_filter: BGPFilter
bgp_port_state: SwitchBGPPortState
- def __init__(self, name: _Optional[str] = ..., identifier: _Optional[str] = ..., mac: _Optional[str] = ..., vrf: _Optional[str] = ..., state: _Optional[_Union[NicState, _Mapping]] = ..., bgp_filter: _Optional[_Union[BGPFilter, _Mapping]] = ..., bgp_port_state: _Optional[_Union[SwitchBGPPortState, _Mapping]] = ...) -> None: ...
+ membership: SwitchPortMembership
+ def __init__(self, name: _Optional[str] = ..., identifier: _Optional[str] = ..., mac: _Optional[str] = ..., vrf: _Optional[str] = ..., state: _Optional[_Union[NicState, _Mapping]] = ..., bgp_filter: _Optional[_Union[BGPFilter, _Mapping]] = ..., bgp_port_state: _Optional[_Union[SwitchBGPPortState, _Mapping]] = ..., membership: _Optional[_Union[SwitchPortMembership, str]] = ...) -> None: ...
class BGPFilter(_message.Message):
__slots__ = ("cidrs", "vnis")
@@ -220,3 +233,13 @@ class SwitchNicWithMachine(_message.Message):
machine: _machine_pb2.Machine
fru: _machine_pb2.MachineFRU
def __init__(self, nic: _Optional[_Union[SwitchNic, _Mapping]] = ..., machine: _Optional[_Union[_machine_pb2.Machine, _Mapping]] = ..., fru: _Optional[_Union[_machine_pb2.MachineFRU, _Mapping]] = ...) -> None: ...
+
+class StaticPortConfig(_message.Message):
+ __slots__ = ("status", "membership", "network")
+ STATUS_FIELD_NUMBER: _ClassVar[int]
+ MEMBERSHIP_FIELD_NUMBER: _ClassVar[int]
+ NETWORK_FIELD_NUMBER: _ClassVar[int]
+ status: SwitchPortStatus
+ membership: SwitchPortMembership
+ network: str
+ def __init__(self, status: _Optional[_Union[SwitchPortStatus, str]] = ..., membership: _Optional[_Union[SwitchPortMembership, str]] = ..., network: _Optional[str] = ...) -> None: ...