public LbRemoveApplicationInstanceResponse RemoveApplicationInstances(LbRemoveApplicationInstanceRequest request) { try { Log.Debug(this, "RemoveApplicationInstances()"); Authenticate(request); if ((request.NodeId != -1) && (request.ApplicationId != -1) && (request.InstanceId != -1)) { ApplicationInstance instance = Database.GetInstance().RoutingMesh.Find(x => (x.NodeId == request.NodeId) && (x.ApplicationId == request.ApplicationId) && (x.Id == request.InstanceId)); if (instance != null) { RemoveApplicationInstance_(instance); } } else if ((request.NodeId != -1) && (request.ApplicationId == -1) && (request.InstanceId == -1)) { Log.Debug(this, "Removing all application instances of node: " + request.NodeId); List <ApplicationInstance> toRemove = Database.GetInstance().RoutingMesh.FindAll(x => x.NodeId == request.NodeId); foreach (ApplicationInstance instance in toRemove) { RemoveApplicationInstance_(instance); } } LbRemoveApplicationInstanceResponse response = new LbRemoveApplicationInstanceResponse(); return(response); } catch (Exception e) { Log.Error(this, e); throw e; } }
public void UnSubscribeNode(ApUnSubscribeNodeRequest request) { Log.Debug(typeof(ApNodeControllerService), "UnSubscribeNode()"); try { Node node = Database.GetInstance().Nodes.Find(x => x.IpAddress.Equals(request.IpAddress)); if (node != null) { Database.GetInstance().Nodes.Remove(node); // Update routing mesh in the load balancer LbRemoveApplicationInstanceRequest request_ = new LbRemoveApplicationInstanceRequest(Credentials); request_.NodeId = node.Id; request_.ApplicationId = -1; request_.InstanceId = -1; EndPoints.GetLbApplicationGridService().RemoveApplicationInstances(request_); } Log.Debug(typeof(ApNodeControllerService), "Node " + node.IpAddress + " removed successfully"); } catch (Exception e) { Log.Error(this, e); throw e; } }
public ApStopApplicationInstanceResponse StopApplicationInstance(ApStopApplicationInstanceRequest request) { Log.Info(this, "StopApplicationInstance()"); try { Authenticate(request); ApStopApplicationInstanceResponse response = new ApStopApplicationInstanceResponse(); Node node = Database.GetInstance().Nodes.Where(x => x.Id == request.NodeId).FirstOrDefault(); if (node != null) { // Stop application instance in the node NcStopApplicationRequest ncRequest = new NcStopApplicationRequest(Credentials); ncRequest.ApplicationId = request.ApplicationId; ncRequest.InstanceId = request.InstanceId; EndPoints.GetNcApplicationGridService(node).StopApplicationInstance(ncRequest); // Update routing mesh in the load balancer LbRemoveApplicationInstanceRequest request_ = new LbRemoveApplicationInstanceRequest(Credentials); request_.NodeId = request.NodeId; request_.ApplicationId = request.ApplicationId; request_.InstanceId = request.InstanceId; EndPoints.GetLbApplicationGridService().RemoveApplicationInstances(request_); } else { throw new MonoscapeException("Node not found"); } return(response); } catch (Exception e) { Log.Error(this, e); throw e; } }