ucloud

KT ucloud Python Client


License
Other
Install
pip install ucloud==1.0

Documentation

UCloud(CloudStack) Python Client

The Python Commandline Tool & library for UCloud.

์œ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ API๋ฅผ ์ด์šฉํ•œ ํŒŒ์ด์ฌ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ Command Line ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

Installation Note

  • PIP์œผ๋กœ ์„ค์น˜ ํ•˜๋Š” ๊ฒฝ์šฐ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‚ฌ์šฉ ํ• ๊ฒฝ์šฐ์—๋Š” pip/PyPI๋กœ ์„ค์น˜ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

pip install ucloud
  • Git ์œผ๋กœ ํด๋ก  ํ•˜๊ธฐ.

๋ณ„๋„ ์„ค์น˜์—†์ด Git ํด๋ก ํ•œ ํ›„์— ํ•ด๋‹น ํด๋”์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น ํŒŒ์ด์ฌ ๋ชจ๋“ˆ์„ import UClient ํ•œ ํ›„์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด ์‹คํ–‰์€ ๋‹ค์Œ์˜ Example๊ณผ ๊ฐ™์ด Command Line ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ ํ•ฉ๋‹ˆ๋‹ค.

python UClient.py server listVirtualMachines
python UClient.py server deployVirtualMachine serviceofferingid=75 templateid=845 zoneid=2 diskofferingid=38 usageplantype=hourly
...
python UClient.py server queryAsyncJobResult jobid=19993

python UClient.py lb listLoadBalancers

python UClient.py waf listWAFs

ํ™˜๊ฒฝ ์„ค์ •

  • ํŒŒ์ผ์— ์ง์ ‘ ์ˆ˜์ •

    • Client.py ๋ฅผ ์—ด์–ด์„œ API_KEY ์™€ SECRET ์„ ์ˆ˜์ • ํ•˜๊ฑฐ๋‚˜, ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์„ค์ • ํ• ์ˆ˜ ์žˆ๋‹ค.
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์„ค์ •

    • API/SECRET Key ์„ค์ •: UCLOUD_API_KEY, UCLOUD_SECRET ๊ฐ€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์„ค์ • ๋˜์–ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ๊ฐ’์„ ์ฝ์–ด์„œ ์”๋‹ˆ๋‹ค. (export ๋˜๋Š” ์œˆ๋„์—์„œ set ์œผ๋กœ ์„ค์ • ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค)
    • ์ถœ๋ ฅ ํ˜•์‹ ์ง€์ •: ๊ธฐ๋ณธ์€ JSON ์ถœ๋ ฅ์ด๋‚˜, XML ์ถœ๋ ฅ์„ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ํ™˜๊ฒฝ๋ณ€์ˆ˜์— UCLOUD_RESP_TYPE ๋ฅผ xml ๋กœ ์„ธํŒ… ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ๋กœ ์‹คํ–‰ ํ•˜๋Š” ๊ฒฝ์šฐ, ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ ์ฃผ๋Š” ๋ฐฉ๋ฒ•

    • client = UClient.UClient(api_type="package", api_key=UCLOUD_API_KEY, secret=UCLOUD_SECRET) ์™€ ๊ฐ™์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ์คŒ

์ปค๋งจ๋“œ ๋ผ์ธ์œผ๋กœ ์‹คํ–‰

./UClient.py [api_type] [command] [params1] [param2]...

๊ธฐ๋ณธ ์‹คํ–‰ ํ˜•์‹์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด zoneID ๋ฅผ ์–ป๋Š” API๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ API ๋ฌธ์„œ http://developer.ucloudbiz.olleh.com/doc/cloudstack/etc/listZones/

./UClient.py server listZones

์˜ˆ๋ฅผ๋“ค์–ด WAF ์ƒ์„ฑ API ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ API ๋ฌธ์„œ http://developer.ucloudbiz.olleh.com/doc/waf/WAF/createWAF-A/

