コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: ConversionClient.cs プロジェクト: hl10502/WCM
        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);
        }
コード例 #4
0
        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);
        }