public object hostcollect(Session session) { ArrayList vmc = new ArrayList(); int ne = 1; string log; string entry; string mydocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); try { //Session session = new Session(server, Convert.ToInt32(port)); //session.login_with_password(username, password); List <XenRef <Host> > hostRefs = Host.get_all(session); List <XenRef <Host_cpu> > hcpuRefs = Host_cpu.get_all(session); foreach (XenRef <Host> hostRef in hostRefs) { Host host = Host.get_record(session, hostRef); XenRef <Host_metrics> gmsref = Host.get_metrics(session, host.opaque_ref); Host_metrics gms = Host_metrics.get_record(session, gmsref); vmc.Add("Xenserver Name:"); try { vmc.Add(Convert.ToString(host.name_label)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("Hostname:"); try { vmc.Add(Convert.ToString(host.hostname)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("Is Host alive:"); try { vmc.Add(Convert.ToString(gms.live)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("IP address:"); try { vmc.Add("Not displayed in demo version"); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("Total Host Memory:"); try { vmc.Add("Not displayed in demo version"); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("Host Memory Free:"); try { vmc.Add("Not displayed in demo version"); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("Number CPU cores:"); try { vmc.Add("Not displayed in demo version"); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } try { foreach (XenRef <Host_cpu> hcpuRef in hcpuRefs) { Host_cpu hcpu = Host_cpu.get_record(session, hcpuRef); if (hcpu.host.ServerOpaqueRef == hostRef) { vmc.Add("CPU Core Number:"); try { vmc.Add(Convert.ToString(hcpu.number)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("CPU Core Vendor:"); try { vmc.Add(Convert.ToString(hcpu.vendor)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("CPU Core Model Name:"); try { vmc.Add(Convert.ToString(hcpu.modelname)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("CPU Core Speed:"); try { vmc.Add("Not displayed in demo version"); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("CPU Core Stepping Revesion:"); try { vmc.Add(hcpu.stepping); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("CPU Core Family:"); try { vmc.Add(Convert.ToString(hcpu.family)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } } } } catch { } vmc.Add("ISCSI IQN Name:"); try { vmc.Add("Not displayed in demo version"); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("Number of Allowed Operations:"); try { vmc.Add(Convert.ToString(host.allowed_operations.Count)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } try { for (int i = 0; i <= host.allowed_operations.Count - 1;) { vmc.Add("Allowed Operation:"); try { vmc.Add(Convert.ToString(host.allowed_operations[i])); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } i = i + 1; } } catch { } vmc.Add("Xenserver version:"); try { vmc.Add(Convert.ToString(host.software_version["product_version"])); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("Build Number:"); try { vmc.Add(Convert.ToString(host.software_version["build_number"])); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("Kernel version:"); try { vmc.Add(Convert.ToString(host.software_version["linux"])); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("API version:"); try { vmc.Add(Convert.ToString(host.API_version_vendor)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("Number of Physical Block Devices (PBD):"); try { vmc.Add(Convert.ToString(host.PBDs.Count)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } try { for (int i = 0; i <= host.PBDs.Count - 1;) { if (host.PBDs[i].ServerOpaqueRef == "OpaqueRef:NULL") { } else { PBD pbd = PBD.get_record(session, host.PBDs[i].ServerOpaqueRef); Dictionary <String, String> dict = null; dict = pbd.device_config; String pdninfo = null; foreach (String keyStr in dict.Keys) { if (keyStr == "location" || keyStr == "device") { pdninfo = (String)(dict[keyStr]); vmc.Add("Physical Block Devices:"); try { vmc.Add(Convert.ToString(pdninfo)); } catch { log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } } } i = i + 1; } } } catch { } vmc.Add("Number of Physical NICs (PIF):"); try { vmc.Add(Convert.ToString(host.PIFs.Count)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } try { for (int i = 0; i <= host.PIFs.Count - 1;) { if (host.PIFs[i].ServerOpaqueRef == "OpaqueRef:NULL") { } else { PIF vbd = PIF.get_record(session, Convert.ToString(host.PIFs[i].ServerOpaqueRef)); PIF_metrics pif = PIF_metrics.get_record(session, vbd.metrics); vmc.Add("PIF IP Address:"); try { vmc.Add("Not displayed in demo version"); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF Netmask:"); try { vmc.Add(Convert.ToString(vbd.netmask)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF DHCP/Static:"); try { vmc.Add(Convert.ToString(vbd.ip_configuration_mode)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF MAC Address:"); try { vmc.Add("Not displayed in demo version"); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF DNS servers:"); try { vmc.Add("Not displayed in demo version"); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF Gateway:"); try { vmc.Add(Convert.ToString(vbd.gateway)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } if (vbd.other_config.Count >= 1) { vmc.Add("PIF Domain:"); try { vmc.Add(Convert.ToString(vbd.other_config["domain"])); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } } vmc.Add("PIF VLAN ID:"); try { vmc.Add(Convert.ToString(vbd.VLAN)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF MTU:"); try { vmc.Add(Convert.ToString(vbd.MTU)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF Device:"); try { vmc.Add(Convert.ToString(vbd.device)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("Is PIF attached:"); try { vmc.Add(Convert.ToString(vbd.currently_attached)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF Device Name:"); try { vmc.Add(Convert.ToString(pif.device_name)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF Device ID:"); try { vmc.Add(Convert.ToString(pif.device_id)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF Vendor Name:"); try { vmc.Add(Convert.ToString(pif.vendor_name)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF Vendor ID:"); try { vmc.Add(Convert.ToString(pif.vendor_id)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF Speed:"); if (Convert.ToString(pif.speed) == "65535") { vmc.Add("PIF not connected"); } else { try { vmc.Add(Convert.ToString(pif.speed)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } } vmc.Add("PIF is set to duplex:"); try { vmc.Add(Convert.ToString(pif.duplex)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF PCI Bus:"); try { vmc.Add(Convert.ToString(pif.pci_bus_path)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++; } vmc.Add("PIF Carrier:"); try { vmc.Add(Convert.ToString(pif.carrier)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Error " + ne; writelog.entry(log, entry); ne++;; } i = i + 1; } } } catch { } ne = 1; } log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Finished "; writelog.entry(log, entry); } catch { log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " Host Collection Failed"; writelog.entry(log, entry); } if ((vmc.Count & 2) == 0) { } else { vmc.Add(" "); } return(vmc); }
public List <SRVo> getSRByTargetHost() { HostOper hostOper = new HostOper(); Host targetHost = hostOper.getTargetHost(); log.InfoFormat("=======开始获取存储池======"); List <SRVo> srList = new List <SRVo>(); List <XenRef <SR> > srRefs = SR.get_all(ConnectManager.session); foreach (XenRef <SR> srRef in srRefs) { SR sr = SR.get_record(ConnectManager.session, srRef); //五种类型 nfs ext lvm lvmhba lvmoiscsi if ("nfs".Equals(sr.type) || "ext".Equals(sr.type) || (!String.IsNullOrEmpty(sr.type) && sr.type.IndexOf("lvm") >= 0)) { if ("lvm".Equals(sr.type) || "ext".Equals(sr.type)) { bool isLocalHost = false; List <XenRef <PBD> > pbdRefs = sr.PBDs; if (pbdRefs != null && pbdRefs.Count > 0) { foreach (XenRef <PBD> pbdRef in pbdRefs) { PBD pbd = PBD.get_record(ConnectManager.session, pbdRef); if (pbd.currently_attached) { Host host = Host.get_record(ConnectManager.session, pbd.host.opaque_ref); if (targetHost.uuid.Equals(host.uuid)) { isLocalHost = true; break; } } } } if (isLocalHost) { string info = ""; if ((sr.physical_size - sr.physical_utilisation) < (long)ConnectManager.DiskCapacity) { info = string.Format("本地存储池[{0}]可用容量不足", sr.name_label); } srList.Add(AddSRData(sr, info)); } else { log.InfoFormat("本地存储池未连接主机. sr=[uuid: {0}, Name: {1}, type: {2}, lave: {3:0.00}GB / {4:0.00}GB]", sr.uuid, sr.name_label, sr.type, (sr.physical_size - sr.physical_utilisation) / Constants.UINT, sr.physical_size / Constants.UINT); } } else { string info = ""; if ((sr.physical_size - sr.physical_utilisation) < (long)ConnectManager.DiskCapacity) { info = string.Format("共享存储池[{0}]可用容量不足", sr.name_label); log.InfoFormat("{0}. sr=[uuid: {1}, Name: {2}, type: {3}, lave: {4:0.00}GB / {5:0.00}GB]", info, sr.uuid, sr.name_label, sr.type, (sr.physical_size - sr.physical_utilisation) / Constants.UINT, sr.physical_size / Constants.UINT); } List <XenRef <PBD> > pbdRefs = sr.PBDs; if (pbdRefs != null && pbdRefs.Count > 0) { bool isCurrentlyAttached = true; foreach (XenRef <PBD> pbdRef in pbdRefs) { PBD pbd = PBD.get_record(ConnectManager.session, pbdRef); if (!pbd.currently_attached) { isCurrentlyAttached = false; if (!string.IsNullOrEmpty(info)) { info += ",连接主机PBD异常"; } else { info = string.Format("共享存储池[{0}]连接主机PBD异常", sr.name_label); } log.InfoFormat("{0}. pbd=[uuid:{1}], sr=[uuid: {2}, Name: {3}, type: {4}, lave: {5:0.00}GB / {6:0.00}GB]", info, pbd.uuid, sr.uuid, sr.name_label, sr.type, (sr.physical_size - sr.physical_utilisation) / Constants.UINT, sr.physical_size / Constants.UINT); } } if (isCurrentlyAttached) { //srList.Add(AddSRData(sr)); //WriteLog(sr); } } else { if (!string.IsNullOrEmpty(info)) { info += ",未连接主机"; } else { info = string.Format("共享存储池[{0}]未连接主机", sr.name_label); } log.InfoFormat("{0}. sr=[uuid: {1}, Name: {2}, type: {3}, lave: {4:0.00}GB / {5:0.00}GB]", info, sr.uuid, sr.name_label, sr.type, (sr.physical_size - sr.physical_utilisation) / Constants.UINT, sr.physical_size / Constants.UINT); } srList.Add(AddSRData(sr, info)); } } else { log.InfoFormat("存储池类型不是五种类型nfs/ext/lvm/lvmhba/lvmoiscsi中的一种. sr=[uuid: {0}, Name: {1}, type: {2}, lave: {3:0.00}GB / {4:0.00}GB]", sr.uuid, sr.name_label, sr.type, (sr.physical_size - sr.physical_utilisation) / Constants.UINT, sr.physical_size / Constants.UINT); } //if ((sr.physical_size - sr.physical_utilisation) >= (long)ConnectManager.DiskCapacity) { //} //else { // log.InfoFormat("存储池可用大小小于需要的存储容量. sr=[uuid: {0}, Name: {1}, type: {2}, lave: {3:0.00}GB / {4:0.00}GB]", sr.uuid, sr.name_label, sr.type, // (sr.physical_size - sr.physical_utilisation) / Constants.UINT, sr.physical_size / Constants.UINT); //} } log.InfoFormat("=======获取存储池结束======"); return(srList); }
public List <WinAPI.SR> GetSRList(ServerInfo hostInfo) { List <WinAPI.SR> list = new List <WinAPI.SR>(); try { Session session = OpenSessionAndLogin(hostInfo); Pool pool = null; string masterHostRef = null; List <XenRef <Pool> > poolList = Pool.get_all(session); if (list.Count > 0) { pool = Pool.get_record(session, poolList[0]); } if (pool == null || pool.master == null) { masterHostRef = session.get_this_host(); } else { masterHostRef = (string)pool.master; } List <XenRef <SR> > srRefs = SR.get_all(session); foreach (XenRef <SR> srRef in srRefs) { SR sr = SR.get_record(session, (string)srRef); bool allCurrentlyAttached = true; bool isOtherLocalSr = false; List <XenRef <PBD> > pbdRefs = SR.get_PBDs(session, (string)srRef); foreach (XenRef <PBD> pbdRef in pbdRefs) { PBD pbd = PBD.get_record(session, (string)pbdRef); bool currentlyAttached = pbd.currently_attached; if (!currentlyAttached) { allCurrentlyAttached = false; break; } string hostRef = (string)pbd.host; if (!sr.shared && !hostRef.Equals(masterHostRef)) { isOtherLocalSr = true; //非master主机的本地存储池 break; } } if (!allCurrentlyAttached) { continue; } if (!isOtherLocalSr && this.IsValidSR(sr) && sr.physical_size > 0L && sr.physical_size - sr.physical_utilisation > 0L) { list.Add(sr); } } //List<XenRef<Host>> list2 = Host.get_all(session); //foreach (XenRef<PBD> ref2 in Host.get_record(session, list2[0]).PBDs) //{ // XenRef<WinAPI.SR> ref3 = PBD.get_SR(session, (string) ref2); // WinAPI.SR sr = WinAPI.SR.get_record(session, (string) ref3); // if ((this.IsValidSR(sr) && ((list2.Count < 2) || this.IsSharedSR(sr))) && (sr.physical_size > 0L)) // { // list.Add(sr); // } //} } catch (Exception exception) { LOG.Error("Unable to get service SRs from WinServer! Exception caught...", exception); } return(list); }
public object srcollect(Session session) { ArrayList vmc = new ArrayList(); string mydocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); string log; string entry; int sre = 1; try { List <XenRef <Host> > hostRefs = Host.get_all(session); foreach (XenRef <Host> hostRef in hostRefs) { Host host = Host.get_record(session, hostRef); vmc.Add("Xenserver Name:"); try { vmc.Add(Convert.ToString(host.name_label)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " SR Collection Error " + sre; writelog.entry(log, entry); sre++; } for (int i = 0; i <= host.PBDs.Count - 1;) { if (host.PBDs[i].ServerOpaqueRef == "OpaqueRef:NULL") { } else { PBD pbd = PBD.get_record(session, host.PBDs[i].ServerOpaqueRef); List <XenRef <SR> > srRefs = SR.get_all(session); foreach (XenRef <SR> srRef in srRefs) { SR sr = SR.get_record(session, srRef); for (int pi = 0; pi <= sr.PBDs.Count - 1;) { if (pbd.opaque_ref == sr.PBDs[pi].ServerOpaqueRef) { vmc.Add("Storage Repository Name:"); try { vmc.Add(Convert.ToString(sr.name_label)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " SR Collection Error " + sre; writelog.entry(log, entry); sre++; } vmc.Add("Storage Repository Description:"); try { vmc.Add(Convert.ToString(sr.name_description)); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " SR Collection Error " + sre; writelog.entry(log, entry); sre++; } vmc.Add("Storage Repository Usage:"); try { double srutil = sr.physical_utilisation / 1e9; vmc.Add("Not displayed in demo version"); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " SR Collection Error " + sre; writelog.entry(log, entry); sre++; } vmc.Add("Storage Repository Size:"); try { double srsize = sr.physical_size / 1e9; vmc.Add("Not displayed in demo version"); } catch { vmc.Add("Data not available"); log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " SR Collection Error " + sre; writelog.entry(log, entry); sre++; } } pi++; } } i++; } } sre = 1; } log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " SR Collection Finished"; writelog.entry(log, entry); } catch { log = mydocs + "\\Halfmode\\HalfmodeConnection.log"; entry = DateTime.Now.ToString("HH:mm:ss") + " SR Collection Failed"; writelog.entry(log, entry); } if ((vmc.Count & 2) == 0) { } else { vmc.Add(" "); } return(vmc); }