GetXenStoreItemCached() 공개 메소드

public GetXenStoreItemCached ( string name ) : XenStoreItemCached
name string
리턴 XenStoreItemCached
예제 #1
0
            bool backupHandler(IntPtr bstrMem)
            {
                try
                {
                    string backup = Marshal.PtrToStringBSTR(bstrMem);
                    string vm     = wmisession.GetXenStoreItemCached("vm").value.Substring(4);
                    if (type == VssSnapshot.Type.VM)
                    {
                        string snapstr = wmisession.GetXenStoreItem("/vss/" + vm + "/snapuuid").value;
                        wmisession.GetXenStoreItem("control/snapshot/snapuuid").value = snapstr;
                        wmisession.GetXenStoreItem("control/snapshot/type").value     = "vm";
                    }
                    else if (type == VssSnapshot.Type.VOLUME)
                    {
                        string       rootkeyname = "/vss/" + vm + "/vdisnap";
                        XenStoreItem vdisnap     = wmisession.GetXenStoreItem(rootkeyname);
                        foreach (string entryKey in vdisnap.children)
                        {
                            XenStoreItem src  = wmisession.GetXenStoreItem(entryKey);
                            XenStoreItem dest = wmisession.GetXenStoreItem("control/snapshot/vdi/" + entryKey.Substring(rootkeyname.Length + 1));
                            src.value = dest.value;
                        }
                        string snaptype = wmisession.GetXenStoreItem("/vss/" + vm + "/snaptype").value;
                        wmisession.GetXenStoreItem("control/snapshot/type").value = snaptype;
                    }

                    wmisession.GetXenStoreItem("control/snapshot/snapid").Remove();

                    int    size      = backup.Length;
                    int    poscount  = 0;
                    int    pagecount = 0;
                    string substr    = "";
                    while (size > 0)
                    {
                        substr += string.Format("{0:x2}{1:x2}", ((int)backup[poscount]) & 0xff, (((int)backup[poscount]) >> 8) & 0xff);
                        size--;
                        poscount++;
                        if (((poscount % 255) == 0) || (size == 0))
                        {
                            wmisession.GetXenStoreItem("control/snapshot/snapid/" + pagecount.ToString()).value = substr;
                            substr = "";
                            pagecount++;
                        }
                    }
                }
                catch (Exception e)
                {
                    try {
                        wmisession.GetXenStoreItem("control/snapshot/snapid").Remove();
                        WmiBase.Singleton.DebugMsg("Backup failed: " + e.ToString());
                    }
                    catch {}
                    return(false);
                }
                return(true);
            }
예제 #2
0
 public MemoryInfo()
 {
     wmisession = WmiBase.Singleton.GetXenStoreSession("Memory Reporter");
     meminfoFree = wmisession.GetXenStoreItemCached("data/meminfo_free");
     meminfoTotal = wmisession.GetXenStoreItemCached("data/meminfo_total");
 }
예제 #3
0
 public MemoryInfo()
 {
     wmisession   = WmiBase.Singleton.GetXenStoreSession("Memory Reporter");
     meminfoFree  = wmisession.GetXenStoreItemCached("data/meminfo_free");
     meminfoTotal = wmisession.GetXenStoreItemCached("data/meminfo_total");
 }
 public XenAppSessionInfo()
 {
     wmisession = WmiBase.Singleton.GetXenStoreSession("XenAppSession Reporter");
     xenAppSession = wmisession.GetXenStoreItemCached("data/xenapp_session_count");
 }
예제 #5
0
                public StoredVolume Change(Win32Impl.Volume vol)
                {
                    WmiBase.Singleton.DebugMsg("changing stored volume id " + Id.ToString());
                    WmiBase.Singleton.DebugMsg("name : " + name.ToString());
                    WmiBase.Singleton.DebugMsg("size : " + size.ToString());
                    try
                    {
                        name.value = vol.Name;
                        size.value = vol.SizeBytes.ToString();
                        if ((ulong)Math.Abs((long)(vol.FreeBytes - freebytes)) > (vol.SizeBytes / 100))
                        {
                            freebytes  = vol.FreeBytes;
                            free.value = freebytes.ToString();
                        }
                        volumeName.value = vol.VolumeName;
                        filesystem.value = vol.FSName;
                    }
                    catch {
                        throw;
                    }
                    try
                    {
                        List <XenStoreItemCached> .Enumerator storecursor = mountPoints.GetEnumerator();
                        List <string> .Enumerator             newcursor   = vol.pathnames.GetEnumerator();
                        int i = 0;
                        while (true)
                        {
                            if (!storecursor.MoveNext())
                            {
                                while (newcursor.MoveNext())
                                {
                                    XenStoreItemCached mp = wmisession.GetXenStoreItemCached(path + "/mount_points/" + i.ToString());
                                    mp.value = newcursor.Current;

                                    mountPoints.Add(mp);
                                    i++;
                                }
                                break;
                            }
                            else if (!newcursor.MoveNext())
                            {
                                do
                                {
                                    storecursor.Current.Remove();
                                } while (storecursor.MoveNext());
                                break;
                            }
                            else
                            {
                                storecursor.Current.value = newcursor.Current;
                                i++;
                            }
                        }
                    }
                    catch
                    {
                        throw;
                    }
                    try
                    {
                        List <XenStoreItemCached> .Enumerator storecursor = extents.GetEnumerator();
                        List <string> .Enumerator             newcursor   = getExtentNames(vol.extents).GetEnumerator();
                        int i = 0;
                        while (true)
                        {
                            if (!storecursor.MoveNext())
                            {
                                while (newcursor.MoveNext())
                                {
                                    XenStoreItemCached ext = wmisession.GetXenStoreItemCached(path + "/extents/" + i.ToString());
                                    ext.value = newcursor.Current;
                                    mountPoints.Add(ext);
                                    i++;
                                }
                                break;
                            }
                            else if (!newcursor.MoveNext())
                            {
                                do
                                {
                                    storecursor.Current.Remove();
                                } while (storecursor.MoveNext());
                                break;
                            }
                            else
                            {
                                storecursor.Current.value = newcursor.Current;
                                i++;
                            }
                        }
                    }
                    catch
                    {
                        throw;
                    }
                    return(this);
                }
