Initial create vm method

This commit is contained in:
Guilherme Werner 2025-06-23 18:13:59 -03:00
parent 34b96fe946
commit a092145059
3 changed files with 19 additions and 1 deletions

View file

@ -17,7 +17,7 @@ namespace Tribufu.Proxmox.Tests
var proxmox = new ProxmoxClient(clusterUrl, tokenId, tokenSecret);
var nodes = await proxmox.ListNodesAsync();
var nodes = await proxmox.ListVirtualMachinesAsync("broadwell");
foreach (var node in nodes)
{
Console.WriteLine($"- {node.Name}");

View file

@ -19,6 +19,8 @@ namespace Tribufu.Proxmox.Interfaces
Task<ProxmoxVirtualMachineStatus> GetVirtualMachineStatusAsync(string node, int vmid);
Task<bool> CreateVirtualMachineAsync(string node, int vmid, string name, int memoryMb, int cores, string storage, string iso, string netConfig = "virtio,bridge=vmbr0");
Task<bool> StartVirtualMachineAsync(string node, int vmid);
Task<bool> RebootVirtualMachineAsync(string node, int vmid);

View file

@ -83,6 +83,22 @@ namespace Tribufu.Proxmox
return json["data"].ToObject<ProxmoxNodeStatus>();
}
public async Task<bool> CreateVirtualMachineAsync(string node, int vmid, string name, int memoryMb, int cores, string storage, string iso, string netConfig = "virtio,bridge=vmbr0")
{
var request = new RestRequest($"nodes/{node}/qemu", Method.Post);
request.AddParameter("vmid", vmid);
request.AddParameter("name", name);
request.AddParameter("memory", memoryMb);
request.AddParameter("cores", cores);
request.AddParameter("ide2", iso + ",media=cdrom");
request.AddParameter("scsihw", "virtio-scsi-pci");
request.AddParameter("scsi0", $"{storage}:32");
request.AddParameter("net0", netConfig);
var response = await _client.ExecuteAsync(request);
return response.IsSuccessful;
}
public async Task<List<ProxmoxVirtualMachine>> ListVirtualMachinesAsync(string node)
{
var request = new RestRequest($"nodes/{node}/qemu", Method.Get);