private ManagementPath SetPortVlan(string vlan, EthernetPortAllocationSettingData portPath) { logger.DebugFormat("Setting VLAN to {0}", vlan); var vmVirtMgmtSvc = GetVirtualisationSystemManagementService(); EthernetSwitchPortVlanSettingData.GetInstances(); // Create NIC resource by cloning the default NIC var vlanSettings = EthernetSwitchPortVlanSettingData.GetInstances(vmVirtMgmtSvc.Scope, "InstanceID LIKE \"%Default\""); // Assert if (vlanSettings.Count != 1) { var errMsg = string.Format("Internal error, could not find default EthernetSwitchPortVlanSettingData instance"); var ex = new WmiException(errMsg); logger.Error(errMsg, ex); throw ex; } var defaultVlanSettings = vlanSettings.OfType<EthernetSwitchPortVlanSettingData>().First(); var newVlanSettings = new EthernetSwitchPortVlanSettingData((ManagementBaseObject)defaultVlanSettings.LateBoundObject.Clone()); // Assign configuration to new NIC newVlanSettings.LateBoundObject["AccessVlanId"] = vlan; newVlanSettings.LateBoundObject["OperationMode"] = 1; // Access=1, trunk=2, private=3 ; newVlanSettings.CommitObject(); // Insert NIC into vm string[] newResources = new string[] { newVlanSettings.LateBoundObject.GetText(System.Management.TextFormat.CimDtd20) }; ManagementPath[] newResourcePaths = AddFeatureSettings(newResources, portPath.Path); // assert if (newResourcePaths.Length != 1) { var errMsg = string.Format( "Failed to properly set VLAN to {0} for NIC on port {1}", vlan, portPath.Path); var ex = new WmiException(errMsg); logger.Error(errMsg, ex); throw ex; } return newResourcePaths[0]; }
private void SetBandWidthLimit(ulong limit, EthernetPortAllocationSettingData portPath) { logger.DebugFormat("Setting network rate limit to {0}", limit); var vmVirtMgmtSvc = GetVirtualisationSystemManagementService(); var bandwidthSettings = EthernetSwitchPortBandwidthSettingData.GetInstances(vmVirtMgmtSvc.Scope, "InstanceID LIKE \"%Default\""); // Assert if (bandwidthSettings.Count != 1) { var errMsg = string.Format("Internal error, could not find default EthernetSwitchPortBandwidthSettingData instance"); var ex = new WmiException(errMsg); logger.Error(errMsg, ex); throw ex; } var defaultBandwidthSettings = bandwidthSettings.OfType<EthernetSwitchPortBandwidthSettingData>().First(); var newBandwidthSettings = new EthernetSwitchPortBandwidthSettingData((ManagementBaseObject)defaultBandwidthSettings.LateBoundObject.Clone()); newBandwidthSettings.Limit = limit * 1000000; // Insert bandwidth settings to nic string[] newResources = new string[] { newBandwidthSettings.LateBoundObject.GetText(System.Management.TextFormat.CimDtd20) }; ManagementPath[] newResourcePaths = AddFeatureSettings(newResources, portPath.Path); // assert if (newResourcePaths.Length != 1) { var errMsg = string.Format( "Failed to properly apply network rate limit {0} for NIC on port {1}", limit, portPath.Path); var ex = new WmiException(errMsg); logger.Error(errMsg, ex); throw ex; } }
public EthernetSwitchPortVlanSettingData GetVlanSettings(EthernetPortAllocationSettingData ethernetConnection) { // An ASSOCIATOR object provides the cross reference from the VirtualSystemSettingData and the // EthernetPortAllocationSettingData, but generated wrappers do not expose a ASSOCIATOR OF query as a method. // Instead, we use the System.Management to code the equivalant of // string query = string.Format( "ASSOCIATORS OF {{{0}}} WHERE ResultClass = {1}", vmSettings.path, resultclassName); // var wmiObjQuery = new RelatedObjectQuery(ethernetConnection.Path.Path, EthernetSwitchPortVlanSettingData.CreatedClassName); // NB: default scope of ManagementObjectSearcher is '\\.\root\cimv2', which does not contain // the virtualisation objects. var wmiObjectSearch = new ManagementObjectSearcher(ethernetConnection.Scope, wmiObjQuery); var wmiObjCollection = new EthernetSwitchPortVlanSettingData.EthernetSwitchPortVlanSettingDataCollection(wmiObjectSearch.Get()); if (wmiObjCollection.Count == 0) { return null; } // Assert if (wmiObjCollection.Count > 1) { var errMsg = string.Format("Internal error, morn one VLAN settings for a single ethernetConnection"); var ex = new WmiException(errMsg); logger.Error(errMsg, ex); throw ex; } return wmiObjCollection.OfType<EthernetSwitchPortVlanSettingData>().First(); }
private EthernetPortAllocationSettingData AttachNicToPort(ComputerSystem newVm, SyntheticEthernetPortSettingData newAdapter, String vSwitchName) { // Get the virtual switch VirtualEthernetSwitch vSwitch = GetExternalVirtSwitch(vSwitchName); //check the the recevied vSwitch is the same as vSwitchName. if (!vSwitchName.Equals("") && !vSwitch.ElementName.Equals(vSwitchName)) { var errMsg = string.Format("Internal error, coudl not find Virtual Switch with the name : " +vSwitchName); var ex = new WmiException(errMsg); logger.Error(errMsg, ex); throw ex; } // Create port for adapter var defaultEthernetPortSettings = EthernetPortAllocationSettingData.GetInstances(vSwitch.Scope, "InstanceID LIKE \"%Default\""); // assert if (defaultEthernetPortSettings.Count != 1) { var errMsg = string.Format("Internal error, coudl not find default EthernetPortAllocationSettingData instance"); var ex = new WmiException(errMsg); logger.Error(errMsg, ex); throw ex; } var defaultEthernetPortSettingsObj = defaultEthernetPortSettings.OfType<EthernetPortAllocationSettingData>().First(); var newEthernetPortSettings = new EthernetPortAllocationSettingData((ManagementBaseObject)defaultEthernetPortSettingsObj.LateBoundObject.Clone()); newEthernetPortSettings.LateBoundObject["Parent"] = newAdapter.Path.Path; newEthernetPortSettings.LateBoundObject["HostResource"] = new string[] { vSwitch.Path.Path }; // Insert NIC into vm string[] newResources = new string[] { newEthernetPortSettings.LateBoundObject.GetText(System.Management.TextFormat.CimDtd20) }; ManagementPath[] newResourcePaths = AddVirtualResource(newResources, newVm); // assert if (newResourcePaths.Length != 1) { var errMsg = string.Format( "Failed to properly insert a single NIC on VM {0} (GUID {1}): number of resource created {2}", newVm.ElementName, newVm.Name, newResourcePaths.Length); var ex = new WmiException(errMsg); logger.Error(errMsg, ex); throw ex; } return new EthernetPortAllocationSettingData(newResourcePaths[0]); }
public EthernetPortAllocationSettingData(System.Management.ManagementScope mgmtScope, string keyInstanceID) { this.InitializeObject(((System.Management.ManagementScope)(mgmtScope)), new System.Management.ManagementPath(EthernetPortAllocationSettingData.ConstructPath(keyInstanceID)), null); }