예제 #6
0
                public StoredVolume(Win32Impl.Volume vol, WmiSession wmisession, long nextid)
                {
                    try
                    {
                        Id = nextid;
                        this.wmisession = wmisession;
                        WmiBase.Singleton.DebugMsg("Stored volume: new " + vol.Name);
                        path = getVolumePath();
                        WmiBase.Singleton.DebugMsg("creating " + path + "/name");
                        name = wmisession.GetXenStoreItemCached(path + "/name");
                        WmiBase.Singleton.DebugMsg(" : " + name.ToString());
                        size       = wmisession.GetXenStoreItemCached(path + "/size");
                        free       = wmisession.GetXenStoreItemCached(path + "/free");
                        volumeName = wmisession.GetXenStoreItemCached(path + "/volume_name");

                        filesystem = wmisession.GetXenStoreItemCached(path + "/filesystem");
                    }
                    catch
                    {
                        throw;
                    }
                    try
                    {
                        name.value       = vol.Name;
                        size.value       = vol.SizeBytes.ToString();
                        freebytes        = vol.FreeBytes;
                        free.value       = freebytes.ToString();
                        volumeName.value = vol.VolumeName;
                        filesystem.value = vol.FSName;
                    }
                    catch
                    {
                        throw;
                    }
                    try
                    {
                        mountPoints = new List <XenStoreItemCached>();
                        int i = 0;
                        foreach (string mountpoint in vol.pathnames)
                        {
                            XenStoreItemCached mp = wmisession.GetXenStoreItemCached(path + "/mount_points/" + i.ToString());
                            mp.value = mountpoint;
                            mountPoints.Add(mp);
                            i++;
                        }
                    }
                    catch
                    {
                        throw;
                    }

                    try
                    {
                        int i = 0;
                        extents = new List <XenStoreItemCached>();
                        WmiBase.Singleton.DebugMsg("About to iterrate through extent names");
                        foreach (string disk in getExtentNames(vol.extents))
                        {
                            XenStoreItemCached ext = wmisession.GetXenStoreItemCached(path + "/extents/" + i.ToString());
                            ext.value = disk;
                            extents.Add(ext);
                        }
                    }
                    catch
                    {
                        throw;
                    }
                }
예제 #7
0
                public StoredVolume(Win32Impl.Volume vol, WmiSession wmisession, long nextid)
                {
                    try
                    {
                        Id = nextid;
                        this.wmisession = wmisession;
                        WmiBase.Singleton.DebugMsg("Stored volume: new " + vol.Name);
                        path = getVolumePath();
                        WmiBase.Singleton.DebugMsg("creating " + path + "/name");
                        name = wmisession.GetXenStoreItemCached(path + "/name");
                        WmiBase.Singleton.DebugMsg(" : " + name.ToString());
                        size = wmisession.GetXenStoreItemCached(path + "/size");
                        free = wmisession.GetXenStoreItemCached(path + "/free");
                        volumeName = wmisession.GetXenStoreItemCached(path + "/volume_name");

                        filesystem = wmisession.GetXenStoreItemCached(path + "/filesystem");
                    }
                    catch
                    {
                        throw;
                    }
                    try
                    {
                        name.value = vol.Name;
                        size.value = vol.SizeBytes.ToString();
                        freebytes = vol.FreeBytes;
                        free.value = freebytes.ToString();
                        volumeName.value = vol.VolumeName;
                        filesystem.value = vol.FSName;
                    }
                    catch
                    {
                        throw;
                    }
                    try
                    {

                        mountPoints = new List<XenStoreItemCached>();
                        int i = 0;
                        foreach (string mountpoint in vol.pathnames)
                        {
                            XenStoreItemCached mp = wmisession.GetXenStoreItemCached(path + "/mount_points/" + i.ToString());
                            mp.value = mountpoint;
                            mountPoints.Add(mp);
                            i++;
                        }
                    }
                    catch
                    {
                        throw;
                    }

                    try
                    {
                        int i = 0;
                        extents = new List<XenStoreItemCached>();
                        WmiBase.Singleton.DebugMsg("About to iterrate through extent names");
                        foreach (string disk in getExtentNames(vol.extents))
                        {
                            XenStoreItemCached ext = wmisession.GetXenStoreItemCached(path + "/extents/" + i.ToString());
                            ext.value = disk;
                            extents.Add(ext);
                        }
                    }
                    catch
                    {
                        throw;
                    }
                }
예제 #8
0
 public XenAppSessionInfo()
 {
     wmisession    = WmiBase.Singleton.GetXenStoreSession("XenAppSession Reporter");
     xenAppSession = wmisession.GetXenStoreItemCached("data/xenapp_session_count");
 }