Example #1
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 public TrainingController(
     ITrainingHistoryRepository trainingHistoryRepository,
     IInferenceHistoryRepository inferenceHistoryRepository,
     ITensorBoardContainerRepository tensorBoardContainerRepository,
     IDataSetRepository dataSetRepository,
     ITagRepository tagRepository,
     ITenantRepository tenantRepository,
     INodeRepository nodeRepository,
     ITagLogic tagLogic,
     ITrainingLogic trainingLogic,
     IStorageLogic storageLogic,
     IGitLogic gitLogic,
     IClusterManagementLogic clusterManagementLogic,
     IOptions <ContainerManageOptions> containerOptions,
     IUnitOfWork unitOfWork,
     IHttpContextAccessor accessor) : base(accessor)
 {
     this.trainingHistoryRepository      = trainingHistoryRepository;
     this.inferenceHistoryRepository     = inferenceHistoryRepository;
     this.tensorBoardContainerRepository = tensorBoardContainerRepository;
     this.dataSetRepository      = dataSetRepository;
     this.tagRepository          = tagRepository;
     this.tenantRepository       = tenantRepository;
     this.nodeRepository         = nodeRepository;
     this.tagLogic               = tagLogic;
     this.trainingLogic          = trainingLogic;
     this.storageLogic           = storageLogic;
     this.gitLogic               = gitLogic;
     this.clusterManagementLogic = clusterManagementLogic;
     this.containerOptions       = containerOptions.Value;
     this.unitOfWork             = unitOfWork;
 }
 /// <summary>
 /// コンストラクタ
 /// </summary>
 public InferenceController(
     ITrainingHistoryRepository trainingHistoryRepository,
     IInferenceHistoryRepository inferenceHistoryRepository,
     IDataSetRepository dataSetRepository,
     ITenantRepository tenantRepository,
     INodeRepository nodeRepository,
     IDataSetLogic dataSetLogic,
     IInferenceLogic inferenceLogic,
     IStorageLogic storageLogic,
     IGitLogic gitLogic,
     IClusterManagementLogic clusterManagementLogic,
     IUnitOfWork unitOfWork,
     IHttpContextAccessor accessor) : base(accessor)
 {
     this.trainingHistoryRepository  = trainingHistoryRepository;
     this.inferenceHistoryRepository = inferenceHistoryRepository;
     this.dataSetRepository          = dataSetRepository;
     this.tenantRepository           = tenantRepository;
     this.nodeRepository             = nodeRepository;
     this.dataSetLogic           = dataSetLogic;
     this.inferenceLogic         = inferenceLogic;
     this.storageLogic           = storageLogic;
     this.gitLogic               = gitLogic;
     this.clusterManagementLogic = clusterManagementLogic;
     this.unitOfWork             = unitOfWork;
 }
Example #3
0
 public InferenceLogic(
     IInferenceHistoryRepository inferenceHistoryRepository,
     IClusterManagementLogic clusterManagementLogic,
     IUnitOfWork unitOfWork,
     ICommonDiLogic commonDiLogic) : base(commonDiLogic)
 {
     this.inferenceHistoryRepository = inferenceHistoryRepository;
     this.clusterManagementLogic     = clusterManagementLogic;
     this.unitOfWork = unitOfWork;
 }
