Skip to content

Releases: aruba/pyedgeconnect

0.16.0-a1

07 Mar 00:41
Compare
Choose a tag to compare
0.16.0-a1 Pre-release
Pre-release

0.16.0-a1 -- 2024-03-YY

🚀 Features


.. important::
  ✨✨Preliminary support for Orchestrator 9.3+✨✨:

  There were hundreds of changes to Orchestrator API endpoints in 9.3
  forward. Logic has been added to the pyedgeconnect Orchestrator class
  ``init`` and ``login`` functions to capture Orchestrator version
  information to then determine corrent endpoint syntax
  in further functions.

  As part of this update, 280+ pyedgeconnect functions have been updated
  for 9.3 support, detailed in the updated and added functions section.

  All the logic has been written with cross-compatability in mind so a
  majority of existing code using pyedgeconnect should not need to be
  rewritten for functions that have been written for 9.3 support.

  As an example, let's disect :func:`~pyedgeconnect.Orchestrator.get_api_key`

  In use, it takes the single paramter ``name`` for retrieving a
  particular API key from Orchestrator

  .. code::

    orch.get_api_key(name="myKey")

  The original source code for this function just had a simple path
  with the paramter inline.

  .. code::

      return self._get(f"/apiKey/{name}")

  The updated source code for this and other functions, leverages the
  Orchestrator version to determine the apporpriate syntax.

  .. code::

      if self.orch_version >= 9.3:
          path = f"/apiKey?name={name}"
      else:
          path = f"/apiKey/{name}"

      return self._get(path)


- ✨ **A new code example!**: ⚙️ Automate configuring Service Orchestration
  for HPE Aruba Networking SSE including automating the location and
  tunnels on the SSE platform side. Read through the full
  writeup in the examples to kickstart your integration asap!

- ✨ **A new code example!**: 📈 Pull WAN interface minute data from
  Orchestrator to CSV files and generate a report calculating 95th
  percentile utilization per-appliance as well as per-interface.
  Written walkthrough under the examples section.

- ✨ **A new code example!**: 🚀 Pull Boost minute data from
  Orchestrator to CSV files per appliance with a simple calculation
  to estimate Kbps from the Bytes Boosted value in the original data to
  more easily compare to the configured Boost value already in Kbps.
  Written walkthrough under the examples section.

- **Updated code example!**: EdgeConnect Telemetry demo now includes
  parsing Shaper & Traffic class data.


Updated the following Orchestrator functions from Swagger:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Added updated API endpoint for Orchestrator 9.3+ support
of the following functions, sorted below by their respective
Swagger tags.

ACLS

- :func:`~pyedgeconnect.Orchestrator.get_appliance_acls`

ADMIN_DISTANCE

- :func:`~pyedgeconnect.Orchestrator.get_appliance_admin_distance`

AGGREGATE_STATS

- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_tunnels_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_tunnels_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_appliances_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_appliances_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_applications_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_applications_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_traffic_class_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_traffic_class_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_flows_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_active_flows`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_flows_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_dscp_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_dscp_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_dns_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_dns_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_ports_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_ports_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_top_talkers_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_top_talkers_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_top_talkers_split_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_traffic_behavior_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_traffic_behavior_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_jitter_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_jitter_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_drc_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_drc_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_interface_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_interface_overlay_transport_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_mos_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_mos_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_boost_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_boost_single_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_security_policy_ne_pk_list`
- :func:`~pyedgeconnect.Orchestrator.get_aggregate_stats_security_policy_single_appliance`

ALARM

- :func:`~pyedgeconnect.Orchestrator.get_alarms_from_appliances`
- :func:`~pyedgeconnect.Orchestrator.acknolwedge_alarms_from_appliance`
- :func:`~pyedgeconnect.Orchestrator.add_note_to_appliance_alarm`
- :func:`~pyedgeconnect.Orchestrator.clear_alarms_from_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_alarm_count_from_appliance`
- :func:`~pyedgeconnect.Orchestrator.get_alarm_count_orchestrator_or_appliances`
- :func:`~pyedgeconnect.Orchestrator.get_customized_alarm_severity`
- :func:`~pyedgeconnect.Orchestrator.get_customized_alarm_severity_for_type`
- :func:`~pyedgeconnect.Orchestrator.delete_customized_alarm_severity_for_type`

