feat: implement automated VMID discovery for LXC creation
This commit is contained in:
parent
1536974fcc
commit
b5814e9e61
4 changed files with 35 additions and 4 deletions
|
|
@ -156,7 +156,7 @@ def proxmox_list_lxcs(config, node):
|
|||
click.echo(mgr.list_lxcs())
|
||||
|
||||
@proxmox.command(name='create-lxc')
|
||||
@click.argument('vmid')
|
||||
@click.option('--vmid', help='VMID for the container (auto-discovered if omitted)')
|
||||
@click.argument('template')
|
||||
@click.argument('hostname')
|
||||
@click.argument('ip')
|
||||
|
|
@ -166,8 +166,18 @@ def proxmox_list_lxcs(config, node):
|
|||
@click.pass_obj
|
||||
def proxmox_create_lxc(config, vmid, template, hostname, ip, gateway, node, password):
|
||||
mgr = ProxmoxManager(config, node)
|
||||
mgr.create_lxc(vmid, template, hostname, ip, gateway, password=password)
|
||||
click.echo(f"LXC {vmid} ({hostname}) created on {mgr.node_name or 'default node'}")
|
||||
|
||||
target_vmid = vmid
|
||||
if not target_vmid:
|
||||
click.echo("Discovering next available VMID...")
|
||||
target_vmid = mgr.get_next_vmid()
|
||||
if not target_vmid:
|
||||
click.echo("Error: Could not automatically discover next VMID. Please provide one with --vmid", err=True)
|
||||
sys.exit(1)
|
||||
|
||||
click.echo(f"Using VMID: {target_vmid}")
|
||||
mgr.create_lxc(target_vmid, template, hostname, ip, gateway, password=password)
|
||||
click.echo(f"LXC {target_vmid} ({hostname}) created on {mgr.node_name or 'default node'}")
|
||||
|
||||
@cli.group()
|
||||
def samba():
|
||||
|
|
|
|||
|
|
@ -22,6 +22,14 @@ class ProxmoxManager:
|
|||
res = self.client.run(f"pct status {vmid}")
|
||||
return res.stdout
|
||||
|
||||
def get_next_vmid(self):
|
||||
"""Retrieves the next available cluster-wide VMID from Proxmox"""
|
||||
res = self.client.run("pvesh get /cluster/nextid")
|
||||
if res.returncode == 0 and res.stdout.strip():
|
||||
return res.stdout.strip()
|
||||
# Fallback if pvesh fails (highly unlikely on PVE)
|
||||
return None
|
||||
|
||||
def resolve_template(self, alias):
|
||||
"""Resolves a template alias (e.g. 'debian-13') to the latest full path on the node"""
|
||||
if alias == "debian-13":
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue