Example #1
0
        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;