| syntax = "proto3"; | |
| import "github.com/gogo/protobuf/gogoproto/gogo.proto"; | |
| package libnetwork; | |
| option (gogoproto.marshaler_all) = true; | |
| option (gogoproto.unmarshaler_all) = true; | |
| option (gogoproto.stringer_all) = true; | |
| option (gogoproto.gostring_all) = true; | |
| option (gogoproto.sizer_all) = true; | |
| option (gogoproto.goproto_stringer_all) = false; | |
| // EndpointRecord specifies all the endpoint specific information that | |
| // needs to gossiped to nodes participating in the network. | |
| message EndpointRecord { | |
| // Name of the container | |
| string name = 1; | |
| // Service name of the service to which this endpoint belongs. | |
| string service_name = 2; | |
| // Service ID of the service to which this endpoint belongs. | |
| string service_id = 3 [(gogoproto.customname) = "ServiceID"]; | |
| // Virtual IP of the service to which this endpoint belongs. | |
| string virtual_ip = 4 [(gogoproto.customname) = "VirtualIP"]; | |
| // IP assigned to this endpoint. | |
| string endpoint_ip = 5 [(gogoproto.customname) = "EndpointIP"]; | |
| // IngressPorts exposed by the service to which this endpoint belongs. | |
| repeated PortConfig ingress_ports = 6; | |
| // A list of aliases which are alternate names for the service | |
| repeated string aliases = 7; | |
| // List of aliases task specific aliases | |
| repeated string task_aliases = 8; | |
| // Whether this endpoint's service has been disabled | |
| bool service_disabled = 9; | |
| } | |
| // PortConfig specifies an exposed port which can be | |
| // addressed using the given name. This can be later queried | |
| // using a service discovery api or a DNS SRV query. The node | |
| // port specifies a port that can be used to address this | |
| // service external to the cluster by sending a connection | |
| // request to this port to any node on the cluster. | |
| message PortConfig { | |
| enum Protocol { | |
| option (gogoproto.goproto_enum_prefix) = false; | |
| TCP = 0 [(gogoproto.enumvalue_customname) = "ProtocolTCP"]; | |
| UDP = 1 [(gogoproto.enumvalue_customname) = "ProtocolUDP"]; | |
| SCTP = 2 [(gogoproto.enumvalue_customname) = "ProtocolSCTP"]; | |
| } | |
| // Name for the port. If provided the port information can | |
| // be queried using the name as in a DNS SRV query. | |
| string name = 1; | |
| // Protocol for the port which is exposed. | |
| Protocol protocol = 2; | |
| // The port which the application is exposing and is bound to. | |
| uint32 target_port = 3; | |
| // PublishedPort specifies the port on which the service is | |
| // exposed on all nodes on the cluster. If not specified an | |
| // arbitrary port in the node port range is allocated by the | |
| // system. If specified it should be within the node port | |
| // range and it should be available. | |
| uint32 published_port = 4; | |
| } |