Skip to content

Attribute error when querying NetworkSegment EthRange #3

Description

@njferrant

Issue:

When querying sessions.config.config.network_profiles[1].ip_network_segment[1].eth_range I get an error when cyperf/api_client.py#L568 tries to identify the klass of EthRange:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/dynamic_model_meta.py", line 361, in get_by_link
    field = self.link_based_request(link.name, "GET",
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/dynamic_model_meta.py", line 302, in <lambda>
    c.link_based_request = lambda self, link_name, method, return_type=None, body=None, query=[]: cls.link_based_request(self, link_name, method, return_type, body, query)
                                                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/dynamic_model_meta.py", line 507, in link_based_request
    response = self.api_client.call_api(
               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/api_client.py", line 385, in call_api
    return self.__retry(lambda: self.__call_api(method, url, header_params,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/api_client.py", line 127, in __retry
    result = request_func()
             ^^^^^^^^^^^^^^
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/api_client.py", line 385, in <lambda>
    return self.__retry(lambda: self.__call_api(method, url, header_params,
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/api_client.py", line 359, in __call_api
    return DynamicModel.dynamic_wrapper(self.response_deserialize(
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/api_client.py", line 425, in response_deserialize
    return_data = self.deserialize(response_text, response_type, content_type)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/api_client.py", line 527, in deserialize
    return self.__deserialize(data, response_type)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/api_client.py", line 553, in __deserialize
    return {k: self.__deserialize(v, sub_kls)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/api_client.py", line 553, in <dictcomp>
    return {k: self.__deserialize(v, sub_kls)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/cyperf-testing/.venv/lib/python3.11/site-packages/cyperf/api_client.py", line 568, in __deserialize
    klass = getattr(cyperf.models, klass)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'cyperf.models' has no attribute 'typing.Any'

It seems that in the IPNetwork model (cyperf/models/ip_network.py#L48), the eth_range attribute does not have the EthRange model defined. It's also worth noting that emulated_router also doesn't appear to have the proper model defined for it.

Workaround:

In cyperf/models/ip_network.py, made the following changes (changes shown as diff):

> from cyperf.models.eth_range import EthRange
47c48
<     eth_range: Optional[Dict[str, Any]] = Field(default=None, alias="EthRange")
---
>     eth_range: Optional[EthRange] = Field(default=None, alias="EthRange")

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions