Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor(cv_deploy): Optimize push of configlets with version aware API calls #4419

Conversation

ClausHolbechArista
Copy link
Contributor

@ClausHolbechArista ClausHolbechArista commented Sep 2, 2024

Change Summary

Optimize push of configlets with version aware API calls

Component(s) name

arista.avd.cv_deploy

Proposed changes

  • Detect version of CloudVision
  • Use SetSome for newer versions for pushing configlets and containers
  • Retain current batching of parallel Set for older versions.

How to test

Tested manually:

  • CVaaS with 388 devices (very large configs). Use new SetSome method with overflow of max message sizes.
  • 2024.1.0 with 1030 devices. Use old Set in batches of 20 parallel operations. (fails after ~1000 because of CV issue)
  • 2024.2.0 with 1030 devices. Use new SetSome method packed to a single message.
  • 2024.3.0 EFT3 with 1030 devices. Use new SetSome method packed to a single message.
  • 2024.3.0 EFT4 with 1030 devices. Use new SetSome method packed to a single message.

Checklist

User Checklist

  • N/A

Repository Checklist

  • My code has been rebased from devel before I start
  • I have read the CONTRIBUTING document.
  • My change requires a change to the documentation and documentation have been updated accordingly.
  • I have updated molecule CI testing accordingly. (check the box if not applicable)

Copy link

github-actions bot commented Sep 2, 2024

Review docs on Read the Docs

To test this pull request:

# Create virtual environment for this testing below the current directory
python -m venv test-avd-pr-4419
# Activate the virtual environment
source test-avd-pr-4419/bin/activate
# Install all requirements including PyAVD
pip install "pyavd[ansible] @ git+https://github.com/ClausHolbechArista/avd.git@refactor/cv_deploy/optimize-configlet-messages#subdirectory=python-avd" --force
# Point Ansible collections path to the Python virtual environment
export ANSIBLE_COLLECTIONS_PATH=$VIRTUAL_ENV/ansible_collections
# Install Ansible collection
ansible-galaxy collection install git+https://github.com/ClausHolbechArista/avd.git#/ansible_collections/arista/avd/,refactor/cv_deploy/optimize-configlet-messages --force
# Optional: Install AVD examples
cd test-avd-pr-4419
ansible-playbook arista.avd.install_examples

@ClausHolbechArista ClausHolbechArista changed the title Refactor(cv deploy): Optimize push of configlets with version aware API calls Refactor(cv_deploy): Optimize push of configlets with version aware API calls Sep 2, 2024
python-avd/pyavd/_cv/client/__init__.py Show resolved Hide resolved
python-avd/pyavd/_cv/client/__init__.py Outdated Show resolved Hide resolved
python-avd/pyavd/_cv/client/async_decorators.py Outdated Show resolved Hide resolved
python-avd/pyavd/_cv/client/configlet.py Show resolved Hide resolved
python-avd/pyavd/_cv/client/versioning.py Show resolved Hide resolved
@gmuloc gmuloc requested a review from a team September 6, 2024 08:35
@ClausHolbechArista ClausHolbechArista added the one approval This PR has one approval and is only missing one more. label Sep 6, 2024
@ClausHolbechArista ClausHolbechArista added this to the v5.0.0 milestone Sep 9, 2024
Copy link
Contributor

@alexeygorbunov alexeygorbunov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested and worked on 2024.1.2 and CVaaS:

wrapper_cv_version: Called 'set_configlets_from_files' with version '2024.1.2'
set_configlets_from_files: Deploying 10 configlets in batches of 20.
set_configlets_from_files: Batch 1
Adding (b':path', b'/arista.configlet.v1.ConfigletConfigService/Set')

wrapper_cv_version: Called 'set_configlets_from_files' with version 'CVaaS'
wrapper_grpc_msg_size_handler: Called 'set_configlets_from_files' with '10' items
Adding (b':path', b'/arista.configlet.v1.ConfigletConfigService/SetSome')

Copy link

sonarcloud bot commented Sep 12, 2024

@ClausHolbechArista ClausHolbechArista merged commit 7f9c787 into aristanetworks:devel Sep 12, 2024
40 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
one approval This PR has one approval and is only missing one more. rn: Refactor(cv_deploy) state: Documentation role Updated
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants