Skip to content

Commit

Permalink
release/arista: Release connectivitymonitor
Browse files Browse the repository at this point in the history
Releases connectivitymonitor.v1

Change-Id: Ic41ccc65b868bc84e04adc252d58a6a1ba2d65fb
  • Loading branch information
cianmcgrath committed Jan 23, 2024
1 parent 4014f5b commit 0612001
Show file tree
Hide file tree
Showing 4 changed files with 1,540 additions and 0 deletions.
14 changes: 14 additions & 0 deletions arista/connectivitymonitor.v1/connectivitymonitor-changelog.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright (c) 2022 Arista Networks, Inc. All rights reserved.
# Arista Networks, Inc. Confidential and Proprietary.
# Subject to Arista Networks, Inc.'s EULA.
# FOR INTERNAL USE ONLY. NOT FOR DISTRIBUTION.

Changes:
- date: 2023-04-24
description: Add config fields to connectivity monitor probes
version: 1.1.0
onprem: true
cvaas: true
- date: 2022-11-05
description: Initial revision
version: 1.0.0
76 changes: 76 additions & 0 deletions arista/connectivitymonitor.v1/connectivitymonitor.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
// Copyright (c) 2023 Arista Networks, Inc. All rights reserved.
// Use of this source code is governed by the Apache License 2.0
// that can be found in the COPYING file.

syntax = "proto3";

package arista.connectivitymonitor.v1;

option go_package = "github.com/aristanetworks/cloudvision-go/api/arista/connectivitymonitor.v1;connectivitymonitor";

import "google/protobuf/wrappers.proto";
import "fmp/extensions.proto";

// ProbeKey uniquely identifies a connectivity monitor probe.
message ProbeKey {
option (fmp.model_key) = true;
// device_id is the id of the device in the probe.
google.protobuf.StringValue device_id = 1;
// host is the hostname used in the probe.
google.protobuf.StringValue host = 2;
// vrf is the name of the VRF in the probe.
google.protobuf.StringValue vrf = 3;
}

// ProbeStatsKey uniquely identifies a connectivity monitor probe's statistics,
// per source interface.
message ProbeStatsKey {
option (fmp.model_key) = true;
// device_id is the id of the device in the probe.
google.protobuf.StringValue device_id = 1;
// host is the hostname used in the probe.
google.protobuf.StringValue host = 2;
// vrf is the name of the VRF in the probe.
google.protobuf.StringValue vrf = 3;
// source_intf is the name of the interface in the probe.
google.protobuf.StringValue source_intf = 4;
}

// Probe is identifying information of a connectivity monitor probe.
// It is used to retrieve probe information without getting the corresponding stats so that
// probe information can be displayed without streaming all related data, such as in the UI.
message Probe {
option (fmp.model) = "ro";
// key uniquely identifies the connectivity monitor probe.
ProbeKey key = 1;
// ip_addr is the IP Address of the probe.
google.protobuf.StringValue ip_addr = 2;
// host_name is the name of the host of the probe.
google.protobuf.StringValue host_name = 3;
// description is the description of the probe.
google.protobuf.StringValue description = 4;
}

// ProbeStats is the connectivity monitor statistics related to the specified probe.
message ProbeStats {
option (fmp.model) = "ro";
// key uniquely identifies the connectivity monitor probe.
ProbeStatsKey key = 1;
// latency_millis is the latency between the device interface and the host.
// Value is in milliseconds.
google.protobuf.DoubleValue latency_millis = 2;
// jitter_millis is the amount of jitter experienced by requests
// between the device interface and host.
// Value is in milliseconds.
google.protobuf.DoubleValue jitter_millis = 3;
// http_response_time_millis is the amount of time taken to respond to a http
// request between the device interface and the host.
// Value is in milliseconds.
google.protobuf.DoubleValue http_response_time_millis = 4;
// packet_loss_percent is the amount of packet loss experienced
// by requests between the device interface and host.
// Value is a percentage.
google.protobuf.Int64Value packet_loss_percent = 5;
// error is the error reported on the connection.
google.protobuf.StringValue error = 6;
}
220 changes: 220 additions & 0 deletions arista/connectivitymonitor.v1/services.gen.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
// Copyright (c) 2023 Arista Networks, Inc. All rights reserved.
// Use of this source code is governed by the Apache License 2.0
// that can be found in the COPYING file.

//
// Code generated by boomtown. DO NOT EDIT.
//

syntax = "proto3";

package arista.connectivitymonitor.v1;
option go_package = "github.com/aristanetworks/cloudvision-go/api/arista/connectivitymonitor.v1;connectivitymonitor";

import "arista/connectivitymonitor.v1/connectivitymonitor.proto";
import "arista/time/time.proto";
import "arista/subscriptions/subscriptions.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/wrappers.proto";

