public static void Upload(this Libvirt.CS_Objects.Storage_Volume s, Libvirt.CS_Objects.Host host, System.IO.Stream stream)
        {
            using (var st = host.virStreamNew(Libvirt.virStreamFlags.VIR_STREAM_NONBLOCK))
            {
                var stupload = s.virStorageVolUpload(st, 0, (ulong)stream.Length);
                long chunksize = 65000;
                var dat = new byte[chunksize];
                var totalbytes = stream.Length;
                while (totalbytes > 0)
                {
                    var bytestoread = chunksize;
                    if (totalbytes < bytestoread)
                    {
                        bytestoread = totalbytes;
                    }
                    var bread = (uint)stream.Read(dat, 0, (int)bytestoread);
                    var bytessent = st.virStreamSend(dat, bread);
                    if (bytessent < 0)
                    {
                        st.virStreamAbort();
                        break;//get out!!
                    }
                    totalbytes -= (long)bread;

                }
                st.virStreamFinish();
            }
        }
Ejemplo n.º 2
0
        public static List<Libvirt_WebManager.ViewModels.TreeViewModel> Build(List<string> path_parts, Libvirt.CS_Objects.Host host)
        {
            var ret = new List<Libvirt_WebManager.ViewModels.TreeViewModel>();
            var nodeh = new nodehelper { currentpath = "", host = host, hostname = path_parts[0].ToLower() };

            Libvirt_WebManager.ViewModels.TreeViewModel.Node_Types node_type = TreeViewModel.Node_Types.Host;
            if (path_parts.Count >= 2)
            {
                if (!Enum.TryParse(path_parts[1], out node_type)) return ret;
                nodeh.currentpath = "/" + nodeh.hostname + "/" + node_type.ToString() + "/";
            }

            if (path_parts.Count == 3)
            {
                nodeh.currentpath += path_parts[2] + "/";
                if (node_type == TreeViewModel.Node_Types.Domains)
                {

                }
                else if (node_type == TreeViewModel.Node_Types.Interfaces)
                {

                }
                else if (node_type == TreeViewModel.Node_Types.Storage_Pools)
                {
                    return Populate_StorageVolumes(nodeh, path_parts[2]);
                }
            }
            else if (path_parts.Count == 2)
            {
                if (node_type == TreeViewModel.Node_Types.Domains)
                {
                    return Populate_Domains(nodeh);
                }
                else if (node_type == TreeViewModel.Node_Types.Interfaces)
                {

                }
                else if (node_type == TreeViewModel.Node_Types.Storage_Pools)
                {
                    return Populate_StoragePools(nodeh);
                }
            }
            else if (path_parts.Count == 1)
            {
                nodeh.currentpath = "/" + nodeh.hostname + "/";
                ret.Add(new TreeViewModel { IsDirectory = true, Node_Type = TreeViewModel.Node_Types.Domains, Name = "Domains", Path = nodeh.currentpath + "Domains/", Host = nodeh.hostname });
                ret.Add(new TreeViewModel { IsDirectory = true, Node_Type = TreeViewModel.Node_Types.Interfaces, Name = "Interfaces", Path = nodeh.currentpath + "Interfaces/", Host = nodeh.hostname });
                ret.Add(new TreeViewModel { IsDirectory = true, Node_Type = TreeViewModel.Node_Types.Storage_Pools, Name = "Storage_Pools", Path = nodeh.currentpath + "Storage_Pools/", Host = nodeh.hostname });
            }
            else
            {
                ret.Add(new TreeViewModel { IsDirectory = true, Node_Type = TreeViewModel.Node_Types.Host, Name = nodeh.hostname, Path = nodeh.currentpath + "/" + nodeh.hostname + "/", Host = nodeh.hostname });
            }
            return ret;
        }
 public static Models.Domain_Details_Down Build_Domain_Details_Down(string host, string domain, out Libvirt.Models.Concrete.Virtual_Machine machine)
 {
     machine = GetMachine(host, domain, null);
     var vm = new Models.Domain_Details_Down();
     vm.type = machine.type;
     vm.Bios = machine.BootLoader;
     vm.MetaData = Utilities.AutoMapper.Mapper<Models.General_Metadata_VM>.Map(machine.Metadata);
     vm.MetaData.Host = host;
     vm.MetaData.Parent = domain;
     return vm;
 }
 public static Models.Domain_CPU_Down Build_Domain_CPU_Down(string host, string domain, out Libvirt.Models.Concrete.Virtual_Machine machine)
 {
     machine = GetMachine(host, domain, null);
     Libvirt._virNodeInfo info;
     Service.VM_Manager.Instance.virConnectOpen(host).virNodeGetInfo(out info);
     var vm = new Models.Domain_CPU_Down();
     vm.NodeCpuInfo = info;
     vm.CpuInfo = Utilities.AutoMapper.Mapper<Models.Domain_CPU_Down_VM>.Map(machine.CPU);
     vm.CpuInfo.Host = host;
     vm.CpuInfo.Parent = domain;
     return vm;
 }
        public static Models.Domain_Graphics_Down Build_Domain_Graphics_Down(string host, string domain, out Libvirt.Models.Concrete.Virtual_Machine machine)
        {
            machine = GetMachine(host, domain, null);
            var vm = new Models.Domain_Graphics_Down();
            vm.Domain_Graphics = new Models.Domain_Graphics_Down_VM();
            vm.Domain_Graphics.Graphic_Type = machine.graphics.Graphic_Type;
            vm.Domain_Graphics.Listen_Address_Type = Models.Listen_Address_Types.LocalHost;
            if (!string.IsNullOrWhiteSpace(machine.graphics.listen))
            {
                vm.Domain_Graphics.Listen_Address_Type = (machine.graphics.listen == "0.0.0.0" ? Models.Listen_Address_Types.All_Interfaces : Models.Listen_Address_Types.LocalHost);
            }
            vm.Domain_Graphics.passwd = machine.graphics.passwd;
            vm.Domain_Graphics.passwdValidTo = machine.graphics.passwdValidTo;
            vm.Domain_Graphics.WebSocket = machine.graphics.websocket.HasValue;

            vm.Domain_Graphics.Host = host;
            vm.Domain_Graphics.Parent = domain;
            return vm;
        }
        public static Models.Domain_Bios_Down Build_Domain_Bios_Down(string host, string domain, out Libvirt.Models.Concrete.Virtual_Machine machine)
        {
            machine = GetMachine(host, domain, null);
            var h = Service.VM_Manager.Instance.virConnectOpen(host);

            using (var d = h.virDomainLookupByName(domain))
            {

                var vm = new Models.Domain_Bios_Down();
                vm.BiosInfo = new Models.Domain_Bios_Down_VM();
                vm.BiosInfo.BootOrder = machine.BootLoader.BootOrder.Select(a => new Models.BootOrder_VM { BootType = a, Enabled = true }).ToList();
                vm.BiosInfo.ShowBootMenu = machine.BootLoader.ShowBootMenu;
                var autostart = 0;
                d.virDomainGetAutostart(ref autostart);
                vm.BiosInfo.StartGuestAutomatically = autostart == 1;
                vm.BiosInfo.Host = host;
                vm.BiosInfo.Parent = domain;

                return vm;
            }
        }
 private static Libvirt.Models.Concrete.Virtual_Machine GetMachine(string host, string domain, Libvirt.Models.Concrete.Virtual_Machine machine = null)
 {
     if (machine == null)
     {
         var h = Service.VM_Manager.Instance.virConnectOpen(host);
         using (var d = h.virDomainLookupByName(domain))
         {
             machine = d.virDomainGetXMLDesc(Libvirt.virDomainXMLFlags.VIR_DOMAIN_XML_INACTIVE | Libvirt.virDomainXMLFlags.VIR_DOMAIN_XML_SECURE);
         }
     }
     return machine;
 }
        public static Models.Domain_Drive_Down Domain_Drive_Down(string host, string domain, char letter, out Libvirt.Models.Concrete.Virtual_Machine machine)
        {
            machine = GetMachine(host, domain, null);
            var h = Service.VM_Manager.Instance.virConnectOpen(host);

            using (var d = h.virDomainLookupByName(domain))
            {
                var vm = new Models.Domain_Drive_Down();
                vm.Domain_Drive = new Models.Domain_Drive_Down_VM();
                vm.Domain_Drive = Utilities.AutoMapper.Mapper<Models.Domain_Drive_Down_VM>.Map(machine.Drives.Disks.FirstOrDefault(a => a.Letter == letter));
                vm.Disk = machine.Drives.Disks.FirstOrDefault(a => a.Letter == letter);
                var volthingy = vm.Disk.Source as Libvirt.Models.Concrete.Device_Source_Volume;
                if (volthingy != null)
                {
                    vm.Domain_Drive.Pool = volthingy.pool;
                    vm.Domain_Drive.Volume = volthingy.volume;
                }
                vm.Domain_Drive.Source_Startup_Policy = vm.Disk.Source.Source_Startup_Policy;
                vm.Domain_Drive.Host = host;
                vm.Domain_Drive.Parent = domain;

                return vm;
            }
        }
