private static List<Libvirt_WebManager.ViewModels.TreeViewModel> Populate_Domains(nodehelper nodeh) { var ret = new List<Libvirt_WebManager.ViewModels.TreeViewModel>(); using (var d = nodeh.host.virConnectListAllDomains(Libvirt.virConnectListAllDomainsFlags.VIR_DEFAULT)) { try { foreach (var domain in d) { var dname = domain.virDomainGetName(); Libvirt.virDomainState state = Libvirt.virDomainState.VIR_DOMAIN_NOSTATE; int reason = 0; domain.virDomainGetState(out state, out reason); ret.Add(new TreeViewModel { Status = (Libvirt_WebManager.ViewModels.TreeViewModel.Node_Status_Types)Enum.Parse(typeof(Libvirt_WebManager.ViewModels.TreeViewModel.Node_Status_Types), state.ToString()), IsDirectory = false, Node_Type = TreeViewModel.Node_Types.Domain, Name = dname, Path = nodeh.currentpath + dname + "/", Host = nodeh.hostname }); domain.Dispose(); } } catch (Exception e) { Debug.WriteLine(e.Message); } } return ret; }
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; }
private static List<Libvirt_WebManager.ViewModels.TreeViewModel> Populate_StorageVolumes(nodehelper nodeh, string poolname) { var ret = new List<Libvirt_WebManager.ViewModels.TreeViewModel>(); Libvirt.CS_Objects.Storage_Volume[] p; try { using (var pool = nodeh.host.virStoragePoolLookupByName(poolname)) { if (pool.virStoragePoolListAllVolumes(out p) > -1) { foreach (var volume in p) { var dname = volume.virStorageVolGetName(); ret.Add(new TreeViewModel { IsDirectory = false, Node_Type = TreeViewModel.Node_Types.Storage_Volume, Name = dname, Path = nodeh.currentpath + dname + "/", Host = nodeh.hostname }); volume.Dispose(); } } } } catch (Exception e) { Debug.WriteLine(e.Message); } return ret; }
private static List<Libvirt_WebManager.ViewModels.TreeViewModel> Populate_StoragePools(nodehelper nodeh) { var ret = new List<Libvirt_WebManager.ViewModels.TreeViewModel>(); Libvirt.CS_Objects.Storage_Pool[] p; try { //if (nodeh.host.virConnectListAllStoragePools(out p, Libvirt.virConnectListAllStoragePoolsFlags@VIR_CONNECT_LIST_STORAGE_POOLS_DEFAULT) > -1) //{ // foreach (var pool in p) // { // var dname = pool.virStoragePoolGetName(); // ret.Add(new TreeViewModel { IsDirectory = true, Node_Type = TreeViewModel.Node_Types.Storage_Pool, Name = dname, Path = nodeh.currentpath + dname + "/", Host = nodeh.hostname }); // pool.Dispose(); // } //} } catch (Exception e) { Debug.WriteLine(e.Message); } return ret; }