message MetaResponse {
// Time holds the timestamp of the last item included in the metadata calculation.
google.protobuf.Timestamp time = 1;

// 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.
arista.subscriptions.Operation type = 2;

// Count is the number of items present under the conditions of the request.
google.protobuf.UInt32Value count = 3;
};

message ProbeRequest {
// Key uniquely identifies a Probe instance to retrieve.
// This value must be populated.
ProbeKey key = 1;

// 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.
google.protobuf.Timestamp time = 2;
};

message ProbeResponse {
// 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.
Probe value = 1;

// Time carries the (UTC) timestamp of the last-modification of the
// Probe instance in this response.
google.protobuf.Timestamp time = 2;
};

message ProbeSomeRequest {
repeated ProbeKey keys = 1;

// 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.
google.protobuf.Timestamp time = 2;
};

message ProbeSomeResponse {
// 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.
Probe value = 1;

// Error is an optional field.
// It should be filled when there is an error in the GetSome process.
google.protobuf.StringValue error = 2;
google.protobuf.Timestamp time = 3;
};

message ProbeStreamRequest {
// 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.
repeated Probe partial_eq_filter = 1;

// 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 Probe at end.
// * Each Probe response is fully-specified (all fields set).
// * start: Returns the state of each Probe at start, followed by updates until now.
// * Each Probe response at start is fully-specified, but updates may be partial.
// * start and end: Returns the state of each Probe at start, followed by updates
// until end.
// * Each Probe response at start is fully-specified, but updates until end may
// be partial.
//
// This field is not allowed in the Subscribe RPC.
arista.time.TimeBounds time = 3;
};

message ProbeStreamResponse {
// 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.
Probe value = 1;

// Time holds the timestamp of this Probe's last modification.
google.protobuf.Timestamp time = 2;

// Operation indicates how the Probe 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.
arista.subscriptions.Operation type = 3;
};

service ProbeService {
rpc GetOne (ProbeRequest) returns (ProbeResponse);
rpc GetSome (ProbeSomeRequest) returns (stream ProbeSomeResponse);
rpc GetAll (ProbeStreamRequest) returns (stream ProbeStreamResponse);
rpc Subscribe (ProbeStreamRequest) returns (stream ProbeStreamResponse);
rpc GetMeta (ProbeStreamRequest) returns (MetaResponse);
rpc SubscribeMeta (ProbeStreamRequest) returns (stream MetaResponse);
}

message ProbeStatsRequest {
// Key uniquely identifies a ProbeStats instance to retrieve.
// This value must be populated.
ProbeStatsKey key = 1;

// 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.
google.protobuf.Timestamp time = 2;
};

message ProbeStatsResponse {
// 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.
ProbeStats value = 1;

// Time carries the (UTC) timestamp of the last-modification of the
// ProbeStats instance in this response.
google.protobuf.Timestamp time = 2;
};

message ProbeStatsSomeRequest {
repeated ProbeStatsKey keys = 1;

// 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.
google.protobuf.Timestamp time = 2;
};

message ProbeStatsSomeResponse {
// 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.
ProbeStats value = 1;

// Error is an optional field.
// It should be filled when there is an error in the GetSome process.
google.protobuf.StringValue error = 2;
google.protobuf.Timestamp time = 3;
};

message ProbeStatsStreamRequest {
// 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.
repeated ProbeStats partial_eq_filter = 1;

// 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 ProbeStats at end.
// * Each ProbeStats response is fully-specified (all fields set).
// * start: Returns the state of each ProbeStats at start, followed by updates until now.
// * Each ProbeStats response at start is fully-specified, but updates may be partial.
// * start and end: Returns the state of each ProbeStats at start, followed by updates
// until end.
// * Each ProbeStats response at start is fully-specified, but updates until end may
// be partial.
//
// This field is not allowed in the Subscribe RPC.
arista.time.TimeBounds time = 3;
};

message ProbeStatsStreamResponse {
// 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.
ProbeStats value = 1;

// Time holds the timestamp of this ProbeStats's last modification.
google.protobuf.Timestamp time = 2;

// Operation indicates how the ProbeStats 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.
arista.subscriptions.Operation type = 3;
};

service ProbeStatsService {
rpc GetOne (ProbeStatsRequest) returns (ProbeStatsResponse);
rpc GetSome (ProbeStatsSomeRequest) returns (stream ProbeStatsSomeResponse);
rpc GetAll (ProbeStatsStreamRequest) returns (stream ProbeStatsStreamResponse);
rpc Subscribe (ProbeStatsStreamRequest) returns (stream ProbeStatsStreamResponse);
rpc GetMeta (ProbeStatsStreamRequest) returns (MetaResponse);
rpc SubscribeMeta (ProbeStatsStreamRequest) returns (stream MetaResponse);
}
Loading

0 comments on commit 0612001

Please sign in to comment.