API_KEYS

- :func:`~pyedgeconnect.Orchestrator.get_api_key`
- :func:`~pyedgeconnect.Orchestrator.update_api_key`
- :func:`~pyedgeconnect.Orchestrator.delete_api_key`

APPLIANCE

- :func:`~pyedgeconnect.Orchestrator.get_appliances`
   - This function now has an additional filter parameter of ``ne_pk`` so
     a single appliance can be retrieved instead of all appliances
- :func:`~pyedgeconnect.Orchestrator.get_appliance_info`
   - Raise warning on deprecation for 9.3+, handles same endpoint logic
     as :func:`~pyedgeconnect.Orchestrator.get_appliances`
- :func:`~pyedgeconnect.Orchestrator.delete_appliance`
- :func:`~pyedgeconnect.Orchestrator.delete_appliance_for_rediscovery`
- :func:`~pyedgeconnect.Orchestrator.delete_denied_appliances`
- :func:`~pyedgeconnect.Orchestrator.add_and_approve_discovered_appliances`
- :func:`~pyedgeconnect.Orchestrator.add_discovered_appliances`
- :func:`~pyedgeconnect.Orchestrator.deny_appliance`
- :func:`~pyedgeconnect.Orchestrator.rediscover_denied_appliance`
- :func:`~pyedgeconnect.Orchestrator.change_appliance_credentials`
- :func:`~pyedgeconnect.Orchestrator.appliance_get_api`
- :func:`~pyedgeconnect.Orchestrator.appliance_post_api`
- :func:`~pyedgeconnect.Orchestrator.appliance_delete_api`
- :func:`~pyedgeconnect.Orchestrator.get_appliance_dns_cache_config`

APPLIANCE_BACKUP

- :func:`~pyedgeconnect.Orchestrator.backup_appliance_config`
- :func:`~pyedgeconnect.Orchestrator.get_appliance_backup_history`
- :func:`~pyedgeconnect.Orchestrator.delete_appliance_backup`
- :func:`~pyedgeconnect.Orchestrator.restore_appliance_from_backup`

APPLIANCE_EXTRA_INFO

- :func:`~pyedgeconnect.Orchestrator.get_appliance_extra_info`
- :func:`~pyedgeconnect.Orchestrator.set_appliance_extra_info`
- :func:`~pyedgeconnect.Orchestrator.delete_appliance_extra_info`

APPLIANCE_PRECONFIG

- :func:`~pyedgeconnect.Orchestrator.modify_preconfig`
- :func:`~pyedgeconnect.Orchestrator.delete_preconfig`
- :func:`~pyedgeconnect.Orchestrator.approve_and_apply_preconfig`
- :func:`~pyedgeconnect.Orchestrator.apply_preconfig_to_existing`
- :func:`~pyedgeconnect.Orchestrator.get_apply_preconfig_status`

APPLIANCE_RESYNC

- :func:`~pyedgeconnect.Orchestrator.appliance_resync`

APPLIANCES_SOFTWARE_VERSIONS

- :func:`~pyedgeconnect.Orchestrator.get_appliance_software_version`

APPLIANCE_UPGRADE

- :func:`~pyedgeconnect.Orchestrator.delete_ecos_image`

APPLICATION_DEFINITION

- :func:`~pyedgeconnect.Orchestrator.update_user_defined_app_port_protocol`
- :func:`~pyedgeconnect.Orchestrator.delete_user_defined_app_port_protocol`
- :func:`~pyedgeconnect.Orchestrator.update_user_defined_app_dns_classification`
- :func:`~pyedgeconnect.Orchestrator.delete_user_defined_app_dns_classification`
- :func:`~pyedgeconnect.Orchestrator.post_user_defined_app_address_map`
- :func:`~pyedgeconnect.Orchestrator.delete_user_defined_app_address_map`
- :func:`~pyedgeconnect.Orchestrator.post_user_defined_app_meter_flow`
- :func:`~pyedgeconnect.Orchestrator.delete_user_defined_app_meter_flow`

