[Bug] Create/Update Advanced Computer Search Methods Sending Empty Criteria
还没有人认领这个 Issue。
评估
调研方向
从 create_advanced_computer_search 和 update_advanced_computer_search_by_id 入口点开始,然后跟踪 ClassicAdvancedComputerSearch.criteria 如何为 Jamf Pro 请求进行序列化。使用提供的 criteria 示例重现该问题,并验证创建和更新搜索后,按 ID 获取该搜索时 criteria 是否保持不变。
由索引模型根据 Issue 内容生成。
描述
tl;dr when attempting to create or update an advanced computer search (using the create_advanced_computer_search or update_advanced_computer_search_by_id methods, respectively), the operation is completed successfully, except for the search criteria. Name and display fields are set as configured, but any criteria sent are seemingly ignored, and the search is created/updated with no criteria. This effectively places every device into the results for the advanced computer search.
Reproduction details below will be for creating a search, but the result is the same when attempting to update an existing search.
Steps to Reproduce
from jamf_pro_sdk import JamfProClient, SessionConfig
from jamf_pro_sdk.models.classic import computer_groups, advanced_computer_searches
from jamf_pro_sdk.models.classic.criteria import ClassicCriterion
from jamf_pro_sdk.clients.auth import ApiClientCredentialsProvider
jamfClient = JamfProClient(
server=jamfURL,
credentials=ApiClientCredentialsProvider(jamfClientID, jamfClientSecret),
session_config=SessionConfig(**{"timeout": 30, "max_retries": 3}),
)
notUpdatedSearchData = advanced_computer_searches.ClassicAdvancedComputerSearch(
name="macOS Version Not Current",
criteria=[
ClassicCriterion(
name='Managed',
priority=0,
and_or='and',
search_type='is',
value='Managed',
opening_paren=False,
closing_paren=False
),
ClassicCriterion(
name='Operating System Version',
priority=1,
and_or='and',
search_type='less than',
value='15.1',
opening_paren=False,
closing_paren=False
)
],
display_fields=[
advanced_computer_searches.ClassicAdvancedComputerSearchDisplayField(
name="JSS Computer ID"
),
advanced_computer_searches.ClassicAdvancedComputerSearchDisplayField(
name="Last Check-in"
),
advanced_computer_searches.ClassicAdvancedComputerSearchDisplayField(
name="Serial Number"
),
advanced_computer_searches.ClassicAdvancedComputerSearchDisplayField(
name="Operating System Version"
),
advanced_computer_searches.ClassicAdvancedComputerSearchDisplayField(
name="Username"
),
],
)
searchID = jamfClient.classic_api.create_advanced_computer_search(data=notUpdatedSearchData)
searchData = jamfClient.classic_api.get_advanced_computer_search_by_id(advanced_search=searchID)
print(searchData)
Expected Result
Expected an advanced computer search to be created with the following criteria:
Actual Result
Advanced computer search created with no criteria:
id=6 name='macOS Version Not Current' site=ClassicSite(id=-1, name='None') criteria=[] display_fields=[ClassicAdvancedComputerSearchDisplayField(name='Username'), ClassicAdvancedComputerSearchDisplayField(name='Operating System Version'), ClassicAdvancedComputerSearchDisplayField(name='JSS Computer ID'), ClassicAdvancedComputerSearchDisplayField(name='Serial Number'), ClassicAdvancedComputerSearchDisplayField(name='Last Check-in')]
(omitted computers from above output)
Additional Data
If I retrieve the criteria from an existing advanced computer search (with correct criteria) and feed that directly into the create method, I would definitely expect this criteria to be valid and accepted. Even doing this, the new search is created with no criteria:
knownGoodSearchCriteria = jamfClient.classic_api.get_advanced_computer_search_by_id(advanced_search=5).criteria
print(knownGoodSearchCriteria)
####
[ClassicCriterion(name='Managed', priority=0, and_or='and', search_type='is', value='Managed', opening_paren=False, closing_paren=False), ClassicCriterion(name='Operating System Version', priority=1, and_or='and', search_type='less than', value='15.1', opening_paren=False, closing_paren=False)]
####
notUpdatedSearchData = advanced_computer_searches.ClassicAdvancedComputerSearch(
name="macOS Version Not Current",
criteria=knownGoodSearchCriteria,
display_fields=[
advanced_computer_searches.ClassicAdvancedComputerSearchDisplayField(
name="JSS Computer ID"
),
advanced_computer_searches.ClassicAdvancedComputerSearchDisplayField(
name="Last Check-in"
),
advanced_computer_searches.ClassicAdvancedComputerSearchDisplayField(
name="Serial Number"
),
advanced_computer_searches.ClassicAdvancedComputerSearchDisplayField(
name="Operating System Version"
),
advanced_computer_searches.ClassicAdvancedComputerSearchDisplayField(
name="Username"
),
],
)
searchID = jamfClient.classic_api.create_advanced_computer_search(data=notUpdatedSearchData)
searchData = jamfClient.classic_api.get_advanced_computer_search_by_id(advanced_search=searchID)
print(searchData)
####
id=7 name='macOS Version Not Current' site=ClassicSite(id=-1, name='None') criteria=[] display_fields=[ClassicAdvancedComputerSearchDisplayField(name='Username'), ClassicAdvancedComputerSearchDisplayField(name='JSS Computer ID'), ClassicAdvancedComputerSearchDisplayField(name='Last Check-in'), ClassicAdvancedComputerSearchDisplayField(name='Serial Number'), ClassicAdvancedComputerSearchDisplayField(name='Operating System Version')]
####
(again omitted computers)
System Information
macOS 15.1
Python 3.12.1
SDK 0.6a2
Jamf Pro 11.10.2
- 主要语言
- Python
- 星标
- 69
- 派生
- 16
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
我们还没有检查这个项目的环境配置文件。先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
macadmins/jamf-pro-sdk-python 的其他 Issue
-
enhancement
难度 5/5 一周以上 新手友好度 25/100
-
[Bug] preview/mdm/commands deprecated & removed which breaks send_mdm_command_preview() method.可能重新可做 @liquidz00 于 411 天前认领,目前没有进行中的 PR。 未关闭bug
macadmins/jamf-pro-sdk-python#68 · 1 条评论 · 已指派 1 人 ·
-
[Feature Request] Pass a model to the Classic and Pro API request methods as the return type.可能重新可做 @liquidz00 于 465 天前认领,目前没有进行中的 PR。 未关闭enhancement
macadmins/jamf-pro-sdk-python#52 · 1 条评论 · 已指派 2 人 ·
-
[Feature Request] Option to parse XML from Classic API endpoints可能重新可做 @brysontyrrell 于 1035 天前认领,目前没有进行中的 PR。 未关闭enhancement feedback
macadmins/jamf-pro-sdk-python#33 · 4 条评论 · 已指派 1 人 ·
-
feedback
难度 5/5 一周以上 新手友好度 35/100
macadmins/jamf-pro-sdk-python#30 · 1 条评论 ·
查看 macadmins/jamf-pro-sdk-python 的全部 Issue
相似的 Issue
-
ACK_WAITING HELP_WANTED UPDATE_CS
难度 2/5 1-3 小时 新手友好度 78/100
OWASP/CheatSheetSeries#2458 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 82/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 90/100
BasedHardware/omi#19711 ·
维护者通常 1 天内回复
-
Qwen3_5MoeModel no longer returns router_logits, breaking aux loss with output_router_logits=True未关闭
难度 2/5 1-3 小时 新手友好度 78/100
huggingface/transformers#49172 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 82/100
vllm-project/vllm-metal#885 ·
维护者通常 1 天内回复