endpointlocation.v1
Available Services
arista/endpointlocation.v1/endpointlocation.proto
Device
Device holds information for a device matching a search term.
Field Name | Type | Description |
---|---|---|
identifier_list | IdentifierList | identifier_list holds the unique identifiers for the device. |
device_type | DeviceType | device_type is the broad category of the device. |
location_list | LocationList | location_list is the list of possible locations of the device. It is ordered from most likely to least likely. |
device_status | DeviceStatus | device_status is the network status of the device. |
device_info | DeviceInfo | device_info holds various attributes of the device. |
DeviceInfo
DeviceInfo holds various attributes of a device (typically an endpoint) from Fingerbank.
Field Name | Type | Description |
---|---|---|
device_name | google.protobuf.StringValue | device_name is the name of the device. |
mobile | google.protobuf.BoolValue | mobile indicates whether the device is a mobile. |
tablet | google.protobuf.BoolValue | tablet indicates whether the device is a tablet. |
score | google.protobuf.UInt32Value | score is a value from 0 to 100 that indicates how confident we are that the device has device_name. Fingerbank API documentation of score: https://api.fingerbank.org/api_doc/2/combinations.html |
version | google.protobuf.StringValue | version is the version of device_name. |
mac_vendor | google.protobuf.StringValue | mac_vendor is the enterprise that assigns the MAC address of the device. |
classification | google.protobuf.StringValue | classification is the broadest category to which device_name belongs. This is the highest level in hierarchy. |
hierarchy | fmp.RepeatedString | hierarchy is a list of categorizations of the device from most broad to most specific. The first element is always classification and the last element is always device_name. For example, ["VoIP Device", "FooInc VoIP", "FooInc PhoneSet IP", "FooInc PhoneSet IP Model123"] In this hierarchy, "VoIP Device" is classification and "FooInc PhoneSet IP Model123" is device_name. |
DeviceMap
DeviceMap is a collection of Device.
Field Name | Type | Description |
---|---|---|
values | DeviceMap.ValuesEntry[...] | values is a map from most specific identifier to Device. The key could be device serial number or MAC address. |
DeviceMap.ValuesEntry
Field Name | Type | Description |
---|---|---|
key | string | |
value | Device |
EndpointLocation
EndpointLocation is the entrypoint to searching for endpoints.
Field Name | Type | Description |
---|---|---|
key | EndpointLocationKey | key holds a search term used to locate an endpoint. |
device_map | DeviceMap | device_map holds the devices (and their potential locations) that match the search term. |
EndpointLocationKey
EndpointLocationKey holds a search term used to locate an endpoint.
Field Name | Type | Description |
---|---|---|
search_term | google.protobuf.StringValue | search_term is used to match against identifiers on devices. This could be a MAC/IP address, hostname, etc. |
ExplanationList
ExplanationList is a list of Explanation.
Field Name | Type | Description |
---|---|---|
values | Explanation[...] | values is a list of unique Explanation. Currently, this will always contain one value, but in the future it may contain more. |
Identifier
Identifier holds device identification information.
Field Name | Type | Description |
---|---|---|
type | IdentifierType | type is the identifier type corresponding to value. |
value | google.protobuf.StringValue | value is the string representation of the identifier. Its interpretation depends on type. |
source_list | IdentifierSourceList | source_list is the set of sources where this identifier was discovered. |
IdentifierList
IdentifierList is a list of Identifier.
Field Name | Type | Description |
---|---|---|
values | Identifier[...] | values is an unordered list of Identifier where each Identifier has a unique type and value combination. |
IdentifierSourceList
IdentifierSourceList is a list of IdentifierSource.
Field Name | Type | Description |
---|---|---|
values | IdentifierSource[...] | values is an unordered list of unique IdentifierSource. |
Location
Location is a port (device_id, interface, vlan_id) on which at least one identifier has been discovered.
Field Name | Type | Description |
---|---|---|
device_id | google.protobuf.StringValue | device_id identifies the device of the port. |
device_status | DeviceStatus | device_status is the status of the device identified by device_id. |
interface | google.protobuf.StringValue | interface is the interface of the port. |
vlan_id | google.protobuf.UInt32Value | vlan_id identifies the VLAN of the port. |
learned_time | google.protobuf.Timestamp | learned_time is when the port learned its identifiers. |
mac_type | MacType | mac_type is how the port learned its MAC address identifier. |
likelihood | Likelihood | likelihood is the probability level that the port is directly connected to the queried endpoint. |
explanation_list | ExplanationList | explanation_list holds the reasons that the port was assigned likelihood. |
identifier_list | IdentifierList | identifier_list holds the discovered identifiers of the port. |
LocationList
LocationList is a list of Location.
Field Name | Type | Description |
---|---|---|
values | Location[...] | values is a list of unique Location. |
DeviceStatus
DeviceStatus is the network status of a device.
Name | Number | Description |
---|---|---|
DEVICE_STATUS_UNSPECIFIED | 0 | DEVICE_STATUS_UNSPECIFIED is the default unspecified device status. |
DEVICE_STATUS_ACTIVE | 1 | DEVICE_STATUS_ACTIVE indicates a device is streaming its telemetry data to CloudVision. |
DEVICE_STATUS_INACTIVE | 2 | DEVICE_STATUS_INACTIVE indicates a device is either not streaming its telemetry data to CloudVision or has been decommissioned from CloudVision. |
DeviceType
DeviceType defines a broad set of categories for all queried devices.
Name | Number | Description |
---|---|---|
DEVICE_TYPE_UNSPECIFIED | 0 | DEVICE_TYPE_UNSPECIFIED is the default unspecified device type. |
DEVICE_TYPE_INVENTORY | 1 | DEVICE_TYPE_INVENTORY indicates a device in the CloudVision inventory. |
DEVICE_TYPE_ENDPOINT | 2 | DEVICE_TYPE_ENDPOINT indicates an endpoint that does not exist in the CloudVision inventory. |
DEVICE_TYPE_WIFI_ENDPOINT | 3 | DEVICE_TYPE_WIFI_ENDPOINT indicates a WiFi client/endpoint that does not exist in the CloudVision inventory. Deprecated - do not support searches for wifi endpoints anymore |
Explanation
Explanation defines the set of reasons for why a location has a certain likelihood. Some explanations apply to queried endpoints while others apply to queried devices in the CloudVision device inventory.
Name | Number | Description |
---|---|---|
EXPLANATION_UNSPECIFIED | 0 | EXPLANATION_UNSPECIFIED is the default unspecified explanation. |
EXPLANATION_DIRECT_CONNECTION | 1 | EXPLANATION_DIRECT_CONNECTION indicates a direct connection to the queried endpoint device discovered via LLDP. |
EXPLANATION_NON_INVENTORY_CONNECTION | 2 | EXPLANATION_NON_INVENTORY_CONNECTION indicates a direct connection to at least one non-inventory device (likely discovered via LLDP). |
EXPLANATION_NO_CONNECTION | 3 | EXPLANATION_NO_CONNECTION indicates that a location has no direct connection to any known device. |
EXPLANATION_INVENTORY_CONNECTION | 4 | EXPLANATION_INVENTORY_CONNECTION indicates that all of a location's known connections are to devices in the inventory. |
EXPLANATION_OWN_PORT_INVENTORY_DEVICE | 5 | EXPLANATION_OWN_PORT_INVENTORY_DEVICE indicates a location on the queried inventory device itself. |
EXPLANATION_DIRECT_CONNECTION_INVENTORY_DEVICE | 6 | EXPLANATION_DIRECT_CONNECTION_INVENTORY_DEVICE indicates a direct connection to the queried inventory device discovered via LLDP. |
EXPLANATION_NO_CONNECTION_INVENTORY_DEVICE | 7 | EXPLANATION_NO_CONNECTION_INVENTORY_DEVICE indicates that a location has no direct connection to any known device (for queried inventory devices). |
EXPLANATION_OTHER_CONNECTION_INVENTORY_DEVICE | 8 | EXPLANATION_OTHER_CONNECTION_INVENTORY_DEVICE indicates that a location only has connections to other devices besides the queried inventory device. |
EXPLANATION_VIRTUAL | 9 | EXPLANATION_VIRTUAL indicates that a location contains a virtual interface. |
EXPLANATION_WIRELESS_CONNECTION | 10 | EXPLANATION_WIRELESS_CONNECTION indicates a direct connection from a wireless access point in the device inventory to a wireless client. |
EXPLANATION_ACCESS_PORT | 11 | EXPLANATION_ACCESS_PORT indicates that a location is an access port. |
IdentifierSource
IdentifierSource defines the set of network protocols and other information sources where an identifier was found.
Name | Number | Description |
---|---|---|
IDENTIFIER_SOURCE_UNSPECIFIED | 0 | IDENTIFIER_SOURCE_UNSPECIFIED is the default unspecified identifier source. |
IDENTIFIER_SOURCE_FDB | 1 | IDENTIFIER_SOURCE_FDB indicates a forwarding table. |
IDENTIFIER_SOURCE_ARP | 2 | IDENTIFIER_SOURCE_ARP indicates ARP (IPv4). |
IDENTIFIER_SOURCE_NEIGHBOR | 3 | IDENTIFIER_SOURCE_NEIGHBOR indicates NDP (IPv6). |
IDENTIFIER_SOURCE_DEVICE_INVENTORY | 4 | IDENTIFIER_SOURCE_DEVICE_INVENTORY indicates that an endpoint is in the CloudVision inventory. |
IDENTIFIER_SOURCE_LLDP | 5 | IDENTIFIER_SOURCE_LLDP indicates LLDP. |
IDENTIFIER_SOURCE_DHCP | 6 | IDENTIFIER_SOURCE_DHCP indicates DHCP. |
IDENTIFIER_SOURCE_WIFI | 7 | IDENTIFIER_SOURCE_WIFI indicates a WiFi endpoint that was learned through a wireless manager. Deprecated - do not support searches for wifi endpoints anymore |
IdentifierType
IdentifierType defines the set of ways for identifying endpoints.
Name | Number | Description |
---|---|---|
IDENTIFIER_TYPE_UNSPECIFIED | 0 | IDENTIFIER_TYPE_UNSPECIFIED is the default unspecified identifier. |
IDENTIFIER_TYPE_MAC_ADDR | 1 | IDENTIFIER_TYPE_MAC_ADDR indicates a MAC address identifier. |
IDENTIFIER_TYPE_IPV4_ADDR | 2 | IDENTIFIER_TYPE_IPV4_ADDR indicates an IPv4 address identifier. |
IDENTIFIER_TYPE_IPV6_ADDR | 3 | IDENTIFIER_TYPE_IPV6_ADDR indicates an IPv6 address identifier. |
IDENTIFIER_TYPE_INVENTORY_DEVICE_ID | 4 | IDENTIFIER_TYPE_INVENTORY_DEVICE_ID indicates an inventory device identifier. |
IDENTIFIER_TYPE_PRIMARY_MANAGEMENT_IP | 5 | IDENTIFIER_TYPE_PRIMARY_MANAGEMENT_IP indicates a primary management IP identifier. |
IDENTIFIER_TYPE_HOSTNAME | 6 | IDENTIFIER_TYPE_HOSTNAME indicates a hostname identifier. |
IDENTIFIER_TYPE_USERNAME | 7 | IDENTIFIER_TYPE_USERNAME indicates a username identifier. Deprecated - do not return usernames of wifi endpoints anymore |
IDENTIFIER_TYPE_OTHER | 99999 | IDENTIFIER_TYPE_OTHER is used for an unknown identifier. |
Likelihood
Likelihood indicates a level of confidence.
Name | Number | Description |
---|---|---|
LIKELIHOOD_UNSPECIFIED | 0 | LIKELIHOOD_UNSPECIFIED is the default unspecified likelihood. |
LIKELIHOOD_VERY_LIKELY | 1 | LIKELIHOOD_VERY_LIKELY indicates very high confidence. |
LIKELIHOOD_LIKELY | 2 | LIKELIHOOD_LIKELY indicates high confidence. |
LIKELIHOOD_SOMEWHAT_LIKELY | 3 | LIKELIHOOD_SOMEWHAT_LIKELY indicates medium confidence. |
LIKELIHOOD_LESS_LIKELY | 4 | LIKELIHOOD_LESS_LIKELY indicates low confidence. |
MacType
MacType describes how the MAC address was learned on the port location.
Name | Number | Description |
---|---|---|
MAC_TYPE_UNSPECIFIED | 0 | MAC_TYPE_UNSPECIFIED is the default unspecified MAC type. |
MAC_TYPE_LEARNED_DYNAMIC | 1 | MAC_TYPE_LEARNED_DYNAMIC indicates a MAC that is dynamically learned in hardware. |
MAC_TYPE_LEARNED_SECURE | 2 | MAC_TYPE_LEARNED_SECURE indicates a MAC that is learned in hardware on a port-security protect interface. |
MAC_TYPE_CONFIGURED_DYNAMIC | 3 | MAC_TYPE_CONFIGURED_DYNAMIC indicates a configured dynamic MAC. |
MAC_TYPE_CONFIGURED_SECURE | 4 | MAC_TYPE_CONFIGURED_SECURE indicates a MAC configured on an interface with Port Security: Protect mode enabled |
MAC_TYPE_CONFIGURED_STATIC | 5 | MAC_TYPE_CONFIGURED_STATIC indicates a statically configured MAC. |
MAC_TYPE_PEER_DYNAMIC | 6 | MAC_TYPE_PEER_DYNAMIC indicates a dynamically learned MAC discovered via an MLAG peer. |
MAC_TYPE_PEER_STATIC | 7 | MAC_TYPE_PEER_STATIC indicates a statically configured MAC discovered via an MLAG peer. |
MAC_TYPE_PEER_SECURE | 8 | MAC_TYPE_PEER_SECURE indicates a secure MAC learned from an MLAG peer. |
MAC_TYPE_LEARNED_REMOTE | 9 | MAC_TYPE_LEARNED_REMOTE indicates a MAC learned remotely behind a VxLAN VTEP. |
MAC_TYPE_CONFIGURED_REMOTE | 10 | MAC_TYPE_CONFIGURED_REMOTE indicates a MAC configured behind a VxLAN VTEP. |
MAC_TYPE_RECEIVED_REMOTE | 11 | MAC_TYPE_RECEIVED_REMOTE indicates a MAC received from a VxLAN controller. |
MAC_TYPE_PEER_LEARNED_REMOTE | 12 | MAC_TYPE_PEER_LEARNED_REMOTE indicates a remote MAC learned on a peer VTEP. |
MAC_TYPE_PEER_CONFIGURED_REMOTE | 13 | MAC_TYPE_PEER_CONFIGURED_REMOTE indicates an MLAG peer configured remote MAC. |
MAC_TYPE_PEER_RECEIVED_REMOTE | 14 | MAC_TYPE_PEER_RECEIVED_REMOTE indicates a remote MAC received from a VxLAN controller by the MLAG peer. |
MAC_TYPE_EVPN_DYNAMIC_REMOTE | 15 | MAC_TYPE_EVPN_DYNAMIC_REMOTE indicates an EVPN dynamic remote MAC. |
MAC_TYPE_EVPN_CONFIGURED_REMOTE | 16 | MAC_TYPE_EVPN_CONFIGURED_REMOTE indicates an EVPN configured remote MAC. |
MAC_TYPE_PEER_EVPN_REMOTE | 17 | MAC_TYPE_PEER_EVPN_REMOTE indicates an MLAG peer EVPN remote MAC. |
MAC_TYPE_CONFIGURED_ROUTER | 18 | MAC_TYPE_CONFIGURED_ROUTER indicates a configured MAC used in routing. |
MAC_TYPE_PEER_ROUTER | 19 | MAC_TYPE_PEER_ROUTER indicates an MLAG peer specific router MAC. |
MAC_TYPE_EVPN_INTF_DYNAMIC | 20 | MAC_TYPE_EVPN_INTF_DYNAMIC indicates a MAC advertised by EVPN when a dynamic MAC is learned on ESI (Ethernet Segment Identifier). |
MAC_TYPE_EVPN_INTF_STATIC | 21 | MAC_TYPE_EVPN_INTF_STATIC indicates a MAC configured on EVPN ESI. |
MAC_TYPE_AUTHENTICATED | 22 | MAC_TYPE_AUTHENTICATED indicates a MAC authenticated via 802.1X. |
MAC_TYPE_PEER_AUTHENTICATED | 23 | MAC_TYPE_PEER_AUTHENTICATED indicates a MAC authenticated by 802.1X and learned on an MLAG peer. |
MAC_TYPE_PENDING_SECURE | 24 | MAC_TYPE_PENDING_SECURE indicates a secure MAC in a pending state. |
MAC_TYPE_SOFTWARE_LEARNED_DYNAMIC | 25 | MAC_TYPE_SOFTWARE_LEARNED_DYNAMIC indicates a MAC learned behind VTEP in software in the case of a VxLAN remote MAC. |
MAC_TYPE_OTHER | 99999 | MAC_TYPE_OTHER is used for capturing future MAC types. |
arista/endpointlocation.v1/services.gen.proto
EndpointLocationBatchedStreamRequest
Field Name | Type | Description |
---|---|---|
partial_eq_filter | EndpointLocation[...] | PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. This requires all provided fields to be equal to the response. While transparent to users, this field also allows services to optimize internal subscriptions if filter(s) are sufficiently specific. |
time | arista.time.TimeBounds | TimeRange allows limiting response data to within a specified time window. If this field is populated, at least one of the two time fields are required. For GetAll, the fields start and end can be used as follows: * end: Returns the state of each EndpointLocation at end. * Each EndpointLocation response is fully-specified (all fields set). * start: Returns the state of each EndpointLocation at start, followed by updates until now. * Each EndpointLocation response at start is fully-specified, but updates may be partial. * start and end: Returns the state of each EndpointLocation at start, followed by updates until end. * Each EndpointLocation response at start is fully-specified, but updates until end may be partial. This field is not allowed in the Subscribe RPC. |
max_messages | google.protobuf.UInt32Value | MaxMessages limits the maximum number of messages that can be contained in one batch. MaxMessages is required to be at least 1. The maximum number of messages in a batch is min(max_messages, INTERNAL_BATCH_LIMIT) INTERNAL_BATCH_LIMIT is set based on the maximum message size. |
EndpointLocationBatchedStreamResponse
Field Name | Type | Description |
---|---|---|
responses | EndpointLocationStreamResponse[...] | Values are the values deemed relevant to the initiating request. The length of this structure is guaranteed to be between (inclusive) 1 and min(req.max_messages, INTERNAL_BATCH_LIMIT). |
EndpointLocationRequest
Field Name | Type | Description |
---|---|---|
key | EndpointLocationKey | Key uniquely identifies a EndpointLocation instance to retrieve. This value must be populated. |
time | google.protobuf.Timestamp | Time indicates the time for which you are interested in the data. If no time is given, the server will use the time at which it makes the request. |
EndpointLocationResponse
Field Name | Type | Description |
---|---|---|
value | EndpointLocation | Value is the value requested. This structure will be fully-populated as it exists in the datastore. If optional fields were not given at creation, these fields will be empty or set to default values. |
time | google.protobuf.Timestamp | Time carries the (UTC) timestamp of the last-modification of the EndpointLocation instance in this response. |
EndpointLocationSomeRequest
Field Name | Type | Description |
---|---|---|
keys | EndpointLocationKey[...] | |
time | google.protobuf.Timestamp | Time indicates the time for which you are interested in the data. If no time is given, the server will use the time at which it makes the request. |
EndpointLocationSomeResponse
Field Name | Type | Description |
---|---|---|
value | EndpointLocation | Value is the value requested. This structure will be fully-populated as it exists in the datastore. If optional fields were not given at creation, these fields will be empty or set to default values. |
error | google.protobuf.StringValue | Error is an optional field. It should be filled when there is an error in the GetSome process. |
time | google.protobuf.Timestamp |
EndpointLocationStreamRequest
Field Name | Type | Description |
---|---|---|
partial_eq_filter | EndpointLocation[...] | PartialEqFilter provides a way to server-side filter a GetAll/Subscribe. This requires all provided fields to be equal to the response. While transparent to users, this field also allows services to optimize internal subscriptions if filter(s) are sufficiently specific. |
time | arista.time.TimeBounds | TimeRange allows limiting response data to within a specified time window. If this field is populated, at least one of the two time fields are required. For GetAll, the fields start and end can be used as follows: * end: Returns the state of each EndpointLocation at end. * Each EndpointLocation response is fully-specified (all fields set). * start: Returns the state of each EndpointLocation at start, followed by updates until now. * Each EndpointLocation response at start is fully-specified, but updates may be partial. * start and end: Returns the state of each EndpointLocation at start, followed by updates until end. * Each EndpointLocation response at start is fully-specified, but updates until end may be partial. This field is not allowed in the Subscribe RPC. |
EndpointLocationStreamResponse
Field Name | Type | Description |
---|---|---|
value | EndpointLocation | Value is a value deemed relevant to the initiating request. This structure will always have its key-field populated. Which other fields are populated, and why, depends on the value of Operation and what triggered this notification. |
time | google.protobuf.Timestamp | Time holds the timestamp of this EndpointLocation's last modification. |
type | arista.subscriptions.Operation | Operation indicates how the EndpointLocation value in this response should be considered. Under non-subscribe requests, this value should always be INITIAL. In a subscription, once all initial data is streamed and the client begins to receive modification updates, you should not see INITIAL again. |
MetaResponse
Field Name | Type | Description |
---|---|---|
time | google.protobuf.Timestamp | Time holds the timestamp of the last item included in the metadata calculation. |
type | arista.subscriptions.Operation | Operation indicates how the value in this response should be considered. Under non-subscribe requests, this value should always be INITIAL. In a subscription, once all initial data is streamed and the client begins to receive modification updates, you should not see INITIAL again. |
count | google.protobuf.UInt32Value | Count is the number of items present under the conditions of the request. |
EndpointLocationService
Method Name | Request Type | Response Type | Description |
---|---|---|---|
GetOne | EndpointLocationRequest | EndpointLocationResponse | |
GetSome | EndpointLocationSomeRequest | EndpointLocationSomeResponse stream | |
GetAll | EndpointLocationStreamRequest | EndpointLocationStreamResponse stream | |
Subscribe | EndpointLocationStreamRequest | EndpointLocationStreamResponse stream | |
GetMeta | EndpointLocationStreamRequest | MetaResponse | |
SubscribeMeta | EndpointLocationStreamRequest | MetaResponse stream | |
GetAllBatched | EndpointLocationBatchedStreamRequest | EndpointLocationBatchedStreamResponse stream | |
SubscribeBatched | EndpointLocationBatchedStreamRequest | EndpointLocationBatchedStreamResponse stream |