Skip to content

0.15.2-a1

Pre-release
Pre-release
Compare
Choose a tag to compare
@zachcamara-hpe zachcamara-hpe released this 28 Jul 22:30
· 30 commits to main since this release

0.15.2-a1 -- 2022-07-29

🚀 Features


- New code example: **upload security policy** - Upload Firewall
  Security Policies to an appliance or create a new Template Group to
  be assigned to appliances

  - Overview: :doc:`/examples/upload_security_policy`
  - Code: `upload_security_policy <https://github.com/SPOpenSource/edgeconnect-python/tree/main/examples/upload_security_policy>`_

- Updated logging messages (when using ``log_console`` and ``log_file``
  parameters for EdgeConnect and Orchestrator) to include base Orch FQDN
  or ECOS FQDN to be clear when logging statements across different
  instances in a single script.


Added the following EdgeConnect functions from Swagger:

from .ecos._alarm
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_alarms`
  - :func:`~pyedgeconnect.EdgeConnect.acknowledge_appliance_alarms`
  - :func:`~pyedgeconnect.EdgeConnect.clear_appliance_alarms`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_alarm_descriptions`
  - :func:`~pyedgeconnect.EdgeConnect.add_note_appliance_alarms`
  - :func:`~pyedgeconnect.EdgeConnect.delete_appliance_alarms`

from .ecos._bonded_tunnel
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_bonded_tunnels_state`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_multiple_bonded_tunnels_state`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_all_bonded_tunnel_ids`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_bonded_tunnel_aliases`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_bonded_tunnels_config`
  - :func:`~pyedgeconnect.EdgeConnect.configure_appliance_all_bonded_tunnels`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_single_bonded_tunnel_config`
  - :func:`~pyedgeconnect.EdgeConnect.delete_appliance_single_bonded_tunnel`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_multiple_bonded_tunnels_config`
  - :func:`~pyedgeconnect.EdgeConnect.delete_appliance_multiple_bonded_tunnels`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_bonded_tunnel_live_view_info`

from .ecos._cli
  - :func:`~pyedgeconnect.EdgeConnect.perform_appliance_cli_command`
  - :func:`~pyedgeconnect.EdgeConnect.perform_appliance_multiple_cli_command`

from .ecos._deployment
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_deployment`

from .ecos._local_subnets
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_subnets`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_subnets_all_vrfs`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_subnets_single_vrf`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_locally_configured_subnets`
  - :func:`~pyedgeconnect.EdgeConnect.update_appliance_all_locally_configured_subnets`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_locally_configured_subnets_single_vrf`
  - :func:`~pyedgeconnect.EdgeConnect.update_appliance_all_locally_configured_subnets_single_vrf`
  - :func:`~pyedgeconnect.EdgeConnect.add_appliance_locally_configured_routes`
  - :func:`~pyedgeconnect.EdgeConnect.delete_appliance_locally_configured_routes`
  - :func:`~pyedgeconnect.EdgeConnect.appliance_find_preferred_route`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_routing_peers_info`

from .ecos._peers
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_peers`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_peers_ec_only`

from .ecos._security_maps
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_security_policies`
  - :func:`~pyedgeconnect.EdgeConnect.configure_appliance_security_policies`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_security_policy_map`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_security_policy_zone_pair`
  - :func:`~pyedgeconnect.EdgeConnect.delete_appliance_security_policy_zone_pair`
  - :func:`~pyedgeconnect.EdgeConnect.delete_appliance_security_policy_rule`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_security_policy_settings`
  - :func:`~pyedgeconnect.EdgeConnect.set_appliance_security_policy_settings`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_security_policy_settings_by_map_name`

from .ecos._third_party_tunnel
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_3rdparty_tunnels_state`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_multiple_3rdparty_tunnels_state`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_all_3rdparty_tunnel_ids`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_3rdparty_tunnel_aliases`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_3rdparty_tunnels_config`
  - :func:`~pyedgeconnect.EdgeConnect.configure_appliance_multiple_3rdparty_tunnels`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_single_3rdparty_tunnel_config`
  - :func:`~pyedgeconnect.EdgeConnect.delete_appliance_single_3rdparty_tunnel`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_multiple_3rdparty_tunnels_config`
  - :func:`~pyedgeconnect.EdgeConnect.delete_appliance_multiple_3rdparty_tunnels`

from .ecos._tunnel
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_tunnels_config_and_state`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_tunnels_config`
  - :func:`~pyedgeconnect.EdgeConnect.configure_appliance_all_tunnels`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_single_tunnel_config`
  - :func:`~pyedgeconnect.EdgeConnect.configure_appliance_single_tunnel`
  - :func:`~pyedgeconnect.EdgeConnect.delete_appliance_single_tunnel`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_all_tunnel_ids`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_tunnel_aliases`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_multiple_tunnels_config`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_multiple_tunnels_state`
  - :func:`~pyedgeconnect.EdgeConnect.configure_appliance_multiple_tunnels`
  - :func:`~pyedgeconnect.EdgeConnect.delete_appliance_multiple_tunnels`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_tunnel_source_endpoints`
  - :func:`~pyedgeconnect.EdgeConnect.get_appliance_passthrough_tunnel_source_endpoints`
  - :func:`~pyedgeconnect.EdgeConnect.start_appliance_tunnel_mtu_discovery`
  - :func:`~pyedgeconnect.EdgeConnect.apply_appliance_tunnel_template`
  - :func:`~pyedgeconnect.EdgeConnect.set_appliance_tunnels_ipsec_psk`

🐛 Bug Fixes


- `#10 <https://github.com/SPOpenSource/edgeconnect-python/issues/10>`_ -
  :func:`~pyedgeconnect.Orchestrator.login` and
  :func:`~pyedgeconnect.EdgeConnect.login` returned ``True`` even when
  login failed
- `#11 <https://github.com/SPOpenSource/edgeconnect-python/issues/11>`_ -
  :func:`~pyedgeconnect.Orchestrator.appliance_resync` had incorrect
  endpoint of ``/applianceResyncSynchronize``, corrected to
  ``/applianceResync``
- `#12 <https://github.com/SPOpenSource/edgeconnect-python/issues/12>`_ -
  The preconfig generator example code had the option to look for a
  column for appliance serial number to match preconfig to, however,
  didn't include that information when creating the preconfig on
  Orchestrator as the parameter wasn't specified.
- `#13 <https://github.com/SPOpenSource/edgeconnect-python/issues/13>`_ -
  Corrected return type-hint for methods that use `return_type="full_response"`
  with hint of requests.Response object rather than `dict`

🧰 Maintenance / Other


Introduced initial automated tox testing for Python 3.7, 3.8, 3.9, 3.10
- run pytest tests

additional `testenv:format` environment
- Check isort for imported packages
- Check flake8

~~~~~~~~~~~~~~~


🐛 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`