Skip to main content

Arista CloudVision Python Library

The Arista CloudVision Python library provides access to Arista's CloudVision APIs for use in Python applications.

Documentation

API Documentation for this library can be found here.

Documentation for CloudVision's Resource APIs can be found here.

Documentation for generic access to CloudVision can be found at CloudVision Connector.

Installation

Install via pip:

pip install --upgrade cloudvision

Or from source:

python setup.py install

Requirements

  • CloudVision Resource APIs: Python 3.7+
  • CloudVision Connector: Python 3.7+
  • Examples: Python 3.7+

Resource APIs

Cloudvision APIs are state based, resource-oriented APIs modeled in Protobuf and accessed over gRPC using a standardized set of RPC verbs.

CloudVision is a powerful platform that processes and stores tremendous amounts of network data. It knows the topology of the network, device configuration, interface activity and other network events. These APIs allow access to fleet-wide data access and control, forming a management-plane with consistent usage.

For example, consider the following script that gets all existing and then watches for new CloudVision events of critical severity and notifies an administrator when raised and notes it on the event:

import time
import google.protobuf.wrappers_pb2
import grpc
from arista.event.v1 import models, services

# setup credentials as channelCredentials

with grpc.secure_channel("www.arista.io:443", channelCredentials) as channel:
    event_stub = services.EventServiceStub(channel)
    event_annotation_stub = services.EventAnnotationConfigServiceStub(channel)

    event_watch_request = services.EventStreamRequest(
        partial_eq_filter=[models.Event(severity=models.EVENT_SEVERITY_CRITICAL)],
    )
    for resp in event_stub.Subscribe(event_watch_request):
        print(f"Critical event {resp.title.value} raised at {resp.key.timestamp}")
        # send alert here via email, webhook, or incident reporting tool

        # then make a note on the event indicating an alert has been sent
        now_ms = int(time.time() * 1000)
        notes_to_set = {
            now_ms: models.EventNoteConfig(
                note=google.protobuf.wrappers_pb2.StringValue(
                    value="Administrator alerted",
                ),
            ),
        }
        annotation_config = models.EventAnnotationConfig(
            key=resp.key,
            notes=models.EventNotesConfig(
                notes=notes_to_set,
            ),
        )
        event_note_update = services.EventAnnotationConfigSetRequest(value=annotation_config)
        event_annotation_stub.Set(event_note_update)

Async support

Starting from version 1.26.1+ it is possible to use alternative GRPC client based on grpclib,that supports pure-python async stubs. This stubs could be found in cloudvision.api.arista module. More specific information and specifications are provided in the API documentation While two types of stubs are supported, it is recommended to use ones from cloudvision.api.arista, as they use more idiomatic structure, naming conventions and leverage standard python library to describe data model.

Example below shows how to retrieve a list of devices:

import asyncio
from cloudvision.api.client import AsyncCVClient
from cloudvision.api.arista.inventory.v1 import DeviceServiceStub, DeviceStreamRequest

async def get_devices():
    client = AsyncCVClient.from_token('<your service account token>', 'your-cvp.io')

    # get channel
    with client as channel:

        # pass it to the stub
        service = DeviceServiceStub(channel)

        # execute one of stub's methods
        async for item in service.get_all(DeviceStreamRequest()):
            print(item)

asyncio.run(get_devices())

CloudVision Connector

CloudVision Connector is a Python implementation of a GRPC client for CloudVision. It takes care of getting and publishing data and datasets, and also provides utilities for data representation.

Getting started

This is a small example advertising a few of the GRPC client capabilities. This example prints info from all devices streaming into CloudVision.

targetDataset = "analytics"
path = ["DatasetInfo", "Devices"]
# No filtering done on keys, accept all
keys = []
ProtoBufQuery = CreateQuery([(path, keys)], targetDataset)
with GRPCClient("my-cv-host:9900") as client:
     for notifBatch in client.Get([query]):
         for notif in notifBatch["notifications"]:
             # Get timestamp for all update here with notif.Timestamp
             PrettyPrint(notif["updates"])

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudvision-1.32.0.tar.gz (831.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cloudvision-1.32.0-py3-none-any.whl (938.1 kB view details)

Uploaded Python 3

File details

Details for the file cloudvision-1.32.0.tar.gz.

File metadata

  • Download URL: cloudvision-1.32.0.tar.gz
  • Upload date:
  • Size: 831.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for cloudvision-1.32.0.tar.gz
Algorithm Hash digest
SHA256 e4cd763f9cac6cd59e60184bea1cabf3fe5fe7726f0e35640079c89c1dac8cc7
MD5 bdfd8d999e704678a515d1472ae4287c
BLAKE2b-256 7b43bf070d3a58ea89e15e0233bb02255de68d06fa7da9b04d9c6a1d3be5315c

See more details on using hashes here.

File details

Details for the file cloudvision-1.32.0-py3-none-any.whl.

File metadata

  • Download URL: cloudvision-1.32.0-py3-none-any.whl
  • Upload date:
  • Size: 938.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for cloudvision-1.32.0-py3-none-any.whl
Algorithm Hash digest
SHA256 634cf500b50e053a2a381ea9b6ff79dbc45f1604823e59bdb6c46734df4848fb
MD5 afe0201b92b162f26129b27da7b1b2e5
BLAKE2b-256 db43ee520247e160f19f08c4cd18e24fa3693201bb52cafe584f688e7d8fda43

See more details on using hashes here.

Release history Release notifications | RSS feed

1.33.0

2 files

1.32.1

2 files

This release

1.32.0 This release

2 files

1.31.0

2 files

1.30.6

2 files

1.30.5

2 files

1.30.4

2 files

1.30.3

2 files

1.30.2

2 files

1.30.1

2 files

1.30.0

2 files

1.29.1

2 files

1.29.0

2 files

1.28.0

2 files

1.27.1

2 files

1.27.0

2 files

1.26.4

2 files

1.26.3

2 files

1.26.2

2 files

1.26.1

2 files

1.25.3

2 files

1.25.2

2 files

1.25.1

2 files

1.25.0

2 files

1.24.1

2 files

1.24.0

2 files

1.23.4

2 files

1.23.3

2 files

1.23.2

2 files

1.23.1

2 files

1.23.0

2 files

1.22.0

2 files

1.21.1

2 files

1.21.0

2 files

1.20.0

2 files

1.19.1

2 files

1.19.0

2 files

1.18.0

2 files

1.17.0

2 files

1.16.0

2 files

1.15.0

2 files

1.14.2

2 files

1.14.1

2 files

1.14.0

2 files

1.13.0

2 files

1.12.0

2 files

1.11.2

2 files

1.11.1

2 files

1.11.0

2 files

1.10.0

2 files

1.9.1

2 files

1.9.0

2 files

1.8.0

2 files

1.7.2

2 files

1.7.0

2 files

1.6.0

2 files

1.5.0.post3

2 files

1.5.0

2 files

1.4.6

2 files

1.4.5

2 files

1.4.4

2 files

1.4.3

2 files

1.4.2

2 files

1.4.1

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page