2017-04-24 53 views
1

當我在計算實例運行命令相同的味道是否能夠正常工作gcloud過濾器的正則表達式不一致

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: "~" 
} 

任何想法爲什麼過濾器的行爲是這樣嗎?

回答

0

--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報告的錯誤。

0

要回答你問的問題:爲什麼它的行爲如此?因爲在前一種情況下,過濾在客戶端完成(根據gcloud topic filters),在後一種情況下,過濾在服務器端完成。

我們會調查他們是否可以達成一致。

+0

謝謝。我已經提交了一個錯誤#37658729。現在,我將使用grep解決這個問題。 –