Openstack调用API(新)

requests 请求方法

  • requests.post  # 用于提交创建资源的请求

  • requests.get   # 用于查询一个资源的请求

  • requests.put  # 上传文件的请求

  

OpenStack调用flavor

import requests
import json

class Flavor:
    def __init__(self, url: str, headers: dict):
        self.url = url
        self.headers = headers

    def creation(self, name: str, ram: int, disk: int, vcpus: int):
        data = {
            "flavor": {
                "vcpus": vcpus,
                "disk": disk,
                "name": name,
                "ram": ram, 
                "id": None}}
        requests.post(self.url, headers=self.headers, data=json.dumps(data))
        print("创建成功")

headers = token()
flavor = Flavor(url='http://controller:8774/v2.1/flavors/', headers=headers)
flavor.creation(name='test', ram=1024, disk=20, vcpus=2)

 

OpenStack调用镜像

分为两个步骤

  • 提交创建请求
  • 上传镜像
import json
import requests

class Image:
    def __init__(self, url: str, headers: dict):
        self.url = url
        self.headers= headers

    def create(self, name: str, disk_format: str, container_format: str, file_path: str):
        data = {
            "container_format": container_format,
            "disk_format": disk_format,
            "name": name}
        img_id = requests.post(self.url, headers=self.headers, data=json.dumps(data)).json()['id']
        url = self.url+'/{0}/file'.format(img_id)
        print('镜像创建提交')
        self.upload(url,file_path=file_path)

    def upload(self, url: str, file_path: str):
        headers['Content-Type'] = 'application/octet-stream'
        requests.put(url, headers=self.headers, data=open(file_path, 'rb'))
        print('上传成功')

headers = token()
image = Image(url='http://controller:9292/v2/images', headers=headers)
image.create(name='cirros', disk_format='qcow2', container_format='bare', file_path='http://172.25.253.11/cirros-0.3.4-x86_64-disk.img')

 

仅供参考

posted @ 2021-12-21 08:05  衡衡酱  阅读(614)  评论(0)    收藏  举报
Live2D