示例#1
0
 public static IEnumerable <INIC> GetRelated(IComputerSystem host, IComputerSystem vm, IVirtualSystemSettingData vssd, ILogger logger)
 {
     foreach (ICommonEthernetPortSettingData adapterSettingData in CommonEthernetPortSettingData.GetRelated(vssd))
     {
         yield return((INIC) new NIC(host, vm, adapterSettingData, logger));
     }
 }
示例#2
0
 public Host(IComputerSystem host, ILogger logger)
 {
     Invariant.ArgumentNotNull((object)host, "host IComputerSystem object");
     Invariant.ArgumentNotNull((object)((IWMICommon)host).Object, "Host ComputerSystem instance");
     this._Host   = host;
     this._Logger = logger;
 }
示例#3
0
 protected NIC(IComputerSystem host, IComputerSystem vm, ICommonEthernetPortSettingData adapterSettingData, ILogger logger)
 {
     this._Host = host;
     this._Vm   = vm;
     this._AdapterSettingData = adapterSettingData;
     this._Logger             = logger;
 }
        public static IEmulatedEthernetPortSettingData GetDefaultLegacyAdapter(IComputerSystem host)
        {
            IResourcePool resource = ResourcePool.Query(host, "ResourceSubType = 'Microsoft:Hyper-V:Emulated Ethernet Port' and Primordial = True").FirstOrDefault <IResourcePool>();

            Invariant.ArgumentNotNull((object)resource, "Legacy Adapter not found");
            using (resource)
                return(EmulatedEthernetPortSettingData.GetDefaultFromResourcePool(resource));
        }
示例#5
0
 public void DestroySystem(IComputerSystem target)
 {
     using (ManagementBaseObject methodParameters = this._Instance.GetMethodParameters(nameof(DestroySystem)))
     {
         methodParameters["AffectedSystem"] = (object)((IWMICommon)target).Object;
         this._Instance.InvokeAndWait(nameof(DestroySystem), methodParameters).TryDispose();
     }
 }
        public static IResourceAllocationSettingData GetDefaultEmulatedIDEController(IComputerSystem host)
        {
            IResourcePool resource = ResourcePool.Query(host, "ResourceSubType = 'Microsoft:Hyper-V:Emulated IDE Controller' and Primordial = True").FirstOrDefault <IResourcePool>();

            Invariant.ArgumentNotNull((object)resource, "Emulated IDE Controller");
            using (resource)
                return(ResourceAllocationSettingData.GetDefaultFromResourcePool(resource));
        }
        public static IResourceAllocationSettingData GetDefaultSyntheticDVDDrive(IComputerSystem host)
        {
            IResourcePool resource = ResourcePool.Query(host, "ResourceSubType = 'Microsoft:Hyper-V:Synthetic DVD Drive' and Primordial = True").FirstOrDefault <IResourcePool>();

            Invariant.ArgumentNotNull((object)resource, "Synthetic DVD Drive not found");
            using (resource)
                return(ResourceAllocationSettingData.GetDefaultFromResourcePool(resource));
        }
示例#8
0
        public static IMemorySettingData CreateMemorySettingData(IComputerSystem host)
        {
            ManagementScope scope = ((IWMICommon)host).Scope;

            using (ManagementClass managementClass = new ManagementClass("Msvm_MemorySettingData"))
            {
                managementClass.Scope = scope;
                return((IMemorySettingData) new MemorySettingData(managementClass.CreateInstance()));
            }
        }
示例#9
0
        public static IImageManagementService GetImageManagementService(IComputerSystem host)
        {
            ManagementObject instance = ((IWMICommon)host).Scope.QueryFirst("Select * from Msvm_ImageManagementService Where SystemName='{0}'", (object)host.ElementName);

            if (instance == null)
            {
                throw new HyperVException(string.Format("Unable to get the image service for:  {0}", (object)host.ElementName));
            }
            return((IImageManagementService) new ImageManagementService(instance));
        }
示例#10
0
 public static ulong GetMaxConsumableResource(IComputerSystem host)
 {
     using (IResourcePool resourcePool = ResourcePool.Query(host, "ResourceType = 4").FirstOrDefault <IResourcePool>())
     {
         if (resourcePool == null)
         {
             throw new HyperVException("Unable to find the default settings for the Memory resource");
         }
         return(resourcePool.MaxConsumableResource);
     }
 }
