PVE API创建虚拟机
度娘,谷歌都搜了一圈没有找到通过PVE API创建虚拟机的方式,
于是查官网自己试了试,部分代码抄的Sam Liu大佬的作业,感谢大佬。
python代码如下:
import requests
# self-sign CA warning
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
class Pve_api(object):
def __init__(self, ip, username = None, password = None, port = '8006'):
self.ip = ip
self.username = username
self.password = password
self.port = port
self.ticket = None
'''
####### ticket data structure
{
"data":{
"ticket": "PVE:root@pam:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"cap":{"vms":{"VM.Clone": 1, "VM.Backup": 1, "VM.Config.Options": 1, "VM.Snapshot": 1,…},
"CSRFPreventionToken": "6xxxxxx:/xxxxxxxxxxxxxxxx",
"username": "root@pam"
}
}
'''
#获取ticket
def get_ticket(self):
path = '/api2/json/access/ticket'
url = 'https://' + self.ip + ':' + self.port + path
r = requests.post(url=url, json={"username": self.username, "password": self.password}, verify=False)
self.ticket = r.json() # dict rather than string
return r.json()
#查询节点列表
def ticket_node_list(self):
path = '/api2/json/nodes'
url = 'https://' + self.ip + ':' + self.port + path
headers = {'CSRFPreventionToken': self.ticket['data']['CSRFPreventionToken'], 'Cookie': 'PVEAuthCookie=' + self.ticket['data']['ticket']}
r = requests.get(url=url, headers=headers, verify=False)
return r.json()
#查询虚拟机列表
def ticket_vm_list(self, node):
path = f'/api2/json/nodes/{node}/qemu'
url = 'https://' + self.ip + ':' + self.port + path
headers = {'CSRFPreventionToken': self.ticket['data']['CSRFPreventionToken'], 'Cookie': 'PVEAuthCookie=' + self.ticket['data']['ticket']}
r = requests.get(url=url, headers=headers, verify=False)
return r.json()
#获取虚拟机信息
def ticket_vm_current(self, node, vmid):
path = f'/api2/json/nodes/{node}/qemu/{vmid}/status/current'
url = 'https://' + self.ip + ':' + self.port + path
headers = {'CSRFPreventionToken': self.ticket['data']['CSRFPreventionToken'], 'Cookie': 'PVEAuthCookie=' + self.ticket['data']['ticket']}
r = requests.get(url=url, headers=headers, verify=False)
return r.json()
#启动虚拟机
def ticket_vm_start(self, node, vmid):
path = f'/api2/json/nodes/{node}/qemu/{vmid}/status/start'
url = 'https://' + self.ip + ':' + self.port + path
headers = {'CSRFPreventionToken': self.ticket['data']['CSRFPreventionToken'], 'Cookie': 'PVEAuthCookie=' + self.ticket['data']['ticket']}
r = requests.post(url=url, headers=headers, verify=False)
return r.json()
#关闭虚拟机
def ticket_vm_stop(self, node, vmid):
path = f'/api2/json/nodes/{node}/qemu/{vmid}/status/stop'
url = 'https://' + self.ip + ':' + self.port + path
headers = {'CSRFPreventionToken': self.ticket['data']['CSRFPreventionToken'], 'Cookie': 'PVEAuthCookie=' + self.ticket['data']['ticket']}
r = requests.post(url=url, headers=headers, verify=False)
return r.json()
#创建虚拟机
def ticket_vm_create(self, node,data):
path = f'/api2/json/nodes/{node}/qemu/'
url = 'https://' + self.ip + ':' + self.port + path
headers = {'CSRFPreventionToken': self.ticket['data']['CSRFPreventionToken'], 'Cookie': 'PVEAuthCookie=' + self.ticket['data']['ticket']}
r = requests.post(url=url, data=data,headers=headers, verify=False)
return r.json()
if __name__ == '__main__':
op = Pve_api(ip='192.168.1.1', username='root@pam', password='xxxxxxxxx')
op.get_ticket()
data = {
'vmid': '102',
'sata0': 'local:100',
'cores': '2',
'memory': '1024',
'name': 'test',
'cdrom': 'local:iso/debian-11.3.0-amd64-netinst.iso'
}#创建虚拟机的参数,其它参数官网有
r=op.ticket_vm_create(node='node1',data=data)
print(r)
'''
{'data': 'UPID:node1:xxxxxxxxxxxxxxxxx:qmcreate:102:root@pam:'}返回创建成功
'''
参考文档:[https://zhuanlan.zhihu.com/p/550851406](感谢Sam Liu大佬的代码)
[https://pve.proxmox.com/pve-docs/api-viewer/index.html] (PVE官网API说明文档)
PVE API创建虚拟机的更多相关文章
- 使用Azure REST API创建虚拟机
Hollis Yao, Shihao Rong 使用REST API创建虚拟机之前,首先要确保Azure订阅中已经建好了"云服务"和"存储账号".如果没有的话 ...
- Openstack python api 学习文档 api创建虚拟机
Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...
- nova创建虚拟机源码分析系列之六 api入口create方法
openstack 版本:Newton 注:博文图片采用了很多大牛博客图片,仅作为总结学习,非商用.该图全面的说明了nova创建虚机的过程,从逻辑的角度清晰的描述了前端请求创建虚拟机之后发生的一系列反 ...
- nova创建虚拟机源码分析系列之一 restful api
开始学习openstack源码,源码文件多,分支不少.按照学习的方法走通一条线是最好的,而网上推荐的最多的就是nova创建虚机的过程.从这一条线入手,能够贯穿openstack核心服务.写博文仅做学习 ...
- Openstack创建虚拟机 Restful api和RPC调用
Horizon前台界面用于接受用户的输入或动作(action),然后将这些参数构造成RESTful API(https://developer.openstack.org/api-ref/comput ...
- openstack创建虚拟机的步骤
图片来自互联网. 虚拟机启动过程如下: 1.界面或命令行通过RESTful API向keystone获取认证信息.2.keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请 ...
- nova创建虚拟机源码分析系列之八 compute创建虚机
/conductor/api.py _build_instance() /conductor/rpcapi.py _build_instance() 1 构造一些数据类型2 修改一些api版本信息 ...
- nova创建虚拟机源码分析系列之五 nova源码分发实现
前面讲了很多nova restful的功能,无非是为本篇博文分析做铺垫.本节说明nova创建虚拟机的请求发送到openstack之后,nova是如何处理该条URL的请求,分析到处理的类. nova对于 ...
- nova创建虚拟机源码系列分析之二 wsgi模型
openstack nova启动时首先通过命令行或者dashborad填写创建信息,然后通过restful api的方式调用openstack服务去创建虚拟机.数据信息从客户端到达openstack服 ...
- 创建虚拟机流程nova
这篇博文借鉴于http://www.cnblogs.com/yjbjingcha/p/6977741.html,感谢博友提供. 本文试图具体地描写叙述openstack创建虚拟机的完整过程.从用户发起 ...
随机推荐
- PX4安装环境测试
1.ROS环境测试 安装ROS版本:melodic roscore // 注意下面是打开一个新的终端,roscore一直在运行 rosrun turtlesim turtlesim_node // 再 ...
- .NET开源的处理分布式事务的解决方案
前言 在分布式系统中,由于各个系统服务之间的独立性和网络通信的不确定性,要确保跨系统的事务操作的最终一致性是一项重大的挑战.今天给大家推荐一个.NET开源的处理分布式事务的解决方案基于 .NET St ...
- 如何搭建园区3d可视化大屏
搭建园区3D可视化大屏需要考虑多个方面,包括硬件设备.数据源获取.软件工具和可视化设计. 以下是一个详细的步骤指南,帮助您了解如何搭建园区3D可视化大屏. 1. 硬件设备选择: - 显示屏幕:选择适合 ...
- HelloJs
JS 轻量级脚本语言,也是嵌入式语言,是一种对啊想模型语言,简称JS 想要实现复杂的效果,得依靠宿主环境提供API,最常见的是浏览器,还有服务器环境(操作系统) 语言机构+宿主环境提供的API 写js ...
- 使用mumu模拟器抓包 andriod app
背景 公司H5嵌入到农行手机app里面.某天有人反馈进入国内机票订单详情时,应用崩溃了,如下图: 经过测试,此问题仅在安卓手机中出现,且其他页面都正常.于是我怀疑可能是这个页面代码有问题,想着能否抓包 ...
- C与Verilog差别
C没有时钟概念,Verilog有时钟边沿触发. C无建立保持时间要求,Verilog要计算建立保持时间,并进行优化 C与工艺无关,Verilog依赖底层工艺cell,相同代码不同cell差异较大. V ...
- [ABC282E] Choose Two and Eat One
Problem Statement A box contains $N$ balls, each with an integer between $1$ and $M-1$ written on it ...
- Lucas定理 、斯特灵公式
斯特灵公式是一条用来取n阶乘的近似值的数学公式. 公式为: 用该公式我们可以用来估算n阶乘的值:估算n阶乘的在任意进制下的位数. 如何计算在R进制下的位数:我们可以结合对数来计算,比如十进制就是lg( ...
- bash shell笔记整理——cd命令、目录路径
cd---change directory 改变目录的意思 语法: cd [选项] <目录> 选项: -L 会自动进入符号连接目录(默认) -P 进入符号连接目录的真实目录下. 常用: 命 ...
- Pulsar3.0 升级指北
Pulsar3.0 介绍 Pulsar3.0 是 Pulsar 社区推出的第一个 LTS 长期支持版本. 如图所示,LTS 版本会最长支持到 36 个月,而 Feature 版本最多只有六个月:类似于 ...