./UClient.py waf name=wafname type=single spec=basic zoneid=9845bd17-d438-4bde-816d-1b12f37d5080 waf1consoleport=5950 waf1SSHport=5951 waf1DBport=5952

์ฝ”๋“œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

ํŒŒ์ด์ฌ ๋ชจ๋“ˆ๋กœ ์‚ฌ์šฉํ• ๋•Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

import json
from ucloud import UClient

client = UClient.UClient(api_type="server", api_key="API_KEY_HERE", secret="SECRET_KEY_HERE")
params = {
  "parameter1":"value1",
}
post_data = {
  "body1": "longbody1",
}
resp = client.run("Command", params, post=post_data) # POST ๋กœ ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ
resp = client.run("Command", params) # POST๋ฅผ ์“ฐ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

API ํƒ€์ž… ๋ชฉ๋ก

์ค‘๊ฐ„์— ๋“ค์–ด๊ฐ€๋Š” api_type ์€ ๋‹ค์Œ์„ ํ™•์ธํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ข…๋ฅ˜ API ํƒ€์ž… ๋งค๋‰ด์–ผ/๊ฐ€์ด๋“œ API ์ฃผ์†Œ
AutoScaling as http://developer.ucloudbiz.olleh.com/doc/autoscaling/ https://api.ucloudbiz.olleh.com/autoscaling/v1/client/api
CDN cdn http://developer.ucloudbiz.olleh.com/doc/CDN/ https://api.ucloudbiz.olleh.com/cdn/v1/client/api
Loadbalancer lb http://developer.ucloudbiz.olleh.com/doc/loadbalancer/ https://api.ucloudbiz.olleh.com/loadbalancer/v1/client/api
Messaging msg http://developer.ucloudbiz.olleh.com/doc/messaging/ https://api.ucloudbiz.olleh.com/messaging/v1/client/api
NAS Service nas http://developer.ucloudbiz.olleh.com/doc/nas/ https://api.ucloudbiz.olleh.com/nas/v1/client/api
Packaging package http://developer.ucloudbiz.olleh.com/doc/packaging/ https://api.ucloudbiz.olleh.com/packaging/v1/client/api
Server/CloudStack server http://developer.ucloudbiz.olleh.com/doc/cloudstack/ https://api.ucloudbiz.olleh.com/server/v1/client/api
uCloud DB/RDBAAS db http://developer.ucloudbiz.olleh.com/doc/DB/ https://api.ucloudbiz.olleh.com/db/v1/client/api
Watch watch http://developer.ucloudbiz.olleh.com/doc/watch/ https://api.ucloudbiz.olleh.com/watch/v1/client/api
Web Application Firewall waf http://developer.ucloudbiz.olleh.com/doc/waf/ https://api.ucloudbiz.olleh.com/waf/v1/client/api

๋””๋ฒ„๊น… ๋ฐฉ๋ฒ•

ํ˜„์žฌ ๋””๋ฒ„๊น…์€ ์ฝ”๋“œ๋กœ ์ž‘์„ฑ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ง€์› ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„ฃ์–ด ์‹คํ–‰ํ• ๋•Œ์— debug=True ๋กœ ์‹คํ–‰ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

client.run(.... , debug=True)

