コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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;
            }
        }