示例#11
0
 public IVirtualSystemSettingData CreateSnapshot(IComputerSystem affectedSystem, string snapshotSettings, ushort snapshotType)
 {
     using (ManagementBaseObject methodParameters = this._Instance.GetMethodParameters(nameof(CreateSnapshot)))
     {
         methodParameters["AffectedSystem"]   = (object)((IWMICommon)affectedSystem).Object;
         methodParameters["SnapshotSettings"] = (object)snapshotSettings;
         methodParameters["SnapshotType"]     = (object)snapshotType;
         using (ManagementBaseObject managementBaseObject = this._Instance.InvokeAndWait(nameof(CreateSnapshot), methodParameters))
             return(VirtualSystemSettingData.CreateFromObject(new ManagementObject((string)managementBaseObject["ResultingSnapshot"])));
     }
 }
 public static MountedStorageImage GetMountedStorageImage(IComputerSystem host, string path)
 {
     foreach (MountedStorageImage mountedStorageImage in MountedStorageImage.GetAllMountedStorageImages(host))
     {
         if (string.Equals(mountedStorageImage.Name, path, StringComparison.OrdinalIgnoreCase))
         {
             return(mountedStorageImage);
         }
         mountedStorageImage.Dispose();
     }
     throw new HyperVException("MountedStorageImage not found for " + path);
 }
示例#13
0
        public static INIC Create(IComputerSystem host, IComputerSystem vm, VirtualNicType nicType, string nicGuid, ILogger logger)
        {
            ICommonEthernetPortSettingData ethernetPortSettingData;

            switch (nicType)
            {
            case VirtualNicType.Default:
            case VirtualNicType.Legacy:
                ethernetPortSettingData             = (ICommonEthernetPortSettingData)EmulatedEthernetPortSettingData.GetDefaultLegacyAdapter(host);
                ethernetPortSettingData.ElementName = "Legacy Network Adapter";
                break;

            case VirtualNicType.Synthetic:
                ethernetPortSettingData = (ICommonEthernetPortSettingData)SyntheticEthernetPortSettingData.GetDefaultSyntheticAdapter(host);
                ((ISyntheticEthernetPortSettingData)ethernetPortSettingData).VirtualSystemIdentifiers = new string[1]
                {
                    nicGuid
                };
                ethernetPortSettingData.ElementName = "Synthetic Network Adapter";
                break;

            default:
                throw new HyperVException("I don't know about the nic type " + (object)nicType);
            }
            ethernetPortSettingData.StaticMacAddress = false;
            using (IVirtualSystemManagementService managmentService = VirtualSystemManagementService.GetVirtualSystemManagmentService(host))
            {
                using (IVirtualSystemSettingData systemSettingData = vm.GetVirtualSystemSettingData())
                {
                    IResourceAllocationSettingData adapter = managmentService.AddResourceSettings(systemSettingData, new string[1]
                    {
                        ((IWMICommon)ethernetPortSettingData).Object.GetText(TextFormat.WmiDtd20)
                    }).FirstOrDefault <IResourceAllocationSettingData>();
                    try
                    {
                        ICommonEthernetPortSettingData adapterSettingData = CommonEthernetPortSettingData.GetRelated(systemSettingData).Where <ICommonEthernetPortSettingData>((Func <ICommonEthernetPortSettingData, bool>)(cepsd => adapter.InstanceID == cepsd.InstanceID)).FirstOrDefault <ICommonEthernetPortSettingData>();
                        if (adapterSettingData == null)
                        {
                            throw new HyperVException("Couldn't find the network adapter we just created");
                        }
                        return((INIC) new NIC(host, vm, adapterSettingData, logger));
                    }
                    finally
                    {
                        if (adapter != null)
                        {
                            adapter.Dispose();
                        }
                    }
                }
            }
        }
示例#14
0
        public static IVirtualSystemSettingData CreateVirtualSystemSettingData(IComputerSystem host)
        {
            ManagementObject instance = new ManagementClass(((IWMICommon)host).Scope, new ManagementPath("Msvm_VirtualSystemSettingData"), (ObjectGetOptions)null).CreateInstance();

            instance.SetPropertyValue("BootOrder", (object)new ushort[4]
            {
                (ushort)2,
                (ushort)1,
                (ushort)0,
                (ushort)3
            });
            return((IVirtualSystemSettingData) new VirtualSystemSettingData(instance));
        }
