我们有许多三种类型的服务器机架。一种是我们使用weka的存储集群。所有主机名均以 weka 开头。另外两个是计算节点和 GPU 节点。两者都以公共字符串开头。接下来是“r”,后跟机架编号。对于计算节点,“-c”后跟该机架中的计算节点编号。两种类型后面都跟有“-n”,后跟机架中的节点号。我是对 weka 的 API 调用,它返回了所有三种类型。我希望能够根据类型进行过滤。我可以获取 weka 和计算节点,但无法完全获取 GPU 节点。我有:
# for Weka nodes:
curl --insecure --silent --header "authorization: Bearer ${ATKN}" --request GET https://weka01:14000/api/v2/processes | jq -r '.data[] | select(.hostname | startswith("weka"))'
#
# for compute nodes:
curl --insecure --silent --header "authorization: Bearer ${ATKN}" --request GET https://weka01:14000/api/v2/processes | jq -r '.data[] | select(.hostname | startswith("startstring") and contains("-c"))"
对于 GPU 节点,我尝试过:
curl --insecure --silent --header "authorization: Bearer ${ATKN}" --request GET https://weka01:14000/api/v2/processes | jq -r '.data[] | select(.hostname | startswith("startstring") and contains("-c")|not)'
这让我同时获得了 GPU 和 weka 节点。有人知道我做错了什么吗?为了澄清起见,GPU 节点主机名如下所示:
startstring-r1-n3
计算节点主机名如下所示:
startstring-r2-c17-n2