Skip to content

Latest commit

ย 

History

History
74 lines (42 loc) ยท 6.7 KB

File metadata and controls

74 lines (42 loc) ยท 6.7 KB

์ด๋ฒˆ์ฃผ๋Š” ์˜คํ”ˆ์Šคํƒ์„ ์„ค์น˜ํ•˜๊ณ  openstackclient ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ์™€ ํ•จ๊ป˜ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ํŽธํ•˜๊ฒŒ ๋ณด๊ธฐ

openstack server list ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ์–ด๋– ํ•œ ์ˆœ์„œ๋กœ ์ฝ”๋“œ๊ฐ€ ์ง„ํ–‰ ๋˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด์„œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š”์ง€, | ID | Name | Status | Networks | Image | Flavor | ์™ธ์— ๋‹ค๋ฅธ ํ•ญ๋ชฉ๋“ค์€ ์–ด๋–ป๊ฒŒ ์ถ”๊ฐ€ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ช…๋ น์–ด ์‹คํ–‰๊ณผ ์ถœ๋ ฅ ์˜ˆ์‹œ ์œ„์™€ ๊ฐ™์ด openstack server list๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์„œ๋ฒ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ๋ถ„์„ํ•ด๋ด…๋‹ˆ๋‹ค.

  1. 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 ์ฝ”๋“œ๋ฅผ ๋ณด์…”๋„ ๋ฉ๋‹ˆ๋‹ค.

  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๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์—ฌ๊ธฐ์„œ ๋” ๋“ค์–ด๊ฐ€๋ฉด osc_lib์˜ shell.py, cliff์˜ app ๋“ฑ๋“ฑ ๋๊นŒ์ง€ ํƒ€๊ณ  ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ ์ด๋Š” ์˜คํ”ˆ์Šคํƒ๊ณผ ๋ฉ€์–ด์ง€๋Š” ๋‡Œ์ ˆ์˜ ๊ธธ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ openstackclient๋กœ ๋Œ์•„์™€์„œ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์–ด๋””๋กœ ํŒŒ๊ณ ๋“ค์ง€ ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค.

  2. 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์œผ๋กœ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์„๊นŒ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ทธ๋Ÿผ v2์— ์žˆ๋Š” ํŒŒ์ผ๋“ค ์ค‘ server list ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š”๊ฑธ๊นŒ์š”? vscode์—์„œ โŒ˜ + โ‡ง + F ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ search ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด๋ด…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— server๋ฅผ ์ž…๋ ฅํ•ด๋ด…์‹œ๋‹ค.

Image for post 140๊ฐœ์˜ ํŒŒ์ผ์—์„œ 3761๊ฐœ ๋งค์นญโ€ฆ ๋งŽ์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์—ฌ๊ธฐ์„œ server๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์œผ๋‹ˆ server list, server_list, list server ๋“ฑ ๊ฒฐ๊ณผ๋ฅผ ์ขํž ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค๋กœ ๊ฒ€์ƒ‰ํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €๋Š” ์ผ๋‹จ ๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. setup.cfgํŒŒ์ผ์„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์ด ํŒŒ์ผ์„ ๋ณด๋‹ˆ ์ €ํฌ๊ฐ€ ์ฐพ๋˜ server_list๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋ก server list๋ž‘์€ ๋‹ค๋ฅด์ง€๋งŒ, ์ฝ”๋“œ์ƒ์œผ๋กœ ํ‘œํ˜„ํ•  ๋•Œ๋Š” ์ŠคํŽ˜์ด์Šค๋ฅผ ์–ธ๋”๋ฐ”๋กœ ๋ฐ”๊ฟ”์„œ ํ‘œํ˜„ํ–ˆ๋‚˜๋ณด๋‹ค ํ•˜๊ณ  ๊ทธ๋Ÿฌ๋ ค๋‹ˆ ํ•ด๋ด…๋‹ˆ๋‹ค. ์™ ์ง€ ์ด ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ server_list๋Š” openstackclient.compute.v2.server์— ListServer๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ print ํ•ด๋ด…์‹œ๋‹ค.

  2. compute.v2.server์—์„œ ListServer ํด๋ž˜์Šค ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ˆ˜์ •ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ArugmentParser์— openstack server list ๋ช…๋ น์–ด๊ฐ€ ๋‹ด๊ฒจ ์žˆ๊ณ  table์—๋Š” ์ถœ๋ ฅ์œผ๋กœ ๋‚˜์˜ค๋Š” table์˜ ํ—ค๋”(ID, Name, Status ๋“ฑ)์™€ ์ด์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ œ๋„ค๋ ˆ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ด์ œ ๋‹ค ์™”์Šต๋‹ˆ๋‹ค. 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 ์ปค๋งจ๋“œ ์‹คํ–‰ ์‹œ ์ฝ”๋“œ ๋ถ„์„๊ณผ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๊ฟ”๋ณด๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.