Esempio n. 1
0
        internal string RunTestTask(string connectionString, string query)
        {
            ManagementPackClass AllManagementServersPoolClass =
                GetManagementPackClass("Microsoft.SystemCenter.Library", "Microsoft.SystemCenter.AllManagementServersPool");

            IObjectReader <MonitoringObject> Targets = managementGroup.EntityObjects.GetObjectReader <MonitoringObject>(AllManagementServersPoolClass, ObjectQueryOptions.Default);
            EnterpriseManagementObject       Target  = Targets.First();
            // Get the task.
            string TaskQuery = "Name = 'QueryOleDbMonitorTemplate.OLEDBMontiorTESTTask'";
            ManagementPackTaskCriteria taskCriteria = new ManagementPackTaskCriteria(TaskQuery);

            IList <ManagementPackTask> tasks = managementGroup.TaskConfiguration.GetTasks(taskCriteria);
            ManagementPackTask         task  = null;

            if (tasks.Count == 1)
            {
                task = tasks[0];
            }
            else
            {
                throw new InvalidOperationException(
                          "Error! Expected one task with: " + query);
            }

            // Use the default task configuration.
            Microsoft.EnterpriseManagement.Runtime.TaskConfiguration config =
                new Microsoft.EnterpriseManagement.Runtime.TaskConfiguration();

            //Get OleDbTriggerProbe module to override paramters
            ManagementPackModuleType OleDbTriggerProbeMoudule =
                managementGroup.Monitoring.GetModuleType("System.OleDbTriggerProbe", managementGroup.ManagementPacks.GetManagementPack(SystemManagementPack.System));

            ManagementPackOverrideableParameter overrideConnecionStringParam = OleDbTriggerProbeMoudule.OverrideableParameterCollection["ConnectionString"];
            ManagementPackOverrideableParameter overrideQueryParam           = OleDbTriggerProbeMoudule.OverrideableParameterCollection["Query"];


            config.Overrides.Add(new Pair <ManagementPackOverrideableParameter, string>(overrideConnecionStringParam,
                                                                                        connectionString
                                                                                        ));
            config.Overrides.Add(new Pair <ManagementPackOverrideableParameter, string>(overrideQueryParam,
                                                                                        query
                                                                                        ));

            //execute task

            IList <Microsoft.EnterpriseManagement.Runtime.TaskResult> result = managementGroup.TaskRuntime.ExecuteTask(Target, task, config);
            XmlDocument xd = new XmlDocument();

            xd.LoadXml(result[0].Output);
            TestReportFactory reportTestFactory = new TestReportFactory();

            return(GetTestResult(xd, reportTestFactory).UiText());
        }
Esempio n. 2
0
        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();
        }