ListVmId returns not-prefix-trimmed vmID)What happened
:
/ns/ns-01/mcis/mock-seoul-jhseo1/vm/mock-seoul-jhseo1-0 ๋ผ๋ ์์๋ค์ด ์๋ ์ํ์์
[์ฌ๋ฐ๋ฅธ ์กฐํ]
โฏ ./id-list-vm.sh mock 1 jhseo1
####################################################################
## 8. VM: List ID
####################################################################
mock-seoul-jhseo1
{
"idList": [
"mock-seoul-jhseo1-0"
]
}
[์ฌ๋ฐ๋ฅด์ง ์์ ์กฐํ]
โฏ ./id-list-vm.sh mock 1 jhseo
####################################################################
## 8. VM: List ID
####################################################################
mock-seoul-jhseo
{
"idList": [
"/ns/ns-01/mcis/mock-seoul-jhseo1/vm/mock-seoul-jhseo1-0"
]
}
-> Not found ๊ฐ ๋์์ผ ์ ์์ธ๋ฐ,
์กฐํ๋์ง ์์์ผ ํ๋ ์์์ด ์กฐํ๋๊ณ ,
VM ID ๋ง ์ถ๋ ฅํ๋ ๊ฒ์ด ์๋๋ผ Key-Value store ์ Key ์ ์ฒด๊ฐ ์ถ๋ ฅ๋จ
Key-Value store ์ฌ์ฉ์์ ์ด์๋ก ์ถ์ ๋จ
What you expected to happen
:
How to reproduce it (as minimally and precisely as possible)
:
Anything else we need to know?
:
Environment
Proposed solution
:
Any other context
:
@jihoon-seo
cb-store๊ฐ ์ ๊ณตํ๋ API ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
cb-sore: GetList("/xxx")
์์ ๊ฐ์ ์๋์ ๊ธฐ๋ฅ์
@jihoon-seo ์ค๋ฅ ๋ถ์ ์๋ฃํ์์ต๋๋ค.
keyValue, err := common.CBStore.GetList(key, true)
๋ก ์กฐํ ํ,
์๋์ ๊ฐ์ด, ๋ฆฌ์คํธ๋ฅผ ์ ๋ฆฌํ๋๋ฐ,
for _, v := range keyValue {
if strings.Contains(v.Key, "/vm/") {
vmList = append(vmList, strings.TrimPrefix(v.Key, (key+"/vm/")))
}
}
์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ ์ํฉ์ด ๋ณด์ด๋ค์.
mcis ์ด๋ฆ์ผ๋ก key ์กฐํ๋ฅผ ํ๋ฉด, ๊ด๋ จ mcis ์ ๋ํ key ๋ค๋ง ๋์ฌ ๊ฒ์ด๋ผ๊ณ ๋ดค์ผ๋,
์๋ฅผ ๋ค์ด,
์กฐํํ๋ mcis ๊ฐ m-ali-is ์ด๊ณ
m-ali-is-expert, m-ali-is ์ด๋ฆ์ prefix ๊ด๊ณ๊ฐ ์๋ 2๊ฐ์ mcis๊ฐ ์๋ ์ํฉ์ด๋ผ๋ฉด,
CBStore.GetList ๋ฅผ ํ์ ๋, ์๋์ ๊ฐ์ด ๋ฆฌ์คํธ๊ฐ ์กฐํ๋๊ณ ,
{
"object": [
"/ns/mz-cbweb99/mcis/m-ali-is",
"/ns/mz-cbweb99/mcis/m-ali-is-expert",
"/ns/mz-cbweb99/mcis/m-ali-is-expert/vm/m-ali-is-server-expert",
"/ns/mz-cbweb99/mcis/m-ali-is/vm/m-ali-is-server"
]
}
์ฌ๊ธฐ์ vm ๋ฆฌ์คํธ๋ฅผ ๋ฝ์๋ด๊ธฐ ์ํด์
/vm/ ์ด ํฌํจ๋ ์กฐ๊ฑด๋ง ๋ณด๊ฒ ๋๋ฉด.
(์ค๊ฐ) ๊ฒฐ๊ณผ์ ์ผ๋ก
๊ฐ ํฌํจ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ /vm/์ ๊ธฐ์ค์ผ๋ก trim์ ํ๊ฒ ๋๋๋ฐ,
/ns/mz-cbweb99/mcis/m-ali-is/vm/ ๋ ๋ฌธ์ ์์ด trim์ด ๋์ด m-ali-is-server ๋ฅผ ๋ฝ์๋ด๊ฒ ๋๊ณ
/ns/mz-cbweb99/mcis/m-ali-is-expert/vm/m-ali-is-server-expert ๋ /vm/์ผ๋ก ์์ ํ์ง ์์์ trim์ด ์ ์์ ์ผ๋ก ๋์ง ์์ ๊ฒ ์
๋๋ค. ์ฌ์ฉํ๋ strings.TrimPrefix() ํจ์๋ฅผ ๋ณด๋,
์ ์์ ์ธ trim์ด ๋์ง ์์ผ๋ฉด, ๊ทธ๋ฅ ์ ์ฒด ๊ฐ์ ๋ฆฌํดํ๋ค์. ์ฆ /ns/mz-cbweb99/mcis/m-ali-is-expert/vm/m-ali-is-server-expert ๋ฅผ ํต์ฑ๋ก ๋ฆฌํดํ๊ฒ ๋๊ณ ,
func strings.TrimPrefix(s string, prefix string) string
strings.TrimPrefix on pkg.go.dev
TrimPrefix returns s without the provided leading prefix string. If s doesn't start with prefix, s is returned unchanged.
/ns/mz-cbweb99/mcis/m-ali-is-expert/vm/m-ali-is-server-expert ๊ฐ ๋ง์น vm์ id ์ฒ๋ผ ์ธ์ํ๊ฒ ๋ฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก
/ns/mz-cbweb99/mcis/m-ali-is-expert/vm/m-ali-is-server-expert๊ฐ ๋ง๋ค์ด์ง๋๋ค.
Most helpful comment
@jihoon-seo ์ค๋ฅ ๋ถ์ ์๋ฃํ์์ต๋๋ค.
๋ก ์กฐํ ํ,
์๋์ ๊ฐ์ด, ๋ฆฌ์คํธ๋ฅผ ์ ๋ฆฌํ๋๋ฐ,
์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ ์ํฉ์ด ๋ณด์ด๋ค์.
mcis ์ด๋ฆ์ผ๋ก key ์กฐํ๋ฅผ ํ๋ฉด, ๊ด๋ จ mcis ์ ๋ํ key ๋ค๋ง ๋์ฌ ๊ฒ์ด๋ผ๊ณ ๋ดค์ผ๋,
์๋ฅผ ๋ค์ด,
์กฐํํ๋ mcis ๊ฐ
m-ali-is์ด๊ณm-ali-is-expert,m-ali-is์ด๋ฆ์ prefix ๊ด๊ณ๊ฐ ์๋ 2๊ฐ์ mcis๊ฐ ์๋ ์ํฉ์ด๋ผ๋ฉด,CBStore.GetList ๋ฅผ ํ์ ๋, ์๋์ ๊ฐ์ด ๋ฆฌ์คํธ๊ฐ ์กฐํ๋๊ณ ,
์ฌ๊ธฐ์ vm ๋ฆฌ์คํธ๋ฅผ ๋ฝ์๋ด๊ธฐ ์ํด์
/vm/์ด ํฌํจ๋ ์กฐ๊ฑด๋ง ๋ณด๊ฒ ๋๋ฉด.(์ค๊ฐ) ๊ฒฐ๊ณผ์ ์ผ๋ก
๊ฐ ํฌํจ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ /vm/์ ๊ธฐ์ค์ผ๋ก trim์ ํ๊ฒ ๋๋๋ฐ,
/ns/mz-cbweb99/mcis/m-ali-is
/vm/๋ ๋ฌธ์ ์์ด trim์ด ๋์ดm-ali-is-server๋ฅผ ๋ฝ์๋ด๊ฒ ๋๊ณ/ns/mz-cbweb99/mcis/m-ali-is
-expert/vm/m-ali-is-server-expert ๋ /vm/์ผ๋ก ์์ ํ์ง ์์์ trim์ด ์ ์์ ์ผ๋ก ๋์ง ์์ ๊ฒ ์ ๋๋ค. ์ฌ์ฉํ๋strings.TrimPrefix()ํจ์๋ฅผ ๋ณด๋,์ ์์ ์ธ trim์ด ๋์ง ์์ผ๋ฉด, ๊ทธ๋ฅ ์ ์ฒด ๊ฐ์ ๋ฆฌํดํ๋ค์. ์ฆ
/ns/mz-cbweb99/mcis/m-ali-is-expert/vm/m-ali-is-server-expert๋ฅผ ํต์ฑ๋ก ๋ฆฌํดํ๊ฒ ๋๊ณ ,/ns/mz-cbweb99/mcis/m-ali-is-expert/vm/m-ali-is-server-expert๊ฐ ๋ง์น vm์ id ์ฒ๋ผ ์ธ์ํ๊ฒ ๋ฉ๋๋ค.๊ฒฐ๊ณผ์ ์ผ๋ก
/ns/mz-cbweb99/mcis/m-ali-is-expert/vm/m-ali-is-server-expert๊ฐ ๋ง๋ค์ด์ง๋๋ค.