一、python-Restful Api 簡介
Restful API 是一種軟件架構風格,基于 HTTP 協議設計,通過統一的接口(如 URL 路徑)和標準的 HTTP 方法(GET/POST/PUT/DELETE 等)實現資源(如數據、文件等)的操作,具有無狀態、可緩存、客戶端 - 服務器分離等特點。方法如下
- 用
GET
請求獲取資源(如查詢數據) - 用
POST
請求創建資源(如新增數據) - 用
PUT
請求更新資源 - 用
DELETE
請求刪除資源
常用的庫是 requests
,它簡化了 HTTP 請求的發送和響應處理。下面進行python調用openstack創建相應實例。
1.Python 運維開發:基于 OpenStack Restful API 實現鏡像上傳
使用 OpenStack all-in-one 鏡像,創建 OpenStack Python 運維開發環境。云主機的用戶/ 密碼為:“root/Abc@1234”,OpenStack 的域名/賬號/密碼為:“demo/admin/000000”。 提示說明:python 腳本文件頭建議加入“#encoding:utf-8”避免編碼錯誤;測試腳本代 碼用 python3 命令執行與測試。 在 controller 節點的/root 目錄下創建 api_image_manager.py 腳本,編寫 python 代碼對接 OpenStack API,完成鏡像的創建與上傳。創建之前查詢是否存在“同名鏡像”,如果存在 先刪除該鏡像。
(1)創建鏡像:要求在 OpenStack 私有云平臺中上傳鏡像 cirros-0.3.4-x86_64-disk.img, 名字為 cirros001,disk_format 為 qcow2,container_format 為 bare。
(2)查詢鏡像:查詢 cirros001 的詳細信息,并以 json 格式文本輸出到控制臺。
1.執行 api_image_manager.py 腳本,成功創建鏡像
做之前鏡像記得上傳 openstack image create --disk-format qcow2 --container-format bare --file /root/cirros-0.3.1-x86_64- -------------------------------------------- #!/usr/bin/python3.6 # cofing=utf-8 import json,requests url = "http://controller:9292/v2/images" token='gAAAAABkIlT50YY3ZGgskCUKJ6nMEgmsvgqgFwxUjGFLXEtC8bCaY2C1R1KtqQnrHMhCuNpKwNlxKIHb85ZpV9CIlPV5JYBzUaI13yMOImyDOhgOXVSgeEVslPOo_1cWMHp27Q4hVG53KVMczlbFluFIC9y9oJ4WRyb-KXGG46fXYyr' headers= {"Content-Type":"application/json",'X-Auth-Token':token} headers_img= {"Content-Type":"application/octet-stream",'X-Auth-Token':token} images = requests.get(url,headers=headers).json() for i in images['images']: if i['name']=='cirros001': delete = requests.delete(f"{url}/{i['id']}",headers=headers) print(delete) create = requests.post(url,data=json.dumps({"container_format": "bare", "disk_format": "qcow2", "name": "cirros001"}),headers=headers).json() put = requests.put(f"http://controller:9292{create['file']}",data=open("/root/cirros-0.3.4-x86_64-disk.img","rb"),headers=headers_img) print(put) print(create) [root@controller python]# chmod +x api_image_manager.py [root@controller python]# ./api_image_manager.py
2.python-usere使用Restful API創建用戶
在提供的OpenStack私有云平臺上,使用T版本的“openstack-python-dev”鏡像創建1臺云主機,云主機類型使用4vCPU/12G內存/100G硬盤。該主機中已經默認安裝了所需的開發環境,登錄默認賬號密碼為“root/Abc@1234”。使用python request庫和OpenStack Restful APIs,在/root目錄下,創建api_manager_identity.py文件,編寫python代碼,代碼實現以下任務:
(1)首先實現查詢用戶,如果用戶名稱“user_demo”已經存在,先刪除。
(2)如果不存在“user_demo”,創建該用戶,密碼設置為“1DY@2022”。
(3)創建完成后,查詢該用戶信息,查詢的body部分內容控制臺輸出,同時json格式的輸出到文件當前目錄下的user_demo.js文件中,json格式要求indent=4。
vi create_user.py ---------api_manager_identity.py-------------------------- #!/usr/bin/python3.6 # cofing=utf-8 import time,requests,json token = 'gAAAAABj-J00eE_MPHoIk_x179k3RsdJuvLaAITL8szIIdWq8o7g7bUuYly4HTEQtHZcp0_-tx-ehYIrsHJmoyESScPoBChGOYXrJAWD_pF0VGBslJuoxyuJwCMSY-iHkdtgxpdIrTP3EK2bJjDs2CjGosXARZQZsLh-47cAN1hXjOS0' headers = {"Content-Type": "application/json","X-Auth-Token":token} users = requests.get("http://controller:5000/v3/users",headers