APP_SYSTEM_DEPLOY_INFO

- :func:`~pyedgeconnect.Orchestrator.get_appliance_system_deployment_info`

APP_SYSTEM_STATE_INFO

- :func:`~pyedgeconnect.Orchestrator.get_appliance_system_state_info`

AUTHENTICATION

- :func:`~pyedgeconnect.Orchestrator.get_appliance_auth_information`

BANNERS

- :func:`~pyedgeconnect.Orchestrator.get_appliance_login_banners`

BGP

- :func:`~pyedgeconnect.Orchestrator.get_appliance_bgp_config`
- :func:`~pyedgeconnect.Orchestrator.get_appliance_bgp_config_all_vrfs`
- :fun...
Read more

0.15.4-a1

31 Jan 02:41
Compare
Choose a tag to compare
0.15.4-a1 Pre-release
Pre-release

0.15.4-a1 -- 2023-01-30

🚀 Features


✨ **A new home!**: Pyedgeconnect will now be maintained going forward
on the [Aruba GitHub](https://github.com/aruba/pyedgeconnect)

✨ **A new video!**: Video walkthrough explaining and demonstrating the
EdgeConnect Telemetry code demo has been published,
[check it out](https://youtu.be/tiMdGB-exrg)!

✨ **A new code example!**: Automatically update port forwarding
rules on an appliance with a DHCP-addressed WAN interface to true up
discrepencies when the WAN IP address may have changed and requires
the destination address in the inbound port forwarding rules to be
updated.


Updated the following Orchestrator functions from Swagger:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- :func:`~pyedgeconnect.Orchestrator.broadcast_cli` Updated return type
  from ``bool`` to ``text`` forso that result can be retrieved using
  returned key string with
  :func:`~pyedgeconnect.Orchestrator.get_audit_log_task_status`
- :func:`~pyedgeconnect.Orchestrator.get_appliance_template_history`
  Updated type hint for parameter ``latest`` to ``str`` from ``bool``


Added the following EdgeConnect functions from Swagger:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- :func:`~pyedgeconnect.EdgeConnect.get_appliance_flow_bandwidth_stats`
- :func:`~pyedgeconnect.EdgeConnect.get_appliance_flow_details`
- :func:`~pyedgeconnect.EdgeConnect.get_appliance_flow_details_verbose`
- :func:`~pyedgeconnect.EdgeConnect.get_appliance_flows`
- :func:`~pyedgeconnect.EdgeConnect.reclassify_flows`
- :func:`~pyedgeconnect.EdgeConnect.reset_flows`

- :func:`~pyedgeconnect.EdgeConnect.get_port_forwarding_rules`
- :func:`~pyedgeconnect.EdgeConnect.set_port_forwarding_rules`
- :func:`~pyedgeconnect.EdgeConnect.set_gms_marked_port_forwarding_rules`

- :func:`~pyedgeconnect.EdgeConnect.run_ping_or_traceroute`
- :func:`~pyedgeconnect.EdgeConnect.get_ping_or_traceroute`
- :func:`~pyedgeconnect.EdgeConnect.stop_ping_or_traceroute`

- :func:`pyedgeconnect.EdgeConnect.get_appliance_nexthops`

🐛 Bug Fixes


💥 Breaking Changes:


- Corrected function name for :func:`~pyedgeconnect.EdgeConnect.get_vrrp_interfaces`
  which previously was missing `c` in `interfaces`

🧰 Maintenance / Other


- Within the EdgeConnect Telemetry Demo code example: fix ``Total Flows``
  calculation for tunnel at bottom of ``EdgeConnect Telemetry``
  dashboard

🐛 Known Issues


.. warning::

  The following two functions for the _ip_objects submodule exprience
  errors at this time. These function do work in the Orchestrator UI:
  :func:`~pyedgeconnect.Orchestrator.bulk_upload_address_group` and
  :func:`~pyedgeconnect.Orchestrator.bulk_upload_service_group`