예제 #1
0
 /// <summary>
 /// The handle event.
 /// </summary>
 /// <param name="eventArgs">
 /// The event args.
 /// </param>
 /// <returns>
 /// The <see cref="Task"/>.
 /// </returns>
 public override async Task HandleEvent(DscEventArgs eventArgs)
 {
     if (eventArgs.Name == "DeleteNode")
     {
         var name    = eventArgs.GetMember <string>("NodeName");
         var configs = this.Repository.Where(r => r.Target == name);
         if (configs.Any())
         {
             this.Repository.RemoveRange(configs);
             this.Logging.UnpublishConfigurationsNodeRemoved(configs.Count(), name);
             await this.Context.SaveChangesAsync();
         }
     }
 }
예제 #2
0
        /// <summary>
        /// The handle event.
        /// </summary>
        /// <param name="eventArgs">
        /// The event args.
        /// </param>
        /// <returns>
        /// The <see cref="Task"/>.
        /// </returns>
        private async Task HandleEvent(DscEventArgs eventArgs)
        {
            NodeStatus status = null;

            switch (eventArgs.Name)
            {
            case "BootstrapUpdateReceived":
                status = await this.FindNodeStatus(eventArgs.GetMember <string>("NodeName"));

                if (status != null)
                {
                    status.LastBootstrapTimestamp = DateTime.UtcNow;
                    await this.Context.SaveChangesAsync();
                }

                break;

            case "MofFileCreated":
                status = await this.FindNodeStatus(eventArgs.GetMember <string>("Target"));

                if (status != null)
                {
                    status.MofBuildTimestamp = DateTime.UtcNow;
                    status.MofBuildConfigurationPackageName    = eventArgs.GetMember <string>("ConfigurationPackageName");
                    status.MofBuildConfigurationPackageVersion = eventArgs.GetMember <string>("ConfigurationPackageVersion");
                    await this.Context.SaveChangesAsync();
                }

                break;

            case "NodeChangingInitialDeployment":
                status = await this.FindNodeStatus(eventArgs.GetMember <string>("Name"));

                if (status != null)
                {
                    status.IsInitialDeployment = eventArgs.GetMember <bool>("Status");
                    await this.Context.SaveChangesAsync();
                }

                break;

            case "NodeChangedIsInMaintenance":
                status = await this.FindNodeStatus(eventArgs.GetMember <string>("Name"));

                if (status != null)
                {
                    status.IsInMaintenance = eventArgs.GetMember <bool>("IsInMaintenance");
                    await this.Context.SaveChangesAsync();
                }

                break;

            case "ConfigurationReportPosted":
                status = await this.FindNodeStatus(eventArgs.GetMember <string>("Target"));

                if (status != null)
                {
                    var request = eventArgs.GetMember <ConfigurationReportRecordRequest>("Request");
                    if (request.Type == ConfigurationType.Apply)
                    {
                        status.LastApplyRunTimestamp             = DateTime.UtcNow;
                        status.LastApplyConfigurationPackageName = request.ConfigurationPackageName;
                        status.LastApplyConfigurationVersion     = request.ConfigurationPackageVersion;
                        await this.Context.SaveChangesAsync();
                    }
                    else if (request.Type == ConfigurationType.Monitor)
                    {
                        status.LastMonitoringRun = DateTime.UtcNow;
                        await this.Context.SaveChangesAsync();
                    }
                }

                break;

            case "DeleteNode":
                status = await this.NodeStatusRepository.FindAsync(eventArgs.GetMember <string>("NodeName"));

                if (status != null)
                {
                    this.NodeStatusRepository.Remove(status);
                    await this.Context.SaveChangesAsync();
                }

                break;
            }
        }
예제 #3
0
 /// <summary>
 /// The handle event.
 /// </summary>
 /// <param name="eventArgs">
 /// The event args.
 /// </param>
 /// <returns>
 /// The <see cref="Task"/>.
 /// </returns>
 public abstract Task HandleEvent(DscEventArgs eventArgs);