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()); }
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());
public async Task <int> Execute() { try { KongConfiguration = await KongReader.GetConfiguration(); } catch { return(ExitWithCode.Return(ExitCode.HostUnreachable)); } return(await DoExecute()); }
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)); }
protected void KongIsReachable() => GetMock <IKongAdminReader>().Setup(x => x.GetConfiguration()).ReturnsAsync(KongConfiguration = Fixture.Create <KongConfiguration>());