์ฃผ์˜์‚ฌํ•ญ

ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์šฉ์ƒ ์ฃผ์˜ํ•  ์ ๋“ค์ž…๋‹ˆ๋‹ค.

  • ์‹คํ–‰ํ•˜๊ธฐ ์ „์— API ํ‚ค ๊ฐ’๊ณผ Secret Key ๊ฐ’์„ ์„ค์ • ํ•ด ์ฃผ์–ด์•ผ ๋ช…๋ น๋“ค์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ๋ช…๋ น์–ด์˜ ๊ฒฝ์šฐ Command Line ์‹คํ–‰์‹œ ๋ณด๊ธฐ ํŽธํ•œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋˜์ง€๋งŒ, ํ•„์š”ํ•œ ํ•„๋“œ๊ฐ€ ๋น ์ ธ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๋ช…๋ น์€ ์„œ๋ฒ„๊ฐ€ ํšŒ์‹ ํ•œ JSON/XML ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“ˆ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” JSON ๋ฐ์ดํ„ฐ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปค๋งจ๋“œ ๋ผ์ธ์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ ์˜ค์ง GET ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ ๋ฉ๋‹ˆ๋‹ค.
  • ์ž˜๋ชป๋œ ๋ช…๋ น์— ๋Œ€ํ•œ ์„œ๋ฒ„์˜ ๋ฐ˜์‘์€ ๋ณ„๋„์˜ ์—๋Ÿฌ๋ฉ”์‹œ์ง€๋„ ์ถœ๋ ฅ๋˜์ง€๋งŒ XMLํฌ๋งท์œผ๋กœ๋œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ ๋ฉ๋‹ˆ๋‹ค.
  • destroyVirtualMachine๊ณผ ๊ฐ™์€ ๋ช…๋ น์€ stopVirtualMachine์ด ์ด๋ฃจ์–ด ์ง„ ๋‹ค์Œ์— ์‹คํ–‰๋˜์–ด์•ผ ์ •์ƒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ง€์›ํ•˜๋Š” ๋ช…๋ น๋“ค

์œ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„ API ์ „์ฒด๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค, ํ…Œ์ŠคํŠธ ํ•ด ๋ณธ ๊ฒƒ์€ VM ๊ด€๋ จํ•œ ๋ช…๋ น๊ณผ Port Forwarding ๊ด€๋ จ ๋ช…๋ น ๋ฟ์ž…๋‹ˆ๋‹ค.

์œ ํด๋ผ์šฐ๋“œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ API ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (2012. 11. 13)

์œ ํด๋ผ์šฐ๋“œ ์›น ๋ฐฉํ™”๋ฒฝ API ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (2013. 02. 20)

์œ ํด๋ผ์šฐ๋“œ Package API ์ง€์›์ด ์ถ”๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (2013. 08. 19)

์œ ํด๋ผ์šฐ๋“œ ์ „์ฒด API ์ง€์›์ด ์ถ”๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (2013. 08. 23)

PIP/PyPI ์—์„œ ์„ค์น˜๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (2013. 09. 09)

๊ธฐ๋ณธ๊ฐ’ ์ง€์ •์„ ํ†ตํ•œ ํŽธ๋ฆฌํ•œ ์‚ฌ์šฉ

commands.py ์— ๋ช…์‹œ๋˜์–ด ์žˆ๋Š” ๊ฐ ๋ช…๋ น์—๋Š” default ๋ผ๋Š” Dictionary ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์ง€์ •ํ•  ๊ฒฝ์šฐ ๋ช…๋ น์ฐฝ์—์„œ ๋ณ„๋„๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ ํ•ด๋‹น default ๊ฐ’์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ deployVirtualMachine ๋ช…๋ น์˜ ๊ธฐ๋ณธ๊ฐ’์€ kr-1b ์กด์— Ubuntu 11.04 32bit, 1vCore, 1GB RAM, 100GB Disk ์‹œ๊ฐ„์ œ ์š”๊ธˆ์ด ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

commands.py ์— ๋ช…์‹œ ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋ช…๋ น์–ด๋„ ์‹คํ–‰์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฉฐ API ๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  ์ ์ ˆํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ช…์‹œํ•˜๋ฉด ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „

0.1A : 2012. 03. 19 Release

0.2A : 2012. 11. 13

0.3A : 2013. 02. 20

0.3A-Forked-ziozzang-v1 : 2013. 08. 19

0.3A-Forked-ziozzang-v3 : 2013. 08. 23

1.0 : 2013. 09. 09