OpenStack私有云平台API接口练习

Python 运维开发

glance

python 复制代码
import requests
import json


token_url = 'http://192.168.59.10:5000/v3/auth/tokens'
token_body = { 'auth': {'identity': {'methods':['password'],
                                     'password':{'user':{'name':'admin','domain':{'name':'demo'},'password':'000000'}}},
                        'scope':{'project':{'name':'admin','domain':{'name':'demo'}}}}
}

token = requests.post(url=token_url,data=json.dumps(token_body)).headers['x-subject-token']

headers = {
    'content-type': 'application/json',
    'X-Auth-Token': token
}

image_url = 'http://192.168.59.10:9292/v2.0/images'
image_body = {
    'name': 'python',
    'disk_format': 'qcow2',
    'container_format': 'bare'
}
create_image = requests.post(url=image_url,headers=headers,data=json.dumps(image_body)).json()
print(create_image['id'])
upload_url = image_url+'/'+create_image['id']+'/file'
upload_headers = headers
upload_headers['content-type'] = 'application/octet-stream'
upload_image = requests.put(url=upload_url,headers=upload_headers,data=open('../cirros-0.3.4-x86_64-disk.img',mode='rb').read()).text
print(upload_image)
image_list = requests.get(url=image_url,headers=headers).json()
print(image_list)
show_image = requests.get(url=upload_url[:-5],headers=headers).json()
fp = open(file='.image_demo.json', mode='w+')
fp.write(json.dumps(show_image,indent=4))
fp.close()
image_id = str
for i in image_list['images']:
    if i['name'] == 'python':
        image_id = i['id']
delete_url = image_url+f'/{image_id}'
delete_image = requests.delete(url=delete_url,headers=headers)

flavor

python 复制代码
import requests
import json

token_url = 'http://192.168.59.10:5000/v3/auth/tokens'
token_body = {'auth':{'identity':{'methods':['password'],
                                  'password':{'user':{'name':'admin','domain':{'name':'demo'},'password':'000000'}}},
                      'scope':{'project':{'name':'admin','domain':{'name':'demo'}}}}
}

token = requests.post(url=token_url,data=json.dumps(token_body)).headers['X-Subject-Token']
headers = {
    'content-type':'application/json',
    'X-Auth-Token': token
}
print(token)

flavor_url = 'http://192.168.59.10:8774/v2.1/flavors'
flavor_body = {
    'flavor':{
        'name': 'python',
        'id': '055',
        'vcpus': '1',
        'ram': '1024',
        'disk': '10'
    }
}

create_flavor = requests.post(url=flavor_url,headers=headers,data=json.dumps(flavor_body)).json()
fp = open(file='.flavor_demo.json', mode='w+')
fp.write(json.dumps(create_flavor, indent=4))
fp.close()
delete_url = flavor_url+'/'+create_flavor['flavor']['id']
delete_flavor = requests.delete(url=delete_url,headers=headers)

network

shell 复制代码
import requests
import json

headers = {'Content-Type': 'application/json'}
token_url = 'http://192.168.59.10:5000/v3/auth/tokens'
token_body = {'auth': {'identity': {'methods': ['password'],
                                    'password': {'user': {'domain': {'name': 'demo'}, 'name': 'admin', 'password': '000000'}}},
                       'scope': {'project': {'domain': {'name': 'demo'}, 'name': 'admin'}}}
              }
Token = requests.post(headers=headers, url=token_url, data=json.dumps(token_body)).headers['X-Subject-Token']
headers['X-Auth-Token'] = Token

net_url = 'http://192.168.59.10:9696/v2.0/networks'


# 创建网络
data = {'network': {'name': 'python'}}
create_network = requests.post(headers=headers, url=net_url, data=json.dumps(data)).json()
net_id = create_network['network']['id']
get_network = requests.get(headers=headers, url=net_url).json()
# print(json.dumps(get_network,indent=2))

# 创建子网
subnet_url = 'http://192.168.59.10:9696/v2.0/subnets'
data = {
    'subnet': {
        'network_id': create_network['network']['id'],
        'name': 'subnet',
        'cidr': '192.168.1.0/24',
        'ip_version': 4
    }
}
create_subnet = requests.post(url=subnet_url, headers=headers, data=json.dumps(data)).json()
print(json.dumps(create_subnet, indent=2))

for i in get_network['networks']:
    net_id = i['id']
delete_net = requests.delete(headers=headers,url=f'{net_url}/{net_id}')

vm

shell 复制代码
import json
import requests

headers = {'Content-Type': 'application/json'}
token_url = 'http://192.168.59.10:5000/v3/auth/tokens'
body = {'auth': {'identity': {'methods': ['password'],
                              'password': {'user': {'domain': {'name': 'demo'}, 'name': 'admin', 'password': '000000'}}},
                 'scope': {'project': {'domain': {'name': 'demo'}, 'name': 'admin'}}}
        }
headers['X-Auth-Token'] = requests.post(headers=headers,url=token_url,data=json.dumps(body)).headers['X-Subject-Token']


# 删除使用delete url为http://192.168.59.10:8774/v2.1/servers/[VmId]
# 查看使用get url为http://192.168.59.10:8774/v2.1/servers/

# 获取镜像id
image_id = requests.get(headers=headers,url='http://192.168.59.10:9292/v2/images').json()

for i in image_id['images']:
    if i['name'] == 'python':
        image_id = i['id']
print(image_id)

# 获取flavor-id
flavor_id = requests.get(headers=headers,url='http://192.168.59.10:8774/v2.1/flavors').json()
for i in flavor_id['flavors']:
    if i['name'] == 'python':
        flavor_id = i['id']
print(flavor_id)

# 获取网络id
network_id = requests.get(headers=headers,url='http://192.168.59.10:9696/v2.0/networks').json()
for i in network_id['networks']:
    if i['name'] == 'python':
        network_id = i['id']
print(network_id)

data = {
    'server': {
        'name': 'python',
        'imageRef': image_id,
        'flavorRef': flavor_id,
        'networks': [{'uuid': network_id}]
    }
}

create_vm = requests.post(headers=headers,url='http://192.168.59.10:8774/v2.1/servers',data=json.dumps(data)).json()
# create_vm = requests.get(headers=headers,url='http://192.168.59.10:8774/v2.1/servers').json()
print(json.dumps(create_vm,indent=4))
相关推荐
REDcker15 小时前
显示分辨率标准对照详解
前端·网络·分辨率·显示·屏幕
大耳朵-小飞象16 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
ANSIOT16 小时前
安朔科技蓝牙无感开锁方案,靠近自动解锁
网络·科技·物联网
极客侃科技16 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
晏宁科技YaningAI17 小时前
VoIP系统的工程实现模型:从信令控制到媒体传输的完整架构解析
网络·人工智能·架构·系统架构·信息与通信
HLC++17 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室18 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
神奇霸王龙19 小时前
Claude Code屠榜:MiMo与Grok紧追Codex
服务器·网络·人工智能·gpt·ai·ai编程
生活爱好者!20 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
groundhappy21 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python