/// <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(); } } }
/// <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; } }
/// <summary> /// The handle event. /// </summary> /// <param name="eventArgs"> /// The event args. /// </param> /// <returns> /// The <see cref="Task"/>. /// </returns> public abstract Task HandleEvent(DscEventArgs eventArgs);