LDAP用户执行服务器的上下电操作
| 34 | Update LDAP User Roles And Verify Host Poweroff Operation | ❌ 失败 |
| 35 | Update LDAP User Roles And Verify Host Poweron Operation | ❌ 失败 |
问题一
BMC没更新服务器的last state,一直获取到None之类的导致redfish power on 关键字执行失败,这个属于测试环境问题。通常服务器的UEFI和OS会通过带内ipmi 发送postcode或ipmi心跳包给BMC以更新last state字段
问题二
执行的输入期望参数列表给错了,少一个]
Update LDAP User Role And Host Poweroff 和 Update LDAP User Role And Host Poweron 中,valid_status_code 的默认值缺少结束括号 }。
当前代码:
[Arguments] ${ldap_type} ${group_privilege} ${group_name} ${valid_status_code}=[${HTTP_OK,${HTTP_NO_CONTENT}]
修改为:
[Arguments] ${ldap_type} ${group_privilege} ${group_name} ${valid_status_code}=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
问题三
类型不匹配。readonly和Operator在LDAP post关机阶段执行失败而admin执行成功。
Redfish.Post 要求 valid_status_codes 为列表。
目前,ReadOnly 和 Operator 传入的是单个整数,而 Administrator 传入的是列表。传入整数会导致 TypeError。
Redfish.Post 的错误日志:
KEYWORD Redfish . Post ${REDFISH_POWER_URI} body={'ResetType': 'ForceOff'} valid_status_codes=${valid_status_code}
17:24:46.696 INFO Attempt 1 of /redfish/v1/Systems/system/Actions/ComputerSystem.Reset
17:24:46.739 INFO Response Time for POST ...: 0.042 seconds.
17:24:46.740 FAIL TypeError: eval() arg 1 must be a string, bytes or code object
当前代码:
${LDAP_TYPE} ReadOnly ${GROUP_NAME} ${HTTP_FORBIDDEN}
${LDAP_TYPE} Operator ${GROUP_NAME} ${HTTP_OK}
${LDAP_TYPE} Administrator ${GROUP_NAME} [${HTTP_OK}, ${HTTP_NO_CONTENT}]
统一修改为使用列表:
${LDAP_TYPE} ReadOnly ${GROUP_NAME} [${HTTP_FORBIDDEN}]
${LDAP_TYPE} Operator ${GROUP_NAME} [${HTTP_OK}, ${HTTP_NO_CONTENT}]
${LDAP_TYPE} Administrator ${GROUP_NAME} [${HTTP_OK}, ${HTTP_NO_CONTENT}]
注意:Operator 增加 HTTP_NO_CONTENT 是因为实际测试中 BMC 返回 204 No Content,与 Administrator 的实际返回结果一致。
IF 条件无法正确处理列表类型
当 valid_status_code 为列表(例如 [403])时,${valid_status_code} == ${HTTP_FORBIDDEN} 实际上是在比较一个列表和一个整数,因此始终为 False。
因此,当 ReadOnly 用户执行关机操作并收到 403 时,测试无法提前返回,而是继续等待主机关机,最终导致超时。
当前代码:
IF ${valid_status_code} == ${HTTP_FORBIDDEN} RETURN
修改为:
${is_forbidden}= Evaluate ${HTTP_FORBIDDEN} in ${valid_status_code}
IF ${is_forbidden} RETURN
修复总结
- 在默认参数值中补充缺失的结束括号
}。 - 将模板中的所有
valid_status_codes统一使用列表。Operator 同时接受200和204,以匹配实际 BMC 返回结果(204 No Content)。 - 使用
Evaluate检查列表中是否包含403,确保 ReadOnly 用户能够正确提前返回。
应用以上修复后,三个角色的测试迭代均可通过。

547

被折叠的 条评论
为什么被折叠?



