diff --git a/glance/__pycache__/glance_main.cpython-36.pyc b/glance/__pycache__/glance_main.cpython-36.pyc new file mode 100644 index 0000000..758f8a7 Binary files /dev/null and b/glance/__pycache__/glance_main.cpython-36.pyc differ diff --git a/glance/__pycache__/image.cpython-36.pyc b/glance/__pycache__/image.cpython-36.pyc new file mode 100644 index 0000000..40ea15f Binary files /dev/null and b/glance/__pycache__/image.cpython-36.pyc differ diff --git a/glance/glance_main.py b/glance/glance_main.py index 7b15982..9d2fccd 100644 --- a/glance/glance_main.py +++ b/glance/glance_main.py @@ -1,5 +1,6 @@ from glance import image -def keystone_main(): +from keystone import get_token +def glance_main(): print("====================") print("选择一个操作:") print("====================") @@ -8,4 +9,52 @@ def keystone_main(): print("====================") choice = input("输入选项 (1-3): ") ip = "172.30.26.171" - token = get_token.get_token(ip,'demo','admin','admin','000000') \ No newline at end of file + token = get_token.get_token(ip,'demo','admin','admin','000000') + if choice == '1': + print("====================") + print("镜像管理") + print("====================") + print("1. 创建镜像") + print("2. 列出镜像") + print("3. 获取镜像") + print("4. 删除镜像") + print("5. 上传镜像文件") + print("6. 更新镜像") + print("====================") + choice = input("输入选项 (1-6): ") + if choice == '1': + image_name = input("输入镜像名称: ") + image_description = input("输入镜像描述: ") + disk_format = input("输入镜像格式: ") + container_format = input("输入镜像容器格式: ") + result=image.create_image(ip, token, image_name, image_description,disk_format, container_format) + print(result) + glance_main() + if choice == '2': + image.get_image(ip, token) + result=image.get_image(ip, token) + print(result) + glance_main() + if choice == '3': + image_name = input("输入镜像名称: ") + result=image.show_image(ip, token, image_name) + print(result) + glance_main() + if choice == '4': + image_name = input("输入镜像名称: ") + result=image.delete_image(ip, token, image_name) + print(result) + glance_main() + if choice == '5': + image_name = input("输入镜像名称: ") + image_path = input("输入镜像路径: ") + result=image.upload_iamge_file(ip,token,image_name,image_path) + print(result) + glance_main() + if choice == '6': + image_name = input("输入镜像名称: ") + new_image_name = input("输入新镜像名称: ") + new_image_description = input("输入新镜像描述: ") + result=image.update_image(ip, token, image_name, new_image_name, new_image_description) + print(result) + glance_main() \ No newline at end of file diff --git a/glance/image.py b/glance/image.py index e69de29..8052687 100644 --- a/glance/image.py +++ b/glance/image.py @@ -0,0 +1,96 @@ +import requests +import json +def create_image(ip, token, image_name, image_description,disk_format, container_format): + url = "http://" + ip + ":9292/v2/images" + headers = { + "X-Auth-Token": token, + "Content-Type": "application/json" + } + data = { + "name": image_name, + "description": image_description, + "disk_format": disk_format, + "container_format": container_format, + "visibility": "public" + } + response = requests.post(url, headers=headers, data=json.dumps(data)) + return response.json() +def get_image(ip, token): + url = "http://" + ip + ":9292/v2/images" + headers = { + "X-Auth-Token": token, + "Content-Type": "application/json" + } + response = requests.get(url, headers=headers) + return response.json() +def get_image_id(ip, token, image_name): + url = "http://" + ip + ":9292/v2/images" + headers = { + "X-Auth-Token": token, + "Content-Type": "application/json" + } + response = requests.get(url, headers=headers) + image_id = "" + for image in response.json()["images"]: + if image["name"] == image_name: + image_id = image["id"] + return image_id +def show_image(ip, token, image_name): + image_id=get_image_id(ip, token, image_name) + if image_id is None: + return {"error":"镜像不存在"} + url = "http://" + ip + ":9292/v2/images/" + image_id + headers = { + "X-Auth-Token": token, + "Content-Type": "application/json" + } + response = requests.get(url, headers=headers) + return response.json() +def delete_image(ip, token, image_name): + image_id=get_image_id(ip, token, image_name) + if image_id is None: + return {"error":"镜像不存在"} + url = "http://" + ip + ":9292/v2/images/" + image_id + headers = { + "X-Auth-Token": token, + "Content-Type": "application/json" + } + response = requests.delete(url, headers=headers) + if response.status_code == 204: + return {"message":"删除成功"} + else: + return {"error":"删除失败"+str(response.status_code)} +def upload_iamge_file(ip,token,image_name,image_path): + image_id=get_image_id(ip, token, image_name) + if image_id is None: + return {"error":"镜像不存在"} + url = "http://" + ip + ":9292/v2/images/" + image_id + "/file" + with open(image_path, "rb") as e: + image_data = e.read() + headers = { + "X-Auth-Token": token, + "Content-Type": "application/octet-stream" + } + response = requests.patch(url, headers=headers, data=image_data) + if response.status_code == 200: + return {"message":"上传成功"} + else: + return {"error":"上传失败"+str(response.status_code)} +def update_image(ip, token, image_name, new_image_name, new_image_description): + image_id=get_image_id(ip, token, image_name,) + if image_id is None: + return {"error":"镜像不存在"} + url = "http://" + ip + ":9292/v2/images/" + image_id + headers = { + "X-Auth-Token": token, + "Content-Type": "application/octet-stream" + } + data = { + "name": new_image_name, + "description": new_image_description, + } + response = requests.patch(url, headers=headers, data=json.dumps(data)) + if response.status_code == 200: + return {"message":"更新成功"} + else: + return {"error":"更新失败"+str(response.status_code)} \ No newline at end of file diff --git a/keystone/__pycache__/keystone_main.cpython-36.pyc b/keystone/__pycache__/keystone_main.cpython-36.pyc index d827a04..6722a27 100644 Binary files a/keystone/__pycache__/keystone_main.cpython-36.pyc and b/keystone/__pycache__/keystone_main.cpython-36.pyc differ diff --git a/keystone/keystone_main.py b/keystone/keystone_main.py index 6ba4ce3..2956e28 100644 --- a/keystone/keystone_main.py +++ b/keystone/keystone_main.py @@ -2,6 +2,9 @@ from keystone import get_token, group from keystone import user from keystone import domain from keystone import project + +ip = "" +token ="" import time def keystone_main(): print("====================") @@ -15,8 +18,7 @@ def keystone_main(): print("5. 获取token") print("====================") choice = input("输入选项 (1-3): ") - ip = "172.30.26.171" - token = get_token.get_token(ip,'demo','admin','admin','000000') + if choice == '1': print("====================") diff --git a/main.py b/main.py index de3aab6..4122e11 100644 --- a/main.py +++ b/main.py @@ -1,3 +1,18 @@ -from keystone import keystone_main +from keystone import get_token,keystone_main +from glance import glance_main if __name__ == '__main__': - keystone_main.keystone_main() + ip="172.30.26.171" + token=get_token.get_token(ip, 'demo', 'admin', 'admin', '000000') + print("====================") + print("选择一个操作:") + print("====================") + print("1.Glance操作") + print("2.Keystone操作") + print("====================") + choice=input("输入选项 (1-2): ") + if choice=='1': + glance_main.glance_main() + elif choice=='2': + keystone_main.keystone_main() + else: + print("输入错误")