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:
Karl Burtram
2018-05-30 08:58:02 -07:00
committed by GitHub
parent f5efe18e1b
commit 4f214f43e9
49 changed files with 8152 additions and 257 deletions

View File

@@ -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; }
}
}

View File

@@ -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");
}
}

View File

@@ -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; }
}
}

View File

@@ -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");
}
}

View File

@@ -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; }
}
}

View File

@@ -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");
}
}