public async Task <ModuleConfigurationFileUploadResult> ReadConfiguration(IOperation operation, UploadedFile file) { var configuration = ModuleConfigurationUtils.Parse(operation, file); if (!configuration.IsValid()) { throw CommonExceptions.ModuleConfigurationIsInvalid(operation); } var module = await moduleStore.GetModuleByAlias(operation, configuration.Alias); var result = new ModuleConfigurationFileUploadResult { FileId = await fileStore.Find(operation, file) ?? await fileStore.Upload(operation, file), Alias = configuration.Alias.ToUpper(), NewName = configuration.Name, NewVersion = configuration.Version, OperatingSystems = configuration.Instructions.Where(item => item.OperatingSystem.HasValue).Select(item => item.OperatingSystem.Value) }; if (module == null) { // Module is new for the system result.Verdict = ModuleConfigurationVerdict.NewModule; return(result); } // Module had already installed but update may be required result.ModuleId = module.Id; result.OldName = module.Name; result.OldVersion = module.Version; result.UserId = module.UserId; result.FirstName = module.FirstName; result.LastName = module.LastName; result.HostId = module.HostId; result.HostName = module.HostName; result.HostDomain = module.HostDomain; result.HostOperatingSystem = module.HostOperatingSystem; if (!result.OperatingSystems.Contains(module.HostOperatingSystem)) { // Configuration doesn't have instructions for OS which used on current host result.Verdict = ModuleConfigurationVerdict.BrokenChanges; return(result); } if (module.Status == ModuleStatus.Run || module.Status == ModuleStatus.Stopped || module.Status == ModuleStatus.FailedToRun || module.Status == ModuleStatus.FailedToStop) { // Module in stable mode: run or stopped result.Verdict = GetVerdict(operation, module.Version, configuration.Version); return(result); } result.Verdict = ModuleConfigurationVerdict.Updating; return(result); }
internal static ModuleConfigurationFileUploadResultModel ToModel(this ModuleConfigurationFileUploadResult entity) => new ModuleConfigurationFileUploadResultModel { ModuleId = entity.ModuleId, FileId = entity.FileId, Alias = entity.Alias, OldName = entity.OldName, NewName = entity.NewName, OldVersion = entity.OldVersion, NewVersion = entity.NewVersion, UserId = entity.UserId, FirstName = entity.FirstName, LastName = entity.LastName, HostId = entity.HostId, HostName = entity.HostName, HostDomain = entity.HostDomain, HostOperatingSystem = entity.HostOperatingSystem, OperatingSystems = entity.OperatingSystems, Verdict = entity.Verdict };