Skip to content

Commit

Permalink
Merge branch 'devel' into unique-id-regions-and-sites
Browse files Browse the repository at this point in the history
  • Loading branch information
gmuloc committed Jun 18, 2024
2 parents 602ee7c + fde40bd commit 80d0ed5
Show file tree
Hide file tree
Showing 35 changed files with 142 additions and 151 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ classDiagram

### SharedUtils

See the source code [here](../../plugins/plugin_utils/eos_designs_shared_utils/__init__.py)
See the source code [here](https://github.com/aristanetworks/avd/tree/devel/python-avd/pyavd/_eos_designs/shared_utils)

```mermaid
classDiagram
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
from ansible.errors import AnsibleActionFail
from ansible.plugins.action import ActionBase, display

from ansible_collections.arista.avd.plugins.plugin_utils.eos_designs_shared_utils import SharedUtils
from ansible_collections.arista.avd.plugins.plugin_utils.errors import AristaAvdMissingVariableError
from ansible_collections.arista.avd.plugins.plugin_utils.pyavd_wrappers import RaiseOnUse
from ansible_collections.arista.avd.plugins.plugin_utils.schema.avdschematools import AvdSchemaTools
Expand All @@ -21,9 +20,10 @@

try:
from pyavd._eos_designs.eos_designs_facts import EosDesignsFacts
from pyavd._eos_designs.shared_utils import SharedUtils
from pyavd.vendor.errors.errors import AristaAvdMissingVariableError as PyavdMissingVariableError
except ImportError as e:
EosDesignsFacts = RaiseOnUse(
EosDesignsFacts = SharedUtils = RaiseOnUse(
AnsibleActionFail(
f"The '{PLUGIN_NAME}' plugin requires the 'pyavd' Python library. Got import error",
orig_exc=e,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,28 @@
from ansible.utils.vars import isidentifier

from ansible_collections.arista.avd.plugins.plugin_utils.avdfacts import AvdFacts
from ansible_collections.arista.avd.plugins.plugin_utils.eos_designs_shared_utils import SharedUtils
from ansible_collections.arista.avd.plugins.plugin_utils.errors import AristaAvdMissingVariableError
from ansible_collections.arista.avd.plugins.plugin_utils.merge import merge
from ansible_collections.arista.avd.plugins.plugin_utils.pyavd_wrappers import RaiseOnUse
from ansible_collections.arista.avd.plugins.plugin_utils.schema.avdschematools import AvdSchemaTools
from ansible_collections.arista.avd.plugins.plugin_utils.strip_empties import strip_null_from_data
from ansible_collections.arista.avd.plugins.plugin_utils.utils import get, get_templar, load_python_class
from ansible_collections.arista.avd.plugins.plugin_utils.utils import template as templater

DEFAULT_PYTHON_CLASS_NAME = "AvdStructuredConfig"

PLUGIN_NAME = "arista.avd.yaml_templates_to_facts"

try:
from pyavd._eos_designs.shared_utils import SharedUtils
except ImportError as e:
SharedUtils = RaiseOnUse(
AnsibleActionFail(
f"The '{PLUGIN_NAME}' plugin requires the 'pyavd' Python library. Got import error",
orig_exc=e,
)
)


class ActionModule(ActionBase):
def run(self, tmp=None, task_vars=None):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from typing import TYPE_CHECKING

if TYPE_CHECKING:
from ansible_collections.arista.avd.plugins.plugin_utils.eos_designs_shared_utils import SharedUtils
from pyavd._eos_designs.shared_utils import SharedUtils


class AvdFacts:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The eos_designs_shared_utils Python module has been moved to PyAVD in the folder /python-avd/pyavd/_eos_designs/shared_utils/

This file was deleted.

7 changes: 1 addition & 6 deletions python-avd/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ copy-libs: ## Copy files from Ansible AVD collection
mkdir -p $(J2_DIR)
mkdir -p $(SCHEMAS_DIR)
mkdir -p $(EOS_CLI_CONFIG_GEN_TEMPLATE_DIR)
mkdir -p $(EOS_DESIGNS_MODULES_DIR)

cp $(ANSIBLE_AVD_DIR)/LICENSE $(PACKAGE_DIR)/LICENSE
cp -r $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/plugins/plugin_utils/* $(VENDOR_DIR)
Expand All @@ -62,7 +61,7 @@ copy-libs: ## Copy files from Ansible AVD collection
cp -r $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/* $(EOS_CLI_CONFIG_GEN_TEMPLATE_DIR)
rm -f $(EOS_CLI_CONFIG_GEN_TEMPLATE_DIR)/avd_schema_documentation.j2

mv $(VENDOR_DIR)/eos_designs_* $(EOS_DESIGNS_MODULES_DIR)/
rm -rf $(VENDOR_DIR)/eos_designs_*

$(SCRIPTS_DIR)/build-schemas.py
cp $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.pickle $(SCHEMAS_DIR)/
Expand All @@ -86,7 +85,6 @@ fix-libs: ## Fix/remove various Ansible specifics things from python files
find $(PACKAGE_DIR) -name '*.py' -exec sed -i -e 's/AnsibleError/AristaAvdError/g' {} +
find $(PACKAGE_DIR) -name '*.py' -exec sed -i -e 's/AnsibleActionFail/AristaAvdError/g' {} +
find $(PACKAGE_DIR) -name '*.py' -exec sed -i -e 's/ansible_collections\.arista\.avd\.plugins\.plugin_utils\.schema\.avdschematools/pyavd.avd_schema_tools/g' {} +
find $(PACKAGE_DIR) -name '*.py' -exec sed -i -e 's/ansible_collections\.arista\.avd\.plugins\.plugin_utils\.eos_designs_shared_utils/$(VENDOR_IMPORT)\.eos_designs\.eos_designs_shared_utils/g' {} +
find $(PACKAGE_DIR) -name '*.py' -exec sed -i -e 's/ansible_collections\.arista\.avd\.plugins\.plugin_utils/$(VENDOR_IMPORT)/g' {} +
find $(PACKAGE_DIR) -name '*.py' -exec sed -i -e 's/ansible_collections\.arista\.avd\.plugins\.module_utils/$(VENDOR_IMPORT)/g' {} +

Expand All @@ -102,9 +100,6 @@ fix-libs: ## Fix/remove various Ansible specifics things from python files

find $(PACKAGE_DIR) -name '*.py' -exec sed -i -e 's/ansible_collections\.arista\.avd\.plugins\.filter/$(VENDOR_IMPORT)\.j2\.filter/g' {} +

# Only remaining python_modules are ip_addressing and interface_descriptions referred in eos_designs_shared_utils.
find $(PACKAGE_DIR) -name '*.py' -exec sed -i -e 's/ansible_collections\.arista\.avd\.roles\.eos_designs\.python_modules/$(EOS_DESIGNS_IMPORT)/g' {} +

find $(PACKAGE_DIR) -name '*.py' -exec sed -i -e 's/from ansible\.utils\.display/from $(VENDOR_IMPORT)\.utils\.display/g' {} +

cp -r $(CURRENT_DIR)/vendor_overrides/* $(VENDOR_DIR)/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from typing import TYPE_CHECKING

if TYPE_CHECKING:
from ...vendor.eos_designs.eos_designs_shared_utils import SharedUtils
from ..shared_utils import SharedUtils


class InterfaceDescriptionData:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
from functools import cached_property
from typing import TYPE_CHECKING

from ansible_collections.arista.avd.plugins.plugin_utils.utils import get
from ...vendor.utils import get

if TYPE_CHECKING:
from .shared_utils import SharedUtils
from . import SharedUtils


class BgpPeerGroupsMixin:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
from functools import cached_property
from typing import TYPE_CHECKING

from ansible_collections.arista.avd.plugins.filter.convert_dicts import convert_dicts
from ansible_collections.arista.avd.plugins.plugin_utils.utils import get
from ...j2filters.convert_dicts import convert_dicts
from ...vendor.utils import get

if TYPE_CHECKING:
from .shared_utils import SharedUtils
from . import SharedUtils

# NOTE: there is a static list of default endpoint keys in the fabric connected endpoints documentation templates.
DEFAULT_CONNECTED_ENDPOINTS_KEYS = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
from functools import cached_property
from typing import TYPE_CHECKING

from ansible_collections.arista.avd.plugins.filter.range_expand import range_expand
from ansible_collections.arista.avd.plugins.plugin_utils.utils import get, get_item
from ...vendor.j2.filter.range_expand import range_expand
from ...vendor.utils import get, get_item

if TYPE_CHECKING:
from .shared_utils import SharedUtils
from . import SharedUtils


class CvTopology:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
from functools import cached_property
from typing import TYPE_CHECKING

from ansible_collections.arista.avd.plugins.filter.convert_dicts import convert_dicts
from ansible_collections.arista.avd.plugins.filter.natural_sort import natural_sort
from ansible_collections.arista.avd.plugins.filter.range_expand import range_expand
from ansible_collections.arista.avd.plugins.plugin_utils.errors import AristaAvdError, AristaAvdMissingVariableError
from ansible_collections.arista.avd.plugins.plugin_utils.merge import merge
from ansible_collections.arista.avd.plugins.plugin_utils.utils import default, get, get_item, unique
from ...j2filters.convert_dicts import convert_dicts
from ...j2filters.natural_sort import natural_sort
from ...vendor.errors import AristaAvdError, AristaAvdMissingVariableError
from ...vendor.j2.filter.range_expand import range_expand
from ...vendor.merge import merge
from ...vendor.utils import default, get, get_item, unique

if TYPE_CHECKING:
from .shared_utils import SharedUtils
from . import SharedUtils


class FilteredTenantsMixin:
Expand Down Expand Up @@ -456,5 +456,3 @@ def get_additional_svi_config(svi_config: dict, svi: dict, vrf: dict) -> None:
ospf_keys.append({"id": ospf_key["id"], "hash_algorithm": ospf_key.get("hash_algorithm", "sha512"), "key": ospf_key["key"]})
if ospf_keys:
svi_config.update({"ospf_authentication": ospf_authentication, "ospf_message_digest_keys": ospf_keys})

return None
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
from functools import cached_property
from typing import TYPE_CHECKING, Literal

from ansible_collections.arista.avd.plugins.plugin_utils.utils import get
from ...vendor.utils import get

if TYPE_CHECKING:
from .shared_utils import SharedUtils
from . import SharedUtils


class FlowTrackingMixin:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
from ipaddress import ip_network
from typing import TYPE_CHECKING

from ansible_collections.arista.avd.plugins.plugin_utils.errors import AristaAvdError, AristaAvdMissingVariableError
from ansible_collections.arista.avd.plugins.plugin_utils.utils import default, get
from ...vendor.errors import AristaAvdError, AristaAvdMissingVariableError
from ...vendor.utils import default, get

if TYPE_CHECKING:
from .shared_utils import SharedUtils
from . import SharedUtils


class InbandManagementMixin:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
from functools import cached_property
from typing import TYPE_CHECKING

from ansible_collections.arista.avd.plugins.plugin_utils.merge import merge
from ansible_collections.arista.avd.plugins.plugin_utils.utils import get, load_python_class
from ansible_collections.arista.avd.roles.eos_designs.python_modules.interface_descriptions import AvdInterfaceDescriptions
from ...vendor.merge import merge
from ...vendor.utils import get, load_python_class
from ..interface_descriptions import AvdInterfaceDescriptions

if TYPE_CHECKING:
from .shared_utils import SharedUtils
from . import SharedUtils

DEFAULT_AVD_INTERFACE_DESCRIPTIONS_PYTHON_CLASS_NAME = "AvdInterfaceDescriptions"

Expand Down Expand Up @@ -54,5 +54,5 @@ def interface_descriptions_templates(self: SharedUtils) -> dict:
node_type_templates = get(self.node_type_key_data, "interface_descriptions", default={})
if hostvar_templates or node_type_templates:
return merge(hostvar_templates, node_type_templates, list_merge="replace", destructive_merge=False)
else:
return {}

return {}
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
from functools import cached_property
from typing import TYPE_CHECKING

from ansible_collections.arista.avd.plugins.plugin_utils.merge import merge
from ansible_collections.arista.avd.plugins.plugin_utils.utils import get, load_python_class
from ansible_collections.arista.avd.roles.eos_designs.python_modules.ip_addressing import AvdIpAddressing
from ...vendor.merge import merge
from ...vendor.utils import get, load_python_class
from ..ip_addressing import AvdIpAddressing

if TYPE_CHECKING:
from .shared_utils import SharedUtils
from . import SharedUtils

DEFAULT_AVD_IP_ADDRESSING_PYTHON_CLASS_NAME = "AvdIpAddressing"

Expand Down Expand Up @@ -58,8 +58,8 @@ def vtep_ip(self: SharedUtils) -> str:
"""
if self.mlag is True:
return self.ip_addressing.vtep_ip_mlag()
else:
return self.ip_addressing.vtep_ip()

return self.ip_addressing.vtep_ip()

@cached_property
def vtep_vvtep_ip(self: SharedUtils) -> str | None:
Expand Down Expand Up @@ -96,5 +96,5 @@ def ip_addressing_templates(self: SharedUtils) -> dict:
node_type_templates = get(self.node_type_key_data, "ip_addressing", default={})
if hostvar_templates or node_type_templates:
return merge(hostvar_templates, node_type_templates, list_merge="replace", destructive_merge=False)
else:
return {}

return {}
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
from functools import cached_property
from typing import TYPE_CHECKING

from ansible_collections.arista.avd.plugins.plugin_utils.merge import merge
from ansible_collections.arista.avd.plugins.plugin_utils.utils import get, get_item
from ...vendor.merge import merge
from ...vendor.utils import get, get_item

if TYPE_CHECKING:
from .shared_utils import SharedUtils
from . import SharedUtils


class L3InterfacesMixin:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
from functools import cached_property
from typing import TYPE_CHECKING

from ansible_collections.arista.avd.plugins.plugin_utils.utils import get
from ...vendor.utils import get

if TYPE_CHECKING:
from .shared_utils import SharedUtils
from . import SharedUtils


class LinkTrackingGroupsMixin:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
from functools import cached_property
from typing import TYPE_CHECKING

from ansible_collections.arista.avd.plugins.plugin_utils.errors import AristaAvdMissingVariableError
from ansible_collections.arista.avd.plugins.plugin_utils.utils import default, get
from ...vendor.errors import AristaAvdMissingVariableError
from ...vendor.utils import default, get

if TYPE_CHECKING:
from .shared_utils import SharedUtils
from . import SharedUtils


class MgmtMixin:
Expand Down Expand Up @@ -70,7 +70,7 @@ def default_mgmt_method(self: SharedUtils) -> str | None:

return default_mgmt_method

elif default_mgmt_method == "inband":
if default_mgmt_method == "inband":
# Check for missing interface
if self.inband_mgmt_interface is None:
raise AristaAvdMissingVariableError("'default_mgmt_method: inband' requires 'inband_mgmt_interface' to be set.")
Expand All @@ -83,7 +83,7 @@ def default_mgmt_method(self: SharedUtils) -> str | None:
def default_mgmt_protocol_vrf(self: SharedUtils) -> str | None:
if self.default_mgmt_method == "oob":
return self.mgmt_interface_vrf
elif self.default_mgmt_method == "inband":
if self.default_mgmt_method == "inband":
# inband_mgmt_vrf returns None for vrf default.
return self.inband_mgmt_vrf or "default"

Expand All @@ -93,7 +93,7 @@ def default_mgmt_protocol_vrf(self: SharedUtils) -> str | None:
def default_mgmt_protocol_interface(self: SharedUtils) -> str | None:
if self.default_mgmt_method == "oob":
return self.mgmt_interface
elif self.default_mgmt_method == "inband":
if self.default_mgmt_method == "inband":
return self.inband_mgmt_interface

return None
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,15 @@
from functools import cached_property
from typing import TYPE_CHECKING

from ansible_collections.arista.avd.plugins.filter.convert_dicts import convert_dicts
from ansible_collections.arista.avd.plugins.filter.natural_sort import natural_sort
from ansible_collections.arista.avd.plugins.filter.range_expand import range_expand
from ansible_collections.arista.avd.plugins.plugin_utils.errors.errors import AristaAvdError, AristaAvdMissingVariableError
from ansible_collections.arista.avd.plugins.plugin_utils.utils import default, get, get_item
from ...j2filters.convert_dicts import convert_dicts
from ...j2filters.natural_sort import natural_sort
from ...vendor.errors.errors import AristaAvdError, AristaAvdMissingVariableError
from ...vendor.j2.filter.range_expand import range_expand
from ...vendor.utils import default, get, get_item

if TYPE_CHECKING:
from pyavd._eos_designs.eos_designs_facts import EosDesignsFacts

from .shared_utils import SharedUtils
from ...eos_designs_facts import EosDesignsFacts
from . import SharedUtils


class MiscMixin:
Expand Down Expand Up @@ -364,10 +363,7 @@ def new_network_services_bgp_vrf_config(self: SharedUtils) -> bool:
TODO: Change default to True in all cases in AVD 5.0.0 and remove in AVD 6.0.0
"""
if self.uplink_type == "p2p-vrfs":
default_value = True
else:
default_value = False
default_value = bool(self.uplink_type == "p2p-vrfs")
return get(self.hostvars, "new_network_services_bgp_vrf_config", default=default_value)

@cached_property
Expand Down
Loading

0 comments on commit 80d0ed5

Please sign in to comment.