示例#15
0
 public static IMemorySettingData GetRelated(IComputerSystem vm)
 {
     using (IVirtualSystemSettingData systemSettingData = vm.GetVirtualSystemSettingData())
     {
         using (ManagementObjectCollection related = systemSettingData.Object.GetRelated("Msvm_MemorySettingData"))
         {
             using (ManagementObjectCollection.ManagementObjectEnumerator enumerator = related.GetEnumerator())
             {
                 if (enumerator.MoveNext())
                 {
                     return((IMemorySettingData) new MemorySettingData((ManagementObject)enumerator.Current));
                 }
             }
         }
     }
     throw new HyperVException("No related Msvm_MemorySettingData objects found");
 }
        public static IEnumerable <IVirtualEthernetSwitch> Query(IComputerSystem host, string condition, params object[] args)
        {
            ManagementObjectCollection virtualEthernetSwitches = ((IWMICommon)host).Scope.Query("Select * From Msvm_VirtualEthernetSwitch Where " + condition, args);

            try
            {
                foreach (ManagementObject instance in virtualEthernetSwitches)
                {
                    yield return((IVirtualEthernetSwitch) new VirtualEthernetSwitch(instance));
                }
            }
            finally
            {
                if (virtualEthernetSwitches != null)
                {
                    virtualEthernetSwitches.Dispose();
                }
            }
            virtualEthernetSwitches = (ManagementObjectCollection)null;
        }
示例#17
0
        public static IEnumerable <IShutdownComponent> GetRelated(IComputerSystem vm)
        {
            ManagementObjectCollection shutdownComponents = ((IWMICommon)vm).Object.GetRelated("Msvm_ShutdownComponent");

            try
            {
                foreach (ManagementObject instance in shutdownComponents)
                {
                    yield return((IShutdownComponent) new ShutdownComponent(instance));
                }
            }
            finally
            {
                if (shutdownComponents != null)
                {
                    shutdownComponents.Dispose();
                }
            }
            shutdownComponents = (ManagementObjectCollection)null;
        }
示例#18
0
        public static IEnumerable <INIC> GetRelated(IComputerSystem host, IComputerSystem vm, ILogger logger)
        {
            IVirtualSystemSettingData vssd = vm.GetVirtualSystemSettingData();

            try
            {
                foreach (ICommonEthernetPortSettingData adapterSettingData in CommonEthernetPortSettingData.GetRelated(vssd))
                {
                    yield return((INIC) new NIC(host, vm, adapterSettingData, logger));
                }
            }
            finally
            {
                if (vssd != null)
                {
                    vssd.Dispose();
                }
            }
            vssd = (IVirtualSystemSettingData)null;
        }
示例#19
0
        public static IEnumerable <IProcessor> GetRelated(IComputerSystem computerSystem)
        {
            ManagementObjectCollection relatedProcessors = ((IWMICommon)computerSystem).Object.GetRelated("Msvm_Processor");

            try
            {
                foreach (ManagementObject instance in relatedProcessors)
                {
                    yield return((IProcessor) new Processor(instance));
                }
            }
            finally
            {
                if (relatedProcessors != null)
                {
                    relatedProcessors.Dispose();
                }
            }
            relatedProcessors = (ManagementObjectCollection)null;
        }
示例#20
0
        public static IEnumerable <IVirtualSystemSettingData> GetRelated(IComputerSystem vm)
        {
            ManagementObjectCollection vssds = ((IWMICommon)vm).Object.GetRelated("Msvm_VirtualSystemSettingData");

            try
            {
                foreach (ManagementObject instance in vssds)
                {
                    yield return((IVirtualSystemSettingData) new VirtualSystemSettingData(instance));
                }
            }
            finally
            {
                if (vssds != null)
                {
                    vssds.Dispose();
                }
            }
            vssds = (ManagementObjectCollection)null;
        }
示例#21
0
        public static IEnumerable <IKvpExchangeComponent> GetRelated(IComputerSystem vm)
        {
            ManagementObjectCollection kvpExchangeComponents = ((IWMICommon)vm).Object.GetRelated("Msvm_KvpExchangeComponent");

            try
            {
                foreach (ManagementObject instance in kvpExchangeComponents)
                {
                    yield return((IKvpExchangeComponent) new KvpExchangeComponent(instance));
                }
            }
            finally
            {
                if (kvpExchangeComponents != null)
                {
                    kvpExchangeComponents.Dispose();
                }
            }
            kvpExchangeComponents = (ManagementObjectCollection)null;
        }
示例#22
0
        public static IEnumerable <IResourcePool> Query(IComputerSystem host, string condition)
        {
            ManagementObjectCollection resourcePools = ((IWMICommon)host).Scope.Query("Select * From Msvm_ResourcePool Where " + condition);

            try
            {
                foreach (ManagementObject instance in resourcePools)
                {
                    yield return((IResourcePool) new ResourcePool(instance));
                }
            }
            finally
            {
                if (resourcePools != null)
                {
                    resourcePools.Dispose();
                }
            }
            resourcePools = (ManagementObjectCollection)null;
        }
