pve_tests/main.py

99 lines
2.1 KiB
Python
Raw Normal View History

2023-03-24 16:31:22 +03:00
from pathlib import Path
from pprint import pprint
from proxmoxer import ProxmoxAPI
PROXMOX_HOST = 'pve.office.basealt.ru'
PROXMOX_USER = 'stepchenkoas@BaseALT'
PROXMOX_PASSWORD = Path('pve_secret').read_text().strip()
def create_vm(
proxmox,
node=None,
vmid=None,
name=None,
prefix='stepchenkoas',
cores=2,
memory=2048,
disk_size=16,
):
if node is None:
nodes = proxmox.nodes.get()
nodes = list(filter(lambda node: node['status'] == 'online', nodes))
node = min(nodes, key=lambda node: node['disk'])['node']
if vmid is None:
vmid = proxmox.cluster.get('nextid')
if name is None:
name = f'{prefix}-{vmid}'
proxmox.nodes(node).qemu.post(
node=node,
vmid=vmid,
description='This VM was created automatically through Proxmox VE API',
cores=cores,
cpu='host',
memory=memory,
name=name,
net0='virtio,bridge=vmbr0,tag=103,firewall=1',
ostype='l26',
pool='Virt_LAB',
#alt-server-v-10.1-rc3-x86_64.iso
sata2='templates:iso/alt-server-v-10.1-rc3-x86_64.iso,media=cdrom',
scsi0=f'rbd-storage:{disk_size},discard=on',
scsihw='virtio-scsi-pci',
sockets=1,
)
print(f'VM {vmid} was created successfully!')
def delete_vm(
proxmox,
node,
vmid,
):
proxmox.nodes(node).qemu(vmid).delete(
node=node,
vmid=vmid,
)
print(f'VM {vmid} was deleted successfully!')
def clone_template(
proxmox,
2023-03-27 15:51:32 +03:00
node: str,
vmid: int,
newid: int = None,
prefix: int ='stepchenkoas',
2023-03-24 16:31:22 +03:00
):
if newid is None:
newid = proxmox.cluster.get('nextid')
2023-03-27 15:51:32 +03:00
return proxmox.nodes(node).qemu(vmid).clone.post(
newid=newid,
node=node,
vmid=vmid,
format='raw',
full=1,
name=f'{prefix}-test-clone',
pool='Virt_LAB',
storage='rbd-storage',
target=node,
)
2023-03-24 16:31:22 +03:00
def main():
proxmox = ProxmoxAPI(
PROXMOX_HOST, user=PROXMOX_USER, password=PROXMOX_PASSWORD, verify_ssl=False
)
proxmox.logout()
if __name__ == '__main__':
main()