Skip to content

directory_object.by_directory_object_id: 'str' object has no attribute 'get' #237

@howardjones

Description

@howardjones

Python 3.10.12 and msgraph-core==1.0.0a4 and msgraph-sdk==1.0.0a12, on Ubuntu 20 LTS.

I'm trying to replace a working azure-graphrbac function with the replacement msgraph version - it's to find a displayName for Azure IAM Role Assignments. From the few examples for app-only usage, I thought this was what I needed, but I get an error from deep inside the library that str object has no attribute get.

From what I could tell the parameter to by_directory_object() is supposed to be a string. The self.app_client is the Graph object from this tutorial: https://learn.microsoft.com/en-us/graph/tutorials/python-app-only?tabs=aad&tutorial-step=5 which does successfully list users, but not call my function.

async def get_directoryobject_by_id(self, object_id: str) -> DirectoryObject | None:
    """Given an AD ID from a Role Assignment, figure out what it is"""
    try:
        thing = await self.app_client.directory_objects.by_directory_object_id(object_id).get()
        if thing:
            print(thing)
            return thing
    except APIError as e:
        print(e.error.message)

    return None

Where am I going wrong? Having the library code be generated and the README just point to the REST API is quite frustrating.

Full stacktrace follows:

Traceback (most recent call last):
  File "/home/howardwork/Work/collector/example.py", line 135, in <module>
    asyncio.run(main())
  File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
    return future.result()
  File "/home/howardwork/Work/collector/example.py", line 101, in main
    await make_graph_call(graph)
  File "/home/howardwork/Work/collector/example.py", line 131, in make_graph_call
    await graph.get_directoryobject_by_id("05eb8c5a-a278-408e-a2b5-739f56c00888")
  File "/home/howardwork/Work/collector/example.py", line 59, in get_directoryobject_by_id
    thing = await self.app_client.directory_objects.by_directory_object_id(object_id).get()
  File "/home/howardwork/Work/collector/venv/lib/python3.10/site-packages/msgraph/generated/directory_objects/item/directory_object_item_request_builder.py", line 82, in get
    return await self.request_adapter.send_async(request_info, directory_object.DirectoryObject, error_mapping)
  File "/home/howardwork/Work/collector/venv/lib/python3.10/site-packages/kiota_http/httpx_request_adapter.py", line 123, in send_async
    result = root_node.get_object_value(model_type)
  File "/home/howardwork/Work/collector/venv/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 224, in get_object_value
    result = factory.create_from_discriminator_value(self)
  File "/home/howardwork/Work/collector/venv/lib/python3.10/site-packages/msgraph/generated/models/directory_object.py", line 32, in create_from_discriminator_value
    mapping_value_node = parse_node.get_child_node("@odata.type")
  File "/home/howardwork/Work/collector/venv/lib/python3.10/site-packages/kiota_serialization_json/json_parse_node.py", line 55, in get_child_node
    if self._json_node and self._json_node.get(identifier):
AttributeError: 'str' object has no attribute 'get'

Metadata

Metadata

Assignees

No one assigned

    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