Ejemplo n.º 9
0
 public Stream(Libvirt.virStreamPtr ptr)
 {
     _StreamPtr = ptr;
 }
Ejemplo n.º 10
0
 public Domain virDomainCreateXMLWithFiles(Libvirt.Models.Concrete.Virtual_Machine machine_def, int[] files, virDomainCreateFlags flags)
 {
     return new Domain(API.virDomainCreateXMLWithFiles(_ConnectPtr, machine_def.To_XML(), Convert.ToUInt32(files.Length), files, flags));
 }
Ejemplo n.º 11
0
 public Host(Libvirt.virConnectPtr ptr)
 {
     _ConnectPtr = ptr;
 }
Ejemplo n.º 12
0
 public Domain virDomainDefineXMLFlags(Libvirt.Models.Concrete.Virtual_Machine machine_def, virDomainDefineFlags flags)
 {
     return new Domain(API.virDomainDefineXMLFlags(_ConnectPtr, machine_def.To_XML(), flags));
 }
Ejemplo n.º 13
0
 public IService(Libvirt.Models.Interface.IValdiator v)
 {
     _Validator = v;
 }
 public Network_Service(Libvirt.Models.Interface.IValdiator v)
     : base(v)
 {
 }
 private void virDomainDefineXML(Libvirt.Models.Concrete.Virtual_Machine machine, Libvirt.CS_Objects.Host h)
 {
     if (ModelState.IsValid)
     {
         using (var newd = h.virDomainDefineXML(machine))
         {
             Debug.WriteLine("virDomainDefineXML Called");
         }
     }
 }
 private void BuildBootOrder(Models.Domain_Bios_Down_VM BiosInfo, Libvirt.Models.Concrete.Virtual_Machine machine)
 {
     BiosInfo.BootOrder.Clear();
     if (machine.Drives.Disks.Any(a => a.Disk_Device_Type == Libvirt.Models.Concrete.Disk.Disk_Device_Types.cdrom))
     {
         BiosInfo.BootOrder.Add(new Models.BootOrder_VM
         {
             Enabled = machine.BootLoader.BootOrder.Any(b => b == Libvirt.Models.Concrete.BIOS_Bootloader.Boot_Types.cdrom),
             BootType = Libvirt.Models.Concrete.BIOS_Bootloader.Boot_Types.cdrom
         });
     }
     if (machine.Drives.Disks.Any(a => a.Disk_Device_Type == Libvirt.Models.Concrete.Disk.Disk_Device_Types.disk))
     {
         BiosInfo.BootOrder.Add(new Models.BootOrder_VM
         {
             Enabled = machine.BootLoader.BootOrder.Any(b => b == Libvirt.Models.Concrete.BIOS_Bootloader.Boot_Types.hd),
             BootType = Libvirt.Models.Concrete.BIOS_Bootloader.Boot_Types.hd
         });
     }
     BiosInfo.BootOrder.Add(new Models.BootOrder_VM
     {
         Enabled = machine.BootLoader.BootOrder.Any(b => b == Libvirt.Models.Concrete.BIOS_Bootloader.Boot_Types.network),
         BootType = Libvirt.Models.Concrete.BIOS_Bootloader.Boot_Types.network
     });
 }
