Package: pyproxmox3
pyproxmoxUpdate to py3 and Proxmox 6/7 from https//github.com/Daemonthread/pyproxmoxA Python wrapper for the Proxmox 6.x and 7.x APIInstallation and dependencypip install pyproxmox3 requestsExample usageImport everything from the modulefrom pyproxmox3 import ProxAuth, PyProxmoxCreate an instance of the prox_auth class by passing in the
url or ip of a server in the cluster, username and passwordINIT_AUTHENT = ProxAuth('vnode01.example.org', 'apiuser@pve', 'examplePassword')ATTENTION! The realm can change : @pve or @pam, it depends on your configuration.Create and instance of the pyproxmox class using the auth object as a parameterPROXMOX_EXEC = PyProxmox(INIT_AUTHENT)Run the pre defined methods of the pyproxmox classSTATUS = PROXPROXMOX_EXEC_EXEC.get_cluster_status()NOTE They all return data in JSON format.Methods requiring post_dataThese methods need to passed a correctly formatted dictionary.
for example, if I was to use the createOpenvzContainer for the above example node
I would need to pass the post_data with all the required variables for proxmox.Example for lxc :POST_DATA = {'ostemplate':'local:vztmpl/debian-10-standard_10.7-1_amd64.tar.gz',
			'vmid':'901','cores':'2','description':'test container',
			'rootfs':'10','hostname':'test.example.org','memory':'1024',
			'password':'testPassword','swap':'1024', 'ostype':'debian',
			'storage':'Stockage1'}

PROXMOX_EXEC.create_openvz_container('vnode01', POST_DATA)Example for kvm :POST_DATA = {'vmid':'9001', 'cores':'4', 'sockets': 1, 'description':'test kvm',
			'name':'test.example.org', 'memory':'1024', 'scsi0': 'Stockage1:102/vm-102-disk-0.qcow2,size=32G',
			'scsihw': 'virtio-scsi-pci', 'net0': 'virtio,bridge=vmbr1',
			'ide0': 'local:iso/fbsd-122-custom.iso,media=cdrom','ostype':'l26'}

