diff --git a/ci.global.json b/ci.global.json index ce67766b..d20023b3 100644 --- a/ci.global.json +++ b/ci.global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.201" + "version": "10.0.203" } } diff --git a/src/Roastery/Roastery.csproj b/src/Roastery/Roastery.csproj index 8b6a076c..3a9f8487 100644 --- a/src/Roastery/Roastery.csproj +++ b/src/Roastery/Roastery.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/SeqCli/Api/ApiConstants.cs b/src/SeqCli/Api/ApiConstants.cs index 58e5576b..138382dd 100644 --- a/src/SeqCli/Api/ApiConstants.cs +++ b/src/SeqCli/Api/ApiConstants.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Api/SeqConnectionFactory.cs b/src/SeqCli/Api/SeqConnectionFactory.cs index 76c4bf18..1f4c5859 100644 --- a/src/SeqCli/Api/SeqConnectionFactory.cs +++ b/src/SeqCli/Api/SeqConnectionFactory.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Apps/AppLoader.cs b/src/SeqCli/Apps/AppLoader.cs index 90872ef2..c0a03ff5 100644 --- a/src/SeqCli/Apps/AppLoader.cs +++ b/src/SeqCli/Apps/AppLoader.cs @@ -1,4 +1,4 @@ -// Copyright 2019 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Apps/Definitions/AppDefinition.cs b/src/SeqCli/Apps/Definitions/AppDefinition.cs index 5c9e1773..2d8a6488 100644 --- a/src/SeqCli/Apps/Definitions/AppDefinition.cs +++ b/src/SeqCli/Apps/Definitions/AppDefinition.cs @@ -1,4 +1,4 @@ -// Copyright 2020 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs b/src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs index c8c1223a..4b9741dc 100644 --- a/src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs +++ b/src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs @@ -1,4 +1,4 @@ -// Copyright 2020 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Apps/Definitions/AppMetadataReader.cs b/src/SeqCli/Apps/Definitions/AppMetadataReader.cs index 58269661..2bab3789 100644 --- a/src/SeqCli/Apps/Definitions/AppMetadataReader.cs +++ b/src/SeqCli/Apps/Definitions/AppMetadataReader.cs @@ -1,4 +1,4 @@ -// Copyright 2020 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs b/src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs index 9ded07b5..15bcd293 100644 --- a/src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs +++ b/src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs @@ -1,4 +1,4 @@ -// Copyright 2020 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Apps/Definitions/AppSettingDefinition.cs b/src/SeqCli/Apps/Definitions/AppSettingDefinition.cs index 00ebeb8e..5fdbb82b 100644 --- a/src/SeqCli/Apps/Definitions/AppSettingDefinition.cs +++ b/src/SeqCli/Apps/Definitions/AppSettingDefinition.cs @@ -1,4 +1,4 @@ -// Copyright 2020 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Apps/Definitions/AppSettingType.cs b/src/SeqCli/Apps/Definitions/AppSettingType.cs index c2e9175a..e749b641 100644 --- a/src/SeqCli/Apps/Definitions/AppSettingType.cs +++ b/src/SeqCli/Apps/Definitions/AppSettingType.cs @@ -1,4 +1,4 @@ -// Copyright 2020 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Apps/Definitions/AppSettingValue.cs b/src/SeqCli/Apps/Definitions/AppSettingValue.cs index 246a640a..037d4b1d 100644 --- a/src/SeqCli/Apps/Definitions/AppSettingValue.cs +++ b/src/SeqCli/Apps/Definitions/AppSettingValue.cs @@ -1,4 +1,4 @@ -// Copyright 2020 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Apps/Hosting/AppActivator.cs b/src/SeqCli/Apps/Hosting/AppActivator.cs index 7f084174..6c747de6 100644 --- a/src/SeqCli/Apps/Hosting/AppActivator.cs +++ b/src/SeqCli/Apps/Hosting/AppActivator.cs @@ -1,4 +1,4 @@ -// Copyright 2020 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Apps/Hosting/AppHost.cs b/src/SeqCli/Apps/Hosting/AppHost.cs index 09a5c62e..3f48e118 100644 --- a/src/SeqCli/Apps/Hosting/AppHost.cs +++ b/src/SeqCli/Apps/Hosting/AppHost.cs @@ -1,4 +1,4 @@ -// Copyright 2019 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Apps/Hosting/EventFormat.cs b/src/SeqCli/Apps/Hosting/EventFormat.cs index f9bd960e..1ff23253 100644 --- a/src/SeqCli/Apps/Hosting/EventFormat.cs +++ b/src/SeqCli/Apps/Hosting/EventFormat.cs @@ -1,4 +1,4 @@ -// Copyright 2019 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Command.cs b/src/SeqCli/Cli/Command.cs index b0ed94df..4b366b49 100644 --- a/src/SeqCli/Cli/Command.cs +++ b/src/SeqCli/Cli/Command.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/CommandAttribute.cs b/src/SeqCli/Cli/CommandAttribute.cs index 60facce0..332fcd08 100644 --- a/src/SeqCli/Cli/CommandAttribute.cs +++ b/src/SeqCli/Cli/CommandAttribute.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/CommandFeature.cs b/src/SeqCli/Cli/CommandFeature.cs index 80997d58..2be4024f 100644 --- a/src/SeqCli/Cli/CommandFeature.cs +++ b/src/SeqCli/Cli/CommandFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/CommandLineHost.cs b/src/SeqCli/Cli/CommandLineHost.cs index d48eb561..8b1298fe 100644 --- a/src/SeqCli/Cli/CommandLineHost.cs +++ b/src/SeqCli/Cli/CommandLineHost.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/CommandMetadata.cs b/src/SeqCli/Cli/CommandMetadata.cs index cc7bf027..ae631bf7 100644 --- a/src/SeqCli/Cli/CommandMetadata.cs +++ b/src/SeqCli/Cli/CommandMetadata.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs b/src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs index 5ebbfb08..fe514434 100644 --- a/src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs +++ b/src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs b/src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs index 3e2a9dbf..4cd44f5c 100644 --- a/src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs +++ b/src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs b/src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs index b3789c91..ac5900b8 100644 --- a/src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs +++ b/src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/App/DefineCommand.cs b/src/SeqCli/Cli/Commands/App/DefineCommand.cs index 56909bbb..40e2a54f 100644 --- a/src/SeqCli/Cli/Commands/App/DefineCommand.cs +++ b/src/SeqCli/Cli/Commands/App/DefineCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2020 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/App/RunCommand.cs b/src/SeqCli/Cli/Commands/App/RunCommand.cs index a3590f46..be6542c8 100644 --- a/src/SeqCli/Cli/Commands/App/RunCommand.cs +++ b/src/SeqCli/Cli/Commands/App/RunCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2019 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Config/LegacyCommand.cs b/src/SeqCli/Cli/Commands/Config/LegacyCommand.cs index a23b46bc..5deb9852 100644 --- a/src/SeqCli/Cli/Commands/Config/LegacyCommand.cs +++ b/src/SeqCli/Cli/Commands/Config/LegacyCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018-2021 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs b/src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs index 89dc94c1..7d9cc7a2 100644 --- a/src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs +++ b/src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs b/src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs index c16dc0a9..28c0845c 100644 --- a/src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs +++ b/src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs b/src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs index 4d78f61b..80ed95e9 100644 --- a/src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs +++ b/src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -181,7 +181,7 @@ static string BuildSqlQuery(ChartQueryPart query, DateTime rangeStart, DateTime foreach (var measurement in query.Measurements) sql.Select(measurement.Value, measurement.Label); - sql.FromStream = true; + sql.From = query.DataSource.ToString().ToLowerInvariant(); sql.Where($"@Timestamp >= DateTime('{rangeStart:O}')"); sql.Where($"@Timestamp < DateTime('{rangeEnd:O}')"); diff --git a/src/SeqCli/Cli/Commands/Events/DeleteCommand.cs b/src/SeqCli/Cli/Commands/Events/DeleteCommand.cs index 2e9aa26e..8ae6927b 100644 --- a/src/SeqCli/Cli/Commands/Events/DeleteCommand.cs +++ b/src/SeqCli/Cli/Commands/Events/DeleteCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2026 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs b/src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs index 38784e73..d660404b 100644 --- a/src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs +++ b/src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Feed/CreateCommand.cs b/src/SeqCli/Cli/Commands/Feed/CreateCommand.cs index 2a4543ff..306e4dc0 100644 --- a/src/SeqCli/Cli/Commands/Feed/CreateCommand.cs +++ b/src/SeqCli/Cli/Commands/Feed/CreateCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Feed/ListCommand.cs b/src/SeqCli/Cli/Commands/Feed/ListCommand.cs index d4b15670..f203018f 100644 --- a/src/SeqCli/Cli/Commands/Feed/ListCommand.cs +++ b/src/SeqCli/Cli/Commands/Feed/ListCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs b/src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs index 4710d24f..898b55f0 100644 --- a/src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs +++ b/src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs b/src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs index fadb3a80..e08fb32c 100644 --- a/src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs +++ b/src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs @@ -15,7 +15,6 @@ using System; using System.Diagnostics.CodeAnalysis; using System.IO; -using System.Runtime.InteropServices; using System.Security.AccessControl; using System.Threading.Tasks; using SeqCli.Cli.Features; diff --git a/src/SeqCli/Cli/Commands/HelpCommand.cs b/src/SeqCli/Cli/Commands/HelpCommand.cs index fe502899..f926e341 100644 --- a/src/SeqCli/Cli/Commands/HelpCommand.cs +++ b/src/SeqCli/Cli/Commands/HelpCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Index/ListCommand.cs b/src/SeqCli/Cli/Commands/Index/ListCommand.cs index 780e510b..9452f36d 100644 --- a/src/SeqCli/Cli/Commands/Index/ListCommand.cs +++ b/src/SeqCli/Cli/Commands/Index/ListCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Index/SuppressCommand.cs b/src/SeqCli/Cli/Commands/Index/SuppressCommand.cs index 27517e29..da742ed1 100644 --- a/src/SeqCli/Cli/Commands/Index/SuppressCommand.cs +++ b/src/SeqCli/Cli/Commands/Index/SuppressCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/IngestCommand.cs b/src/SeqCli/Cli/Commands/IngestCommand.cs index 3eb2f822..b965ddb3 100644 --- a/src/SeqCli/Cli/Commands/IngestCommand.cs +++ b/src/SeqCli/Cli/Commands/IngestCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/LogCommand.cs b/src/SeqCli/Cli/Commands/LogCommand.cs index a360ba32..6873f9e6 100644 --- a/src/SeqCli/Cli/Commands/LogCommand.cs +++ b/src/SeqCli/Cli/Commands/LogCommand.cs @@ -1,6 +1,6 @@ using System; using System.Collections.Generic; -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/PrintCommand.cs b/src/SeqCli/Cli/Commands/PrintCommand.cs index 51d845ab..4eca68ec 100644 --- a/src/SeqCli/Cli/Commands/PrintCommand.cs +++ b/src/SeqCli/Cli/Commands/PrintCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2019 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/QueryCommand.cs b/src/SeqCli/Cli/Commands/QueryCommand.cs index 95b63481..17381bea 100644 --- a/src/SeqCli/Cli/Commands/QueryCommand.cs +++ b/src/SeqCli/Cli/Commands/QueryCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs b/src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs index 5947752d..4c9c5bdb 100644 --- a/src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs +++ b/src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs @@ -14,6 +14,7 @@ using System; using System.Threading.Tasks; +using Seq.Api.Model.Shared; using Seq.Api.Model.Signals; using SeqCli.Api; using SeqCli.Cli.Features; @@ -26,7 +27,7 @@ namespace SeqCli.Cli.Commands.RetentionPolicy; [Command("retention", "create", "Create a retention policy", - Example = "seqcli retention create --after 30d --delete-all-events")] + Example = "seqcli retention create --after 30d --data-source stream --delete-all")] class CreateCommand : Command { readonly ConnectionFeature _connection; @@ -34,7 +35,8 @@ class CreateCommand : Command readonly StoragePathFeature _storagePath; string? _afterDuration; - bool _deleteAllEvents; + bool _deleteAll; + string? _dataSource; string? _deleteMatchingSignal; public CreateCommand() @@ -43,21 +45,36 @@ public CreateCommand() "after=", "A duration after which the policy will delete events, e.g. `7d`", v => _afterDuration = ArgumentString.Normalize(v)); - + Options.Add( - "delete-all-events", - "The policy should delete all events (currently the only supported option)", - _ => _deleteAllEvents = true); + "data-source=", + "The data source to delete records from (`stream` for log events and traces, or `series` for metrics); defaults to `stream`", + v => _dataSource = ArgumentString.Normalize(v)); + + Options.Add( + "delete-all", + "The policy should delete all records in the target data source after the specified duration", + _ => _deleteAll = true); Options.Add( "delete=", - "Stream incoming events to this app instance as they're ingested; optionally accepts a signal expression limiting which events should be streamed", + "A signal expression identifying events that should be deleted; not supported by the `series` data source", s => { _deleteMatchingSignal = s; } ); - + + // Maintained for compatibility in Seq 2026.x; intended to be retired in 2027. + Options.Add( + "delete-all-events", + "The policy should delete all events from `stream`", + _ => + { + _deleteAll = true; + _dataSource = null; + }, hidden: true); + _connection = Enable(); _output = Enable(); _storagePath = Enable(); @@ -71,11 +88,11 @@ protected override async Task Run() SignalExpressionPart? removedSignalExpression; // Exactly one of `delete-all-events` or `delete` must be specified - if (_deleteAllEvents) + if (_deleteAll) { if (!string.IsNullOrEmpty(_deleteMatchingSignal)) { - Log.Error("Only one of the `delete-all-events` or `delete` options may be specified"); + Log.Error("Only one of the `--delete-all` or `--delete` options may be specified"); return 1; } @@ -83,7 +100,7 @@ protected override async Task Run() } else if (string.IsNullOrEmpty(_deleteMatchingSignal)) { - Log.Error("Either the `delete-all-events` or `delete` options must be specified"); + Log.Error("One of either the `--delete-all` or `--delete` options must be specified"); return 1; } else @@ -93,15 +110,34 @@ protected override async Task Run() if (_afterDuration == null) { - Log.Error("A duration must be specified using `after`"); + Log.Error("A duration must be specified using `--after`"); return 1; } var duration = DurationMoniker.ToTimeSpan(_afterDuration); - + + if (_dataSource == null) + { + Log.Error("Use `--data-source` to specify `stream` or `series` as the retention target"); + return 1; + } + + if (!Enum.TryParse(_dataSource, ignoreCase: true, out DataSource dataSource)) + { + Log.Error("The `--data-source` option supports `stream` and `series`"); + return 1; + } + + if (removedSignalExpression != null && dataSource != DataSource.Stream) + { + Log.Error("The `--delete` option is only valid when `--data-source` is `stream`"); + return 1; + } + var policy = await connection.RetentionPolicies.TemplateAsync(); policy.RetentionTime = duration; policy.RemovedSignalExpression = removedSignalExpression; + policy.DataSource = dataSource; policy = await connection.RetentionPolicies.AddAsync(policy); diff --git a/src/SeqCli/Cli/Commands/SearchCommand.cs b/src/SeqCli/Cli/Commands/SearchCommand.cs index 41a7539b..2d096195 100644 --- a/src/SeqCli/Cli/Commands/SearchCommand.cs +++ b/src/SeqCli/Cli/Commands/SearchCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Signal/CreateCommand.cs b/src/SeqCli/Cli/Commands/Signal/CreateCommand.cs index 414d124a..43ef8187 100644 --- a/src/SeqCli/Cli/Commands/Signal/CreateCommand.cs +++ b/src/SeqCli/Cli/Commands/Signal/CreateCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Signal/ImportCommand.cs b/src/SeqCli/Cli/Commands/Signal/ImportCommand.cs index d810c8b5..2e0c0741 100644 --- a/src/SeqCli/Cli/Commands/Signal/ImportCommand.cs +++ b/src/SeqCli/Cli/Commands/Signal/ImportCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Signal/ListCommand.cs b/src/SeqCli/Cli/Commands/Signal/ListCommand.cs index 24932b36..883d1448 100644 --- a/src/SeqCli/Cli/Commands/Signal/ListCommand.cs +++ b/src/SeqCli/Cli/Commands/Signal/ListCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/Signal/RemoveCommand.cs b/src/SeqCli/Cli/Commands/Signal/RemoveCommand.cs index 75a5a397..06f65a60 100644 --- a/src/SeqCli/Cli/Commands/Signal/RemoveCommand.cs +++ b/src/SeqCli/Cli/Commands/Signal/RemoveCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/TailCommand.cs b/src/SeqCli/Cli/Commands/TailCommand.cs index 26510b84..75fa33b4 100644 --- a/src/SeqCli/Cli/Commands/TailCommand.cs +++ b/src/SeqCli/Cli/Commands/TailCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/User/CreateCommand.cs b/src/SeqCli/Cli/Commands/User/CreateCommand.cs index e670b9f7..c2adc9c0 100644 --- a/src/SeqCli/Cli/Commands/User/CreateCommand.cs +++ b/src/SeqCli/Cli/Commands/User/CreateCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/User/ListCommand.cs b/src/SeqCli/Cli/Commands/User/ListCommand.cs index 52965047..62ae3979 100644 --- a/src/SeqCli/Cli/Commands/User/ListCommand.cs +++ b/src/SeqCli/Cli/Commands/User/ListCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/User/RemoveCommand.cs b/src/SeqCli/Cli/Commands/User/RemoveCommand.cs index 8616fafa..c855c2ad 100644 --- a/src/SeqCli/Cli/Commands/User/RemoveCommand.cs +++ b/src/SeqCli/Cli/Commands/User/RemoveCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/VersionCommand.cs b/src/SeqCli/Cli/Commands/VersionCommand.cs index 411d7523..69050da1 100644 --- a/src/SeqCli/Cli/Commands/VersionCommand.cs +++ b/src/SeqCli/Cli/Commands/VersionCommand.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Commands/View/CreateCommand.cs b/src/SeqCli/Cli/Commands/View/CreateCommand.cs new file mode 100644 index 00000000..dfecae50 --- /dev/null +++ b/src/SeqCli/Cli/Commands/View/CreateCommand.cs @@ -0,0 +1,112 @@ +// Copyright © Datalust and contributors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Seq.Api.Model.Shared; +using Seq.Api.Model.Signals; +using SeqCli.Api; +using SeqCli.Cli.Features; +using SeqCli.Config; +using SeqCli.Util; +using Serilog; + +namespace SeqCli.Cli.Commands.View; + +[Command("view", "create", "Create a metrics view", + Example = "seqcli view create -t 'API' -g '@Scope.name' -f \"@Resource.service.name = 'seq_cafe_web'\"")] +class CreateCommand : Command +{ + readonly ConnectionFeature _connection; + readonly OutputFormatFeature _output; + readonly StoragePathFeature _storagePath; + + string? _title, _description, _filter; + readonly List _groups = []; + bool _isProtected; + + public CreateCommand() + { + Options.Add( + "t=|title=", + "A title for the view", + t => _title = ArgumentString.Normalize(t)); + + Options.Add( + "description=", + "A description for the view", + d => _description = ArgumentString.Normalize(d)); + + Options.Add( + "f=|filter=", + "Expression filter to associate with the view", + f => _filter = ArgumentString.Normalize(f)); + + Options.Add( + "g=|group=", + "Group key expression to associate with the view; this argument can be used multiple times", + c => _groups.Add(ArgumentString.Normalize(c) ?? throw new ArgumentException("Group keys require a value."))); + + Options.Add( + "protected", + "Specify that the view is editable only by administrators", + _ => _isProtected = true); + + _connection = Enable(); + _output = Enable(); + _storagePath = Enable(); + } + + protected override async Task Run() + { + var config = RuntimeConfigurationLoader.Load(_storagePath); + var connection = SeqConnectionFactory.Connect(_connection, config); + + if (string.IsNullOrEmpty(_title)) + { + Log.Error("A title must be specified"); + return 1; + } + + var view = await connection.Views.TemplateAsync(); + view.OwnerId = null; + + view.Title = _title; + view.Description = _description; + view.IsProtected = _isProtected; + + if (_filter != null) + { + view.Filters = new[] + { + new DescriptiveFilterPart + { + Filter = (await connection.Expressions.ToStrictAsync(_filter)).StrictExpression, + FilterNonStrict = _filter + } + }.ToList(); + } + + foreach (var group in _groups) + view.GroupKeyExpressions.Add(group); + + view = await connection.Views.AddAsync(view); + + _output.GetOutputFormat(config).WriteEntity(view); + + return 0; + } +} \ No newline at end of file diff --git a/src/SeqCli/Cli/Commands/View/ListCommand.cs b/src/SeqCli/Cli/Commands/View/ListCommand.cs new file mode 100644 index 00000000..5acc0f0a --- /dev/null +++ b/src/SeqCli/Cli/Commands/View/ListCommand.cs @@ -0,0 +1,56 @@ +// Copyright © Datalust and contributors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System; +using System.Linq; +using System.Threading.Tasks; +using SeqCli.Api; +using SeqCli.Cli.Features; +using SeqCli.Config; + +namespace SeqCli.Cli.Commands.View; + +[Command("view", "list", "List available metrics views", Example="seqcli view list")] +class ListCommand : Command +{ + readonly EntityIdentityFeature _entityIdentity; + readonly ConnectionFeature _connection; + readonly OutputFormatFeature _output; + readonly EntityOwnerFeature _entityOwner; + readonly StoragePathFeature _storagePath; + + public ListCommand() + { + _entityIdentity = Enable(new EntityIdentityFeature("view", "list")); + _entityOwner = Enable(new EntityOwnerFeature("view", "list", "listed", _entityIdentity)); + _output = Enable(); + _storagePath = Enable(); + _connection = Enable(); + } + + protected override async Task Run() + { + var config = RuntimeConfigurationLoader.Load(_storagePath); + var connection = SeqConnectionFactory.Connect(_connection, config); + + var list = _entityIdentity.Id != null ? [await connection.Views.FindAsync(_entityIdentity.Id)] + : + (await connection.Views.ListAsync(ownerId: _entityOwner.OwnerId, shared: _entityOwner.IncludeShared)) + .Where(signal => _entityIdentity.Title == null || _entityIdentity.Title == signal.Title); + + _output.GetOutputFormat(config).ListEntities(list); + + return 0; + } +} \ No newline at end of file diff --git a/src/SeqCli/Cli/Commands/View/RemoveCommand.cs b/src/SeqCli/Cli/Commands/View/RemoveCommand.cs new file mode 100644 index 00000000..b5569e11 --- /dev/null +++ b/src/SeqCli/Cli/Commands/View/RemoveCommand.cs @@ -0,0 +1,70 @@ +// Copyright © Datalust and contributors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System; +using System.Linq; +using System.Threading.Tasks; +using SeqCli.Api; +using SeqCli.Cli.Features; +using SeqCli.Config; +using Serilog; + +namespace SeqCli.Cli.Commands.View; + +[Command("view", "remove", "Remove a metrics view from the server", + Example = "seqcli view remove -t 'Test View'")] +class RemoveCommand : Command +{ + readonly EntityIdentityFeature _entityIdentity; + readonly ConnectionFeature _connection; + readonly EntityOwnerFeature _entityOwner; + readonly StoragePathFeature _storagePath; + + public RemoveCommand() + { + _entityIdentity = Enable(new EntityIdentityFeature("view", "remove")); + _entityOwner = Enable(new EntityOwnerFeature("view", "remove", "removed", _entityIdentity)); + _connection = Enable(); + _storagePath = Enable(); + } + + protected override async Task Run() + { + if (_entityIdentity.Title == null && _entityIdentity.Id == null) + { + Log.Error("A `title` or `id` must be specified"); + return 1; + } + + var config = RuntimeConfigurationLoader.Load(_storagePath); + var connection = SeqConnectionFactory.Connect(_connection, config); + + var toRemove = _entityIdentity.Id != null ? [await connection.Views.FindAsync(_entityIdentity.Id)] + : + (await connection.Views.ListAsync(ownerId: _entityOwner.OwnerId, shared: _entityOwner.IncludeShared)) + .Where(signal => _entityIdentity.Title == signal.Title) + .ToArray(); + + if (!toRemove.Any()) + { + Log.Error("No matching view was found"); + return 1; + } + + foreach (var signal in toRemove) + await connection.Views.RemoveAsync(signal); + + return 0; + } +} \ No newline at end of file diff --git a/src/SeqCli/Cli/Commands/View/UpdateCommand.cs b/src/SeqCli/Cli/Commands/View/UpdateCommand.cs new file mode 100644 index 00000000..a1a20b6b --- /dev/null +++ b/src/SeqCli/Cli/Commands/View/UpdateCommand.cs @@ -0,0 +1,24 @@ +// Copyright © Datalust Pty Ltd and Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using Seq.Api; + +namespace SeqCli.Cli.Commands.View; + +[Command("view", "update", + "Update an existing metrics view", + Example="seqcli view update --json '{...}'")] +class UpdateCommand(): + Shared.UpdateCommand("view", nameof(SeqConnection.Views)); + \ No newline at end of file diff --git a/src/SeqCli/Cli/Commands/Workspace/CreateCommand.cs b/src/SeqCli/Cli/Commands/Workspace/CreateCommand.cs index cf4999d1..1554708e 100644 --- a/src/SeqCli/Cli/Commands/Workspace/CreateCommand.cs +++ b/src/SeqCli/Cli/Commands/Workspace/CreateCommand.cs @@ -37,7 +37,7 @@ public CreateCommand() Options.Add( "c=|content=", - "The id of a dashboard, signal, or saved query to include in the workspace", + "The id of a dashboard, signal, saved query, or view to include in the workspace", d => _include.Add(ArgumentString.Normalize(d))); Options.Add( @@ -65,6 +65,7 @@ protected override async Task Run() workspace.Content.DashboardIds.AddRange(_include.Where(s => s?.StartsWith("dashboard-") ?? false)); workspace.Content.QueryIds.AddRange(_include.Where(s => s?.StartsWith("sqlquery-") ?? false)); workspace.Content.SignalIds.AddRange(_include.Where(s => s?.StartsWith("signal-") ?? false)); + workspace.Content.ViewIds.AddRange(_include.Where(s => s?.StartsWith("view-") ?? false)); workspace = await connection.Workspaces.AddAsync(workspace); diff --git a/src/SeqCli/Cli/Features/ConnectionFeature.cs b/src/SeqCli/Cli/Features/ConnectionFeature.cs index e832e8c9..11c2c59c 100644 --- a/src/SeqCli/Cli/Features/ConnectionFeature.cs +++ b/src/SeqCli/Cli/Features/ConnectionFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Features/DateRangeFeature.cs b/src/SeqCli/Cli/Features/DateRangeFeature.cs index b88f60cf..509afc50 100644 --- a/src/SeqCli/Cli/Features/DateRangeFeature.cs +++ b/src/SeqCli/Cli/Features/DateRangeFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Features/EntityIdentityFeature.cs b/src/SeqCli/Cli/Features/EntityIdentityFeature.cs index a6f9dab2..57aceee2 100644 --- a/src/SeqCli/Cli/Features/EntityIdentityFeature.cs +++ b/src/SeqCli/Cli/Features/EntityIdentityFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Features/EntityOwnerFeature.cs b/src/SeqCli/Cli/Features/EntityOwnerFeature.cs index ae0f5188..d2f56bc6 100644 --- a/src/SeqCli/Cli/Features/EntityOwnerFeature.cs +++ b/src/SeqCli/Cli/Features/EntityOwnerFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Features/FileInputFeature.cs b/src/SeqCli/Cli/Features/FileInputFeature.cs index a38110f2..3c4ed0a5 100644 --- a/src/SeqCli/Cli/Features/FileInputFeature.cs +++ b/src/SeqCli/Cli/Features/FileInputFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Features/InvalidDataHandlingFeature.cs b/src/SeqCli/Cli/Features/InvalidDataHandlingFeature.cs index af7c308d..910d0aa2 100644 --- a/src/SeqCli/Cli/Features/InvalidDataHandlingFeature.cs +++ b/src/SeqCli/Cli/Features/InvalidDataHandlingFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Features/PropertiesFeature.cs b/src/SeqCli/Cli/Features/PropertiesFeature.cs index 3000952a..fd0dde48 100644 --- a/src/SeqCli/Cli/Features/PropertiesFeature.cs +++ b/src/SeqCli/Cli/Features/PropertiesFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Features/SendFailureHandlingFeature.cs b/src/SeqCli/Cli/Features/SendFailureHandlingFeature.cs index 97892e73..19f6fe10 100644 --- a/src/SeqCli/Cli/Features/SendFailureHandlingFeature.cs +++ b/src/SeqCli/Cli/Features/SendFailureHandlingFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Features/SettingNameFeature.cs b/src/SeqCli/Cli/Features/SettingNameFeature.cs index c089c2a6..025ac25a 100644 --- a/src/SeqCli/Cli/Features/SettingNameFeature.cs +++ b/src/SeqCli/Cli/Features/SettingNameFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Features/SignalExpressionFeature.cs b/src/SeqCli/Cli/Features/SignalExpressionFeature.cs index bc190249..54522c15 100644 --- a/src/SeqCli/Cli/Features/SignalExpressionFeature.cs +++ b/src/SeqCli/Cli/Features/SignalExpressionFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Features/UserIdentityFeature.cs b/src/SeqCli/Cli/Features/UserIdentityFeature.cs index 8a9cc748..c9976f3d 100644 --- a/src/SeqCli/Cli/Features/UserIdentityFeature.cs +++ b/src/SeqCli/Cli/Features/UserIdentityFeature.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/ICommandMetadata.cs b/src/SeqCli/Cli/ICommandMetadata.cs index 89143c23..55a0bb21 100644 --- a/src/SeqCli/Cli/ICommandMetadata.cs +++ b/src/SeqCli/Cli/ICommandMetadata.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Cli/Printing.cs b/src/SeqCli/Cli/Printing.cs index 2784f16c..96b726b4 100644 --- a/src/SeqCli/Cli/Printing.cs +++ b/src/SeqCli/Cli/Printing.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Config/SeqCliConfig.cs b/src/SeqCli/Config/SeqCliConfig.cs index 4a0bec4f..c28f9f89 100644 --- a/src/SeqCli/Config/SeqCliConfig.cs +++ b/src/SeqCli/Config/SeqCliConfig.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Config/SeqCliConnectionConfig.cs b/src/SeqCli/Config/SeqCliConnectionConfig.cs index e5af87ca..4fe093cf 100644 --- a/src/SeqCli/Config/SeqCliConnectionConfig.cs +++ b/src/SeqCli/Config/SeqCliConnectionConfig.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Config/SeqCliOutputConfig.cs b/src/SeqCli/Config/SeqCliOutputConfig.cs index 18529c90..9fa2626d 100644 --- a/src/SeqCli/Config/SeqCliOutputConfig.cs +++ b/src/SeqCli/Config/SeqCliOutputConfig.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Forwarder/ServiceProcess/SeqCliForwarderWindowsService.cs b/src/SeqCli/Forwarder/ServiceProcess/SeqCliForwarderWindowsService.cs index 6b83458f..b07a25ac 100644 --- a/src/SeqCli/Forwarder/ServiceProcess/SeqCliForwarderWindowsService.cs +++ b/src/SeqCli/Forwarder/ServiceProcess/SeqCliForwarderWindowsService.cs @@ -1,4 +1,4 @@ -// Copyright 2020 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Ingestion/InvalidDataHandling.cs b/src/SeqCli/Ingestion/InvalidDataHandling.cs index 0e88b914..facceb01 100644 --- a/src/SeqCli/Ingestion/InvalidDataHandling.cs +++ b/src/SeqCli/Ingestion/InvalidDataHandling.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Ingestion/JsonLogEventReader.cs b/src/SeqCli/Ingestion/JsonLogEventReader.cs index 7d5d9d90..719da10c 100644 --- a/src/SeqCli/Ingestion/JsonLogEventReader.cs +++ b/src/SeqCli/Ingestion/JsonLogEventReader.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Ingestion/LogShipper.cs b/src/SeqCli/Ingestion/LogShipper.cs index 337e5008..97060913 100644 --- a/src/SeqCli/Ingestion/LogShipper.cs +++ b/src/SeqCli/Ingestion/LogShipper.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Ingestion/ScalarPropertyEnricher.cs b/src/SeqCli/Ingestion/ScalarPropertyEnricher.cs index 7846358e..7146c7e7 100644 --- a/src/SeqCli/Ingestion/ScalarPropertyEnricher.cs +++ b/src/SeqCli/Ingestion/ScalarPropertyEnricher.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Ingestion/SendFailureHandling.cs b/src/SeqCli/Ingestion/SendFailureHandling.cs index ae9cb221..91a38833 100644 --- a/src/SeqCli/Ingestion/SendFailureHandling.cs +++ b/src/SeqCli/Ingestion/SendFailureHandling.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Mapping/LevelMapping.cs b/src/SeqCli/Mapping/LevelMapping.cs index 99d16aa8..ff79087b 100644 --- a/src/SeqCli/Mapping/LevelMapping.cs +++ b/src/SeqCli/Mapping/LevelMapping.cs @@ -1,4 +1,4 @@ -// Copyright 2019 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Output/RedundantEventTypeRemovalEnricher.cs b/src/SeqCli/Output/RedundantEventTypeRemovalEnricher.cs index d422af32..d32e6666 100644 --- a/src/SeqCli/Output/RedundantEventTypeRemovalEnricher.cs +++ b/src/SeqCli/Output/RedundantEventTypeRemovalEnricher.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/PlainText/Framing/Frame.cs b/src/SeqCli/PlainText/Framing/Frame.cs index 7c0dbf44..0c81c7e7 100644 --- a/src/SeqCli/PlainText/Framing/Frame.cs +++ b/src/SeqCli/PlainText/Framing/Frame.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/PlainText/Framing/FrameReader.cs b/src/SeqCli/PlainText/Framing/FrameReader.cs index 3488b3ec..b117b9e1 100644 --- a/src/SeqCli/PlainText/Framing/FrameReader.cs +++ b/src/SeqCli/PlainText/Framing/FrameReader.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/PlainText/LogEvents/LogEventBuilder.cs b/src/SeqCli/PlainText/LogEvents/LogEventBuilder.cs index bab68619..adf1f87d 100644 --- a/src/SeqCli/PlainText/LogEvents/LogEventBuilder.cs +++ b/src/SeqCli/PlainText/LogEvents/LogEventBuilder.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/PlainText/LogEvents/TextOnlyException.cs b/src/SeqCli/PlainText/LogEvents/TextOnlyException.cs index 35024ea7..614c927f 100644 --- a/src/SeqCli/PlainText/LogEvents/TextOnlyException.cs +++ b/src/SeqCli/PlainText/LogEvents/TextOnlyException.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Program.cs b/src/SeqCli/Program.cs index c6e12e12..f58599da 100644 --- a/src/SeqCli/Program.cs +++ b/src/SeqCli/Program.cs @@ -1,4 +1,4 @@ -// Copyright 2018-2019 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/SeqCli.csproj b/src/SeqCli/SeqCli.csproj index 6d99f8a8..ce5d3ea0 100644 --- a/src/SeqCli/SeqCli.csproj +++ b/src/SeqCli/SeqCli.csproj @@ -32,21 +32,21 @@ - - + + - - - - - + + + + + - + diff --git a/src/SeqCli/SeqCliModule.cs b/src/SeqCli/SeqCliModule.cs index 2cfc7fb7..0c1cb00e 100644 --- a/src/SeqCli/SeqCliModule.cs +++ b/src/SeqCli/SeqCliModule.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Signals/SignalExpressionParser.cs b/src/SeqCli/Signals/SignalExpressionParser.cs index b4970bd0..ed3e12db 100644 --- a/src/SeqCli/Signals/SignalExpressionParser.cs +++ b/src/SeqCli/Signals/SignalExpressionParser.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Signals/SignalExpressionToken.cs b/src/SeqCli/Signals/SignalExpressionToken.cs index 6b4becfb..1968aef1 100644 --- a/src/SeqCli/Signals/SignalExpressionToken.cs +++ b/src/SeqCli/Signals/SignalExpressionToken.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Signals/SignalExpressionTokenizer.cs b/src/SeqCli/Signals/SignalExpressionTokenizer.cs index 2e667529..853677e4 100644 --- a/src/SeqCli/Signals/SignalExpressionTokenizer.cs +++ b/src/SeqCli/Signals/SignalExpressionTokenizer.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Syntax/CombinedFilterBuilder.cs b/src/SeqCli/Syntax/CombinedFilterBuilder.cs index 90753295..21de240d 100644 --- a/src/SeqCli/Syntax/CombinedFilterBuilder.cs +++ b/src/SeqCli/Syntax/CombinedFilterBuilder.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Syntax/DurationMoniker.cs b/src/SeqCli/Syntax/DurationMoniker.cs index c02a2398..a579ff8d 100644 --- a/src/SeqCli/Syntax/DurationMoniker.cs +++ b/src/SeqCli/Syntax/DurationMoniker.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Syntax/QueryBuilder.cs b/src/SeqCli/Syntax/QueryBuilder.cs index b2338ec4..41e3459f 100644 --- a/src/SeqCli/Syntax/QueryBuilder.cs +++ b/src/SeqCli/Syntax/QueryBuilder.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -21,18 +21,18 @@ namespace SeqCli.Syntax; class QueryBuilder { - readonly List<(string, string)> _columns = new(); + readonly List<(string, string?)> _columns = new(); readonly List _where = new(); readonly List _groupBy = new(); readonly List _having = new(); - public void Select(string value, string label) + public void Select(string value, string? label) { if (value == null) throw new ArgumentNullException(nameof(value)); _columns.Add((value, label)); } - public bool FromStream { get; set; } + public string? From { get; set; } public void Where(string predicate) { @@ -74,8 +74,8 @@ public string Build() result.Append($" as {label}"); } - if (FromStream) - result.Append(" from stream"); + if (From is {} from) + result.Append($" from {from}"); if (_where.Any()) { diff --git a/src/SeqCli/Util/ArgumentString.cs b/src/SeqCli/Util/ArgumentString.cs index 90c539e8..4544d395 100644 --- a/src/SeqCli/Util/ArgumentString.cs +++ b/src/SeqCli/Util/ArgumentString.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Util/DirectoryExt.cs b/src/SeqCli/Util/DirectoryExt.cs index 0d67992b..36728957 100644 --- a/src/SeqCli/Util/DirectoryExt.cs +++ b/src/SeqCli/Util/DirectoryExt.cs @@ -1,4 +1,4 @@ -// Copyright 2019 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Util/Presentation.cs b/src/SeqCli/Util/Presentation.cs index b6e498d2..125ee15b 100644 --- a/src/SeqCli/Util/Presentation.cs +++ b/src/SeqCli/Util/Presentation.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/SeqCli/Util/UserScopeDataProtection.cs b/src/SeqCli/Util/UserScopeDataProtection.cs index 481019fe..3b8afb33 100644 --- a/src/SeqCli/Util/UserScopeDataProtection.cs +++ b/src/SeqCli/Util/UserScopeDataProtection.cs @@ -1,4 +1,4 @@ -// Copyright 2018 Datalust Pty Ltd and Contributors +// Copyright © Datalust and contributors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/test/SeqCli.EndToEnd/Dashboard/RenderTestCase.cs b/test/SeqCli.EndToEnd/Dashboard/RenderTestCase.cs index 4c29aff9..e7baad65 100644 --- a/test/SeqCli.EndToEnd/Dashboard/RenderTestCase.cs +++ b/test/SeqCli.EndToEnd/Dashboard/RenderTestCase.cs @@ -7,6 +7,7 @@ namespace SeqCli.EndToEnd.Dashboard; +[CliTestCase(MinimumApiVersion = "2026.1.0")] public class RenderTestCase : ICliTestCase { public Task ExecuteAsync( diff --git a/test/SeqCli.EndToEnd/RetentionPolicy/RetentionPolicyBasicsTestCase.cs b/test/SeqCli.EndToEnd/RetentionPolicy/RetentionPolicyBasicsTestCase.cs index 2a64a0e8..7116cf9e 100644 --- a/test/SeqCli.EndToEnd/RetentionPolicy/RetentionPolicyBasicsTestCase.cs +++ b/test/SeqCli.EndToEnd/RetentionPolicy/RetentionPolicyBasicsTestCase.cs @@ -18,7 +18,7 @@ public async Task ExecuteAsync(SeqConnection connection, ILogger logger, CliComm exit = runner.Exec("retention list", "-i retentionpolicy-missing"); Assert.Equal(1, exit); - exit = runner.Exec("retention create", "--after 10h --delete-all-events"); + exit = runner.Exec("retention create", "--after 10h --data-source stream --delete-all"); Assert.Equal(0, exit); var id = runner.LastRunProcess.Output.Trim(); @@ -36,13 +36,13 @@ public async Task ExecuteAsync(SeqConnection connection, ILogger logger, CliComm Assert.Equal(1, exit); var deleteSignal = "signal-m33303,(signal-m33301~signal-m33302)"; - exit = runner.Exec("retention create", $"--after 10h --delete \"{deleteSignal}\""); + exit = runner.Exec("retention create", $"--after 10h --data-source stream --delete \"{deleteSignal}\""); Assert.Equal(0, exit); exit = runner.Exec("retention create", "--after 10h"); Assert.Equal(1, exit); - exit = runner.Exec("retention create", $"--after 10h --delete-all-events --delete \"{deleteSignal}\""); + exit = runner.Exec("retention create", $"--after 10h --data-source stream --delete-all --delete \"{deleteSignal}\""); Assert.Equal(1, exit); } } \ No newline at end of file diff --git a/test/SeqCli.EndToEnd/Templates/TemplateExportImportTestCase.cs b/test/SeqCli.EndToEnd/Templates/TemplateExportImportTestCase.cs index 1b5dc311..aa751ad1 100644 --- a/test/SeqCli.EndToEnd/Templates/TemplateExportImportTestCase.cs +++ b/test/SeqCli.EndToEnd/Templates/TemplateExportImportTestCase.cs @@ -8,7 +8,7 @@ namespace SeqCli.EndToEnd.Templates; -[CliTestCase(MinimumApiVersion = "2024.3.0")] +[CliTestCase(MinimumApiVersion = "2026.1.0")] public class TemplateExportImportTestCase : ICliTestCase { readonly TestDataFolder _testDataFolder; diff --git a/test/SeqCli.EndToEnd/Workspace/WorkspaceBasicsTestCase.cs b/test/SeqCli.EndToEnd/Workspace/WorkspaceBasicsTestCase.cs index e76c2f2c..114466cc 100644 --- a/test/SeqCli.EndToEnd/Workspace/WorkspaceBasicsTestCase.cs +++ b/test/SeqCli.EndToEnd/Workspace/WorkspaceBasicsTestCase.cs @@ -7,6 +7,7 @@ namespace SeqCli.EndToEnd.Workspace; +[CliTestCase(MinimumApiVersion = "2026.1.0")] class WorkspaceBasicsTestCase : ICliTestCase { public async Task ExecuteAsync( diff --git a/test/SeqCli.Tests/SeqCli.Tests.csproj b/test/SeqCli.Tests/SeqCli.Tests.csproj index 41b33c8d..e1bc6937 100644 --- a/test/SeqCli.Tests/SeqCli.Tests.csproj +++ b/test/SeqCli.Tests/SeqCli.Tests.csproj @@ -3,7 +3,7 @@ net10.0 - + all