chaostoolkit-incubator / chaostoolkit-azure

Chaos Toolkit Extension for Azure
https://chaostoolkit.org/
Apache License 2.0
22 stars 28 forks source link

chaostoolkit-azure does not work with latest Azure SDK #126

Closed markuszm closed 3 years ago

markuszm commented 3 years ago

Installing with latest Azure SDK versions does not work anymore. Error when running chaos discover chaostoolkit-azure:

[2021-02-01 14:20:22 DEBUG] [cli:444] Failed to discover chaostoolkit-azure
    Traceback (most recent call last):
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaoslib/discovery/package.py", line 49, in load_package
        package = importlib.import_module(name)
      File "/usr/local/Cellar/python@3.8/3.8.7/Frameworks/Python.framework/Versions/3.8/lib/python3.8/importlib/__init__.py", line 127, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
      File "<frozen importlib._bootstrap>", line 991, in _find_and_load
      File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 783, in exec_module
      File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaosazure/__init__.py", line 15, in <module>
        from chaosazure.auth import auth
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaosazure/auth/__init__.py", line 6, in <module>
        from msrestazure.azure_active_directory import AADMixin
    ModuleNotFoundError: No module named 'msrestazure'

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaostoolkit/cli.py", line 439, in discover
        discovery = disco(
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaoslib/discovery/discover.py", line 33, in discover
        package = load_package(package_name)
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaoslib/discovery/package.py", line 51, in load_package
        raise DiscoveryFailed(
    chaoslib.exceptions.DiscoveryFailed: could not load Python module 'chaosazure'

When installing msrestazure via pip the next error is:

[2021-02-01 14:23:10 DEBUG] [cli:444] Failed to discover chaostoolkit-azure
    Traceback (most recent call last):
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaoslib/discovery/discover.py", line 91, in discover_activities
        mod = importlib.import_module(extension_mod_name)
      File "/usr/local/Cellar/python@3.8/3.8.7/Frameworks/Python.framework/Versions/3.8/lib/python3.8/importlib/__init__.py", line 127, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
      File "<frozen importlib._bootstrap>", line 991, in _find_and_load
      File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 783, in exec_module
      File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaosazure/machine/actions.py", line 11, in <module>
        from chaosazure.common.resources.graph import fetch_resources
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaosazure/common/resources/graph.py", line 4, in <module>
        from azure.mgmt.resourcegraph.models \
    ImportError: cannot import name 'ErrorResponseException' from 'azure.mgmt.resourcegraph.models' (/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/azure/mgmt/resourcegraph/models/__init__.py)

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaostoolkit/cli.py", line 439, in discover
        discovery = disco(
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaoslib/discovery/discover.py", line 36, in discover
        return discover_func(discover_system=discover_system)
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaosazure/__init__.py", line 33, in discover
        discovery["activities"].extend(__load_exported_activities())
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaosazure/__init__.py", line 74, in __load_exported_activities
        activities.extend(discover_actions("chaosazure.machine.actions"))
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaoslib/discovery/discover.py", line 74, in discover_actions
        return discover_activities(extension_mod_name, "action")
      File "/Users/m.zimmermann/chaos/chaos-engineering/chaostoolkit/venv/lib/python3.8/site-packages/chaoslib/discovery/discover.py", line 93, in discover_activities
        raise DiscoveryFailed(
    chaoslib.exceptions.DiscoveryFailed: could not import extension module 'chaosazure.machine.actions'

It seems to me that: 1) the packaging of msautorest changed 2) ErrorResponseException does not exist anymore in azure.mgmt.resourcegraph.models since version 7.0.0

Workaround at the moment is locking to version 2.0.0 of azure.mgmt.resourcegraph via pip install azure-mgmt-resourcegraph==2.0.0

Would be nice to either lock the version in the requirements file or update the code to the newest SDK versions.

Durgashini28 commented 3 years ago

facing the same issue even with pip install azure-mgmt-resourcegraph==2.0.0.. while trying to do discover could not import extension module 'chaosazure.machine.actions'

Was anyone able to solve this or is there is any workaround?

Thanks in advance

datcu commented 3 years ago

@Durgashini28 have you also installed msrestazure using pip install msrestazure? If yes, what is chaos --verbose discover chaostoolkit-azure is telling you?

Lawouach commented 3 years ago

This should be fixed in 0.9.0