mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-17 02:51:45 -05:00
Add Agent Job Defaults request handler (#644)
* Add Agent Job Defaults request handler * Fix a couple bugs
This commit is contained in:
@@ -92,6 +92,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
|||||||
this.ServiceHost.SetRequestHandler(UpdateAgentJobRequest.Type, HandleUpdateAgentJobRequest);
|
this.ServiceHost.SetRequestHandler(UpdateAgentJobRequest.Type, HandleUpdateAgentJobRequest);
|
||||||
this.ServiceHost.SetRequestHandler(DeleteAgentJobRequest.Type, HandleDeleteAgentJobRequest);
|
this.ServiceHost.SetRequestHandler(DeleteAgentJobRequest.Type, HandleDeleteAgentJobRequest);
|
||||||
|
|
||||||
|
this.ServiceHost.SetRequestHandler(AgentJobDefaultsRequest.Type, HandleAgentJobDefaultsRequest);
|
||||||
|
|
||||||
// Job Steps request handlers
|
// Job Steps request handlers
|
||||||
this.ServiceHost.SetRequestHandler(CreateAgentJobStepRequest.Type, HandleCreateAgentJobStepRequest);
|
this.ServiceHost.SetRequestHandler(CreateAgentJobStepRequest.Type, HandleCreateAgentJobStepRequest);
|
||||||
this.ServiceHost.SetRequestHandler(UpdateAgentJobStepRequest.Type, HandleUpdateAgentJobStepRequest);
|
this.ServiceHost.SetRequestHandler(UpdateAgentJobStepRequest.Type, HandleUpdateAgentJobStepRequest);
|
||||||
@@ -359,6 +361,43 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal async Task HandleAgentJobDefaultsRequest(AgentJobDefaultsParams parameters, RequestContext<AgentJobDefaultsResult> requestContext)
|
||||||
|
{
|
||||||
|
await Task.Run(async () =>
|
||||||
|
{
|
||||||
|
var result = new AgentJobDefaultsResult();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
JobData jobData;
|
||||||
|
CDataContainer dataContainer;
|
||||||
|
CreateJobData(parameters.OwnerUri, "default", out dataContainer, out jobData);
|
||||||
|
|
||||||
|
// current connection user name for
|
||||||
|
result.Owner = dataContainer.ServerConnection.TrueLogin;
|
||||||
|
|
||||||
|
var categories = jobData.Categories;
|
||||||
|
result.Categories = new AgentJobCategory[categories.Length];
|
||||||
|
for (int i = 0; i < categories.Length; ++i)
|
||||||
|
{
|
||||||
|
result.Categories[i] = new AgentJobCategory
|
||||||
|
{
|
||||||
|
Id = categories[i].SmoCategory.ID,
|
||||||
|
Name = categories[i].SmoCategory.Name
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
result.Success = true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
result.Success = false;
|
||||||
|
result.ErrorMessage = ex.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
await requestContext.SendResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
#endregion // "Jobs Handlers"
|
#endregion // "Jobs Handlers"
|
||||||
|
|
||||||
#region "Alert Handlers"
|
#region "Alert Handlers"
|
||||||
|
|||||||
@@ -4,19 +4,17 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Specialized;
|
using System.Collections.Specialized;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Threading;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using Microsoft.SqlServer.Management.Sdk.Sfc;
|
using Microsoft.SqlServer.Management.Sdk.Sfc;
|
||||||
using Microsoft.SqlServer.Management.Common;
|
using Microsoft.SqlServer.Management.Common;
|
||||||
using Microsoft.SqlServer.Management.Diagnostics;
|
using Microsoft.SqlServer.Management.Diagnostics;
|
||||||
using Microsoft.SqlServer.Management.Smo;
|
using Microsoft.SqlServer.Management.Smo;
|
||||||
using Microsoft.SqlServer.Management.Smo.Agent;
|
using Microsoft.SqlServer.Management.Smo.Agent;
|
||||||
using Microsoft.SqlServer.Management.UI;
|
|
||||||
using Microsoft.SqlTools.ServiceLayer.Admin;
|
using Microsoft.SqlTools.ServiceLayer.Admin;
|
||||||
using Microsoft.SqlTools.ServiceLayer.Management;
|
using Microsoft.SqlTools.ServiceLayer.Management;
|
||||||
|
|
||||||
|
|||||||
@@ -182,4 +182,45 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts
|
|||||||
RequestType<AgentJobActionParams, ResultStatus> Type =
|
RequestType<AgentJobActionParams, ResultStatus> Type =
|
||||||
RequestType<AgentJobActionParams, ResultStatus>.Create("agent/jobaction");
|
RequestType<AgentJobActionParams, ResultStatus>.Create("agent/jobaction");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SQL Agent Job Defaults params
|
||||||
|
/// </summary>
|
||||||
|
public class AgentJobDefaultsParams
|
||||||
|
{
|
||||||
|
public string OwnerUri { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SQL Agent Job Category class
|
||||||
|
/// </summary>
|
||||||
|
public class AgentJobCategory
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public string Name { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SQL Agent Job Defaults result
|
||||||
|
/// </summary>
|
||||||
|
public class AgentJobDefaultsResult : ResultStatus
|
||||||
|
{
|
||||||
|
public string Owner { get; set; }
|
||||||
|
|
||||||
|
public AgentJobCategory[] Categories { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SQL Agent Job Defaults request type
|
||||||
|
/// </summary>
|
||||||
|
public class AgentJobDefaultsRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Request definition
|
||||||
|
/// </summary>
|
||||||
|
public static readonly
|
||||||
|
RequestType<AgentJobDefaultsParams, AgentJobDefaultsResult> Type =
|
||||||
|
RequestType<AgentJobDefaultsParams, AgentJobDefaultsResult>.Create("agent/jobdefaults");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,68 +58,68 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
|||||||
switch (categoryId)
|
switch (categoryId)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryLocal";
|
localisableCategory = SR.CategoryLocal;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryFromMsx";
|
localisableCategory = SR.CategoryFromMsx;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryMultiServer";
|
localisableCategory = SR.CategoryMultiServer;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryDBMaint";
|
localisableCategory = SR.CategoryDBMaint;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryWebAssistant";
|
localisableCategory = SR.CategoryWebAssistant;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryFullText";
|
localisableCategory = SR.CategoryFullText;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryLogShipping";
|
localisableCategory = "Log Shippings"; // SR.CategoryLogShippings;
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryDBEngineTuningAdvisor";
|
localisableCategory = SR.CategoryDBEngineTuningAdvisor;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryDataCollector";
|
localisableCategory = SR.CategoryDataCollector;
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryReplDistribution";
|
localisableCategory = SR.CategoryReplDistribution;
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryReplDistributionCleanup";
|
localisableCategory = SR.CategoryReplDistributionCleanup;
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryReplHistoryCleanup";
|
localisableCategory = SR.CategoryReplHistoryCleanup;
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 13:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryReplLogReader";
|
localisableCategory = SR.CategoryReplLogReader;
|
||||||
break;
|
break;
|
||||||
case 14:
|
case 14:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryReplMerge";
|
localisableCategory = SR.CategoryReplMerge;
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryReplSnapShot";
|
localisableCategory = SR.CategoryReplSnapShot;
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryReplCheckup";
|
localisableCategory = SR.CategoryReplCheckup;
|
||||||
break;
|
break;
|
||||||
case 17:
|
case 17:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryReplCleanup";
|
localisableCategory = SR.CategoryReplCleanup;
|
||||||
break;
|
break;
|
||||||
case 18:
|
case 18:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryReplAlert";
|
localisableCategory = SR.CategoryReplAlert;
|
||||||
break;
|
break;
|
||||||
case 19:
|
case 19:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryReplQReader";
|
localisableCategory = SR.CategoryReplQReader;
|
||||||
break;
|
break;
|
||||||
case 20:
|
case 20:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryReplication";
|
localisableCategory = SR.CategoryReplication;
|
||||||
break;
|
break;
|
||||||
case 98:
|
case 98:
|
||||||
case 99:
|
case 99:
|
||||||
localisableCategory = "LocalizableCategorySR.CategoryUncategorized";
|
localisableCategory = SR.CategoryUncategorized;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
localisableCategory = defaultName;
|
localisableCategory = defaultName;
|
||||||
|
|||||||
@@ -82,5 +82,27 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.Agent
|
|||||||
await AgentTestUtils.DeleteAgentJob(service, connectionResult, job, verify: false);
|
await AgentTestUtils.DeleteAgentJob(service, connectionResult, job, verify: false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// TestAgentJobDefaultsRequest
|
||||||
|
/// </summary>
|
||||||
|
[Fact]
|
||||||
|
public async Task TestAgentJobDefaultsRequest()
|
||||||
|
{
|
||||||
|
using (SelfCleaningTempFile queryTempFile = new SelfCleaningTempFile())
|
||||||
|
{
|
||||||
|
// setup
|
||||||
|
var service = new AgentService();
|
||||||
|
var connectionResult = await LiveConnectionHelper.InitLiveConnectionInfoAsync("master", queryTempFile.FilePath);
|
||||||
|
|
||||||
|
// test
|
||||||
|
var context = new Mock<RequestContext<AgentJobDefaultsResult>>();
|
||||||
|
await service.HandleAgentJobDefaultsRequest(new AgentJobDefaultsParams
|
||||||
|
{
|
||||||
|
OwnerUri = connectionResult.ConnectionInfo.OwnerUri
|
||||||
|
}, context.Object);
|
||||||
|
context.VerifyAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user