gcloud 过滤正则表达式不一致
gcloud filters regex inconsistency
当我 运行 在计算实例上使用相同风格的命令时,它可以正常工作
gcloud compute instances list --filter='name~mysql'
但是,当我运行这个命令时
gcloud dataproc clusters list --filter='clusterName ~ dev'
我收到这个错误
ERROR: (gcloud.dataproc.clusters.list) INVALID_ARGUMENT: Could not parse the filter: ParserException:errors {
line: 1
column: 13
message: "syntax error"
token: "~"
}
知道过滤器为什么会这样吗?
回答您提出的问题:为什么会这样?因为在前一种情况下,过滤是在客户端完成的(根据gcloud topic filters
),而在后一种情况下,过滤是在服务器端完成的。
我们将调查是否可以使他们达成一致。
--filter
标志是一个单一的过滤标志,可以在客户端或服务器端进行解释。在
gcloud compute instances list --filter='name~mysql'
在客户端解释的情况。如果添加 --log-http
,您将看到过滤器表达式永远不会在任何 api 请求中发送。另一方面
gcloud dataproc clusters list --filter='clusterName~dev' --log-http
将显示:
==== request start ====
uri: https://dataproc.googleapis.com/v1/projects/YOUR_PROJECT/regions/global/clusters?filter=%27clusterName%7Edev%27&alt=json&pageSize=100
method: GET
== headers start ==
...
此处的 dataproc 后端 api 无法处理相同的过滤语法。请参阅有关过滤器的 dataproc api 文档:https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters/list
根据那个文档你可以做
gcloud dataproc clusters list --filter='clusterName=dev'
尽管 --filter='clusterName~dev'
语法不应产生错误,但应在此处作为错误报告 https://issuetracker.google.com/issues/new?component=187143&template=800102。
当我 运行 在计算实例上使用相同风格的命令时,它可以正常工作
gcloud compute instances list --filter='name~mysql'
但是,当我运行这个命令时
gcloud dataproc clusters list --filter='clusterName ~ dev'
我收到这个错误
ERROR: (gcloud.dataproc.clusters.list) INVALID_ARGUMENT: Could not parse the filter: ParserException:errors {
line: 1
column: 13
message: "syntax error"
token: "~"
}
知道过滤器为什么会这样吗?
回答您提出的问题:为什么会这样?因为在前一种情况下,过滤是在客户端完成的(根据gcloud topic filters
),而在后一种情况下,过滤是在服务器端完成的。
我们将调查是否可以使他们达成一致。
--filter
标志是一个单一的过滤标志,可以在客户端或服务器端进行解释。在
gcloud compute instances list --filter='name~mysql'
在客户端解释的情况。如果添加 --log-http
,您将看到过滤器表达式永远不会在任何 api 请求中发送。另一方面
gcloud dataproc clusters list --filter='clusterName~dev' --log-http
将显示:
==== request start ====
uri: https://dataproc.googleapis.com/v1/projects/YOUR_PROJECT/regions/global/clusters?filter=%27clusterName%7Edev%27&alt=json&pageSize=100
method: GET
== headers start ==
...
此处的 dataproc 后端 api 无法处理相同的过滤语法。请参阅有关过滤器的 dataproc api 文档:https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters/list
根据那个文档你可以做
gcloud dataproc clusters list --filter='clusterName=dev'
尽管 --filter='clusterName~dev'
语法不应产生错误,但应在此处作为错误报告 https://issuetracker.google.com/issues/new?component=187143&template=800102。