Example #1
0
        public async Task <int> Execute()
        {
            try
            {
                KongConfiguration = await KongReader.GetConfiguration();
            }
            catch (Exception e) when(e is KongException || e is HttpRequestException)
            {
                return(ExitWithCode.Return(ExitCode.HostUnreachable, e.Message));
            }

            var versionSubStr = KongConfiguration.Version.Substring(0, 4);
            var version       = double.Parse(versionSubStr[3] == '.' ? versionSubStr.Substring(0, 3) : versionSubStr);

            if (KongConfiguration.Version.Contains("enterprise-edition"))
            {
                const double lowestSupportedVersion = 0.36;
                if (version < lowestSupportedVersion)
                {
                    return(ExitWithCode.Return(ExitCode.HostVersionNotSupported,
                                               $"This version of Kongverge can only support Kong enterprise from version {lowestSupportedVersion}-x"));
                }
            }
            else
            {
                const double lowestSupportedVersion = 1.4;
                if (version < lowestSupportedVersion)
                {
                    return(ExitWithCode.Return(ExitCode.HostVersionNotSupported,
                                               $"This version of Kongverge can only support Kong from version {lowestSupportedVersion}.x"));
                }
            }

            return(await DoExecute());
        }
Example #2
0
 protected void KongIsReachable(string version) => GetMock <IKongAdminReader>()
 .Setup(x => x.GetConfiguration())
 .ReturnsAsync(KongConfiguration = Fixture.Build <KongConfiguration>()
                                   .With(x => x.Plugins, new Plugins {
     Available = Plugins.ToDictionary(x => x.Name, x => true)
 })
                                   .With(x => x.Version, version)
                                   .Create());
Example #3
0
        public async Task <int> Execute()
        {
            try
            {
                KongConfiguration = await KongReader.GetConfiguration();
            }
            catch
            {
                return(ExitWithCode.Return(ExitCode.HostUnreachable));
            }

            return(await DoExecute());
        }
Example #4
0
        public async Task<int> Execute()
        {
            try
            {
                KongConfiguration = await KongReader.GetConfiguration();
            }
            catch (Exception e) when (e is KongException || e is HttpRequestException)
            {
                return ExitWithCode.Return(ExitCode.HostUnreachable, e.Message);
            }

            return await DoExecute();
        }
        public override async Task <int> DoExecute()
        {
            var schemas = KongConfiguration.GetSchemas(KongReader);
            KongvergeConfiguration targetConfiguration;

            try
            {
                targetConfiguration = await _configReader.ReadConfiguration(_arguments.InputFolder, schemas);
            }
            catch (DirectoryNotFoundException ex)
            {
                return(ExitWithCode.Return(ExitCode.InputFolderUnreachable, ex.Message));
            }
            catch (InvalidConfigurationFilesException ex)
            {
                return(ExitWithCode.Return(ExitCode.InvalidConfigurationFiles, ex.Message));
            }

            var existingConfiguration = await _configBuilder.FromKong(KongReader);

            try
            {
                await ConvergeConfiguration(existingConfiguration, targetConfiguration);
            }
            catch (KongException e) when(e.StatusCode == HttpStatusCode.BadRequest)
            {
                Log.Error(e, $"Error converging target configuration: {e}");
                var currentConfiguration = await _configBuilder.FromKong(KongReader);

                Log.Information($"Attempting rollback to previous configuration: {existingConfiguration}");
                await ConvergeConfiguration(currentConfiguration, existingConfiguration);

                return(ExitWithCode.Return(ExitCode.UnspecifiedError, "An error occurred while attempting to converge target configuration. Rollback was successful."));
            }

            return(ExitWithCode.Return(ExitCode.Success));
        }
Example #6
0
 protected void KongIsReachable() => GetMock <IKongAdminReader>().Setup(x => x.GetConfiguration()).ReturnsAsync(KongConfiguration = Fixture.Create <KongConfiguration>());