์ด๋ฒ์ฃผ๋ ์คํ์คํ์ ์ค์นํ๊ณ openstackclient ์ฝ๋๋ฅผ ๋ถ์ํ์ต๋๋ค.
์ฝ๋์ ํจ๊ป ๋ณด๋ ค๋ฉด ๋ค์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์. ์ฝ๋์ ํจ๊ป ํธํ๊ฒ ๋ณด๊ธฐ
openstack server list ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ ๋ ์ด๋ ํ ์์๋ก ์ฝ๋๊ฐ ์งํ ๋๋์ง ์์๋ณด๊ฒ ์ต๋๋ค. ์ด๋ค ์ฝ๋๋ฅผ ์คํํ๋ฉด์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋์ง, | ID | Name | Status | Networks | Image | Flavor | ์ธ์ ๋ค๋ฅธ ํญ๋ชฉ๋ค์ ์ด๋ป๊ฒ ์ถ๊ฐํ๋์ง์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๊ฒ ์ต๋๋ค.
๋ช ๋ น์ด ์คํ๊ณผ ์ถ๋ ฅ ์์ ์์ ๊ฐ์ด openstack server list๋ฅผ ์ ๋ ฅํ๋ฉด ์๋ฒ ๋ฆฌ์คํธ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ด ๊ณผ์ ์ ๋ถ์ํด๋ด ๋๋ค.
- openstack ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ด ๋ช ๋ น์ด๊ฐ ์ด๋์ ์๋์ง ์์์ผํฉ๋๋ค. which๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๋ช ๋ น์ด์ ์์น๋ฅผ ์ ์ ์์ต๋๋ค.
openstack ๋ช ๋ น์ด ์์น
ํ์ผ์ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค. cat์ ์ฌ์ฉํ๋ฉด ํ์ผ์ ๋ด์ฉ์ ์ถ๋ ฅํ ์ ์์ต๋๋ค.
openstack ํ์ผ ๋ด์ฉ 2. ๋ฉ์ธํจ์๊ฐ ํ๋ ์ผ์ openstackclient.shell์ main์ ์คํํ๋ ๊ฒ ๋ฟ์ ๋๋ค. openstackclient ํจํค์ง๊ฐ ์ด๋์ ์๋์ง ํ์ธํด๋ด ๋๋ค.
openstackclient ์์น 3. openstackclient ํจํค์ง๋ฅผ ๋ถ์ํด๋ณด๋ฉด ์ด๋ป๊ฒ ์๋ฒ ๋ฆฌ์คํธ๊ฐ ์ถ๋ ฅ๋๋์ง ์ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ํฐ๋ฏธ๋๋ณด๋ค ์์ค์ฝ๋ ํธ์ง๊ธฐ๋ฅผ ์ด์ฉํ๋๊ฒ ๋ ํธํ ๋ถ๋ค์ https://opendev.org/openstack/python-openstackclient ์ฌ๊ธฐ์ python-openstackclient๋ฅผ cloneํ๊ณ tag 5.3.1 ์ฝ๋๋ฅผ ๋ณด์ ๋ ๋ฉ๋๋ค.
- openstackclient์์ shell.py๋ฅผ ๋ถ์ํด๋ด ๋๋ค.
main์ import ํ์ผ๋ฏ๋ก openstack server list ๋ช ๋ น์ด๋ฅผ ์คํํ์ ๋ main ํจ์๊ฐ ์คํ๋๋์ง ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
shell.py์ mainํจ์๋ฅผ ์์ ๊ฐ์ด ์์ ํ๊ฒ ์ต๋๋ค. ์ด๋ ๊ฒ ์์ ํ๊ณ ์ถ๋ค๋ฉด sudo vi shell.py๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ํ๋ ๊ณณ์ผ๋ก ์ด๋ํ ๋ ์ฐ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฒซ์งธ๋ ํด๋น ์ค๋ก ์ด๋ํ๋ ๊ฒ์ ๋๋ค. 142๋ฒ์งธ ์ค์ ์์ผ๋ฏ๋ก esc -> 142 -> G๋ฅผ ์ ๋ ฅํ๋ฉด ์ปค์๊ฐ 142๋ฒ ์ค๋ก ์ด๋ํฉ๋๋ค.
๋๋ฒ์งธ ๋ฐฉ๋ฒ์ main์ด๋ผ๋ ํค์๋๋ก ๊ฒ์ํ๋ ๊ฒ์ ๋๋ค. esc -> / -> main๋ฅผ ์ ๋ ฅํ๊ณ n(next)์ ์ ๋ ฅํ์ฌ ๋ค์์ผ๋ก ๋งค์นญ๋๋ main์ ๊ณ์ ์ฐพ์๊ฐ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ ํ๊ณ ์คํํด๋ณด๊ฒ ์ต๋๋ค.
์ถ๊ฐํ ์ฝ๋๊ฐ ์ถ๋ ฅ๋์์ต๋๋ค. ์ด๋ฐ์์ผ๋ก ์ฝ๋๋ฅผ ๋ถ์ํ๋ฉด์ ์ค์ ๋ก ์คํ๋๋์ง print๋ก ํ์ธํ ์ ์์ต๋๋ค.
-
์ฌ๊ธฐ์ ๋ ๋ค์ด๊ฐ๋ฉด osc_lib์ shell.py, cliff์ app ๋ฑ๋ฑ ๋๊น์ง ํ๊ณ ์ฌ๋ผ๊ฐ๋๋ฐ ์ด๋ ์คํ์คํ๊ณผ ๋ฉ์ด์ง๋ ๋์ ์ ๊ธธ์ ๋๋ค. ๋ค์ openstackclient๋ก ๋์์์ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด๊ณ ์ด๋๋ก ํ๊ณ ๋ค์ง ์๊ฐํด๋ด ์๋ค.
-
openstackclient์ ๊ตฌ์กฐ๋ ์ด๋ ์ต๋๋ค. identity, image, network, object, volume๋ฑ์ ์ฒซ์๊ฐ์ ์ค๋ช ๋ค์ 5๊ฐ์ง ์์๋ค ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
openstackclient์ ๊ตฌ์กฐ ๊ทธ ์ค์์ openstack server list ๋ช ๋ น์ด๋ compute์ ๊ฐ์ฅ ๊ด๋ จ์์ ๊ฒ ๊ฐ์ต๋๋ค. compute๋ฅผ ์์ธํ ๋ณด๋ฉด
compute์ ๊ตฌ์กฐ client.py๋ผ๋ ํ์ผ์ด ์๊ณ v2์์ ์ฌ๋ฌ๊ฐ๊ฐ ์์ต๋๋ค. ์ด ๊ตฌ์กฐ๋ object๋ network๋ ๋ง์ฐฌ๊ฐ์ง์์ต๋๋ค. openstack server list ๋ช ๋ น์ ์คํํ์ ๋ compute client๊ฐ ์์ฑ๋๋์ง ํ์ธํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ ํฉ๋๋ค. objectํด๋์๋ client.py๋ฅผ ์๋์ฒ๋ผ ์์ ํด์ค๋๋ค.
compute/client.py ์์
๊ฒฐ๊ณผ ํ์ธ โcompute client๋ ํ์ํ ๊น?โ ๊ฐ ์ถ๋ ฅ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค! โcompute client๋ ํ์ํ ๊น?โ๋ ์ถ๋ ฅ๋์์ง๋ง, โobject client๋ ํ์ํ ๊น?โ๋ ์ถ๋ ฅ๋์ง ์์ ๊ฒ์ผ๋ก ๋ณด์ compute์ client.py๋ง ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค. 7. compute์ client.py๊ฐ ์คํ๋๋ ๊ฒ์ ํ์ ํ์ผ๋ ์ด์ v2์ ์๋ ํ์ผ๋ค์ ๋ณด๊ฒ ์ต๋๋ค. ๋๋ถ๋ถ์ ํด๋์ค ๋ค์ด from osc_lib.command import command๋ฅผ ์์ ๋ฐ์ ๊ตฌํํ๊ณ get_parser, take_action ํจ์๋ค์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ํจ์ ์ด๋ฆ์ ๋ณด์ํ๋, get_parser๋ก args๋ฅผ ํ์ฑํ๊ณ ๊ทธ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ take_action์ผ๋ก ๊ฐ์ ธ์ค์ง ์์๊น ์ถ์ธกํ ์ ์์ต๋๋ค.
- ๊ทธ๋ผ v2์ ์๋ ํ์ผ๋ค ์ค server list ๋ช ๋ น์ด๊ฐ ์คํ๋ ๋ ์ด๋ค ํจ์๊ฐ ์คํ๋๋๊ฑธ๊น์? vscode์์ โ + โง + F ๋ฅผ ์ ๋ ฅํ์ฌ search ๊ธฐ๋ฅ์ ์ฌ์ฉํด๋ด ๋๋ค. ์ฌ๊ธฐ์ server๋ฅผ ์ ๋ ฅํด๋ด ์๋ค.
Image for post 140๊ฐ์ ํ์ผ์์ 3761๊ฐ ๋งค์นญโฆ ๋ง์ ๊ฒฐ๊ณผ๊ฐ ๋์ต๋๋ค. ๊ทธ๋ผ ์ฌ๊ธฐ์ server๋ ๊ฒฐ๊ณผ๊ฐ ๋๋ฌด ๋ง์ผ๋ server list, server_list, list server ๋ฑ ๊ฒฐ๊ณผ๋ฅผ ์ขํ ์ ์๋ ๊ฒ๋ค๋ก ๊ฒ์ํด๋ณด๋ ๊ฒ๋ ์ข์ต๋๋ค. ํ์ง๋ง ์ ๋ ์ผ๋จ ๋ณด๊ธฐ๋ก ํ์ต๋๋ค. setup.cfgํ์ผ์ ๋ณด๊ฒ ์ต๋๋ค.
-
์ด ํ์ผ์ ๋ณด๋ ์ ํฌ๊ฐ ์ฐพ๋ server_list๊ฐ ์์ต๋๋ค. ๋น๋ก server list๋์ ๋ค๋ฅด์ง๋ง, ์ฝ๋์์ผ๋ก ํํํ ๋๋ ์คํ์ด์ค๋ฅผ ์ธ๋๋ฐ๋ก ๋ฐ๊ฟ์ ํํํ๋๋ณด๋ค ํ๊ณ ๊ทธ๋ฌ๋ ค๋ ํด๋ด ๋๋ค. ์ ์ง ์ด ์ฝ๋๋ฅผ ๋ณด๋ server_list๋ openstackclient.compute.v2.server์ ListServer๋ฅผ ์คํํ๋ค. ๋ผ๊ณ ๋งํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ผ print ํด๋ด ์๋ค.
-
compute.v2.server์์ ListServer ํด๋์ค ์ฝ๋๋ฅผ ์กฐ๊ธ ์์ ํฉ๋๋ค.
์ด๋ ๊ฒ ์์ ํ๊ณ ์ฝ๋๋ฅผ ์คํํ๋ฉด ArugmentParser์ openstack server list ๋ช ๋ น์ด๊ฐ ๋ด๊ฒจ ์๊ณ table์๋ ์ถ๋ ฅ์ผ๋ก ๋์ค๋ table์ ํค๋(ID, Name, Status ๋ฑ)์ ์ด์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ๋ค๋ ์ดํฐ๊ฐ ์๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
- ์ด์ ๋ค ์์ต๋๋ค. openstack server list์ server.py์ ListServer class์์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ญ๋๋ค. ๊ทธ๋ผ ์ฐ๋ฆฌ ์ ๋ง๋๋ก ํ๊ฐ์ง ํญ๋ชฉ์ ์ถ๊ฐํด๋ด ์๋ค.
take_action ํจ์์ ๋ง์ง๋ง ๋ถ๋ถ์ ๋๋ค. ์ฝ์์ ๋์ค๋ ํ ์ด๋ธ ํ์์ ์ถ๋ ฅ์ด table ๋ณ์์ ์์ผ๋, ์ฌ๊ธฐ์ ํญ๋ชฉ์ ์ถ๊ฐํด๋ด ์๋ค. ๊ทธ๋ผ column_headers์ columns์ โFlavor IDโ๋ฅผ ์ถ๊ฐํด๋ด ๋๋ค.
ListServer class์ take_action์ ์๋ columns์ column_headers์ Flavor ID ํญ๋ชฉ์ ์ถ๊ฐํฉ๋๋ค.
โFlavor IDโ ํญ๋ชฉ์ ์ถ๊ฐํ ์ด์ ๋ else๋ฌธ ์์ if parsed_args.long: ๋ถ๋ถ์ columns์ ์์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฝ๋๋ฅผ ๋ถ์ํ๋ ์ค ๋ ํ๋ ์๊ฒ๋ ๊ฒ์ โopenstack server listโ ๋ช ๋ น์ด ๋ง๊ณ openstack server list โ longโ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ์ข ๋ ๋ง์ columns๋ค์ด ์ถ๋ ฅ๋๊ณ ๊ทธ ํญ๋ชฉ๋ค์ด ๋ฐ๋ก if parsed_args.long:์ ์๋ ํญ๋ชฉ๋ค ์ ๋๋ค.
์ง์! ํ ์ด๋ธ์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์ฐ๋ฆฌ๊ฐ ์ถ๊ฐํ Flavor ID๊ฐ ์ถ๋ ฅ๋์์ต๋๋ค.
์ฌ๊ธฐ๊น์ง openstack server list ์ปค๋งจ๋ ์คํ ์ ์ฝ๋ ๋ถ์๊ณผ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊ฟ๋ณด๋ ๊ฒ์ ๋ํด ์์๋ดค์ต๋๋ค.