From 984e707eac7c694d141da5e97eaf279025d59201 Mon Sep 17 00:00:00 2001 From: David Bond Date: Tue, 12 Nov 2024 12:04:17 +0000 Subject: [PATCH] Added Connectwise Manage Integration support --- .../Settings/IntegrationTests.cs | 2 +- LogicMonitor.Api.dic | 1 + .../Converters/IntegrationsConverter.cs | 1 + .../LogicMonitorClient_Settings.cs | 6 - .../Settings/AutoTaskIntegration.cs | 6 + .../Settings/ConnectwiseManageIntegration.cs | 105 ++++++++++++++++++ 6 files changed, 114 insertions(+), 7 deletions(-) create mode 100644 LogicMonitor.Api/Settings/ConnectwiseManageIntegration.cs diff --git a/LogicMonitor.Api.Test/Settings/IntegrationTests.cs b/LogicMonitor.Api.Test/Settings/IntegrationTests.cs index a2b3c76b..9c021785 100644 --- a/LogicMonitor.Api.Test/Settings/IntegrationTests.cs +++ b/LogicMonitor.Api.Test/Settings/IntegrationTests.cs @@ -17,7 +17,7 @@ public async Task GetIntegrations() public async Task GetIntegrationAuditLogs() { var auditLogs = await LogicMonitorClient - .GetIntegrationAuditLogsAsync() + .GetIntegrationAuditLogsAsync(default) .ConfigureAwait(true); auditLogs.Items.Should().NotBeEmpty(); diff --git a/LogicMonitor.Api.dic b/LogicMonitor.Api.dic index dc360d15..5f8eb756 100644 --- a/LogicMonitor.Api.dic +++ b/LogicMonitor.Api.dic @@ -57,6 +57,7 @@ Cim Cognito color configsources +Connectwise Datacenter datafetch datapoint diff --git a/LogicMonitor.Api/Converters/IntegrationsConverter.cs b/LogicMonitor.Api/Converters/IntegrationsConverter.cs index bf415402..f2740a1e 100644 --- a/LogicMonitor.Api/Converters/IntegrationsConverter.cs +++ b/LogicMonitor.Api/Converters/IntegrationsConverter.cs @@ -14,6 +14,7 @@ protected override Integration Create(Type objectType, JObject jObject) "servicenow" => new ServiceNowIntegration(), "email" => new EmailIntegration(), "autotask" => new AutoTaskIntegration(), + "connectwise-2" => new ConnectwiseManageIntegration(), "pagerduty" => new PagerDutyIntegration(), "jsm" => new JiraServiceManagementIntegration(), _ => throw new NotSupportedException($"{integration} deserialization not supported. IntegrationsConverter.cs needs updating."), diff --git a/LogicMonitor.Api/LogicMonitorClient_Settings.cs b/LogicMonitor.Api/LogicMonitorClient_Settings.cs index 0038b153..47149b00 100644 --- a/LogicMonitor.Api/LogicMonitorClient_Settings.cs +++ b/LogicMonitor.Api/LogicMonitorClient_Settings.cs @@ -80,12 +80,6 @@ public Task GetEscalationChainAsync( public Task SaveAlertRuleAsync(AlertRule alertRule, CancellationToken cancellationToken) => PutAsync($"setting/alert/rules/{alertRule.Id}?data=%5Bobject+Object%5D", alertRule, cancellationToken); - /// - /// get integration audit logs list - /// - public Task> GetIntegrationAuditLogsAsync() - => GetIntegrationAuditLogsAsync(CancellationToken.None); - /// /// get integration audit logs list /// diff --git a/LogicMonitor.Api/Settings/AutoTaskIntegration.cs b/LogicMonitor.Api/Settings/AutoTaskIntegration.cs index ca71ffab..1a29a315 100644 --- a/LogicMonitor.Api/Settings/AutoTaskIntegration.cs +++ b/LogicMonitor.Api/Settings/AutoTaskIntegration.cs @@ -6,6 +6,12 @@ namespace LogicMonitor.Api.Settings; [DataContract] public class AutoTaskIntegration : HttpIntegration { + /// + /// The zone + /// + [DataMember(Name = "isRest")] + public bool IsRest { get; set; } + /// /// The zone /// diff --git a/LogicMonitor.Api/Settings/ConnectwiseManageIntegration.cs b/LogicMonitor.Api/Settings/ConnectwiseManageIntegration.cs new file mode 100644 index 00000000..c5ada468 --- /dev/null +++ b/LogicMonitor.Api/Settings/ConnectwiseManageIntegration.cs @@ -0,0 +1,105 @@ +namespace LogicMonitor.Api.Settings; + +/// +/// A Connectwise Manage integration +/// +[DataContract] +public class ConnectwiseManageIntegration : HttpIntegration +{ + /// + /// The Server + /// + [DataMember(Name = "connectwiseServer")] + public string ConnectwiseServer { get; set; } = string.Empty; + + /// + /// The Company + /// + [DataMember(Name = "connectwiseCompany")] + public string ConnectwiseCompany { get; set; } = string.Empty; + + /// + /// The Public Key + /// + [DataMember(Name = "publicKey")] + public string PublicKey { get; set; } = string.Empty; + + /// + /// The Private Key + /// + [DataMember(Name = "privateKey")] + public string PrivateKey { get; set; } = string.Empty; + + /// + /// How the connection is authenticated + /// + [DataMember(Name = "connectWiseAuthenticated")] + public bool ConnectWiseAuthenticated { get; set; } + + /// + /// The Service Board Id + /// + [DataMember(Name = "serviceBoardId")] + public int ServiceBoardId { get; set; } + + /// + /// The Service Team Id + /// + [DataMember(Name = "serviceTeamId")] + public int ServiceTeamId { get; set; } + + /// + /// The default company ID to use if none is specified in the alert + /// + [DataMember(Name = "connectWiseCompanyId")] + public int DefaultCompanyId { get; set; } + + /// + /// The ticket type ID + /// + [DataMember(Name = "ticketTypeId")] + public int TicketTypeId { get; set; } + + /// + /// The warn priority ID + /// + [DataMember(Name = "warnPriorityId")] + public int WarnPriorityId { get; set; } + + /// + /// The error priority ID + /// + [DataMember(Name = "errorPriorityId")] + public int ErrorPriorityId { get; set; } + + /// + /// The critical priority ID + /// + [DataMember(Name = "criticalPriorityId")] + public int CriticalPriorityId { get; set; } + + /// + /// The status to use for new tickets + /// + [DataMember(Name = "statusNewTicket")] + public int StatusNewTicket { get; set; } + + /// + /// The status to use for updated tickets + /// + [DataMember(Name = "statusUpdateTicket")] + public int StatusUpdateTicket { get; set; } + + /// + /// The status to use for clear tickets + /// + [DataMember(Name = "statusClearTicket")] + public int StatusClearTicket { get; set; } + + /// + /// The status to use for acknowledged tickets + /// + [DataMember(Name = "statusAckTicket")] + public int StatusAckTicket { get; set; } +} +