PROXMOX_EXEC.create_virtual_machine('vnode01', POST_DATA)For more information on the accepted variables please see http//pve.proxmox.com/pve2-api-doc/Current List of MethodsGET MethodsCluster Methodsget_cluster_status()"Get cluster status information. Returns JSON"get_cluster_backup_schedule()"List vzdump backup schedule. Returns JSON"get_cluster_vm_next_id()"Get next VM ID of cluster. Returns JSON"get_cluster_node_list()"Node list. Returns JSON"get_cluster_log()"log from Cluster. Returns JSON"get_cluster_acl()"ACL from Cluster. Returns JSON"Node Methodsget_node_config(node)"List available networks. Returns JSON"get_node_networks(node)"List available networks. Returns JSON"get_node_interface(node, interface)"Read network device configuration. Returns JSON"get_node_container_index(node)"LXC container index (per node). Returns JSON"get_node_virtual_index(node)"Virtual machine index (per node). Returns JSON"get_node_service_list(node)"Service list. Returns JSON"get_node_service_state(node, service)"Read service properties"get_node_storage(node)"Get status for all datastores. Returns JSON"get_node_finished_tasks(node)"Read task list for one node (finished tasks). Returns JSON"get_node_dns(node)"Read DNS settings. Returns JSON"get_node_status(node)"Read node status. Returns JSON"get_node_syslog(node)"Read system log. Returns JSON"get_node_rrd(node)"Read node RRD statistics. Returns PNG"
Ex: POST_DATA = {'node': 'r610'}"get_node_rrd_data(node)"Read node RRD statistics. Returns RRD"get_node_task_by_upid(node, upid)"Get tasks by UPID. Returns JSON"get_node_task_log_by_upid(node, upid)"Read task log. Returns JSON"get_node_task_status_by_upid(node, upid)"Read task status. Returns JSON"Scanget_node_scan_methods(node)"Get index of available scan methods, Returns JSON"get_remote_iscsi(node)"Scan remote iSCSI server."get_node_lvmgroups(node)"Scan local LVM groups"get_remote_nfs(node)"Scan remote NFS server"get_node_usb(node)"List local USB devices"LXC Methodsget_lxc_index(node, vmid)"Directory index. Returns JSON"get_lxc_status(node, vmid)"Get virtual machine status. Returns JSON"get_lxc_config(node, vmid)"Get container configuration. Returns JSON"get_lxc_rrd(node, vmid)"Read VM RRD statistics. Returns PNG"get_lxc_rrd_data(node, vmid)"Read VM RRD statistics. Returns RRD"Agent Methodsget_agent(node, vmid, endpoint)"Get vm informations via agent. Returns JSON"KVM Methodsget_virtual_list(node)"List virtual machine. Returns JSON"get_virtual_index(node, vmid)"Directory index. Returns JSON"get_virtual_status(node, vmid)"Get virtual machine status. Returns JSON"get_virtual_config(node, vmid)"Get virtual machine configuration. Returns JSON"get_virtual_rrd(node, vmid)"Read VM RRD statistics. Returns JSON"get_virtual_rrd_data(node, vmid)"Read VM RRD statistics. Returns JSON"get_snapshots_virtual_machine(node, vmid)"Get list of snapshots a virtual machine. Returns JSON"create_snapshot_virtual_machine(node, vmid, snapname, description='')"Create Snapshot from VM. Returns JSON"delete_snapshot_virtual_machine(node, vmid, snapname, force=False)"Destroy the vm snapshot (also delete all used/owned volumes). Returns JSON"Storage Methodsget_storage_volume_data(node, storage, volume)"Get volume attributes. Returns JSON"get_storage_config(storage)"Read storage config. Returns JSON"get_node_storage_content(node, storage)"List storage content. Returns JSON"get_node_storage_rrd(node, storage)"Read storage RRD statistics. Returns JSON"get_node_storage_rrd_data(node, storage)"Read storage RRD statistics. Returns JSON"POST MethodsLXC Methodscreate_lxc_container(node, post_data)"Create or restore a container. Returns JSON
Requires a dictionary of tuples formatted [('postname1','data'),('postname2','data')]"shutdown_lxc_container(node, vmid)"Shutdown the container. Returns JSON"start_lxc_container(node, vmid)"Start the container. Returns JSON"stop_lxc_container(node, vmid)"Stop the container. Returns JSON"migrate_lxc_container(node, vmid, target)"Migrate the container to another node. Creates a new migration task. Returns JSON"KVM Methodscreate_virtual_machine(node, post_data)"Create or restore a virtual machine. Returns JSON
Requires a dictionary of tuples formatted [('postname1','data'),('postname2','data')]"clone_virtual_machine(node,vmid, post_data)"Create a copy of virtual machine/template. Returns JSON
Requires a dictionary of tuples formatted [('postname1','data'),('postname2','data')]
Ex: POST_DATA = {'name':'test2.example.org', 'newid':'9002'}"reset_virtual_machine(node, vmid)"Reset a virtual machine. Returns JSON"resume_virtual_machine(node, vmid)"Resume a virtual machine. Returns JSON"shutdown_virtual_machine(node, vmid)"Shut down a virtual machine. Returns JSON"start_virtual_machine(node, vmid)"Start a virtual machine. Returns JSON"stop_virtual_machine(node, vmid)"Stop a virtual machine. Returns JSON"suspend_virtual_machine(node, vmid)"Suspend a virtual machine. Returns JSON"migrate_virtual_machine(node, vmid, post_data)
	options : online=False, force=False, bwlimit=False, migration_network=False,"Migrate a virtual machine. Returns JSON"monitor_virtual_machine(node, vmid, command)"Send monitor command to a virtual machine. Returns JSON"vncproxy_virtual_machine(node, vmid)"Creates a VNC Proxy for a virtual machine. Returns JSON"rollback_virtual_machine(node, vmid, snapname)"Rollback a snapshot of a virtual machine. Returns JSON"get_snapshot_config_virtual_machine(node, vmid, snapname)"Get snapshot config of a virtual machine. Returns JSON"create_node_network(node, post_data)"Create network device. Returns JSON
Ex: POST_DATA = {'iface': 'vmbr5', 'type': 'bridge'}"reload_node_network(node, post_data)"Reload network configuration. Returns JSON
Ex: POST_DATA = {'node': 'r610'}"reload_node_iface(node, iface, post_data)"Reload network configuration. Returns JSON
Ex: POST_DATA = {'iface': IFACE, 'node': NODE, 'type': 'bridge'}"Storage Methodsallocate_node_storage_vm(node, storage, post_data)"Create disk for a specific VM. Returns JSON"DELETE MethodsLXCdelete_lxc_container(node, vmid)"Deletes the specified lxc container"NODEdelete_node_network_config(node)"Revert network configuration changes."delete_node_interface(node, interface)"Delete network device configuration"KVMdelete_virtual_machine(node, vmid)"Destroy the vm (also delete all used/owned volumes)."POOLSlist_pools()"List all pool. Returns JSON"get_pool_content(poolid)"Get Pool content. Returns JSON"create_pool(post_data)"Create pool. Returns JSON"set_pool_data(poolid, post_data)"Update pool data."delete_pool(poolid)"Delete Pool"STORAGEdelete_storage_configuration(storageid)"Delete storage configuration"PUT MethodsNODEset_node_dns_domain(node, domain)"Set the nodes DNS search domain"set_node_subscription_key(node, key)"Set the nodes subscription key"set_node_time_zone(node, timezone)"Set the nodes timezone"LXCset_lxc_container_options(node, vmid, post_data)"Set lxc virtual machine options."KVMset_virtual_machine_options(node, vmide, post_data)"Set KVM virtual machine options."send_key_event_virtual_machine(node, vmid, key)"Send key event to virtual machine"unlink_virtual_machine_disk_image(node, vmid, post_data)"Unlink disk images
Ex: POST_DATA = {'idlist': 'ide0'}"STORAGEupdate_storage_configuration(storageid, post_data)"Update storage configuration"