Ejemplo n.º 17
0
 public Storage_Pool virStoragePoolDefineXML(Libvirt.Models.Concrete.Storage_Pool pool_def)
 {
     return new Storage_Pool(API.virStoragePoolDefineXML(_ConnectPtr, pool_def.To_XML()));
 }
Ejemplo n.º 18
0
 public Network virNetworkDefineXML(Libvirt.Models.Concrete.Network xmlDesc)
 {
     return new Network(API.virNetworkDefineXML(_ConnectPtr, xmlDesc.To_XML()));
 }
Ejemplo n.º 19
0
 public int virDomainAttachDevice(Libvirt.Models.Interface.IXML device)
 {
     return API.virDomainAttachDevice(_DomainPtr, device.To_XML());
 }
Ejemplo n.º 20
0
 public Storage_Pool(Libvirt.virStoragePoolPtr ptr)
 {
     _Storage_PoolPtr = ptr;
 }
Ejemplo n.º 21
0
 public Domain virDomainDefineXML(Libvirt.Models.Concrete.Virtual_Machine machine_def)
 {
     return new Domain(API.virDomainDefineXML(_ConnectPtr, machine_def.To_XML()));
 }
        public static Models.Domain_Network_Down Build_Domain_Network_Down(string host, string domain, out Libvirt.Models.Concrete.Virtual_Machine machine)
        {
            machine = GetMachine(host, domain, null);
            var h = Service.VM_Manager.Instance.virConnectOpen(host);

            var vm = new Models.Domain_Network_Down();
            vm.Network = Utilities.AutoMapper.Mapper<Models.Domain_Network_Down_VM>.Map(machine.Iface);
            using (var ns = h.virConnectListAllNetworks(Libvirt.virConnectListAllNetworksFlags.VIR_DEFAULT))
            {
                vm.Networks = ns.Select(a => a.virNetworkGetXMLDesc(Libvirt.virNetworkXMLFlags.VIR_DEFAULT)).ToList();
            }
            return vm;
        }
 public Domain_Service(Libvirt.Models.Interface.IValdiator v)
     : base(v)
 {
 }
Ejemplo n.º 24
0
 public Domain(Libvirt.virDomainPtr ptr)
 {
     _DomainPtr = ptr;
 }
 public Storage_Volume(Libvirt.virStorageVolPtr ptr)
 {
     _Storage_VolumePtr = ptr;
 }
Ejemplo n.º 26
0
 public int virDomainAttachDeviceFlags(Libvirt.Models.Interface.IXML device, virDomainDeviceModifyFlags flags)
 {
     return API.virDomainAttachDeviceFlags(_DomainPtr, device.To_XML(), flags);
 }
Ejemplo n.º 27
0
        void virErrorFunc(IntPtr userData, Libvirt.virErrorPtr error)
        {
            var msg = Libvirt.API.MarshalErrorPtr(error);
            var errmsg = new Libvirt_WebManager.Models.Message.ErrorMessage
            {
                Additional_Info_1 = msg.str1,
                Additional_Info_2 = msg.str2,
                Additional_Info_3 = msg.str3,
                Body = msg.message,
                Code = msg.code,
                Message_Type = Models.Message_Types.danger,
                Time = DateTime.Now,
                Title = "Libvirt Error"
            };

            Message_Manager.Send(errmsg);
        }