Example #4
0
 public DataSetLogic(IDataSetRepository dataSetRepository,
                     IInferenceHistoryRepository inferenceHistoryRepository,
                     ITrainingHistoryRepository trainingHistoryRepository,
                     IAquariumDataSetVersionRepository aquariumDataSetVersionRepository,
                     ICommonDiLogic commonDiLogic)
     : base(commonDiLogic)
 {
     DataSetRepository                = dataSetRepository;
     InferenceHistoryRepository       = inferenceHistoryRepository;
     TrainingHistoryRepository        = trainingHistoryRepository;
     AquariumDataSetVersionRepository = aquariumDataSetVersionRepository;
 }
 public ExperimentController(
     IExperimentRepository experimentRepository,
     IExperimentPreprocessRepository experimentPreprocessRepository,
     IAquariumDataSetRepository aquariumDataSetRepository,
     IDataSetRepository dataSetRepository,
     IGitRepository gitRepository,
     IRegistryRepository registryRepository,
     ITrainingHistoryRepository trainingHistoryRepository,
     ITemplateRepository templateRepository,
     ITemplateVersionRepository templateVersionRepository,
     ITenantRepository tenantRepository,
     INodeRepository nodeRepository,
     ITemplateLogic templateLogic,
     ITagLogic tagLogic,
     IGitLogic gitLogic,
     IClusterManagementLogic clusterManagementLogic,
     IDataSetLogic dataSetLogic,
     IRegistryLogic registryLogic,
     IUnitOfWork unitOfWork,
     IInferenceHistoryRepository inferenceHistoryRepository,
     ITensorBoardContainerRepository tensorBoardContainerRepository,
     ITagRepository tagRepository,
     IStorageLogic storageLogic,
     IHttpContextAccessor accessor) : base(accessor)
 {
     this.trainingHistoryRepository      = trainingHistoryRepository;
     this.experimentRepository           = experimentRepository;
     this.experimentPreprocessRepository = experimentPreprocessRepository;
     this.aquariumDataSetRepository      = aquariumDataSetRepository;
     this.dataSetRepository         = dataSetRepository;
     this.gitRepository             = gitRepository;
     this.registryRepository        = registryRepository;
     this.templateRepository        = templateRepository;
     this.templateVersionRepository = templateVersionRepository;
     this.tenantRepository          = tenantRepository;
     this.nodeRepository            = nodeRepository;
     this.templateLogic             = templateLogic;
     this.tagLogic = tagLogic;
     this.gitLogic = gitLogic;
     this.clusterManagementLogic         = clusterManagementLogic;
     this.dataSetLogic                   = dataSetLogic;
     this.registryLogic                  = registryLogic;
     this.inferenceHistoryRepository     = inferenceHistoryRepository;
     this.tensorBoardContainerRepository = tensorBoardContainerRepository;
     this.tagRepository                  = tagRepository;
     this.storageLogic                   = storageLogic;
     this.unitOfWork = unitOfWork;
 }
 public TrainingController(
     ITrainingHistoryRepository trainingHistoryRepository,
     IInferenceHistoryRepository inferenceHistoryRepository,
     ITensorBoardContainerRepository tensorBoardContainerRepository,
     IDataSetRepository dataSetRepository,
     ITrainingLogic trainingLogic,
     IStorageLogic storageLogic,
     IGitLogic gitLogic,
     IClusterManagementLogic clusterManagementLogic,
     IUnitOfWork unitOfWork,
     IHttpContextAccessor accessor) : base(accessor)
 {
     this.clusterManagementLogic         = clusterManagementLogic;
     this.trainingHistoryRepository      = trainingHistoryRepository;
     this.inferenceHistoryRepository     = inferenceHistoryRepository;
     this.tensorBoardContainerRepository = tensorBoardContainerRepository;
     this.dataSetRepository = dataSetRepository;
     this.trainingLogic     = trainingLogic;
     this.storageLogic      = storageLogic;
     this.gitLogic          = gitLogic;
     this.unitOfWork        = unitOfWork;
 }
