//TODO: Add support for this at some point /* * [Parameter(ValueFromPipeline = false, Mandatory = false)] * public ManagementPackImage Image * { * get { return _image; } * set { _image = value; } * } */ protected override void ProcessRecord() { base.ProcessRecord(); //Create a new folder and set it's parent folder and display name ManagementPackFolder folder = new ManagementPackFolder(_managementpack, SMHelpers.MakeMPElementSafeUniqueIdentifier("Folder"), ManagementPackAccessibility.Public); folder.DisplayName = _displayname; folder.ParentFolder = _parentfolder; //TODO: Parameterize this someday //Set the systemfolder icon to be the icon that is used ManagementPackElementReference <ManagementPackImage> foldericonreference = (ManagementPackElementReference <ManagementPackImage>)_mg.Resources.GetResource <ManagementPackImage>(Images.Microsoft_EnterpriseManagement_ServiceManager_UI_Console_Image_Folder, SMHelpers.GetManagementPack(ManagementPacks.Microsoft_EnterpriseManagement_ServiceManager_UI_Console, _mg)); ManagementPackImageReference image = new ManagementPackImageReference(folder, foldericonreference, _managementpack); //Submit changes _managementpack.AcceptChanges(); }
protected override void ProcessRecord() { try { base.ProcessRecord(); ManagementPackView view = new ManagementPackView(ManagementPack, SMHelpers.MakeMPElementSafeUniqueIdentifier("View"), ManagementPackAccessibility.Internal); view.DisplayName = _DisplayName; //Set the display name according to what the user specified view.Target = _Class; //Set the class according to what the user specified //TODO: Parameterize these later view.Visible = true; view.Accessibility = ManagementPackAccessibility.Public; view.Enabled = true; view.Category = "NotUsed"; //Set the parent folder that was passed in ManagementPackFolderItem folderitem = new ManagementPackFolderItem(view, _Folder); //Add the management pack references to the MP if (_ManagementPackReferences != null) { foreach (KeyValuePair <string, ManagementPackReference> kvp in _ManagementPackReferences) { _ManagementPack.References.Add(kvp); } } //Get the Grid view type and set it for the view ManagementPack mpConsole = SMHelpers.GetManagementPack(ManagementPacks.Microsoft_EnterpriseManagement_ServiceManager_UI_Console, _mg); view.TypeID = mpConsole.GetViewType("GridViewType"); #region DataAdapters DataAdapter daEMO = new DataAdapter(); DataAdapter daAdvancedList = new DataAdapter(); if (_Projection != null) { daEMO.Name = "dataportal:EnterpriseManagementObjectAdapter"; daEMO.Type = "Microsoft.EnterpriseManagement.UI.SdkDataAccess.DataAdapters.EnterpriseManagementObjectProjectionAdapter"; } else { daEMO.Name = "dataportal:EnterpriseManagementObjectProjectionAdapter"; daEMO.Type = "Microsoft.EnterpriseManagement.UI.SdkDataAccess.DataAdapters.EnterpriseManagementObjectAdapter"; } daEMO.Assembly = "Microsoft.EnterpriseManagement.UI.SdkDataAccess"; daAdvancedList.Name = "viewframework://Adapters/AdvancedList"; daAdvancedList.Assembly = "Microsoft.EnterpriseManagement.UI.ViewFramework"; daAdvancedList.Type = "Microsoft.EnterpriseManagement.UI.ViewFramework.AdvancedListSupportAdapter"; Collection <DataAdapter> collDataAdpaters = new Collection <DataAdapter>(); collDataAdpaters.Add(daEMO); collDataAdpaters.Add(daAdvancedList); #endregion DataAdapters view.Configuration = CreateViewConfiguration(collDataAdpaters, _columns); foreach (Column column in _columns) { ManagementPackStringResource mpsr = new ManagementPackStringResource(view.GetManagementPack(), column.DisplayNameId); mpsr.DisplayName = column.DisplayNameString; } //Set the image if (_image != null) { ManagementPackElementReference <ManagementPackImage> viewIconReference = (ManagementPackElementReference <ManagementPackImage>)_mg.Resources.GetResource <ManagementPackImage>(_image.Name, _image.GetManagementPack()); ManagementPackImageReference imageref = new ManagementPackImageReference(view, viewIconReference, view.GetManagementPack()); } view.GetManagementPack().AcceptChanges(); if (PassThru) { //Pass the new object to the pipeline WriteObject(view); } } catch (Exception ex) { WriteError(new ErrorRecord(ex, "NewView", ErrorCategory.InvalidOperation, DisplayName)); } }
public static void CreateQueue(string strDisplayName, string strName, string strCriteria, ManagementPackClass mpc, ref ManagementPack mp, EnterpriseManagementGroup emg) { ManagementPack mpClass = mpc.GetManagementPack(); string strMPAlias = MakeMPElementSafeName(mpClass.Name); AddManagementPackReference(strMPAlias, mpClass.Name, ref mp, emg); ManagementPackClass classWorkItemGroup = GetClassByName("System.WorkItemGroup", emg); ManagementPackClass mpcQueue = new ManagementPackClass(mp, strName, ManagementPackAccessibility.Public); mpcQueue.Abstract = false; mpcQueue.Base = classWorkItemGroup; mpcQueue.DisplayName = strDisplayName; mpcQueue.Hosted = false; mpcQueue.Extension = false; mpcQueue.Singleton = true; mpcQueue.Status = ManagementPackElementStatus.PendingAdd; ManagementPackRelationship mprWorkItemGroupContainsWorkItem = GetRelationshipByName("System.WorkItemGroupContainsWorkItems", emg); ManagementPackRelationshipEndpoint mpreSource = new ManagementPackRelationshipEndpoint(mpcQueue, "ContainedByGroup"); ManagementPackRelationshipEndpoint mpreTarget = new ManagementPackRelationshipEndpoint(mpcQueue, "GroupContains"); mpreSource.Type = mpcQueue; mpreTarget.Type = mp.ProcessElementReference <ManagementPackClass>(String.Format("$MPElement[Name=\"{0}!{1}\"]$", strMPAlias, mpc.Name)); ManagementPackRelationship mprQueueWorkItem = new ManagementPackRelationship(mp, String.Format("{0}.Relationship", strName), ManagementPackAccessibility.Public); mprQueueWorkItem.DisplayName = String.Format("{0} Contains {1}", strDisplayName, mpc.DisplayName); mprQueueWorkItem.Abstract = false; mprQueueWorkItem.Base = mprWorkItemGroupContainsWorkItem; mprQueueWorkItem.Source = mpreSource; mprQueueWorkItem.Target = mpreTarget; mprQueueWorkItem.Status = ManagementPackElementStatus.PendingAdd; ManagementPackDiscoveryRelationship mpdrQueueWorkItem = new ManagementPackDiscoveryRelationship(); mpdrQueueWorkItem.TypeID = mprQueueWorkItem; ManagementPack mpSystemCenter = GetManagementPackByName("Microsoft.SystemCenter.Library", emg); string strSystemCenterLibraryMPAlias = MakeMPElementSafeName(mpSystemCenter.Name); AddManagementPackReference(strSystemCenterLibraryMPAlias, mpSystemCenter.Name, ref mp, emg); ManagementPackModuleType mpmtGroupPopulator = emg.Monitoring.GetModuleType("Microsoft.SystemCenter.GroupPopulator", mpSystemCenter); ManagementPackDiscovery mpdQueueWorkItem = new ManagementPackDiscovery(mp, MakeMPElementSafeName(String.Format("WorkITemGroup.{0}.Discovery.{1}", mpcQueue.Name, Guid.NewGuid().ToString()))); ManagementPackDataSourceModule mpdsmPopulator = new ManagementPackDataSourceModule(mpdQueueWorkItem, MakeMPElementSafeName(Guid.NewGuid().ToString())); ManagementPackElementReference <ManagementPackDataSourceModuleType> mperGroupPopulator = mp.ProcessElementReference <ManagementPackDataSourceModuleType>(String.Format("$MPElement[Name=\"{0}!{1}\"]$", strSystemCenterLibraryMPAlias, mpmtGroupPopulator.Name)); mpdsmPopulator.TypeID = mperGroupPopulator; StringBuilder sb = new StringBuilder(); sb.Append("<RuleId>$MPElement$</RuleId>\r\n"); sb.Append(String.Format("<GroupInstanceId>$MPElement[Name=\"{0}\"]$</GroupInstanceId>\r\n", strName)); sb.Append("<MembershipRules>\r\n"); sb.Append("<MembershipRule>\r\n"); sb.Append(String.Format("<MonitoringClass>$MPElement[Name=\"{0}!{1}\"]$</MonitoringClass>\r\n", strMPAlias, mpc.Name)); sb.Append(String.Format("<RelationshipClass>$MPElement[Name=\"{0}\"]$</RelationshipClass>\r\n", mprQueueWorkItem.Name)); sb.Append(strCriteria); sb.Append("</MembershipRule>\r\n"); sb.Append("</MembershipRules>\r\n"); mpdsmPopulator.Configuration = sb.ToString(); mpdQueueWorkItem.Enabled = ManagementPackMonitoringLevel.@true; mpdQueueWorkItem.Target = mpcQueue; mpdQueueWorkItem.ConfirmDelivery = false; mpdQueueWorkItem.Remotable = true; mpdQueueWorkItem.Priority = ManagementPackWorkflowPriority.Normal; mpdQueueWorkItem.Category = ManagementPackCategoryType.Discovery; mpdQueueWorkItem.DiscoveryRelationshipCollection.Add(mpdrQueueWorkItem); mpdQueueWorkItem.DataSource = mpdsmPopulator; mp.AcceptChanges(); }