示例#23
0
        public static IEnumerable <IMemory> GetRelated(IComputerSystem computerSystem)
        {
            ManagementObjectCollection relatedMemorys = ((IWMICommon)computerSystem).Object.GetRelated("Msvm_Memory");

            try
            {
                foreach (ManagementObject instance in relatedMemorys)
                {
                    yield return((IMemory) new Memory(instance));
                }
            }
            finally
            {
                if (relatedMemorys != null)
                {
                    relatedMemorys.Dispose();
                }
            }
            relatedMemorys = (ManagementObjectCollection)null;
        }
示例#24
0
        public static IEnumerable <IDiskDrive> Query(IComputerSystem host)
        {
            Invariant.ArgumentNotNull((object)host, nameof(host));
            ManagementObjectCollection moc = new ManagementScope(string.Format("\\\\{0}\\root\\cimv2", (object)((IWMICommon)host).Scope.Path.Server)).Query("Select * from Win32_DiskDrive");

            try
            {
                foreach (ManagementObject instance in moc)
                {
                    yield return((IDiskDrive) new DiskDrive(instance));
                }
            }
            finally
            {
                if (moc != null)
                {
                    moc.Dispose();
                }
            }
            moc = (ManagementObjectCollection)null;
        }
        public static IEnumerable <MountedStorageImage> GetAllMountedStorageImages(IComputerSystem host)
        {
            ManagementScope scope           = ((IWMICommon)host).Scope;
            ManagementClass managementClass = new ManagementClass("Msvm_MountedStorageImage");

            managementClass.Scope = scope;
            ManagementObjectCollection instances = managementClass.GetInstances();

            try
            {
                foreach (ManagementObject instance in instances)
                {
                    yield return(new MountedStorageImage(instance));
                }
            }
            finally
            {
                if (instances != null)
                {
                    instances.Dispose();
                }
            }
            instances = (ManagementObjectCollection)null;
        }
示例#26
0
 public static IVirtualSystemSnapshotService GetVirtualSystemSnapshotService(IComputerSystem host)
 {
     return(VirtualSystemSnapshotService.GetVirtualSystemSnapshotService(((IWMICommon)host).Scope));
 }
示例#27
0
 public static IEthernetPortAllocationSettingData CreateVirtualSystemSettingData(IComputerSystem host)
 {
     return((IEthernetPortAllocationSettingData) new EthernetPortAllocationSettingData(new ManagementClass(((IWMICommon)host).Scope, new ManagementPath("Msvm_EthernetPortAllocationSettingData"), (ObjectGetOptions)null).CreateInstance()));
 }
示例#28
0
        public static IEthernetPortAllocationSettingData GetDefaultEthernetPortAllocationSettingData(IComputerSystem host)
        {
            IResourcePool resourcePool = ResourcePool.Query(host, "ResourceType = 33 and Primordial = True").FirstOrDefault <IResourcePool>();

            if (resourcePool == null)
            {
                throw new HyperVException("Unable to find the default settings for the resource");
            }
            ManagementObject managementObject = (ManagementObject)null;

            using (ManagementObjectCollection related = ((IWMICommon)resourcePool).Object.GetRelated("Msvm_AllocationCapabilities", "Msvm_ElementCapabilities", (string)null, (string)null, (string)null, (string)null, false, (EnumerationOptions)null))
            {
                using (ManagementObject firstElement = related.GetFirstElement())
                {
                    foreach (ManagementObject relationship in firstElement.GetRelationships("Msvm_SettingsDefineCapabilities"))
                    {
                        if ((int)(ushort)relationship["ValueRole"] == 0)
                        {
                            managementObject = relationship;
                            break;
                        }
                        relationship.Dispose();
                    }
                }
            }
            if (managementObject == null)
            {
                throw new HyperVException("Unable to find the default settings for the resource");
            }
            string path = (string)managementObject["PartComponent"];

            managementObject.Dispose();
            ManagementObject instance = new ManagementObject(path);

            instance.Scope = ((IWMICommon)resourcePool).Scope;
            instance.Get();
            return((IEthernetPortAllocationSettingData) new EthernetPortAllocationSettingData(instance));
        }
示例#29
0
 public static IVirtualHardDiskState CreateVirtualHardDiskState(IComputerSystem host)
 {
     return(VirtualHardDiskState.CreateVirtualHardDiskState(((IWMICommon)host).Scope));
 }
示例#30
0
 public void Dispose()
 {
     this._Host.TryDispose();
     this._Host = (IComputerSystem)null;
 }