mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-11 02:32:40 -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(DeleteAgentJobRequest.Type, HandleDeleteAgentJobRequest);
|
||||
|
||||
this.ServiceHost.SetRequestHandler(AgentJobDefaultsRequest.Type, HandleAgentJobDefaultsRequest);
|
||||
|
||||
// Job Steps request handlers
|
||||
this.ServiceHost.SetRequestHandler(CreateAgentJobStepRequest.Type, HandleCreateAgentJobStepRequest);
|
||||
this.ServiceHost.SetRequestHandler(UpdateAgentJobStepRequest.Type, HandleUpdateAgentJobStepRequest);
|
||||
@@ -357,7 +359,44 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent
|
||||
Success = result.Item1,
|
||||
ErrorMessage = result.Item2
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
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"
|
||||
|
||||
|
||||
@@ -4,19 +4,17 @@
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Threading;
|
||||
using System.Collections;
|
||||
using System.Collections.Specialized;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Threading;
|
||||
using System.Xml;
|
||||
using Microsoft.SqlServer.Management.Sdk.Sfc;
|
||||
using Microsoft.SqlServer.Management.Common;
|
||||
using Microsoft.SqlServer.Management.Diagnostics;
|
||||
using Microsoft.SqlServer.Management.Smo;
|
||||
using Microsoft.SqlServer.Management.Smo.Agent;
|
||||
using Microsoft.SqlServer.Management.UI;
|
||||
using Microsoft.SqlTools.ServiceLayer.Admin;
|
||||
using Microsoft.SqlTools.ServiceLayer.Management;
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts
|
||||
public static readonly
|
||||
RequestType<UpdateAgentJobParams, UpdateAgentJobResult> Type =
|
||||
RequestType<UpdateAgentJobParams, UpdateAgentJobResult>.Create("agent/updatejob");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SQL Agent delete Alert params
|
||||
@@ -182,4 +182,45 @@ namespace Microsoft.SqlTools.ServiceLayer.Agent.Contracts
|
||||
RequestType<AgentJobActionParams, ResultStatus> Type =
|
||||
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)
|
||||
{
|
||||
case 0:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryLocal";
|
||||
localisableCategory = SR.CategoryLocal;
|
||||
break;
|
||||
case 1:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryFromMsx";
|
||||
localisableCategory = SR.CategoryFromMsx;
|
||||
break;
|
||||
case 2:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryMultiServer";
|
||||
localisableCategory = SR.CategoryMultiServer;
|
||||
break;
|
||||
case 3:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryDBMaint";
|
||||
localisableCategory = SR.CategoryDBMaint;
|
||||
break;
|
||||
case 4:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryWebAssistant";
|
||||
localisableCategory = SR.CategoryWebAssistant;
|
||||
break;
|
||||
case 5:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryFullText";
|
||||
localisableCategory = SR.CategoryFullText;
|
||||
break;
|
||||
case 6:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryLogShipping";
|
||||
localisableCategory = "Log Shippings"; // SR.CategoryLogShippings;
|
||||
break;
|
||||
case 7:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryDBEngineTuningAdvisor";
|
||||
localisableCategory = SR.CategoryDBEngineTuningAdvisor;
|
||||
break;
|
||||
case 8:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryDataCollector";
|
||||
localisableCategory = SR.CategoryDataCollector;
|
||||
break;
|
||||
case 10:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryReplDistribution";
|
||||
localisableCategory = SR.CategoryReplDistribution;
|
||||
break;
|
||||
case 11:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryReplDistributionCleanup";
|
||||
localisableCategory = SR.CategoryReplDistributionCleanup;
|
||||
break;
|
||||
case 12:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryReplHistoryCleanup";
|
||||
localisableCategory = SR.CategoryReplHistoryCleanup;
|
||||
break;
|
||||
case 13:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryReplLogReader";
|
||||
localisableCategory = SR.CategoryReplLogReader;
|
||||
break;
|
||||
case 14:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryReplMerge";
|
||||
localisableCategory = SR.CategoryReplMerge;
|
||||
break;
|
||||
case 15:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryReplSnapShot";
|
||||
localisableCategory = SR.CategoryReplSnapShot;
|
||||
break;
|
||||
case 16:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryReplCheckup";
|
||||
localisableCategory = SR.CategoryReplCheckup;
|
||||
break;
|
||||
case 17:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryReplCleanup";
|
||||
localisableCategory = SR.CategoryReplCleanup;
|
||||
break;
|
||||
case 18:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryReplAlert";
|
||||
localisableCategory = SR.CategoryReplAlert;
|
||||
break;
|
||||
case 19:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryReplQReader";
|
||||
localisableCategory = SR.CategoryReplQReader;
|
||||
break;
|
||||
case 20:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryReplication";
|
||||
localisableCategory = SR.CategoryReplication;
|
||||
break;
|
||||
case 98:
|
||||
case 99:
|
||||
localisableCategory = "LocalizableCategorySR.CategoryUncategorized";
|
||||
localisableCategory = SR.CategoryUncategorized;
|
||||
break;
|
||||
default:
|
||||
localisableCategory = defaultName;
|
||||
|
||||
@@ -81,6 +81,28 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.Agent
|
||||
// test
|
||||
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