Пример #1
0
        public async Task DeleteAsync(string id)
        {
            _nodeRepository.Delete(id);

            var node = await _nodeRepository.GetAsync(n => n.Id == id);

            if (node.ChildCount > 0)
            {
                throw new Exception("Node has children.");
            }

            if (!string.IsNullOrEmpty(node.ParentId))
            {
                var parent = await _nodeRepository.GetAsync(n => n.Id == node.ParentId);

                parent.ChildCount--;
                await _nodeRepository.UpdateAsync(parent);
            }
            if (!string.IsNullOrEmpty(node.Path))
            {
                var nodes = await GetAncestors(node);

                foreach (var ancestorNode in nodes)
                {
                    ancestorNode.DescendantCount--;
                    await _nodeRepository.UpdateAsync(ancestorNode);
                }
            }

            await _nodeRepository.SaveChangesAsync();
        }
Пример #2
0
        public async Task <IActionResult> Delete(long?id)
        {
            //データの入力チェック
            if (id == null)
            {
                return(JsonBadRequest("Invalid inputs."));
            }
            //データの存在チェック
            var node = await nodeRepository.GetByIdAsync(id.Value);

            if (node == null)
            {
                return(JsonNotFound($"Node ID {id.Value} is not found."));
            }

            if (string.IsNullOrEmpty(node.Partition) != false)
            {
                //パーティションが設定されていたら、消す
                //既にノードが外されている場合を考慮し、もし失敗しても気にせず削除処理を続ける
                await clusterManagementLogic.UpdatePartitionLabelAsync(node.Name, "");
            }

            nodeRepository.ResetAssinedTenants(node.Id);
            nodeRepository.Delete(node);
            unitOfWork.Commit();

            return(JsonNoContent());
        }
Пример #3
0
        public async Task <IActionResult> Delete(long?id,
                                                 [FromServices] ITenantRepository tenantRepository)
        {
            //データの入力チェック
            if (id == null)
            {
                return(JsonBadRequest("Invalid inputs."));
            }
            //データの存在チェック
            var node = await nodeRepository.GetByIdAsync(id.Value);

            if (node == null)
            {
                return(JsonNotFound($"Node ID {id.Value} is not found."));
            }

            // 削除対象のノードでコンテナ稼働中の場合、削除しない
            var response = await clusterManagementLogic.GetAllContainerDetailsInfosAsync();

            if (response.IsSuccess)
            {
                int runningCount = 0;
                foreach (var container in response.Value)
                {
                    // ステータスによらず、全て稼働中と見做す
                    if (node.Name.Equals(container.NodeName))
                    {
                        runningCount++;
                    }
                }
                if (runningCount > 0)
                {
                    return(JsonConflict($"Running containers exists deleting node. node name=[{node.Name}], running container count=[{runningCount}]"));
                }
            }

            if (string.IsNullOrEmpty(node.Partition) != false)
            {
                //パーティションが設定されていたら、消す
                //既にノードが外されている場合を考慮し、もし失敗しても気にせず削除処理を続ける
                await clusterManagementLogic.UpdatePartitionLabelAsync(node.Name, "");
            }

            // 全てのアサイン情報を削除する
            var tenants = tenantRepository.GetAllTenants();

            foreach (Tenant tenant in tenants)
            {
                await clusterManagementLogic.UpdateTenantEnabledLabelAsync(node.Name, tenant.Name, false);
            }

            // KQI管理者用名前空間のアサイン情報を削除する
            await clusterManagementLogic.UpdateTenantEnabledLabelAsync(node.Name, containerManageOptions.KqiAdminNamespace, false);

            nodeRepository.ResetAssinedTenants(node.Id);
            nodeRepository.Delete(node);
            unitOfWork.Commit();

            return(JsonNoContent());
        }
Пример #4
0
        public void DeleteNodes(int id)
        {
            var mainNode = _nodeRepository.Get(id);

            foreach (Node node in mainNode.ChildNodes.ToList())
            {
                if (node.ChildNodes.Count() > 0)
                {
                    DeleteNodes(node.Id);
                }
                else
                {
                    _nodeRepository.Delete(node.Id);
                }
            }
            _nodeRepository.Delete(id);
        }
Пример #5
0
        public void Delete(int id)
        {
            var item = _repository.GetAll().FirstOrDefault(u => u.Id == id);

            if (item != null)
            {
                _repository.Delete(item);
                _repository.SaveCganges();
            }
        }
Пример #6
0
        public async Task <IActionResult> Delete(string name)
        {
            var nodeFromDb = await _nodeRepository.GetNode(name);

            if (nodeFromDb == null)
            {
                return(new NotFoundResult());
            }
            await _nodeRepository.Delete(name);

            return(new OkResult());
        }
Пример #7
0
        public ICommandResult Handle(DeleteNodeCommand command)
        {
            //Fail Fast Validation
            command.Validate();
            if (command.Invalid)
            {
                return(new GenericCommandResult(false, Messages.Ex_ExceptionGeneric, command.Notifications));
            }

            var node = _repository.GetById(command.Id);

            if (node == null)
            {
                return(new GenericCommandResult(false, Messages.Ex_ItemNotFound.ToFormat(command.Id.ToString() ?? ""), command.Notifications));
            }

            _repository.Delete(node);

            return(new GenericCommandResult(true, Messages.Act_Deleted, node));
        }
Пример #8
0
        public async Task<BlResult> DeleteAsync(int id)
        {
            BlResult blResult = new BlResult();

            try
            {
                var entity = await _nodeRepository.GetByIdWithReferencAsync(id);

                if (entity != null)
                {
                    if (entity.ConnectionsFrom.Count + entity.ConnectionsTo.Count > 0)
                    {
                        blResult.Fail(ConstDictionary.CantDeleteNodeWithConnections);
                    }
                    else
                    {
                        EnsureTransaction();
                        _nodeRepository.Delete(id);
                        await SaveChangesAsync();

                        blResult.Success();
                    }
                }
                else
                {
                    throw new ArgumentException();
                }
            }
            catch (ArgumentException)
            {
                blResult.Fail(BLErrorCodeTypeEnum.NoSuchEntityExistsWithID);
            }
            catch (Exception ex)
            {
                blResult.Fail(BLErrorCodeTypeEnum.Unknown, ex);
            }

            return blResult;
        }
Пример #9
0
        public async Task DeleteAsync(string id)
        {
            _nodeRepository.Delete(id);

            var node = await _nodeRepository.GetAsync(id);

            if (!string.IsNullOrEmpty(node.ParentId))
            {
                var parent = await _nodeRepository.GetAsync(node.ParentId);

                parent.ChildCount -= 1;
                _nodeRepository.Update(parent);
            }
            if (!string.IsNullOrEmpty(node.RootId))
            {
                var root = await _nodeRepository.GetAsync(node.RootId);

                root.DescendantCount -= 1;
                _nodeRepository.Update(root);
            }

            await _nodeRepository.SaveChangesAsync();
        }
Пример #10
0
 public void Remove(int id)
 {
     _repository.Delete(id);
 }
Пример #11
0
 public void Delete(Node node)
 {
     _session.Delete(node);
 }
Пример #12
0
 public void Reset()
 {
     _nodeRepository.Delete(RootNode.Id);
 }