public UserControl Forward() { _Local_Media_Create_Model.Machine_Definition.Devices.Devices.Clear();//remove any previous devices var de = new Libvirt.Models.Concrete.Device(); de.Device_Bus_Type = Libvirt.Models.Concrete.Device.Device_Bus_Types.virtio; de.Device_Device_Type = Libvirt.Models.Concrete.Device.Device_Device_Types.cdrom; de.Device_Type = Libvirt.Models.Concrete.Device.Device_Types.volume; de.Driver_Cache_Type = Libvirt.Models.Concrete.Device.Driver_Cache_Types._default; de.Driver_Type = Libvirt.Models.Concrete.Device.Driver_Types.raw; de.ReadOnly = true; de.Snapshot_Type = Libvirt.Models.Concrete.Device.Snapshot_Types._default; var source = new Libvirt.Models.Concrete.Device_Source_Volume(); source.pool = Pool_SelectBox.SelectedItem != null?Pool_SelectBox.SelectedItem.ToString() : ""; source.volume = Volume_SelectBox.SelectedItem != null?Volume_SelectBox.SelectedItem.ToString() : ""; source.Source_Startup_Policy = Libvirt.Models.Concrete.Device.Source_Startup_Policies.optional; de.Source = source; _Local_Media_Create_Model.Machine_Definition.Devices.Add(de);// add this .. NOW VALIDATE!! if (_Local_Media_Create_Model.Validate()) { return(new Cpu_Ram_Create(this, _Local_Media_Create_Model.Connection, _Local_Media_Create_Model.Machine_Definition)); } else { foreach (var item in _Local_Media_Create_Model.Errors) { foreach (var r in item.Value) { errorProvider1.SetError(Volume_SelectBox, r); } } } return(null); }
public void QuickCreate(Libvirt_WebManager.Areas.Domain.Models.New_Domain_VM v) { var h = Service.VM_Manager.Instance.virConnectOpen(v.Host); var capabilities = System.Xml.Linq.XDocument.Parse(h.virConnectGetCapabilities()).Root; Libvirt.Models.Concrete.Virtual_Machine virtuammachine = new Libvirt.Models.Concrete.Virtual_Machine(); virtuammachine.CPU.vCpu_Count = v.Cpus; virtuammachine.type = Libvirt.Models.Concrete.Virtual_Machine.Domain_Types.qemu; virtuammachine.Metadata.name = v.Name; virtuammachine.Memory.memory_unit = virtuammachine.Memory.currentMemory_unit = Libvirt.Models.Concrete.Memory_Allocation.UnitTypes.MiB; virtuammachine.Memory.currentMemory = virtuammachine.Memory.memory = v.Ram; //Add a hard drive var harddrive = new Libvirt.Models.Concrete.Disk(); harddrive.Device_Bus_Type = Libvirt.Models.Concrete.Disk.Disk_Bus_Types.virtio; harddrive.Disk_Device_Type = Libvirt.Models.Concrete.Disk.Disk_Device_Types.disk; harddrive.Device_Type = Libvirt.Models.Concrete.Disk.Disk_Types.volume; harddrive.Driver_Cache_Type = Libvirt.Models.Concrete.Disk.Driver_Cache_Types.none; harddrive.Driver_Type = Libvirt.Models.Concrete.Disk.Driver_Types.raw; harddrive.ReadOnly = false; harddrive.Snapshot_Type = Libvirt.Models.Concrete.Disk.Snapshot_Types._default; var source = new Libvirt.Models.Concrete.Device_Source_Volume(); source.pool = v.HD_Pool; source.volume = v.HD_Volume; source.Source_Startup_Policy = Libvirt.Models.Concrete.Disk.Source_Startup_Policies.mandatory; harddrive.Source = source; virtuammachine.Drives.Add(harddrive); var oscdrom = new Libvirt.Models.Concrete.Disk(); oscdrom.Device_Bus_Type = Libvirt.Models.Concrete.Disk.Disk_Bus_Types.ide; oscdrom.Disk_Device_Type = Libvirt.Models.Concrete.Disk.Disk_Device_Types.cdrom; oscdrom.Device_Type = Libvirt.Models.Concrete.Disk.Disk_Types.volume; oscdrom.Driver_Cache_Type = Libvirt.Models.Concrete.Disk.Driver_Cache_Types.none; oscdrom.Driver_Type = Libvirt.Models.Concrete.Disk.Driver_Types.raw; oscdrom.ReadOnly = true; oscdrom.Snapshot_Type = Libvirt.Models.Concrete.Disk.Snapshot_Types._default; var cdsource = new Libvirt.Models.Concrete.Device_Source_Volume(); cdsource.pool = v.OS_Pool; cdsource.volume = v.OS_Volume; cdsource.Source_Startup_Policy = Libvirt.Models.Concrete.Disk.Source_Startup_Policies.optional; oscdrom.Source = cdsource; virtuammachine.Drives.Add(oscdrom); virtuammachine.graphics = new Libvirt.Models.Concrete.Graphics(); virtuammachine.graphics.Graphic_Type = Libvirt.Models.Concrete.Graphics.Graphic_Types.vnc; virtuammachine.graphics.autoport = true; virtuammachine.graphics.websocket = -1; virtuammachine.graphics.listen = "0.0.0.0"; virtuammachine.clock = v.Operating_System == Areas.Domain.Models.OS_Options.Windows ? Libvirt.Models.Concrete.Virtual_Machine.Clock_Types.localtime : Libvirt.Models.Concrete.Virtual_Machine.Clock_Types.utc; var hostcapabilities = System.Xml.Linq.XDocument.Parse(h.virConnectGetCapabilities()).Root; foreach(var item in hostcapabilities.Elements("guest")) { var arch = item.Element("arch"); if (arch != null) { var attr = arch.Attribute("name"); if (attr != null) { if(attr.Value == "x86_64") { var wordsize = arch.Element("wordsize"); if (wordsize != null) { if (wordsize.Value == "64") {//GOT IT!!! 64 bit, x86 type.. get host capaciliies and pick best var ele = arch.Element("emulator"); if (ele != null) { virtuammachine.emulator = ele.Value; } ele = arch.Element("machine"); if (ele != null) { var fattr = ele.Attribute("canonical"); if (fattr != null) { virtuammachine.BootLoader.machine = fattr.Value; } else { virtuammachine.BootLoader.machine = ele.Value; } } } } } } } } using (var domain = h.virDomainDefineXML(virtuammachine)) { if (domain.IsValid) { if (domain.virDomainCreate() == 0) { Debug.WriteLine("Successfully created and started the new VM!"); } else { Debug.WriteLine("Successfully created the VM, but was unable to start it. Check the error logs"); } } else { Debug.WriteLine("Unable to create the VM, please check the error logs!"); } } }
public UserControl Forward() { var previtem = _Storage_Create_Model.Machine_Definition.Devices.Devices.FirstOrDefault(); _Storage_Create_Model.Machine_Definition.Devices.Devices.Clear();// clear everything var de = new Libvirt.Models.Concrete.Device(); de.Device_Bus_Type = Libvirt.Models.Concrete.Device.Device_Bus_Types.virtio; de.Device_Device_Type = Libvirt.Models.Concrete.Device.Device_Device_Types.disk; de.Device_Type = Libvirt.Models.Concrete.Device.Device_Types.volume; de.Driver_Cache_Type = Libvirt.Models.Concrete.Device.Driver_Cache_Types._default; de.Driver_Type = Libvirt.Models.Concrete.Device.Driver_Types.raw; de.ReadOnly = false; de.Snapshot_Type = Libvirt.Models.Concrete.Device.Snapshot_Types._default; var source = new Libvirt.Models.Concrete.Device_Source_Volume(); source.pool = Pool_ListBox.SelectedItem != null?Pool_ListBox.SelectedItem.ToString() : ""; source.volume = Volume_ListBox.SelectedItem != null?Volume_ListBox.SelectedItem.ToString() : ""; source.Source_Startup_Policy = Libvirt.Models.Concrete.Device.Source_Startup_Policies.mandatory; de.Source = source; _Storage_Create_Model.Machine_Definition.Devices.Add(de);// add this .. NOW VALIDATE!! if (_Storage_Create_Model.Validate()) { _Storage_Create_Model.Machine_Definition.Devices.Add(previtem);//add the previous item back var tmpxml = _Storage_Create_Model.Machine_Definition.To_XML(); using (var domain = _Storage_Create_Model.Connection.virDomainDefineXML(_Storage_Create_Model.Machine_Definition)) { if (domain.IsValid) { if (AutoStart_VM_chk.Checked) { if (domain.virDomainCreate() == 0) { MessageBox.Show("Successfully created and started the new VM!"); return(new End_Control());//marker to signal the end } else { MessageBox.Show("Successfully created the VM, but was unable to start it. Check the error logs"); return(new End_Control());//marker to signal the end } } else { MessageBox.Show("Successfully created the new VM!"); return(new End_Control());//marker to signal the end } } else { MessageBox.Show("Unable to create the VM, please check the error logs!"); } } } else { _Storage_Create_Model.Machine_Definition.Devices.Devices.Clear();// clear everything, bad attempt } return(null); }
public ActionResult _Partial_Drives(Models.Domain_Drive_Down_VM Domain_Drive) { Libvirt.Models.Concrete.Virtual_Machine machine = null; var vm = Code.ViewModelFactory.Domain_Drive_Down(Domain_Drive.Host, Domain_Drive.Parent, Domain_Drive.Letter, out machine); if (ModelState.IsValid) { var harddrive = new Libvirt.Models.Concrete.Disk(); harddrive.Device_Bus_Type = Domain_Drive.Device_Bus_Type; harddrive.Disk_Device_Type= Domain_Drive.Disk_Device_Type; harddrive.Device_Type = Libvirt.Models.Concrete.Disk.Disk_Types.volume;//use volumes because this makes management much easier harddrive.Driver_Cache_Type = Domain_Drive.Driver_Cache_Type; harddrive.Driver_Type = Domain_Drive.Driver_Type; harddrive.ReadOnly = Domain_Drive.ReadOnly; harddrive.Snapshot_Type = Domain_Drive.Snapshot_Type; harddrive.Letter = Domain_Drive.Letter; var source = new Libvirt.Models.Concrete.Device_Source_Volume(); source.pool = Domain_Drive.Pool; source.volume = Domain_Drive.Volume; source.Source_Startup_Policy = Domain_Drive.Source_Startup_Policy; harddrive.Source = source; machine.Drives.Disks.RemoveAll(a => a.Letter == Domain_Drive.Letter); machine.Drives.Disks.Add(harddrive); virDomainDefineXML(machine, GetHost(Domain_Drive.Host)); } vm.Domain_Drive = Domain_Drive; return PartialView(vm); }