From 0612001c62d209edfd6fd10a41a931981a980e67 Mon Sep 17 00:00:00 2001 From: Cian McGrath Date: Tue, 5 Dec 2023 17:42:05 +0000 Subject: [PATCH] release/arista: Release connectivitymonitor Releases connectivitymonitor.v1 Change-Id: Ic41ccc65b868bc84e04adc252d58a6a1ba2d65fb --- .../connectivitymonitor-changelog.yaml | 14 + .../connectivitymonitor.proto | 76 + .../connectivitymonitor.v1/services.gen.proto | 220 +++ .../services.gen.swagger.json | 1230 +++++++++++++++++ 4 files changed, 1540 insertions(+) create mode 100644 arista/connectivitymonitor.v1/connectivitymonitor-changelog.yaml create mode 100644 arista/connectivitymonitor.v1/connectivitymonitor.proto create mode 100644 arista/connectivitymonitor.v1/services.gen.proto create mode 100644 arista/connectivitymonitor.v1/services.gen.swagger.json diff --git a/arista/connectivitymonitor.v1/connectivitymonitor-changelog.yaml b/arista/connectivitymonitor.v1/connectivitymonitor-changelog.yaml new file mode 100644 index 00000000..4c664f3e --- /dev/null +++ b/arista/connectivitymonitor.v1/connectivitymonitor-changelog.yaml @@ -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 diff --git a/arista/connectivitymonitor.v1/connectivitymonitor.proto b/arista/connectivitymonitor.v1/connectivitymonitor.proto new file mode 100644 index 00000000..2571dde0 --- /dev/null +++ b/arista/connectivitymonitor.v1/connectivitymonitor.proto @@ -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; +} \ No newline at end of file diff --git a/arista/connectivitymonitor.v1/services.gen.proto b/arista/connectivitymonitor.v1/services.gen.proto new file mode 100644 index 00000000..e78fd089 --- /dev/null +++ b/arista/connectivitymonitor.v1/services.gen.proto @@ -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); +} diff --git a/arista/connectivitymonitor.v1/services.gen.swagger.json b/arista/connectivitymonitor.v1/services.gen.swagger.json new file mode 100644 index 00000000..efb055d5 --- /dev/null +++ b/arista/connectivitymonitor.v1/services.gen.swagger.json @@ -0,0 +1,1230 @@ +{ + "swagger": "2.0", + "info": { + "title": "arista.connectivitymonitor.v1 Resources", + "version": "CV_RESOURCE_VER_DEV", + "license": { + "name": "Apache License 2.0", + "url": "https://github.com/aristanetworks/cloudvision-apis/blob/trunk/COPYING" + } + }, + "tags": [ + { + "name": "ProbeService" + }, + { + "name": "ProbeStatsService" + } + ], + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/api/resources/connectivitymonitor/v1/Probe": { + "get": { + "operationId": "ProbeService_GetOne", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "key.deviceId", + "description": "device_id is the id of the device in the probe.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "key.host", + "description": "host is the hostname used in the probe.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "key.vrf", + "description": "vrf is the name of the VRF in the probe.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeService" + ] + } + }, + "/api/resources/connectivitymonitor/v1/Probe/all": { + "get": { + "operationId": "ProbeService_GetAll", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.ProbeStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeService" + ] + }, + "post": { + "operationId": "ProbeService_GetAll2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.ProbeStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStreamRequest" + } + } + ], + "tags": [ + "ProbeService" + ] + } + }, + "/api/resources/connectivitymonitor/v1/Probe/getsome": { + "post": { + "operationId": "ProbeService_GetSome", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeSomeResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.ProbeSomeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "keys", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeKey" + } + } + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeService" + ] + } + }, + "/api/resources/connectivitymonitor/v1/Probe/metadata": { + "get": { + "operationId": "ProbeService_GetMeta", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeService" + ] + }, + "post": { + "operationId": "ProbeService_GetMeta2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStreamRequest" + } + } + ], + "tags": [ + "ProbeService" + ] + } + }, + "/api/resources/connectivitymonitor/v1/Probe/watch": { + "get": { + "operationId": "ProbeService_Subscribe", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.ProbeStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeService" + ] + }, + "post": { + "operationId": "ProbeService_Subscribe2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.ProbeStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStreamRequest" + } + } + ], + "tags": [ + "ProbeService" + ] + } + }, + "/api/resources/connectivitymonitor/v1/Probe/watchmetadata": { + "get": { + "operationId": "ProbeService_SubscribeMeta", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeService" + ] + }, + "post": { + "operationId": "ProbeService_SubscribeMeta2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStreamRequest" + } + } + ], + "tags": [ + "ProbeService" + ] + } + }, + "/api/resources/connectivitymonitor/v1/ProbeStats": { + "get": { + "operationId": "ProbeStatsService_GetOne", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "key.deviceId", + "description": "device_id is the id of the device in the probe.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "key.host", + "description": "host is the hostname used in the probe.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "key.vrf", + "description": "vrf is the name of the VRF in the probe.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "key.sourceIntf", + "description": "source_intf is the name of the interface in the probe.", + "in": "query", + "required": true, + "type": "string" + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeStatsService" + ] + } + }, + "/api/resources/connectivitymonitor/v1/ProbeStats/all": { + "get": { + "operationId": "ProbeStatsService_GetAll", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.ProbeStatsStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeStatsService" + ] + }, + "post": { + "operationId": "ProbeStatsService_GetAll2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.ProbeStatsStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsStreamRequest" + } + } + ], + "tags": [ + "ProbeStatsService" + ] + } + }, + "/api/resources/connectivitymonitor/v1/ProbeStats/getsome": { + "post": { + "operationId": "ProbeStatsService_GetSome", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsSomeResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.ProbeStatsSomeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "keys", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsKey" + } + } + }, + { + "name": "time", + "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeStatsService" + ] + } + }, + "/api/resources/connectivitymonitor/v1/ProbeStats/metadata": { + "get": { + "operationId": "ProbeStatsService_GetMeta", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeStatsService" + ] + }, + "post": { + "operationId": "ProbeStatsService_GetMeta2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsStreamRequest" + } + } + ], + "tags": [ + "ProbeStatsService" + ] + } + }, + "/api/resources/connectivitymonitor/v1/ProbeStats/watch": { + "get": { + "operationId": "ProbeStatsService_Subscribe", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.ProbeStatsStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeStatsService" + ] + }, + "post": { + "operationId": "ProbeStatsService_Subscribe2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsStreamResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.ProbeStatsStreamResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsStreamRequest" + } + } + ], + "tags": [ + "ProbeStatsService" + ] + } + }, + "/api/resources/connectivitymonitor/v1/ProbeStats/watchmetadata": { + "get": { + "operationId": "ProbeStatsService_SubscribeMeta", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "time.start", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "time.end", + "in": "query", + "required": false, + "type": "string", + "format": "date-time" + } + ], + "tags": [ + "ProbeStatsService" + ] + }, + "post": { + "operationId": "ProbeStatsService_SubscribeMeta2", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.MetaResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.connectivitymonitor.v1.MetaResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsStreamRequest" + } + } + ], + "tags": [ + "ProbeStatsService" + ] + } + } + }, + "definitions": { + "arista.connectivitymonitor.v1.MetaResponse": { + "type": "object", + "properties": { + "time": { + "type": "string", + "format": "date-time", + "description": "Time holds the timestamp of the last item included in the metadata calculation." + }, + "type": { + "$ref": "#/definitions/arista.subscriptions.Operation", + "description": "Operation indicates how the value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + }, + "count": { + "type": "integer", + "format": "int64", + "description": "Count is the number of items present under the conditions of the request." + } + } + }, + "arista.connectivitymonitor.v1.Probe": { + "type": "object", + "properties": { + "key": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeKey", + "description": "key uniquely identifies the connectivity monitor probe." + }, + "ipAddr": { + "type": "string", + "description": "ip_addr is the IP Address of the probe." + }, + "hostName": { + "type": "string", + "description": "host_name is the name of the host of the probe." + }, + "description": { + "type": "string", + "description": "description is the description of the probe." + } + }, + "description": "Probe is identifying information of a connectivity monitor probe.\nIt is used to retrieve probe information without getting the corresponding stats so that\nprobe information can be displayed without streaming all related data, such as in the UI." + }, + "arista.connectivitymonitor.v1.ProbeKey": { + "type": "object", + "properties": { + "deviceId": { + "type": "string", + "description": "device_id is the id of the device in the probe." + }, + "host": { + "type": "string", + "description": "host is the hostname used in the probe." + }, + "vrf": { + "type": "string", + "description": "vrf is the name of the VRF in the probe." + } + }, + "description": "ProbeKey uniquely identifies a connectivity monitor probe.", + "required": [ + "deviceId", + "host", + "vrf" + ] + }, + "arista.connectivitymonitor.v1.ProbeResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.Probe", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + }, + "time": { + "type": "string", + "format": "date-time", + "description": "Time carries the (UTC) timestamp of the last-modification of the\nProbe instance in this response." + } + } + }, + "arista.connectivitymonitor.v1.ProbeSomeResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.Probe", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + }, + "error": { + "type": "string", + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "arista.connectivitymonitor.v1.ProbeStats": { + "type": "object", + "properties": { + "key": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStatsKey", + "description": "key uniquely identifies the connectivity monitor probe." + }, + "latencyMillis": { + "type": "number", + "format": "double", + "description": "latency_millis is the latency between the device interface and the host.\nValue is in milliseconds." + }, + "jitterMillis": { + "type": "number", + "format": "double", + "description": "jitter_millis is the amount of jitter experienced by requests\nbetween the device interface and host.\nValue is in milliseconds." + }, + "httpResponseTimeMillis": { + "type": "number", + "format": "double", + "description": "http_response_time_millis is the amount of time taken to respond to a http\nrequest between the device interface and the host.\nValue is in milliseconds." + }, + "packetLossPercent": { + "type": "string", + "format": "int64", + "description": "packet_loss_percent is the amount of packet loss experienced\nby requests between the device interface and host.\nValue is a percentage." + }, + "error": { + "type": "string", + "description": "error is the error reported on the connection." + } + }, + "description": "ProbeStats is the connectivity monitor statistics related to the specified probe." + }, + "arista.connectivitymonitor.v1.ProbeStatsKey": { + "type": "object", + "properties": { + "deviceId": { + "type": "string", + "description": "device_id is the id of the device in the probe." + }, + "host": { + "type": "string", + "description": "host is the hostname used in the probe." + }, + "vrf": { + "type": "string", + "description": "vrf is the name of the VRF in the probe." + }, + "sourceIntf": { + "type": "string", + "description": "source_intf is the name of the interface in the probe." + } + }, + "description": "ProbeStatsKey uniquely identifies a connectivity monitor probe's statistics,\nper source interface.", + "required": [ + "deviceId", + "host", + "vrf", + "sourceIntf" + ] + }, + "arista.connectivitymonitor.v1.ProbeStatsResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStats", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + }, + "time": { + "type": "string", + "format": "date-time", + "description": "Time carries the (UTC) timestamp of the last-modification of the\nProbeStats instance in this response." + } + } + }, + "arista.connectivitymonitor.v1.ProbeStatsSomeResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStats", + "description": "Value is the value requested.\nThis structure will be fully-populated as it exists in the datastore. If\noptional fields were not given at creation, these fields will be empty or\nset to default values." + }, + "error": { + "type": "string", + "description": "Error is an optional field.\nIt should be filled when there is an error in the GetSome process." + }, + "time": { + "type": "string", + "format": "date-time" + } + } + }, + "arista.connectivitymonitor.v1.ProbeStatsStreamRequest": { + "type": "object", + "properties": { + "partialEqFilter": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStats" + }, + "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." + }, + "time": { + "$ref": "#/definitions/arista.time.TimeBounds", + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each ProbeStats at end.\n * Each ProbeStats response is fully-specified (all fields set).\n * start: Returns the state of each ProbeStats at start, followed by updates until now.\n * Each ProbeStats response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each ProbeStats at start, followed by updates\n until end.\n * Each ProbeStats response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + } + } + }, + "arista.connectivitymonitor.v1.ProbeStatsStreamResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.ProbeStats", + "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." + }, + "time": { + "type": "string", + "format": "date-time", + "description": "Time holds the timestamp of this ProbeStats's last modification." + }, + "type": { + "$ref": "#/definitions/arista.subscriptions.Operation", + "description": "Operation indicates how the ProbeStats value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + } + } + }, + "arista.connectivitymonitor.v1.ProbeStreamRequest": { + "type": "object", + "properties": { + "partialEqFilter": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.connectivitymonitor.v1.Probe" + }, + "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." + }, + "time": { + "$ref": "#/definitions/arista.time.TimeBounds", + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each Probe at end.\n * Each Probe response is fully-specified (all fields set).\n * start: Returns the state of each Probe at start, followed by updates until now.\n * Each Probe response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each Probe at start, followed by updates\n until end.\n * Each Probe response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." + } + } + }, + "arista.connectivitymonitor.v1.ProbeStreamResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/arista.connectivitymonitor.v1.Probe", + "description": "Value is a value deemed relevant to the initiating request.\nThis structure will always have its key-field populated. Which other fields are\npopulated, and why, depends on the value of Operation and what triggered this notification." + }, + "time": { + "type": "string", + "format": "date-time", + "description": "Time holds the timestamp of this Probe's last modification." + }, + "type": { + "$ref": "#/definitions/arista.subscriptions.Operation", + "description": "Operation indicates how the Probe value in this response should be considered.\nUnder non-subscribe requests, this value should always be INITIAL. In a subscription,\nonce all initial data is streamed and the client begins to receive modification updates,\nyou should not see INITIAL again." + } + } + }, + "arista.subscriptions.Operation": { + "type": "string", + "enum": [ + "UNSPECIFIED", + "INITIAL", + "INITIAL_SYNC_COMPLETE", + "UPDATED", + "DELETED" + ], + "default": "UNSPECIFIED", + "description": " - INITIAL: INITIAL indicates the associated notification is that of the\ncurrent state and a fully-specified Resource is provided.\n - INITIAL_SYNC_COMPLETE: INITIAL_SYNC_COMPLETE indicates all existing-state has been\nstreamed to the client. This status will be sent in an\notherwise-empty message and no subsequent INITIAL messages\nshould be expected.\n - UPDATED: UPDATED indicates the associated notification carries\nmodification to the last-streamed state. This indicates\nthe contained Resource may be a partial diff, though, it\nmay contain a fully-specified Resource.\n - DELETED: DETLETED indicates the associated notification carries\na deletion. The Resource's key will always be set in this case,\nbut no other fields should be expected." + }, + "arista.time.TimeBounds": { + "type": "object", + "properties": { + "start": { + "type": "string", + "format": "date-time" + }, + "end": { + "type": "string", + "format": "date-time" + } + } + }, + "google.protobuf.Any": { + "type": "object", + "properties": { + "@type": { + "type": "string" + } + }, + "additionalProperties": {} + }, + "google.rpc.Status": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/google.protobuf.Any" + } + } + } + } + }, + "securityDefinitions": { + "apiToken": { + "type": "apiKey", + "name": "access_token", + "in": "header" + } + }, + "security": [ + { + "apiToken": [] + } + ], + "externalDocs": { + "description": "More on CloudVision Resource APIs", + "url": "https://aristanetworks.github.io/cloudvision-apis" + } +}