public ActionResult <string> DeleteInstance([FromRoute] string appName, [FromRoute] string instanceID, [FromServices] IPublishChangesService publishService, [FromServices] IMemoryDiscoveryClientRepository clientRepo, [FromServices] IPublishClientsService clientPublishService) { var tenantId = this.GetTenantIdFromRouteData(); var clientHostname = Request.HttpContext.Connection.RemoteIpAddress.ToString(); clientRepo.Add(new DiscoveryClient(clientHostname)); clientPublishService.PublishClientDiscoveryActivity(tenantId, clientHostname); MemoryServicesRepository repo = new MemoryServicesRepository(tenantId, Program.InstanceConfig.EvictionInSecs); var instance = repo.Delete(appName, instanceID); if (instance != null) { publishService.PublishDeletedInstance(instance.TenantId, appName, instanceID); this.HttpContext.Response.StatusCode = 200; } else { this.HttpContext.Response.StatusCode = 500; } return(string.Empty); }
public void ProcessInstanceDelete(MQTTMessage mqttMessage, string topic) { InstanceHealthService.Health.MQTTMessagesReceived += 1; var receivedMessage = mqttMessage.Message.ToString().Replace("'", "\""); var messageContent = JsonConvert.DeserializeObject <MQTTInstanceDeleteMessageContent>(receivedMessage); if (messageContent != null && mqttMessage.FromInstanceId.CompareTo(Program.InstanceConfig.ServerInstanceID) != 0) { var memoryRepo = new MemoryServicesRepository(messageContent.TenantId, Program.InstanceConfig.EvictionInSecs); memoryRepo.Delete(messageContent.AppName, messageContent.InstanceId); } }