Group members request gives an incomplete list
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
調査の方向性
この issue では、リポジトリのファイルやテストは指定されていません。まず、指定された msgraph-beta-sdk と msgraph-core のバージョンで、提供されている Python の再現コードを実行します。次に、GraphServiceClient のグループメンバー要求と、そのページネーションまたは展開の動作を調査します。SDK が最初の 20 件だけでなく、サービス プリンシパルを含むグループの直接メンバーをすべて返すようになれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Describe the bug
I am trying to use Ansible to update membership of an Entra group with managed identities in it. It is misbehaving because the list of members it gets back from the GraphServiceClient is incomplete - in my case, only 20 of the 35 members listed in the Azure portal actually show up, even with the msgraph_beta SDK.
Expected behavior
A list of all the users in the Direct Members section of the group in the Azure portal.
How to reproduce
SP is created with:
az identity create -g {{ resource_group }} -n {{ application_name }}-mi -o json
Attached is a minimal(ish) test example to get members from a group and also fetch a single service principal (that should be in the group but isn't) by object_id. The SP does exist, with odata_type='#microsoft.graph.servicePrincipal'
import asyncio
from msgraph_beta.generated.groups.groups_request_builder import GroupsRequestBuilder
from msgraph_beta.generated.models.group import Group
from msgraph_beta.generated.groups.item.transitive_members.transitive_members_request_builder import \
TransitiveMembersRequestBuilder
from msgraph_beta.generated.groups.item.group_item_request_builder import GroupItemRequestBuilder
from msgraph_beta.generated.models.reference_create import ReferenceCreate
from msgraph_beta.generated.users.item.user_item_request_builder import UserItemRequestBuilder
from msgraph_beta.generated.service_principals.service_principals_request_builder import ServicePrincipalsRequestBuilder
from msgraph_beta import GraphServiceClient
from azure.identity import DefaultAzureCredential
class Blah:
def __init__(self):
self.azure_credential_track2 = DefaultAzureCredential()
self._client = self.get_msgraph_client()
def get_msgraph_client(self):
return GraphServiceClient(self.azure_credential_track2)
async def get_raw_group_members(self, group_id, filters=None):
request_configuration = GroupItemRequestBuilder.GroupItemRequestBuilderGetRequestConfiguration(
query_parameters=GroupItemRequestBuilder.GroupItemRequestBuilderGetQueryParameters(
# this ensures service principals are returned
# see https://learn.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0&tabs=http
expand=["members"]
),
)
if filters:
request_configuration.query_parameters.filter = filters
group = await self._client.groups.by_group_id(group_id).get(request_configuration=request_configuration)
return group.members
async def get_user(self, user_id):
req = ServicePrincipalsRequestBuilder.ServicePrincipalsRequestBuilderGetRequestConfiguration(
query_parameters=ServicePrincipalsRequestBuilder.ServicePrincipalsRequestBuilderGetRequestConfiguration()
)
user = await self._client.service_principals.by_service_principal_id(user_id).get(request_configuration=req)
return user
def test(self, group_id):
ret = asyncio.get_event_loop().run_until_complete(self.get_raw_group_members(group_id))
current_members = [(object.id, object.display_name, object.odata_type) for object in ret]
return current_members
def test2(self, user_id):
ret = asyncio.get_event_loop().run_until_complete(self.get_user(user_id=user_id))
print(ret)
def main():
group_id = "XXXXXX-YYYY-4e07-a3ab-6de8cbd4e560"
user_id = "XXXXXX-YYYY-4b39-9842-0a1e617f6497"
t = Blah()
cm = t.test(group_id)
print("========================")
for c in cm:
print(f" {c[0]} {c[2]} {c[1]}")
t.test2(user_id)
if __name__ == "__main__":
main()
SDK Version
No response
Latest version known to work for scenario above?
No response
Known Workarounds
No response
Debug output
Click to expand log
```</details>
### Configuration
- Linux (ubuntu 24.04) on x64
- Python 3.12 (same in 3.11)
- msgraph-beta-sdk 1.33.0
- msgraph-core 1.3.3
- msgraph-sdk 1.6.0
### Other information
_No response_
- 主要言語
- Python
- スター
- 630
- フォーク
- 96
- 平均マージ
- 15時間 20分
- マージ済み PR(30日)
- 3
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
microsoftgraph/msgraph-sdk-python のほかの issue
-
status:waiting-for-triage type:bug
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
microsoftgraph/msgraph-sdk-python#1570 ·
-
status:waiting-for-triage type:bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
microsoftgraph/msgraph-sdk-python#1563 ·
-
Needs: Attention :wave: type:bug
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
microsoftgraph/msgraph-sdk-python#1287 · コメント 2 件 · リアクション 1 件 ·
-
status:waiting-for-triage
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
microsoftgraph/msgraph-sdk-python#1557 ·
-
status:waiting-for-triage type:bug
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
microsoftgraph/msgraph-sdk-python#1556 · コメント 1 件 · リアクション 1 件 ·
microsoftgraph/msgraph-sdk-python の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
zostera/django-bootstrap4#894 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
use-agent-os/agent-os#3276 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
NousResearch/hermes-agent#117848 ·