public async Task <ModuleEntity> GetModule(IOperation operation, int moduleId) { if (!await moduleStore.IsModuleExists(operation, moduleId)) { throw CommonExceptions.ModuleWasNotFound(operation, moduleId); } var module = await moduleStore.GetModule(operation, moduleId); var fileIds = module.Configurations.Select(item => item.FileId).ToList(); var files = (await fileStore.Download(operation, fileIds)).ToList(); foreach (var configuration in module.Configurations) { configuration.File = files.FirstOrDefault(file => file.Id == configuration.FileId); var fileConfiguration = ModuleConfigurationUtils.Parse(operation, configuration.File); if (!fileConfiguration.IsValid()) { throw CommonExceptions.ModuleConfigurationIsInvalid(operation); } configuration.OperatingSystems = fileConfiguration.Instructions.Where(item => item.OperatingSystem.HasValue).Select(item => item.OperatingSystem.Value); } return(module); }
protected override void ExecuteWithFallback(IOperation operation, IOperationLogger logger) { if (!moduleStore.IsModuleExists(operation, ModuleId).Result) { throw CommonExceptions.ModuleWasNotFound(operation, ModuleId); } logger.Debug($"[Operation: {operation.ComplexOperationId}, module: {ModuleId}] Starting to download module file configuration").Wait(); var module = moduleStore.GetModule(operation, ModuleId).Result; var fileId = (Regression ? Action switch { ActionType.Upgrade => module.PreviousConfiguration, ActionType.Downgrade => module.NextConfiguration, ActionType.NoChanges => module.CurrentConfiguration, _ => throw CommonExceptions.ModuleConfigurationWasNotFound(operation) } : module.CurrentConfiguration).FileId;