mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-09 01:32:38 -05:00
SQL Agent configuration for Operators, Alerts and Proxies (WIP) (#621)
* Initial non-refactored SQL Agent alert classes (WIP) * Move agent classes into subdirectories * Refactor the agent config code a bit more * Add more implementation for handlers * Add more code to the create alert handler * Clean up agent alert class * Clean up alert methods a bit * Initial Operator contracts * Additonal SQL Agent config changes * More Proxy config cleanup * Cleanup AgentProxy class * Additional cleanups * Run SRGen * Add security service to create credential objects
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.SqlTools.ServiceLayer.Agent;
|
||||
|
||||
namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts
|
||||
{
|
||||
[Flags]
|
||||
public enum NotifyMethods
|
||||
{
|
||||
None = 0,
|
||||
NotifyEmail = 1,
|
||||
Pager = 2,
|
||||
NetSend = 4,
|
||||
NotifyAll = 7
|
||||
}
|
||||
|
||||
public enum AlertType
|
||||
{
|
||||
SqlServerEvent = 1,
|
||||
SqlServerPerformanceCondition = 2,
|
||||
NonSqlServerEvent = 3,
|
||||
WmiEvent = 4
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// a class for storing various properties of agent alerts
|
||||
/// </summary>
|
||||
public class AgentAlertInfo
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int DelayBetweenResponses { get; set; }
|
||||
public string EventDescriptionKeyword { get; set; }
|
||||
public string EventSource { get; set; }
|
||||
public int HasNotification { get; set; }
|
||||
public NotifyMethods IncludeEventDescription { get; set; }
|
||||
public bool IsEnabled { get; set; }
|
||||
public Guid JobId { get; set; }
|
||||
public string JobName { get; set; }
|
||||
public DateTime LastOccurrenceDate { get; set; }
|
||||
public DateTime LastResponseDate { get; set; }
|
||||
public int MessageId { get; set; }
|
||||
public string NotificationMessage { get; set; }
|
||||
public int OccurrenceCount { get; }
|
||||
public string PerformanceCondition { get; set; }
|
||||
public int Severity { get; set; }
|
||||
public string DatabaseName { get; set; }
|
||||
public DateTime CountResetDate { get; }
|
||||
public string CategoryName { get; set; }
|
||||
public AlertType AlertType { get; set; }
|
||||
public string WmiEventNamespace { get; set; }
|
||||
public string WmiEventQuery { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
//
|
||||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
//
|
||||
|
||||
using Microsoft.SqlTools.Hosting.Protocol.Contracts;
|
||||
using Microsoft.SqlTools.ServiceLayer.Utility;
|
||||
using Microsoft.SqlTools.Utility;
|
||||
|
||||
namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts
|
||||
{
|
||||
/// <summary>
|
||||
/// SQL Agent Job activity parameters
|
||||
/// </summary>
|
||||
public class AgentAlertsParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent Job activity result
|
||||
/// </summary>
|
||||
public class AgentAlertsResult
|
||||
{
|
||||
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
|
||||
public AgentAlertInfo[] Alerts { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent Alerts request type
|
||||
/// </summary>
|
||||
public class AgentAlertsRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<AgentAlertsParams, AgentAlertsResult> Type =
|
||||
RequestType<AgentAlertsParams, AgentAlertsResult>.Create("agent/alerts");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent create Alert params
|
||||
/// </summary>
|
||||
public class CreateAgentAlertParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
|
||||
public AgentAlertInfo Alert { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent create Alert result
|
||||
/// </summary>
|
||||
public class CreateAgentAlertResult
|
||||
{
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent create Alert request type
|
||||
/// </summary>
|
||||
public class CreateAgentAlertRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<CreateAgentAlertParams, CreateAgentAlertResult> Type =
|
||||
RequestType<CreateAgentAlertParams, CreateAgentAlertResult>.Create("agent/createalert");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent delete Alert params
|
||||
/// </summary>
|
||||
public class DeleteAgentAlertParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
|
||||
public AgentAlertInfo Alert { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent delete Alert result
|
||||
/// </summary>
|
||||
public class DeleteAgentAlertResult
|
||||
{
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent delete Alert request type
|
||||
/// </summary>
|
||||
public class DeleteAgentAlertRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<DeleteAgentAlertParams, DeleteAgentAlertResult> Type =
|
||||
RequestType<DeleteAgentAlertParams, DeleteAgentAlertResult>.Create("agent/deletealert");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent update Alert params
|
||||
/// </summary>
|
||||
public class UpdateAgentAlertParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
|
||||
public AgentAlertInfo Alert { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent update Alert result
|
||||
/// </summary>
|
||||
public class UpdateAgentAlertResult
|
||||
{
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent update Alert request type
|
||||
/// </summary>
|
||||
public class UpdateAgentAlertRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<UpdateAgentAlertParams, UpdateAgentAlertResult> Type =
|
||||
RequestType<UpdateAgentAlertParams, UpdateAgentAlertResult>.Create("agent/updatealert");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
//
|
||||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.SqlTools.ServiceLayer.Agent;
|
||||
|
||||
namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts
|
||||
{
|
||||
[Flags]
|
||||
public enum WeekDays
|
||||
{
|
||||
Sunday = 1,
|
||||
Monday = 2,
|
||||
Tuesday = 4,
|
||||
Wednesday = 8,
|
||||
Thursday = 16,
|
||||
Friday = 32,
|
||||
WeekDays = 62,
|
||||
Saturday = 64,
|
||||
WeekEnds = 65,
|
||||
EveryDay = 127
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// a class for storing various properties of agent operators
|
||||
/// </summary>
|
||||
public class AgentOperatorInfo
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public int Id { get; set; }
|
||||
public string EmailAddress { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public DateTime LastEmailDate { get; set; }
|
||||
public DateTime LastNetSendDate { get; set; }
|
||||
public DateTime LastPagerDate { get; set; }
|
||||
public string PagerAddress { get; set; }
|
||||
public string CategoryName { get; set; }
|
||||
public WeekDays PagerDays { get; set; }
|
||||
public TimeSpan SaturdayPagerEndTime { get; set; }
|
||||
public TimeSpan SaturdayPagerStartTime { get; set; }
|
||||
public TimeSpan SundayPagerEndTime { get; set; }
|
||||
public TimeSpan SundayPagerStartTime { get; set; }
|
||||
public string NetSendAddress { get; set; }
|
||||
public TimeSpan WeekdayPagerStartTime { get; set; }
|
||||
public TimeSpan WeekdayPagerEndTime { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
//
|
||||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
//
|
||||
|
||||
using Microsoft.SqlTools.Hosting.Protocol.Contracts;
|
||||
using Microsoft.SqlTools.ServiceLayer.Utility;
|
||||
using Microsoft.SqlTools.Utility;
|
||||
|
||||
namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts
|
||||
{
|
||||
/// <summary>
|
||||
/// SQL Agent Operators request parameters
|
||||
/// </summary>
|
||||
public class AgentOperatorsParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent Operators request result
|
||||
/// </summary>
|
||||
public class AgentOperatorsResult
|
||||
{
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
|
||||
public AgentOperatorInfo[] Operators { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent Operators request type
|
||||
/// </summary>
|
||||
public class AgentOperatorsRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<AgentOperatorsParams, AgentOperatorsResult> Type =
|
||||
RequestType<AgentOperatorsParams, AgentOperatorsResult>.Create("agent/operators");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent create Operator params
|
||||
/// </summary>
|
||||
public class CreateAgentOperatorParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
|
||||
public AgentOperatorInfo Operator { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent create Operator result
|
||||
/// </summary>
|
||||
public class CreateAgentOperatorResult
|
||||
{
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent create Operator request type
|
||||
/// </summary>
|
||||
public class CreateAgentOperatorRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<CreateAgentOperatorParams, CreateAgentOperatorResult> Type =
|
||||
RequestType<CreateAgentOperatorParams, CreateAgentOperatorResult>.Create("agent/createoperator");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent delete Operator params
|
||||
/// </summary>
|
||||
public class DeleteAgentOperatorParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
|
||||
public AgentOperatorInfo Operator { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent delete Operator result
|
||||
/// </summary>
|
||||
public class DeleteAgentOperatorResult
|
||||
{
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent delete Operator request type
|
||||
/// </summary>
|
||||
public class DeleteAgentOperatorRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<DeleteAgentOperatorParams, DeleteAgentOperatorResult> Type =
|
||||
RequestType<DeleteAgentOperatorParams, DeleteAgentOperatorResult>.Create("agent/deleteoperator");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent update Operator params
|
||||
/// </summary>
|
||||
public class UpdateAgentOperatorParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
|
||||
public AgentOperatorInfo Operator { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent update Operator result
|
||||
/// </summary>
|
||||
public class UpdateAgentOperatorResult
|
||||
{
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent update Operator request type
|
||||
/// </summary>
|
||||
public class UpdateAgentOperatorRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<UpdateAgentOperatorParams, UpdateAgentOperatorResult> Type =
|
||||
RequestType<UpdateAgentOperatorParams, UpdateAgentOperatorResult>.Create("agent/updateoperator");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.SqlTools.ServiceLayer.Agent;
|
||||
|
||||
namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts
|
||||
{
|
||||
/// <summary>
|
||||
/// a class for storing various properties of agent proxy accounts
|
||||
/// </summary>
|
||||
public class AgentProxyInfo
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string AccountName { get; set; }
|
||||
public string Description { get; set; }
|
||||
public string CredentialName { get; set; }
|
||||
public string CredentialIdentity { get; set; }
|
||||
public int CredentialId { get; set; }
|
||||
public bool IsEnabled { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
//
|
||||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
//
|
||||
|
||||
using Microsoft.SqlTools.Hosting.Protocol.Contracts;
|
||||
using Microsoft.SqlTools.ServiceLayer.Utility;
|
||||
using Microsoft.SqlTools.Utility;
|
||||
|
||||
namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts
|
||||
{
|
||||
/// <summary>
|
||||
/// SQL Agent proxy accounts parameters
|
||||
/// </summary>
|
||||
public class AgentProxiesParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent proxy accounts result
|
||||
/// </summary>
|
||||
public class AgentProxiesResult
|
||||
{
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
|
||||
public AgentProxyInfo[] Proxies { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent Proxy Accounts request type
|
||||
/// </summary>
|
||||
public class AgentProxiesRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<AgentProxiesParams, AgentProxiesResult> Type =
|
||||
RequestType<AgentProxiesParams, AgentProxiesResult>.Create("agent/proxies");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent create Proxy Account params
|
||||
/// </summary>
|
||||
public class CreateAgentProxyParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
|
||||
public AgentProxyInfo Proxy { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent create Proxy result
|
||||
/// </summary>
|
||||
public class CreateAgentProxyResult
|
||||
{
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent create Proxy request type
|
||||
/// </summary>
|
||||
public class CreateAgentProxyRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<CreateAgentProxyParams, CreateAgentProxyResult> Type =
|
||||
RequestType<CreateAgentProxyParams, CreateAgentProxyResult>.Create("agent/createproxy");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent delete Proxy params
|
||||
/// </summary>
|
||||
public class DeleteAgentProxyParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
|
||||
public AgentProxyInfo Proxy { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent delete Proxy result
|
||||
/// </summary>
|
||||
public class DeleteAgentProxyResult
|
||||
{
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent delete Proxy request type
|
||||
/// </summary>
|
||||
public class DeleteAgentProxyRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<DeleteAgentProxyParams, DeleteAgentProxyResult> Type =
|
||||
RequestType<DeleteAgentProxyParams, DeleteAgentProxyResult>.Create("agent/deleteproxy");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent update Proxy params
|
||||
/// </summary>
|
||||
public class UpdateAgentProxyParams : GeneralRequestDetails
|
||||
{
|
||||
public string OwnerUri { get; set; }
|
||||
|
||||
public string OriginalProxyName { get; set; }
|
||||
|
||||
public AgentProxyInfo Proxy { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent update Proxy result
|
||||
/// </summary>
|
||||
public class UpdateAgentProxyResult
|
||||
{
|
||||
public bool Succeeded { get; set; }
|
||||
|
||||
public string ErrorMessage { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent update Proxy request type
|
||||
/// </summary>
|
||||
public class UpdateAgentProxyRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Request definition
|
||||
/// </summary>
|
||||
public static readonly
|
||||
RequestType<UpdateAgentProxyParams, UpdateAgentProxyResult> Type =
|
||||
RequestType<UpdateAgentProxyParams, UpdateAgentProxyResult>.Create("agent/updateproxy");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user