Skip to content

Attribute error when querying NetworkSegment EthRange #3

@njferrant

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")

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