How to Delete Views and Folders

Applies To: Operations Manager 2007 R2, Operations Manager 2007 SP1, System Center Operations Manager 2007

You can delete views and folders from a Management Pack that is not sealed. The following example demonstrates how to delete a view and a folder that were previously created.

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Microsoft.EnterpriseManagement;
using Microsoft.EnterpriseManagement.Common;
using Microsoft.EnterpriseManagement.Configuration;

namespace SDKSamples
{
    class Program
    {
        static void Main(string[] args)
        {
            ManagementGroup mg;
            mg = new ManagementGroup("localhost");

            try
            {
                DeleteView(mg, "SampleView1");
                DeleteFolder(mg, "SampleFolder");
            }
            catch (MonitoringException error)
            {
                Console.WriteLine(error.Message);
            }
        }

        //---------------------------------------------------------------------
        private static void DeleteFolder(
            ManagementGroup mg,
            string folderDisplayName
            )
        {
            ReadOnlyCollection<MonitoringFolder> folders;
            MonitoringFolderCriteria folderCriteria;
            MonitoringFolder folder;

            folderCriteria = new MonitoringFolderCriteria(
                string.Format("DisplayName='{0}'", folderDisplayName));
            folders = mg.GetMonitoringFolders(folderCriteria);

            if (folders.Count != 1)
            {
                throw new ApplicationException("Failed to retrieve the specified folder");
            }

            folder = folders[0];

            if (folder.GetManagementPack().Sealed)
            {
                throw new ApplicationException(
                    "Its not possible to delete folders in a sealed management pack");
            }

            // Mark the folder for deletion.
            folder.Status = ManagementPackElementStatus.PendingDelete;

            // Commit the changes.
            folder.GetManagementPack().AcceptChanges();
        }

        //---------------------------------------------------------------------
        private static void DeleteView(
            ManagementGroup mg,
            string viewDisplayName
            )
        {
            ReadOnlyCollection<MonitoringView> views;
            MonitoringViewCriteria viewCriteria;
            MonitoringView view;

            viewCriteria = new MonitoringViewCriteria(
                string.Format("DisplayName='{0}'", viewDisplayName));
            views = mg.GetMonitoringViews(viewCriteria);

            if (views.Count != 1)
            {
                throw new ApplicationException("Failed to retrieve the specified view");
            }

            view = views[0];

            if (view.GetManagementPack().Sealed)
            {
                throw new ApplicationException(
                    "Its not possible to delete views in a sealed management pack");
            }

            // Mark the view for deletion.
            view.Status = ManagementPackElementStatus.PendingDelete;

            // Commit the changes.
            view.GetManagementPack().AcceptChanges();
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
Imports Microsoft.EnterpriseManagement
Imports Microsoft.EnterpriseManagement.Configuration
Imports Microsoft.EnterpriseManagement.Common
Imports Microsoft.EnterpriseManagement.Monitoring


Namespace SDKSamples
    Class Program
        Public Overloads Shared Function Main(ByVal args() As String) As Integer

            Dim mg As ManagementGroup
            mg = New ManagementGroup("localhost")

            Try

                DeleteView(mg, "SampleView1")
                DeleteFolder(mg, "SampleFolder")

            Catch err As MonitoringException

                Console.WriteLine(err.Message)
            End Try
        End Function

        '---------------------------------------------------------------------
        Private Shared Sub DeleteFolder( _
            ByVal mg As ManagementGroup, _
            ByVal folderDisplayName As String)

            Dim folders As ReadOnlyCollection(Of MonitoringFolder)
            Dim folderCriteria As MonitoringFolderCriteria
            Dim folder As MonitoringFolder

            folderCriteria = New MonitoringFolderCriteria( _
                String.Format("DisplayName='{0}'", folderDisplayName))
            folders = mg.GetMonitoringFolders(folderCriteria)

            If (folders.Count <> 1) Then
                Throw New ApplicationException("Failed to retrieve the specified folder")
            End If

            folder = folders(0)

            If (folder.GetManagementPack().Sealed) Then

                Throw New ApplicationException( _
                    "Its not possible to delete folders in a sealed management pack")
            End If

            ' Mark the folder for deletion.
            folder.Status = ManagementPackElementStatus.PendingDelete

            ' Commit the changes.
            folder.GetManagementPack().AcceptChanges()
        End Sub

        '---------------------------------------------------------------------
        Private Shared Sub DeleteView( _
            ByVal mg As ManagementGroup, _
            ByVal viewDisplayName As String)

            Dim views As ReadOnlyCollection(Of MonitoringView)
            Dim viewCriteria As MonitoringViewCriteria
            Dim view As MonitoringView

            viewCriteria = New MonitoringViewCriteria( _
                String.Format("DisplayName='{0}'", viewDisplayName))
            views = mg.GetMonitoringViews(viewCriteria)

            If (views.Count <> 1) Then

                Throw New ApplicationException("Failed to retrieve the specified view")
            End If

            view = views(0)

            If (view.GetManagementPack().Sealed) Then

                Throw New ApplicationException( _
                    "Its not possible to delete views in a sealed management pack")
            End If

            ' Mark the view for deletion.
            view.Status = ManagementPackElementStatus.PendingDelete

            ' Commit the changes.
            view.GetManagementPack().AcceptChanges()
        End Sub
    End Class
End Namespace