Creating overrides using the SDK
Here is some sample code that I wanted to share for creating overrides using the SDK. In scenarios where you need to automate the creation of overrides, this can become useful:
Creating a Rule Override:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Microsoft.EnterpriseManagement;
using Microsoft.EnterpriseManagement.Administration;
using Microsoft.EnterpriseManagement.Common;
using Microsoft.EnterpriseManagement.Configuration;
using Microsoft.EnterpriseManagement.Monitoring;
namespace SDKSamples
{
class Program
{
//---------------------------------------------------------------------
static void Main(string[] args)
{
ManagementGroup mg;
ManagementPack mp;
MonitoringClassCriteria classCriteria;
MonitoringClass monitoringClass;
MonitoringRuleCriteria ruleCriteria;
MonitoringRule rule;
ManagementPackRulePropertyOverride ruleOverride;
mg = new ManagementGroup("localhost");
mp = mg.GetManagementPacks("OverrideTestMP")[0];
classCriteria = new MonitoringClassCriteria("Name='Microsoft.SQLServer.2005.Database'");
monitoringClass = mg.GetMonitoringClasses(classCriteria)[0];
ruleCriteria = new MonitoringRuleCriteria("DisplayName='Collect Database Free Space (%)'");
rule = monitoringClass.GetMonitoringRules(ruleCriteria)[0];
ruleOverride = new ManagementPackRulePropertyOverride(mp, "SampleRuleOverride");
ruleOverride.Rule = rule;
ruleOverride.Property = ManagementPackWorkflowProperty.Enabled;
ruleOverride.Value = "false";
ruleOverride.Context = monitoringClass;
ruleOverride.DisplayName = "SampleRuleOverride";
mp.Verify();
//Save the changes into the management pack.
mp.AcceptChanges();
}
}
}
Creating a Monitor Override:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Microsoft.EnterpriseManagement;
using Microsoft.EnterpriseManagement.Administration;
using Microsoft.EnterpriseManagement.Common;
using Microsoft.EnterpriseManagement.Configuration;
using Microsoft.EnterpriseManagement.Monitoring;
namespace SDKSamples
{
class Program
{
//---------------------------------------------------------------------
static void Main(string[] args)
{
ManagementGroup mg;
ManagementPack mp;
MonitoringClassCriteria classCriteria;
MonitoringClass monitoringClass;
MonitorCriteria monitorCriteria;
ManagementPackMonitor monitor;
ManagementPackMonitorPropertyOverride monitorOverride;
mg = new ManagementGroup("localhost");
mp = mg.GetManagementPacks("OverrideTestMP")[0];
classCriteria = new MonitoringClassCriteria("Name='Microsoft.SQLServer.2005.Database'");
monitoringClass = mg.GetMonitoringClasses(classCriteria)[0];
monitorCriteria = new MonitorCriteria("DisplayName='Database Status'");
monitor = mg.GetMonitors(monitorCriteria)[0];
monitorOverride = new ManagementPackMonitorPropertyOverride(mp, "SampleMonitorOverride");
monitorOverride.Monitor = monitor;
monitorOverride.Property = ManagementPackMonitorProperty.Enabled;
monitorOverride.Value = "false";
monitorOverride.Context = monitoringClass;
monitorOverride.DisplayName = "SampleMonitorOverride";
mp.Verify();
//Save the changes into the management pack.
mp.AcceptChanges();
}
}
}
Creating a Discovery Override:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Microsoft.EnterpriseManagement;
using Microsoft.EnterpriseManagement.Administration;
using Microsoft.EnterpriseManagement.Common;
using Microsoft.EnterpriseManagement.Configuration;
using Microsoft.EnterpriseManagement.Monitoring;
namespace SDKSamples
{
class Program
{
//---------------------------------------------------------------------
static void Main(string[] args)
{
ManagementGroup mg;
ManagementPack mp;
MonitoringClassCriteria classCriteria;
MonitoringClass monitoringClass;
MonitoringDiscoveryCriteria discoveryCriteria;
MonitoringDiscovery discovery;
ManagementPackDiscoveryPropertyOverride discoveryOverride;
mg = new ManagementGroup("localhost");
mp = mg.GetManagementPacks("OverrideTestMP")[0];
classCriteria = new MonitoringClassCriteria("Name='Microsoft.SQLServer.2005.DBEngine'");
monitoringClass = mg.GetMonitoringClasses(classCriteria)[0];
discoveryCriteria = new MonitoringDiscoveryCriteria("Name='Microsoft.SQLServer.2005.DatabaseDiscoveryRule'");
discovery = mg.GetMonitoringDiscoveries(discoveryCriteria)[0];
discoveryOverride = new ManagementPackDiscoveryPropertyOverride(mp, "SampleDiscoveryOverride");
discoveryOverride.Discovery = discovery;
discoveryOverride.Property = ManagementPackWorkflowProperty.Enabled;
discoveryOverride.Value = "false";
discoveryOverride.Context = monitoringClass;
discoveryOverride.DisplayName = "SampleDiscoveryOverride";
mp.Verify();
//Save the changes into the management pack.
mp.AcceptChanges();
}
}
}
Creating a Diagnostic Override:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Microsoft.EnterpriseManagement;
using Microsoft.EnterpriseManagement.Administration;
using Microsoft.EnterpriseManagement.Common;
using Microsoft.EnterpriseManagement.Configuration;
using Microsoft.EnterpriseManagement.Monitoring;
namespace SDKSamples
{
class Program
{
//---------------------------------------------------------------------
static void Main(string[] args)
{
ManagementGroup mg;
ManagementPack mp;
MonitoringClass monitoringClass;
MonitoringDiagnosticCriteria diagnosticCriteria;
MonitoringDiagnostic diagnostic;
ManagementPackDiagnosticPropertyOverride diagnosticOverride;
mg = new ManagementGroup("localhost");
mp = mg.GetManagementPacks("OverrideTestMP")[0];
monitoringClass = mg.GetMonitoringClass(SystemMonitoringClass.WindowsComputer);
diagnosticCriteria = new MonitoringDiagnosticCriteria("Name='Microsoft.SystemCenter.ManagedComputer.Ping.ICMPDiagnostic'");
diagnostic = mg.GetMonitoringDiagnostics(diagnosticCriteria)[0];
diagnosticOverride = new ManagementPackDiagnosticPropertyOverride(mp, "SampleDiagnosticOverride");
diagnosticOverride.Diagnostic = diagnostic;
diagnosticOverride.Property = ManagementPackWorkflowProperty.Enabled;
diagnosticOverride.Value = "false";
diagnosticOverride.Context = monitoringClass;
diagnosticOverride.DisplayName = "SampleDiagnosticOverride";
mp.Verify();
//Save the changes into the management pack.
mp.AcceptChanges();
}
}
}
Creating a recovery override:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Microsoft.EnterpriseManagement;
using Microsoft.EnterpriseManagement.Administration;
using Microsoft.EnterpriseManagement.Common;
using Microsoft.EnterpriseManagement.Configuration;
using Microsoft.EnterpriseManagement.Monitoring;
namespace SDKSamples
{
class Program
{
//---------------------------------------------------------------------
static void Main(string[] args)
{
ManagementGroup mg;
ManagementPack mp;
MonitoringClassCriteria monitoringClassCriteria;
MonitoringClass monitoringClass;
MonitoringRecoveryCriteria recoveryCriteria;
MonitoringRecovery recovery;
ManagementPackRecoveryPropertyOverride recoveryOverride;
mg = new ManagementGroup("localhost");
mp = mg.GetManagementPacks("OverrideTestMP")[0];
monitoringClassCriteria = new MonitoringClassCriteria("Name='Microsoft.SystemCenter.HealthServiceWatcher'");
monitoringClass = mg.GetMonitoringClasses(monitoringClassCriteria)[0];
recoveryCriteria = new MonitoringRecoveryCriteria("Name='Microsoft.SystemCenter.HealthService.Recovery.AutoReinstallAgent'");
recovery = mg.GetMonitoringRecoveries(recoveryCriteria)[0];
recoveryOverride = new ManagementPackRecoveryPropertyOverride(mp, "SampleRecoveryOverride");
recoveryOverride.Recovery = recovery;
recoveryOverride.Property = ManagementPackWorkflowProperty.Enabled;
recoveryOverride.Value = "false";
recoveryOverride.Context = monitoringClass;
recoveryOverride.DisplayName = "SampleRecoveryOverride";
mp.Verify();
//Save the changes into the management pack.
mp.AcceptChanges();
}
}
}