Example #7
0
        public async Task <IActionResult> Delete(long?id,
                                                 [FromServices] IPreprocessRepository preprocessRepository,
                                                 [FromServices] INotebookHistoryRepository notebookHistoryRepository,
                                                 [FromServices] ITrainingHistoryRepository trainingHistoryRepository,
                                                 [FromServices] IInferenceHistoryRepository inferenceHistoryRepository
                                                 )
        {
            // データの入力チェック
            if (id == null)
            {
                return(JsonBadRequest("Invalid inputs."));
            }

            // データの存在チェック
            var registry = await registryRepository.GetByIdAsync(id.Value);

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

            // データの編集可否チェック
            if (registry.IsNotEditable)
            {
                return(JsonBadRequest($"Registry ID {id.Value} is not allowed to delete."));
            }

            // このレジストリを登録しているテナントがいた場合、削除はできない
            var tenant = registryRepository.GetTenant(registry.Id);

            if (tenant != null)
            {
                return(JsonConflict($"Registry {registry.Id}:{registry.Name} is used at Tenant {tenant.Id}:{tenant.Name}."));
            }

            // このレジストリを使った履歴がある場合、削除はできない
            // 前処理チェック
            var preprocessing = preprocessRepository.Find(p => p.ContainerRegistryId == registry.Id);

            if (preprocessing != null)
            {
                return(JsonConflict($"Registry {registry.Id}:{registry.Name} is used at preprocessing {preprocessing.Id} in Tenant {preprocessing.TenantId}."));
            }
            // ノートブック履歴チェック
            var notebook = notebookHistoryRepository.Find(n => n.ContainerRegistryId == registry.Id);

            if (notebook != null)
            {
                return(JsonConflict($"Registry {registry.Id}:{registry.Name} is used at notebook {notebook.Id} in Tenant {notebook.TenantId}."));
            }
            // 学習履歴チェック
            var training = trainingHistoryRepository.Find(t => t.ContainerRegistryId == registry.Id);

            if (training != null)
            {
                return(JsonConflict($"Registry {registry.Id}:{registry.Name} is used at training {training.Id} in Tenant {training.TenantId}."));
            }
            // 推論履歴チェック
            var inference = inferenceHistoryRepository.Find(i => i.ContainerRegistryId == registry.Id);

            if (inference != null)
            {
                return(JsonConflict($"Registry {registry.Id}:{registry.Name} is used at inference {inference.Id} in Tenant {inference.TenantId}."));
            }

            // クラスタ管理サービス側の登録情報は特に削除しない(残っていても問題ない)
            registryRepository.Delete(registry);
            unitOfWork.Commit();

            return(JsonNoContent());
        }
Example #8
0
        public async Task <IActionResult> Delete(long?id,
                                                 [FromServices] IPreprocessRepository preprocessRepository,
                                                 [FromServices] INotebookHistoryRepository notebookHistoryRepository,
                                                 [FromServices] ITrainingHistoryRepository trainingHistoryRepository,
                                                 [FromServices] IInferenceHistoryRepository inferenceHistoryRepository
                                                 )
        {
            // データの入力チェック
            if (id == null)
            {
                return(JsonBadRequest("Invalid inputs."));
            }

            // データの存在チェック
            var git = await gitRepository.GetByIdAsync(id.Value);

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

            // データの編集可否チェック
            if (git.IsNotEditable)
            {
                return(JsonBadRequest($"Git ID {id.Value} is not allowed to delete."));
            }

            // このGitを登録しているテナントがいた場合、削除はできない
            var tenant = gitRepository.GetTenant(git.Id);

            if (tenant != null)
            {
                return(JsonConflict($"Git {git.Id}:{git.Name} is used at Tenant {tenant.Id}:{tenant.Name}."));
            }

            // このGitを使った履歴がある場合、削除はできない
            // 前処理チェック
            var preprocessing = preprocessRepository.Find(p => p.RepositoryGitId == git.Id);

            if (preprocessing != null)
            {
                return(JsonConflict($"Git {git.Id}:{git.Name} is used at preprocessing {preprocessing.Id} in Tenant {preprocessing.TenantId}."));
            }
            // ノートブック履歴チェック
            var notebook = notebookHistoryRepository.Find(n => n.ModelGitId == git.Id);

            if (notebook != null)
            {
                return(JsonConflict($"Git {git.Id}:{git.Name} is used at notebook {notebook.Id} in Tenant {notebook.TenantId}."));
            }
            // 学習履歴チェック
            var training = trainingHistoryRepository.Find(t => t.ModelGitId == git.Id);

            if (training != null)
            {
                return(JsonConflict($"Git {git.Id}:{git.Name} is used at training {training.Id} in Tenant {training.TenantId}."));
            }
            // 推論履歴チェック
            var inference = inferenceHistoryRepository.Find(i => i.ModelGitId == git.Id);

            if (inference != null)
            {
                return(JsonConflict($"Git {git.Id}:{git.Name} is used at inference {inference.Id} in Tenant {inference.TenantId}."));
            }

            gitRepository.Delete(git);
            unitOfWork.Commit();

            return(JsonNoContent());
        }