From 99f89e02a8c65049167013c8d412e0f7e9bea6eb Mon Sep 17 00:00:00 2001 From: Steve Gordon Date: Thu, 22 Apr 2021 14:31:16 +0100 Subject: [PATCH] Support network direction processor additions (#5603) --- .../Processors/NetworkDirectionProcessor.cs | 15 +++++++- tests/Tests/Ingest/ProcessorAssertions.cs | 36 +++++++++++++++++-- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/Nest/Ingest/Processors/NetworkDirectionProcessor.cs b/src/Nest/Ingest/Processors/NetworkDirectionProcessor.cs index f2336207fd2..79ca46584de 100644 --- a/src/Nest/Ingest/Processors/NetworkDirectionProcessor.cs +++ b/src/Nest/Ingest/Processors/NetworkDirectionProcessor.cs @@ -17,7 +17,10 @@ public interface INetworkDirectionProcessor : IProcessor [DataMember(Name = "internal_networks")] IEnumerable InternalNetworks { get; set; } - + + [DataMember(Name = "internal_networks_field")] + Field InternalNetworksField { get; set; } + [DataMember(Name = "source_ip")] Field SourceIp { get; set; } @@ -36,6 +39,8 @@ public class NetworkDirectionProcessor : ProcessorBase, INetworkDirectionProcess /// public IEnumerable InternalNetworks { get; set; } /// + public Field InternalNetworksField { get; set; } + /// public Field SourceIp { get; set; } /// public Field TargetField { get; set; } @@ -51,6 +56,7 @@ public class NetworkDirectionProcessorDescriptor Field INetworkDirectionProcessor.DestinationIp { get; set; } bool? INetworkDirectionProcessor.IgnoreMissing { get; set; } IEnumerable INetworkDirectionProcessor.InternalNetworks { get; set; } + Field INetworkDirectionProcessor.InternalNetworksField { get; set; } Field INetworkDirectionProcessor.SourceIp { get; set; } Field INetworkDirectionProcessor.TargetField { get; set; } @@ -70,6 +76,13 @@ public NetworkDirectionProcessorDescriptor DestinationIp(Expression public NetworkDirectionProcessorDescriptor InternalNetworks(params string[] internalNetworks) => Assign(internalNetworks, (a, v) => a.InternalNetworks = v); + /// + public NetworkDirectionProcessorDescriptor InternalNetworksField(Field internalNetworksField) => Assign(internalNetworksField, (a, v) => a.InternalNetworksField = v); + + /// + public NetworkDirectionProcessorDescriptor InternalNetworksField(Expression> objectPath) => + Assign(objectPath, (a, v) => a.InternalNetworksField = v); + /// public NetworkDirectionProcessorDescriptor SourceIp(Field field) => Assign(field, (a, v) => a.SourceIp = v); diff --git a/tests/Tests/Ingest/ProcessorAssertions.cs b/tests/Tests/Ingest/ProcessorAssertions.cs index 748291c9e54..2e57e6b22e6 100644 --- a/tests/Tests/Ingest/ProcessorAssertions.cs +++ b/tests/Tests/Ingest/ProcessorAssertions.cs @@ -9,8 +9,6 @@ using Elastic.Elasticsearch.Xunit.XunitPlumbing; using Nest; using Tests.Core.Client; -using Tests.Core.Extensions; -using Tests.Core.Xunit; using Tests.Domain; using static Nest.Infer; @@ -818,5 +816,39 @@ public class NetworkDirection : ProcessorAssertion public override string Key => "network_direction"; } + + [SkipVersion("<7.13.0", "Uses internal_networks_field added in 7.13.0")] + public class NetworkDirectionWithField : ProcessorAssertion + { + // for testing, we use the developer first name field for the network field + + public override ProcFunc Fluent => d => d + .NetworkDirection(ud => ud + .DestinationIp(f => f.LeadDeveloper.IpAddress) + .SourceIp(f => f.LeadDeveloper.IpAddress) + .InternalNetworksField(f=> f.LeadDeveloper.FirstName) + .TargetField(p => p.Description) + .IgnoreMissing()); + + public override IProcessor Initializer => new NetworkDirectionProcessor + { + DestinationIp = Field(f => f.LeadDeveloper.IpAddress), + SourceIp = Field(f => f.LeadDeveloper.IpAddress), + InternalNetworksField = Field(f => f.LeadDeveloper.FirstName), + TargetField = "description", + IgnoreMissing = true + }; + + public override object Json => new + { + destination_ip = "leadDeveloper.ipAddress", + internal_networks_field = "leadDeveloper.firstName", + source_ip = "leadDeveloper.ipAddress", + target_field = "description", + ignore_missing = true + }; + + public override string Key => "network_direction"; + } } }