diff --git a/appsettings.json b/appsettings.json index 1e7f402b9..7b2e53593 100644 --- a/appsettings.json +++ b/appsettings.json @@ -13,6 +13,14 @@ }, "MigrationTools": { "CommonEnrichers": { + "FieldMappingTool": { + "Enabled": false, + "FieldMaps": null + }, + "TfsChangeSetMappingTool": { + "Enabled": false, + "File": null + }, "TfsNodeStructure": { "Enabled": true, "NodeBasePaths": [], @@ -84,10 +92,6 @@ }, "TfsEmbededImagesEnricher": { "Enabled": true - }, - "TfsChangeSetMappingTool": { - "Enabled": false, - "File": "C:\\temp\\ChangeSetMappingFile.json" } }, "ProcessorDefaults": { diff --git a/configuration.json b/configuration.json index 0d4cea8d1..e686338c4 100644 --- a/configuration.json +++ b/configuration.json @@ -57,11 +57,11 @@ "ExportBasePath": "c:\\temp\\WorkItemAttachmentExport", "MaxRevisions": 480000000 }, - "TfsChangeSetMapping": { + "TfsChangeSetMappingTool": { "Enabled": true, "File": "C:\\temp\\ChangeSetMappingFile.json" }, - "TfsFieldMappings": { + "FieldMappingTool": { "Enabled": true, "FieldMaps": [ { diff --git a/docs/Reference/Generated/MigrationTools.xml b/docs/Reference/Generated/MigrationTools.xml index ffec74b29..8439a7de4 100644 --- a/docs/Reference/Generated/MigrationTools.xml +++ b/docs/Reference/Generated/MigrationTools.xml @@ -620,32 +620,32 @@ - => @"049b159" + => @"6777e3d" - => @"049b159d7b77b4f5ca691ea0a509211b96925fb9" + => @"6777e3d7b0610e90fe329be05c06d5ca27e8f858" - => @"2024-08-15T13:20:24+01:00" + => @"2024-08-15T13:34:07+01:00" - => @"58" + => @"57" - => @"v15.1.8-Preview.8-58-g049b159" + => @"v15.1.8-Preview.9-57-g6777e3d" - => @"v15.1.8-Preview.8" + => @"v15.1.8-Preview.9" @@ -675,17 +675,17 @@ - => @"66" + => @"65" - => @"Preview.8" + => @"Preview.9" - => @"-Preview.8" + => @"-Preview.9" diff --git a/src/MigrationTools.Clients.AzureDevops.ObjectModel/Enrichers/TfsStaticEnrichers.cs b/src/MigrationTools.Clients.AzureDevops.ObjectModel/Enrichers/TfsStaticEnrichers.cs index e3d80740b..9a838df65 100644 --- a/src/MigrationTools.Clients.AzureDevops.ObjectModel/Enrichers/TfsStaticEnrichers.cs +++ b/src/MigrationTools.Clients.AzureDevops.ObjectModel/Enrichers/TfsStaticEnrichers.cs @@ -24,7 +24,6 @@ public class TfsStaticEnrichers public TfsEmbededImagesEnricher EmbededImages { get; private set; } public TfsGitRepositoryEnricher GitRepository { get; private set; } - public TfsStaticEnrichers(ITelemetryLogger telemetry, ILogger logger, TfsUserMappingEnricher userMappingEnricher, @@ -34,7 +33,10 @@ public TfsStaticEnrichers(ITelemetryLogger telemetry, TfsWorkItemLinkEnricher workItemLinkEnricher, TfsWorkItemEmbededLinkEnricher workItemEmbeddedLinkEnricher, TfsValidateRequiredField requiredFieldValidator, - TfsTeamSettingsEnricher teamSettingsEnricher, TfsEmbededImagesEnricher embededImagesEnricher, TfsGitRepositoryEnricher tfsGitRepositoryEnricher) + TfsTeamSettingsEnricher teamSettingsEnricher, + TfsEmbededImagesEnricher embededImagesEnricher, + TfsGitRepositoryEnricher tfsGitRepositoryEnricher + ) { UserMapping = userMappingEnricher; Attachment = attachmentEnricher; @@ -46,7 +48,6 @@ public TfsStaticEnrichers(ITelemetryLogger telemetry, TeamSettings = teamSettingsEnricher; EmbededImages = embededImagesEnricher; GitRepository = tfsGitRepositoryEnricher; - } } diff --git a/src/MigrationTools.Clients.AzureDevops.ObjectModel/ProcessorEnrichers/TfsChangeSetMappingToolOptions.cs b/src/MigrationTools.Clients.AzureDevops.ObjectModel/ProcessorEnrichers/TfsChangeSetMappingToolOptions.cs index 398e050b8..2a6fe5b45 100644 --- a/src/MigrationTools.Clients.AzureDevops.ObjectModel/ProcessorEnrichers/TfsChangeSetMappingToolOptions.cs +++ b/src/MigrationTools.Clients.AzureDevops.ObjectModel/ProcessorEnrichers/TfsChangeSetMappingToolOptions.cs @@ -5,7 +5,7 @@ namespace MigrationTools.ProcessorEnrichers { public class TfsChangeSetMappingToolOptions : ProcessorEnricherOptions { - public const string ConfigurationSectionName = "MigrationTools:CommonEnrichers:ChangeSetMappingTool"; + public const string ConfigurationSectionName = "MigrationTools:CommonEnrichers:TfsChangeSetMappingTool"; public override Type ToConfigure => typeof(TfsChangeSetMappingTool); public string ChangeSetMappingFile { get; set; } diff --git a/src/MigrationTools.Clients.AzureDevops.ObjectModel/ServiceCollectionExtensions.cs b/src/MigrationTools.Clients.AzureDevops.ObjectModel/ServiceCollectionExtensions.cs index 606c3ea81..b018f9c61 100644 --- a/src/MigrationTools.Clients.AzureDevops.ObjectModel/ServiceCollectionExtensions.cs +++ b/src/MigrationTools.Clients.AzureDevops.ObjectModel/ServiceCollectionExtensions.cs @@ -32,17 +32,26 @@ public static void AddMigrationToolServicesForClientAzureDevOpsObjectModel(this switch (configuration.GetMigrationConfigVersion()) { case ConfigurationExtensions.MigrationConfigVersion.before16: - context.AddSingleton().AddSingleton>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15(TfsAttachmentEnricherOptions.ConfigurationSectionName))); + context.AddSingleton().AddSingleton>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15(TfsUserMappingEnricherOptions.ConfigurationSectionName))); + context.AddSingleton().AddSingleton>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15(TfsValidateRequiredFieldOptions.ConfigurationSectionName))); + context.AddSingleton().AddSingleton>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15(TfsWorkItemLinkEnricherOptions.ConfigurationSectionName))); + context.AddSingleton().AddSingleton>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15(TfsWorkItemEmbededLinkEnricherOptions.ConfigurationSectionName))); + context.AddSingleton().AddSingleton>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15(TfsEmbededImagesEnricherOptions.ConfigurationSectionName))); + context.AddSingleton().AddSingleton>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15(TfsGitRepositoryEnricherOptions.ConfigurationSectionName))); + context.AddSingleton().AddSingleton>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15(TfsNodeStructureOptions.ConfigurationSectionName))); + context.AddSingleton().AddSingleton>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15(TfsRevisionManagerOptions.ConfigurationSectionName))); + context.AddSingleton().AddSingleton>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15(TfsTeamSettingsEnricherOptions.ConfigurationSectionName))); + break; case ConfigurationExtensions.MigrationConfigVersion.v16: context.AddSingleton().AddOptions().Bind(configuration.GetSection(TfsAttachmentEnricherOptions.ConfigurationSectionName)); @@ -57,6 +66,7 @@ public static void AddMigrationToolServicesForClientAzureDevOpsObjectModel(this context.AddSingleton().AddOptions().Bind(configuration.GetSection(TfsTeamSettingsEnricherOptions.ConfigurationSectionName)); break; } + context.AddSingleton(); // EndPoint Enrichers diff --git a/src/MigrationTools.Host.Tests/MigrationHostTests.cs b/src/MigrationTools.Host.Tests/MigrationHostTests.cs index 541513ccd..5a5404e85 100644 --- a/src/MigrationTools.Host.Tests/MigrationHostTests.cs +++ b/src/MigrationTools.Host.Tests/MigrationHostTests.cs @@ -39,7 +39,7 @@ public void TestEngineExecuteEmptyFieldMaps() { EngineConfiguration ec = host.Services.GetRequiredService(); ec.Processors.Clear(); - ec.FieldMaps.Clear(); + //ec.FieldMaps.Clear(); IMigrationEngine me = host.Services.GetRequiredService(); me.Run(); } @@ -49,7 +49,7 @@ public void TestEngineExecuteEmptyFieldMaps() public void TestEngineExecuteProcessors() { EngineConfiguration ec = host.Services.GetRequiredService(); - ec.FieldMaps.Clear(); + //ec.FieldMaps.Clear(); IMigrationEngine me = host.Services.GetRequiredService(); me.Run(); } diff --git a/src/MigrationTools.Host/MigrationToolHost.cs b/src/MigrationTools.Host/MigrationToolHost.cs index 515892f44..2e1d0e9a2 100644 --- a/src/MigrationTools.Host/MigrationToolHost.cs +++ b/src/MigrationTools.Host/MigrationToolHost.cs @@ -117,7 +117,6 @@ public static IHostBuilder CreateDefaultBuilder(string[] args, Action("MigrationTools:Version"); - //options.FieldMaps = configuration.GetSection("MigrationTools:FieldMaps").Get(); - - options.FieldMaps = configuration.GetSection("MigrationTools:CommonEnrichers:TfsFieldMappings:FieldMaps")?.ToMigrationToolsList(child => child.GetMigrationToolsOption("FieldMapType")); - options.GitRepoMapping = configuration.GetSection("MigrationTools:CommonEnrichers:TfsGitRepoMappings:WorkItemGitRepos").Get>(); options.Processors = configuration.GetSection("MigrationTools:Processors")?.ToMigrationToolsList(child => child.GetMigrationToolsOption("ProcessorType")); diff --git a/src/MigrationTools.Tests/Core/Configuration/EngineConfigurationBuilderTests.cs b/src/MigrationTools.Tests/Core/Configuration/EngineConfigurationBuilderTests.cs deleted file mode 100644 index a7bafb12b..000000000 --- a/src/MigrationTools.Tests/Core/Configuration/EngineConfigurationBuilderTests.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System.IO; -using Microsoft.Extensions.Logging.Abstractions; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using MigrationTools._EngineV1.Configuration; -using MigrationTools.Helpers; - -namespace MigrationTools.Configuration.Tests -{ - [TestClass()] - public class EngineConfigurationBuilderTests - { - [TestMethod(), TestCategory("L0")] - public void EngineConfigurationBuilderBuildDefaultTest() - { - var ecb = CreateEngine(); - ecb.BuildDefault(); - } - - [TestMethod(), TestCategory("L0")] - public void EngineConfigurationBuilderBuildFromFileTest() - { - HelperCreateDefaultConfigFile(); - var ecb = CreateEngine(); - ecb.BuildFromFile(); - } - - [TestMethod(), TestCategory("L0")] - public void EngineConfigurationBuilderBuildWorkItemMigrationTest() - { - var ecb = CreateEngine(); - ecb.BuildWorkItemMigration(); - } - - [TestMethod, TestCategory("L0")] - public void EngineConfigurationBuilderDeseraliseFromJsonTest() - { - HelperCreateDefaultConfigFile(); - var ecb = CreateEngine(); - EngineConfiguration ec = ecb.BuildFromFile("configuration.json"); - Assert.AreEqual(10, ec.FieldMaps.Count); - Assert.AreEqual(12, ec.Processors.Count); - } - - [TestMethod, TestCategory("L0")] - public void EngineConfigurationBuilderSeraliseToJsonTest() - { - HelperCreateDefaultConfigFile(); - } - - private EngineConfigurationBuilder CreateEngine() - { - var logger = new NullLogger(); - var ecb = new EngineConfigurationBuilder(logger); - return ecb; - } - - private void HelperCreateDefaultConfigFile() - { - var ecb = CreateEngine(); - var config = ecb.BuildDefault(); - ecb.WriteSettings(config, "configuration.json"); - } - } -} \ No newline at end of file diff --git a/src/MigrationTools.Tests/Core/Configuration/EngineConfigurationTests.cs b/src/MigrationTools.Tests/Core/Configuration/EngineConfigurationTests.cs deleted file mode 100644 index b8c10167f..000000000 --- a/src/MigrationTools.Tests/Core/Configuration/EngineConfigurationTests.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Microsoft.Extensions.Logging.Abstractions; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using MigrationTools._EngineV1.Configuration; - -namespace MigrationTools.Tests -{ - [TestClass] - public class EngineConfigurationTests - { - private EngineConfigurationBuilder ecb = new EngineConfigurationBuilder(new NullLogger()); - - [TestMethod, TestCategory("L2")] - public void TestSeraliseToJson() - { - var config = ecb.BuildDefault(); - ecb.WriteSettings(config, "configuration.json"); - } - - [TestMethod, TestCategory("L2")] - public void TestDeseraliseFromJson() - { - TestSeraliseToJson(); - var ec = ecb.BuildFromFile("configuration.json"); - Assert.AreEqual(10, ec.FieldMaps.Count); - Assert.AreEqual(12, ec.Processors.Count); - } - - [TestMethod, TestCategory("L2")] - public void TestSeraliseToJson2() - { - var config = ecb.BuildDefault(); - ecb.WriteSettings(config, "configuration2.json"); - } - - [TestMethod, TestCategory("L2")] - public void TestDeseraliseFromJson2() - { - TestSeraliseToJson2(); - var ec = ecb.BuildFromFile("configuration2.json"); - Assert.AreEqual(10, ec.FieldMaps.Count); - Assert.AreEqual(12, ec.Processors.Count); - } - } -} \ No newline at end of file diff --git a/src/MigrationTools.Tests/Core/Engine/Containers/FieldMapContainerTests.cs b/src/MigrationTools.Tests/Core/Engine/Containers/FieldMapContainerTests.cs index 3eeb3a88c..484fca40c 100644 --- a/src/MigrationTools.Tests/Core/Engine/Containers/FieldMapContainerTests.cs +++ b/src/MigrationTools.Tests/Core/Engine/Containers/FieldMapContainerTests.cs @@ -5,32 +5,31 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using MigrationTools._EngineV1.Configuration; using MigrationTools._EngineV1.Containers; +using MigrationTools.ProcessorEnrichers.WorkItemProcessorEnrichers; +using MigrationTools.Tests; namespace MigrationTools.Engine.Containers.Tests { [TestClass()] public class FieldMapContainerTests { - private IOptions CreateEngineConfiguration() + private IOptions CreateFieldMappingToolOptions() { - var ecb = new EngineConfigurationBuilder(new NullLogger()); - var ec = ecb.CreateEmptyConfig(); - var opts = Microsoft.Extensions.Options.Options.Create(ec); + var options = new FieldMappingToolOptions(); + options.Enabled = true; + var opts = Microsoft.Extensions.Options.Options.Create(options); return opts; } private IServiceProvider CreateServiceProvider() { - ServiceCollection sc = new ServiceCollection(); - sc.AddTransient(); - IServiceProvider sp = sc.BuildServiceProvider(); - return sp; + return ServiceProviderHelper.GetWorkItemMigrationProcessor(); } [TestMethod(), TestCategory("L0")] public void FieldMapContainerTest() { - var config = CreateEngineConfiguration(); + var config = CreateFieldMappingToolOptions(); Assert.AreEqual(0, config.Value.FieldMaps.Count); @@ -41,10 +40,8 @@ public void FieldMapContainerTest() config.Value.FieldMaps.Add(testSimple); Assert.AreEqual(1, config.Value.FieldMaps.Count); - - var fieldMapContainer = new FieldMapContainer(CreateServiceProvider(), config, new NullLogger()); - fieldMapContainer.EnsureConfigured(); - Assert.AreEqual(1, fieldMapContainer.Count); + var fieldMappTool = ActivatorUtilities.CreateInstance(CreateServiceProvider(), config, new NullLogger()); + Assert.AreEqual(1, fieldMappTool.Count); } } } \ No newline at end of file diff --git a/src/MigrationTools.Tests/ServiceProviderHelper.cs b/src/MigrationTools.Tests/ServiceProviderHelper.cs index b3427d833..419e6e22b 100644 --- a/src/MigrationTools.Tests/ServiceProviderHelper.cs +++ b/src/MigrationTools.Tests/ServiceProviderHelper.cs @@ -3,6 +3,7 @@ using MigrationTools._EngineV1.Containers; using MigrationTools.EndpointEnrichers; using MigrationTools.Endpoints; +using MigrationTools.Engine.Containers.Tests; using MigrationTools.Enrichers; using MigrationTools.Helpers.Tests; using MigrationTools.ProcessorEnrichers.WorkItemProcessorEnrichers; @@ -24,7 +25,6 @@ internal static ServiceProvider GetWorkItemMigrationProcessor() // Containers services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); services.AddSingleton(); @@ -38,6 +38,7 @@ internal static ServiceProvider GetWorkItemMigrationProcessor() services.AddSingleton(); services.AddSingleton(); + services.AddTransient(); return services.BuildServiceProvider(); } diff --git a/src/MigrationTools/IMigrationEngine.cs b/src/MigrationTools/IMigrationEngine.cs index 67d5bae0d..2250b37ba 100644 --- a/src/MigrationTools/IMigrationEngine.cs +++ b/src/MigrationTools/IMigrationEngine.cs @@ -14,6 +14,5 @@ public interface IMigrationEngine IMigrationClient Target { get; } GitRepoMapContainer GitRepoMaps { get; } - FieldMapContainer FieldMaps { get; } } } \ No newline at end of file diff --git a/src/MigrationTools/MigrationEngine.cs b/src/MigrationTools/MigrationEngine.cs index d7c3f1019..4c99cbd35 100644 --- a/src/MigrationTools/MigrationEngine.cs +++ b/src/MigrationTools/MigrationEngine.cs @@ -29,14 +29,12 @@ public MigrationEngine( IOptions config, ProcessorContainer processors, GitRepoMapContainer gitRepoMaps, - FieldMapContainer fieldMaps, ITelemetryLogger telemetry, ILogger logger) { _logger = logger; _logger.LogInformation("Creating Migration Engine {SessionId}", telemetry.SessionId); _services = services; - FieldMaps = fieldMaps; _networkCredentials = networkCredentials.Value; Processors = processors; GitRepoMaps = gitRepoMaps; @@ -44,8 +42,6 @@ public MigrationEngine( _engineConfiguration = config.Value; } - public FieldMapContainer FieldMaps { get; } - public GitRepoMapContainer GitRepoMaps { get; } public ProcessorContainer Processors { get; } @@ -81,8 +77,7 @@ public ProcessingStatus Run() { "Engine", "Migration" } }, new Dictionary { - { "Processors", Processors.Count }, - { "Mappings", FieldMaps.Count } + { "Processors", Processors.Count } }); Stopwatch engineTimer = Stopwatch.StartNew(); @@ -96,7 +91,6 @@ public ProcessingStatus Run() Processors.EnsureConfigured(); GitRepoMaps.EnsureConfigured(); - FieldMaps.EnsureConfigured(); _logger.LogInformation("Beginning run of {ProcessorCount} processors", Processors.Count.ToString()); foreach (_EngineV1.Containers.IProcessor process in Processors.Items) diff --git a/src/MigrationTools/ProcessorEnrichers/StaticEnrichers.cs b/src/MigrationTools/ProcessorEnrichers/StaticEnrichers.cs index dca0d184e..f1eed68ec 100644 --- a/src/MigrationTools/ProcessorEnrichers/StaticEnrichers.cs +++ b/src/MigrationTools/ProcessorEnrichers/StaticEnrichers.cs @@ -9,10 +9,13 @@ public class StaticEnrichers { public StringManipulatorEnricher StringManipulator { get; private set; } public WorkItemTypeMappingEnricher WorkItemTypeMapping { get; private set; } - public StaticEnrichers(StringManipulatorEnricher stringManipulatorEnricher, WorkItemTypeMappingEnricher workItemTypeMapping) + + public FieldMappingTool FieldMappingTool { get; private set; } + public StaticEnrichers(StringManipulatorEnricher stringManipulatorEnricher, WorkItemTypeMappingEnricher workItemTypeMapping, FieldMappingTool fieldMappingTool) { StringManipulator = stringManipulatorEnricher; WorkItemTypeMapping = workItemTypeMapping; + FieldMappingTool = fieldMappingTool; } } diff --git a/src/MigrationTools/_EngineV1/Containers/FieldMapContainer.cs b/src/MigrationTools/ProcessorEnrichers/WorkItemProcessorEnrichers/FieldMappingTool.cs similarity index 69% rename from src/MigrationTools/_EngineV1/Containers/FieldMapContainer.cs rename to src/MigrationTools/ProcessorEnrichers/WorkItemProcessorEnrichers/FieldMappingTool.cs index 6c2dd2d30..1edd206bd 100644 --- a/src/MigrationTools/_EngineV1/Containers/FieldMapContainer.cs +++ b/src/MigrationTools/ProcessorEnrichers/WorkItemProcessorEnrichers/FieldMappingTool.cs @@ -1,38 +1,42 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text; +using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using MigrationTools._EngineV1.Configuration; +using MigrationTools._EngineV1.Containers; using MigrationTools.DataContracts; +using MigrationTools.Enrichers; +using MigrationTools.Processors; -namespace MigrationTools._EngineV1.Containers +namespace MigrationTools.ProcessorEnrichers.WorkItemProcessorEnrichers { - public class FieldMapContainer : EngineContainer>> + public class FieldMappingTool : WorkItemProcessorEnricher { - private Dictionary> fieldMapps = new Dictionary>(); - private readonly ILogger _logger; + private ILogger _logger; + private FieldMappingToolOptions _Options; - public FieldMapContainer(IServiceProvider services, IOptions config, ILogger logger) : base(services, config) - { - _logger = logger; - } + private Dictionary> fieldMapps = new Dictionary>(); public int Count { get { return fieldMapps.Count; } } - public override Dictionary> Items + public Dictionary> Items { get { return fieldMapps; } } - protected override void Configure() + public FieldMappingTool(IOptions options, IServiceProvider services, ILogger logger, ITelemetryLogger telemetry) : base(services, logger, telemetry) { - if (Config.FieldMaps != null) + _logger = logger; + _Options = options.Value; + if (_Options.FieldMaps != null) { - foreach (IFieldMapConfig fieldmapConfig in Config.FieldMaps) + foreach (IFieldMapConfig fieldmapConfig in _Options.FieldMaps) { - _logger.LogInformation("FieldMapContainer: Adding FieldMap {FieldMapName} for {WorkItemTypeName}", fieldmapConfig.FieldMap, fieldmapConfig.WorkItemTypeName); + _logger.LogInformation("FieldMappingTool: Adding FieldMap {FieldMapName} for {WorkItemTypeName}", fieldmapConfig.FieldMap, fieldmapConfig.WorkItemTypeName); string typePattern = $"MigrationTools.Sinks.*.FieldMaps.{fieldmapConfig.FieldMap}"; Type type = AppDomain.CurrentDomain.GetAssemblies() @@ -50,8 +54,30 @@ protected override void Configure() AddFieldMap(fieldmapConfig.WorkItemTypeName, fm); } } + + } + + + [Obsolete] + public override void Configure(IProcessorEnricherOptions options) + { + throw new NotImplementedException(); } + + protected override void EntryForProcessorType(Processors.IProcessor processor) + { + throw new NotImplementedException(); + } + + + + protected override void RefreshForProcessorType(Processors.IProcessor processor) + { + throw new NotImplementedException(); + } + + public void AddFieldMap(string workItemTypeName, IFieldMap fieldToTagFieldMap) { if (string.IsNullOrEmpty(workItemTypeName)) @@ -98,4 +124,4 @@ private void ProcessFieldMapList(WorkItemData source, WorkItemData target, List< } } } -} \ No newline at end of file +} diff --git a/src/MigrationTools/ProcessorEnrichers/WorkItemProcessorEnrichers/FieldMappingToolOptions.cs b/src/MigrationTools/ProcessorEnrichers/WorkItemProcessorEnrichers/FieldMappingToolOptions.cs new file mode 100644 index 000000000..a65b35809 --- /dev/null +++ b/src/MigrationTools/ProcessorEnrichers/WorkItemProcessorEnrichers/FieldMappingToolOptions.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Options; +using MigrationTools._EngineV1.Configuration; +using MigrationTools.Enrichers; + +namespace MigrationTools.ProcessorEnrichers.WorkItemProcessorEnrichers +{ + public class FieldMappingToolOptions : ProcessorEnricherOptions + { + public const string ConfigurationSectionName = "MigrationTools:CommonEnrichers:FieldMappingTool"; + public override Type ToConfigure => typeof(FieldMappingTool); + + public List FieldMaps { get; set; } = new List(); + + public override void SetDefaults() + { + Enabled = false; + } + + + public class ConfigureOptions : IConfigureOptions + { + private readonly IConfiguration _configuration; + + public ConfigureOptions(IConfiguration configuration) + { + _configuration = configuration; + } + + public void Configure(FieldMappingToolOptions options) + { + switch (_configuration.GetMigrationConfigVersion()) + { + case ConfigurationExtensions.MigrationConfigVersion.v16: + _configuration.GetSection(ConfigurationSectionName).Bind(options); + options.FieldMaps = _configuration.GetSection(FieldMappingToolOptions.ConfigurationSectionName+":FieldMaps")?.ToMigrationToolsList(child => child.GetMigrationToolsOption("FieldMapType")); + break; + case ConfigurationExtensions.MigrationConfigVersion.before16: + options.Enabled = true; + options.FieldMaps = _configuration.GetSection("FieldMaps")?.ToMigrationToolsList(child => child.GetMigrationToolsOption("$type")); + break; + default: + throw new ArgumentOutOfRangeException(); + break; + } + } + } + + } +} \ No newline at end of file diff --git a/src/MigrationTools/ServiceCollectionExtensions.cs b/src/MigrationTools/ServiceCollectionExtensions.cs index 87c276993..38875ac5d 100644 --- a/src/MigrationTools/ServiceCollectionExtensions.cs +++ b/src/MigrationTools/ServiceCollectionExtensions.cs @@ -44,7 +44,7 @@ public static void AddMigrationToolServices(this IServiceCollection context, ICo context.AddSingleton().AddOptions().Bind(configuration.GetSection(WorkItemTypeMappingEnricherOptions.ConfigurationSectionName)); break; } - + context.AddSingleton().AddSingleton, FieldMappingToolOptions.ConfigureOptions>(); context.AddSingleton(); @@ -70,11 +70,7 @@ public static void AddMigrationToolServicesLegacy(this IServiceCollection contex // Containers context.AddSingleton(); context.AddSingleton(); - context.AddSingleton(); //Engine - context.AddSingleton(); - context.AddSingleton(); - context.AddSingleton(); context.AddSingleton(); } } diff --git a/src/MigrationTools/_EngineV1/Configuration/EngineConfiguration.cs b/src/MigrationTools/_EngineV1/Configuration/EngineConfiguration.cs index 4fca5fbf2..52d826394 100644 --- a/src/MigrationTools/_EngineV1/Configuration/EngineConfiguration.cs +++ b/src/MigrationTools/_EngineV1/Configuration/EngineConfiguration.cs @@ -12,8 +12,6 @@ public EngineConfiguration() public IMigrationClientConfig Source { get; set; } public IMigrationClientConfig Target { get; set; } - - public List FieldMaps { get; set; } = new List(); public Dictionary GitRepoMapping { get; set; } = new Dictionary(); public string LogLevel { get; private set; } diff --git a/src/MigrationTools/_EngineV1/Configuration/EngineConfigurationBuilder.cs b/src/MigrationTools/_EngineV1/Configuration/EngineConfigurationBuilder.cs index e38da0396..92428ae02 100644 --- a/src/MigrationTools/_EngineV1/Configuration/EngineConfigurationBuilder.cs +++ b/src/MigrationTools/_EngineV1/Configuration/EngineConfigurationBuilder.cs @@ -160,7 +160,6 @@ public EngineConfiguration CreateEmptyConfig() EngineConfiguration ec = new EngineConfiguration { Version = Assembly.GetExecutingAssembly().GetName().Version.ToString(2), - FieldMaps = new List(), Processors = new List(), }; ec.Source = GetMigrationConfigDefault(); @@ -178,90 +177,90 @@ private void AddTestPlansMigrationDefault(EngineConfiguration ec) private void AddExampleFieldMapps(EngineConfiguration ec) { - ec.FieldMaps.Add(new MultiValueConditionalMapConfig() - { - WorkItemTypeName = "*", - sourceFieldsAndValues = new Dictionary - { - { "Field1", "Value1" }, - { "Field2", "Value2" } - }, - targetFieldsAndValues = new Dictionary - { - { "Field1", "Value1" }, - { "Field2", "Value2" } - } - }); - ec.FieldMaps.Add(new FieldSkipMapConfig() - { - WorkItemTypeName = "*", - targetField = "TfsMigrationTool.ReflectedWorkItemId" - }); - ec.FieldMaps.Add(new FieldValueMapConfig() - { - WorkItemTypeName = "*", - sourceField = "System.State", - targetField = "System.State", - defaultValue = "New", - valueMapping = new Dictionary { - { "Approved", "New" }, - { "New", "New" }, - { "Committed", "Active" }, - { "In Progress", "Active" }, - { "To Do", "New" }, - { "Done", "Closed" }, - { "Removed", "Removed" } - } - }); - ec.FieldMaps.Add(new FieldtoFieldMapConfig() - { - WorkItemTypeName = "*", - sourceField = "Microsoft.VSTS.Common.BacklogPriority", - targetField = "Microsoft.VSTS.Common.StackRank" - }); - ec.FieldMaps.Add(new FieldtoFieldMultiMapConfig() - { - WorkItemTypeName = "*", - SourceToTargetMappings = new Dictionary - { - {"SourceField1", "TargetField1" }, - {"SourceField2", "TargetField2" } - } - }); - ec.FieldMaps.Add(new FieldtoTagMapConfig() - { - WorkItemTypeName = "*", - sourceField = "System.State", - formatExpression = "ScrumState:{0}" - }); - ec.FieldMaps.Add(new FieldMergeMapConfig() - { - WorkItemTypeName = "*", - sourceFields = new List { "System.Description" , "Microsoft.VSTS.Common.AcceptanceCriteria" }, - targetField = "System.Description", - formatExpression = @"{0}

Acceptance Criteria

{1}" - }); - ec.FieldMaps.Add(new RegexFieldMapConfig() - { - WorkItemTypeName = "*", - sourceField = "COMPANY.PRODUCT.Release", - targetField = "COMPANY.DEVISION.MinorReleaseVersion", - pattern = @"PRODUCT \d{4}.(\d{1})", - replacement = "$1" - }); - ec.FieldMaps.Add(new FieldValuetoTagMapConfig() - { - WorkItemTypeName = "*", - sourceField = "Microsoft.VSTS.CMMI.Blocked", - pattern = @"Yes", - formatExpression = "{0}" - }); - ec.FieldMaps.Add(new TreeToTagMapConfig() - { - WorkItemTypeName = "*", - timeTravel = 1, - toSkip = 3 - }); + //ec.FieldMaps.Add(new MultiValueConditionalMapConfig() + //{ + // WorkItemTypeName = "*", + // sourceFieldsAndValues = new Dictionary + // { + // { "Field1", "Value1" }, + // { "Field2", "Value2" } + // }, + // targetFieldsAndValues = new Dictionary + // { + // { "Field1", "Value1" }, + // { "Field2", "Value2" } + // } + //}); + //ec.FieldMaps.Add(new FieldSkipMapConfig() + //{ + // WorkItemTypeName = "*", + // targetField = "TfsMigrationTool.ReflectedWorkItemId" + //}); + //ec.FieldMaps.Add(new FieldValueMapConfig() + //{ + // WorkItemTypeName = "*", + // sourceField = "System.State", + // targetField = "System.State", + // defaultValue = "New", + // valueMapping = new Dictionary { + // { "Approved", "New" }, + // { "New", "New" }, + // { "Committed", "Active" }, + // { "In Progress", "Active" }, + // { "To Do", "New" }, + // { "Done", "Closed" }, + // { "Removed", "Removed" } + // } + //}); + //ec.FieldMaps.Add(new FieldtoFieldMapConfig() + //{ + // WorkItemTypeName = "*", + // sourceField = "Microsoft.VSTS.Common.BacklogPriority", + // targetField = "Microsoft.VSTS.Common.StackRank" + //}); + //ec.FieldMaps.Add(new FieldtoFieldMultiMapConfig() + //{ + // WorkItemTypeName = "*", + // SourceToTargetMappings = new Dictionary + // { + // {"SourceField1", "TargetField1" }, + // {"SourceField2", "TargetField2" } + // } + //}); + //ec.FieldMaps.Add(new FieldtoTagMapConfig() + //{ + // WorkItemTypeName = "*", + // sourceField = "System.State", + // formatExpression = "ScrumState:{0}" + //}); + //ec.FieldMaps.Add(new FieldMergeMapConfig() + //{ + // WorkItemTypeName = "*", + // sourceFields = new List { "System.Description" , "Microsoft.VSTS.Common.AcceptanceCriteria" }, + // targetField = "System.Description", + // formatExpression = @"{0}

Acceptance Criteria

{1}" + //}); + //ec.FieldMaps.Add(new RegexFieldMapConfig() + //{ + // WorkItemTypeName = "*", + // sourceField = "COMPANY.PRODUCT.Release", + // targetField = "COMPANY.DEVISION.MinorReleaseVersion", + // pattern = @"PRODUCT \d{4}.(\d{1})", + // replacement = "$1" + //}); + //ec.FieldMaps.Add(new FieldValuetoTagMapConfig() + //{ + // WorkItemTypeName = "*", + // sourceField = "Microsoft.VSTS.CMMI.Blocked", + // pattern = @"Yes", + // formatExpression = "{0}" + //}); + //ec.FieldMaps.Add(new TreeToTagMapConfig() + //{ + // WorkItemTypeName = "*", + // timeTravel = 1, + // toSkip = 3 + //}); } private IMigrationClientConfig GetMigrationConfigDefault() @@ -283,7 +282,6 @@ public EngineConfiguration BuildDefault2() EngineConfiguration ec = new EngineConfiguration { Version = Assembly.GetExecutingAssembly().GetName().Version.ToString(2), - FieldMaps = new List(), Processors = new List(), }; ec.Processors.Add( diff --git a/src/MigrationTools/_EngineV1/Containers/IFieldMap.cs b/src/MigrationTools/_EngineV1/Containers/IFieldMap.cs index 8c0352e7f..c5e4bcdf2 100644 --- a/src/MigrationTools/_EngineV1/Containers/IFieldMap.cs +++ b/src/MigrationTools/_EngineV1/Containers/IFieldMap.cs @@ -1,4 +1,5 @@ -using MigrationTools._EngineV1.Configuration; +using System; +using MigrationTools._EngineV1.Configuration; using MigrationTools.DataContracts; namespace MigrationTools._EngineV1.Containers @@ -8,6 +9,7 @@ public interface IFieldMap string Name { get; } string MappingDisplayName { get; } + [Obsolete] void Configure(IFieldMapConfig config); void Execute(WorkItemData source, WorkItemData target); diff --git a/src/MigrationTools/_EngineV1/Processors/MigrationProcessorBase.cs b/src/MigrationTools/_EngineV1/Processors/MigrationProcessorBase.cs index 3bac60652..3b460f30f 100644 --- a/src/MigrationTools/_EngineV1/Processors/MigrationProcessorBase.cs +++ b/src/MigrationTools/_EngineV1/Processors/MigrationProcessorBase.cs @@ -6,18 +6,22 @@ using Microsoft.Extensions.Logging; using MigrationTools._EngineV1.Configuration; using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; using MigrationTools.Processors; namespace MigrationTools._EngineV1.Processors { public abstract class MigrationProcessorBase : Containers.IProcessor { - protected MigrationProcessorBase(IMigrationEngine engine, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) + public StaticEnrichers StaticEnrichers { get; private set; } + + protected MigrationProcessorBase(IMigrationEngine engine, StaticEnrichers staticEnrichers, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) { Engine = engine; Services = services; Telemetry = telemetry; Log = logger; + StaticEnrichers = staticEnrichers; } public abstract string Name { get; } diff --git a/src/MigrationTools/_EngineV1/Processors/StaticProcessorBase.cs b/src/MigrationTools/_EngineV1/Processors/StaticProcessorBase.cs index 0acf18e89..ca8e6560f 100644 --- a/src/MigrationTools/_EngineV1/Processors/StaticProcessorBase.cs +++ b/src/MigrationTools/_EngineV1/Processors/StaticProcessorBase.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.Logging; using MigrationTools; using MigrationTools._EngineV1.Configuration; +using MigrationTools.ProcessorEnrichers; using MigrationTools.Processors; namespace VstsSyncMigrator._EngineV1.Processors @@ -13,12 +14,15 @@ public abstract class StaticProcessorBase : MigrationTools._EngineV1.Containers. protected IMigrationEngine Engine { get; } protected IServiceProvider Services { get; } - public StaticProcessorBase(IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) + public StaticEnrichers StaticEnrichers { get; private set; } + + public StaticProcessorBase(StaticEnrichers staticEnrichers,IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) { Services = services; Engine = me; Telemetry = telemetry; Log = logger; + StaticEnrichers = staticEnrichers; } public abstract void Configure(IProcessorConfig config); diff --git a/src/VstsSyncMigrator.Core/Execution/MigrationContext/ExportUsersForMapping.cs b/src/VstsSyncMigrator.Core/Execution/MigrationContext/ExportUsersForMapping.cs index 82d3372ab..5829f683a 100644 --- a/src/VstsSyncMigrator.Core/Execution/MigrationContext/ExportUsersForMapping.cs +++ b/src/VstsSyncMigrator.Core/Execution/MigrationContext/ExportUsersForMapping.cs @@ -26,7 +26,7 @@ namespace VstsSyncMigrator.Core.Execution.MigrationContext /// /// ready /// Work Items - public class ExportUsersForMappingContext : MigrationProcessorBase + public class ExportUsersForMappingContext : TfsMigrationProcessorBase { private ExportUsersForMappingConfig _config; private TfsUserMappingEnricher _TfsUserMappingEnricher; @@ -45,11 +45,10 @@ public override string Name private EngineConfiguration _engineConfig; - public ExportUsersForMappingContext(IMigrationEngine engine, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger, IOptions engineConfig, TfsUserMappingEnricher userMappingEnricher) : base(engine, services, telemetry, logger) + public ExportUsersForMappingContext(IOptions engineConfig, IMigrationEngine engine, TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, tfsStaticEnrichers, staticEnrichers, services, telemetry, logger) { - Logger = logger; - _engineConfig = engineConfig.Value; - _TfsUserMappingEnricher = userMappingEnricher; + Logger = logger; + _engineConfig = engineConfig.Value; } public override void Configure(IProcessorConfig config) diff --git a/src/VstsSyncMigrator.Core/Execution/MigrationContext/FakeProcessor.cs b/src/VstsSyncMigrator.Core/Execution/MigrationContext/FakeProcessor.cs index f2f7115ee..e1b99b922 100644 --- a/src/VstsSyncMigrator.Core/Execution/MigrationContext/FakeProcessor.cs +++ b/src/VstsSyncMigrator.Core/Execution/MigrationContext/FakeProcessor.cs @@ -6,6 +6,7 @@ using MigrationTools._EngineV1.Configuration; using MigrationTools._EngineV1.Processors; using MigrationTools.DataContracts; +using MigrationTools.ProcessorEnrichers; namespace VstsSyncMigrator.Engine { @@ -14,7 +15,7 @@ namespace VstsSyncMigrator.Engine /// public class FakeProcessor : MigrationProcessorBase { - public FakeProcessor(IMigrationEngine engine, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, services, telemetry, logger) + public FakeProcessor(IMigrationEngine engine, StaticEnrichers staticEnrichers, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, staticEnrichers, services, telemetry, logger) { } diff --git a/src/VstsSyncMigrator.Core/Execution/MigrationContext/TeamMigrationContext.cs b/src/VstsSyncMigrator.Core/Execution/MigrationContext/TeamMigrationContext.cs index 2df8979db..33f742d73 100644 --- a/src/VstsSyncMigrator.Core/Execution/MigrationContext/TeamMigrationContext.cs +++ b/src/VstsSyncMigrator.Core/Execution/MigrationContext/TeamMigrationContext.cs @@ -4,6 +4,9 @@ using MigrationTools._EngineV1.Configuration; using MigrationTools._EngineV1.Configuration.Processing; using MigrationTools._EngineV1.Processors; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; +using VstsSyncMigrator.Core.Execution; namespace VstsSyncMigrator.Engine { @@ -12,11 +15,11 @@ namespace VstsSyncMigrator.Engine /// /// preview /// Teams - public class TeamMigrationContext : MigrationProcessorBase + public class TeamMigrationContext : TfsMigrationProcessorBase { private TeamMigrationConfig _config; - public TeamMigrationContext(IMigrationEngine engine, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, services, telemetry, logger) + public TeamMigrationContext(IMigrationEngine engine, TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, tfsStaticEnrichers, staticEnrichers, services, telemetry, logger) { } diff --git a/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestConfigurationsMigrationContext.cs b/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestConfigurationsMigrationContext.cs index 2fa751f91..acc8d692c 100644 --- a/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestConfigurationsMigrationContext.cs +++ b/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestConfigurationsMigrationContext.cs @@ -5,6 +5,9 @@ using MigrationTools; using MigrationTools._EngineV1.Configuration; using MigrationTools._EngineV1.Processors; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; +using VstsSyncMigrator.Core.Execution; using VstsSyncMigrator.Engine.ComponentContext; namespace VstsSyncMigrator.Engine @@ -14,14 +17,16 @@ namespace VstsSyncMigrator.Engine /// /// Beta /// Suites & Plans - public class TestConfigurationsMigrationContext : MigrationProcessorBase + public class TestConfigurationsMigrationContext : TfsMigrationProcessorBase { - // http://blogs.microsoft.co.il/shair/2015/02/02/tfs-api-part-56-test-configurations/ - - public TestConfigurationsMigrationContext(IMigrationEngine engine, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, services, telemetry, logger) + public TestConfigurationsMigrationContext(IMigrationEngine engine, TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, tfsStaticEnrichers, staticEnrichers, services, telemetry, logger) { } + // http://blogs.microsoft.co.il/shair/2015/02/02/tfs-api-part-56-test-configurations/ + + + public override string Name { get diff --git a/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestPlansAndSuitesMigrationContext.cs b/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestPlansAndSuitesMigrationContext.cs index 3d530af30..e0926ef52 100644 --- a/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestPlansAndSuitesMigrationContext.cs +++ b/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestPlansAndSuitesMigrationContext.cs @@ -24,6 +24,8 @@ using MigrationTools.DataContracts; using MigrationTools.DataContracts.Pipelines; using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; +using VstsSyncMigrator.Core.Execution; using VstsSyncMigrator.Engine.ComponentContext; using Environment = System.Environment; @@ -34,7 +36,7 @@ namespace VstsSyncMigrator.Engine /// /// Beta /// Suites & Plans - public class TestPlansAndSuitesMigrationContext : MigrationProcessorBase + public class TestPlansAndSuitesMigrationContext : TfsMigrationProcessorBase { private int __currentSuite = 0; private int __totalSuites = 0; @@ -52,16 +54,9 @@ public class TestPlansAndSuitesMigrationContext : MigrationProcessorBase private TfsNodeStructure _nodeStructureEnricher; private readonly EngineConfiguration _engineConfig; - public TestPlansAndSuitesMigrationContext(IMigrationEngine engine, - IServiceProvider services, - ITelemetryLogger telemetry, - ILogger logger, - TfsNodeStructure nodeStructureEnricher, - IOptions engineConfig) - : base(engine, services, telemetry, logger) + public TestPlansAndSuitesMigrationContext(IOptions engineConfig, IMigrationEngine engine, TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, tfsStaticEnrichers, staticEnrichers, services, telemetry, logger) { _engineConfig = engineConfig.Value; - _nodeStructureEnricher = nodeStructureEnricher; } public override string Name @@ -356,7 +351,7 @@ private void ApplyFieldMappings(int sourceWIId, int targetWIId) targetWI.ToWorkItem().AreaPath = _nodeStructureEnricher.GetNewNodeName(sourceWI.ToWorkItem().AreaPath, TfsNodeStructureType.Area); targetWI.ToWorkItem().IterationPath = _nodeStructureEnricher.GetNewNodeName(sourceWI.ToWorkItem().IterationPath, TfsNodeStructureType.Iteration); - Engine.FieldMaps.ApplyFieldMappings(sourceWI, targetWI); + StaticEnrichers.FieldMappingTool.ApplyFieldMappings(sourceWI, targetWI); targetWI.SaveToAzureDevOps(); } diff --git a/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestRunsMigrationContext.cs b/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestRunsMigrationContext.cs deleted file mode 100644 index ba8c248c3..000000000 --- a/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestRunsMigrationContext.cs +++ /dev/null @@ -1,54 +0,0 @@ -//using Microsoft.TeamFoundation.Client; -//using Microsoft.TeamFoundation.TestManagement.Client; -//using Microsoft.TeamFoundation.WorkItemTracking.Client; -//using System; -//using System.Diagnostics; -//using VstsSyncMigrator.Engine.ComponentContext; -//using System.Linq; -//using System.Text.RegularExpressions; -//using System.Collections.Generic; -//using VstsSyncMigrator.Engine.Configuration.Processing; - -//namespace VstsSyncMigrator.Engine -//{ -// //http://stackoverflow.com/questions/6505812/how-to-create-a-test-run-and-result-using-the-team-foundation-server-api -// public class TestRunsMigrationContext : MigrationContextBase -// { -// WorkItemStoreContext sourceWitStore; -// TestManagementContext sourceTestStore; - -// WorkItemStoreContext targetWitStore; -// TestManagementContext targetTestStore; - -// public override string Name -// { -// get -// { -// return "TestRunsMigrationContext"; -// } -// } - -// public TestRunsMigrationContext(MigrationEngine me, TestRunsMigrationConfig config) : base(me, config) -// { -// sourceWitStore = new WorkItemStoreContext(me.Source, WorkItemStoreFlags.None); -// sourceTestStore = new TestManagementContext(me.Source); -// targetWitStore = new WorkItemStoreContext(me.Target, WorkItemStoreFlags.BypassRules); -// targetTestStore = new TestManagementContext(me.Target); -// } - -// internal override void InternalExecute() -// { -// List sourceRuns = sourceTestStore.GetTestRuns(); -// Log.WriteLine(string.Format("Plan to copy {0} Runs?", sourceRuns.Count), "TestRuns"); -// foreach (ITestRun sourceRun in sourceRuns) -// { -// Log.WriteLine(string.Format("Process Run {0} - ", sourceRun.Id), "TestRuns"); -// //ITestRun newRun = targetTestStore.Project.TestRuns.Create(); -// throw new NotImplementedException(); - -// } - -// } - -// } -//} \ No newline at end of file diff --git a/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestVariablesMigrationContext.cs b/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestVariablesMigrationContext.cs index a28239be5..47d32feb8 100644 --- a/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestVariablesMigrationContext.cs +++ b/src/VstsSyncMigrator.Core/Execution/MigrationContext/TestVariablesMigrationContext.cs @@ -6,6 +6,7 @@ using MigrationTools; using MigrationTools._EngineV1.Configuration; using MigrationTools._EngineV1.Processors; +using MigrationTools.ProcessorEnrichers; using VstsSyncMigrator.Engine.ComponentContext; namespace VstsSyncMigrator.Engine @@ -17,7 +18,7 @@ namespace VstsSyncMigrator.Engine /// Suites & Plans public class TestVariablesMigrationContext : MigrationProcessorBase { - public TestVariablesMigrationContext(IMigrationEngine engine, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, services, telemetry, logger) + public TestVariablesMigrationContext(IMigrationEngine engine, StaticEnrichers staticEnrichers, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, staticEnrichers, services, telemetry, logger) { } diff --git a/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemMigrationContext.cs b/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemMigrationContext.cs index e43d18fee..bbf9e1c5d 100644 --- a/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemMigrationContext.cs +++ b/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemMigrationContext.cs @@ -37,6 +37,7 @@ using Newtonsoft.Json.Linq; using Serilog.Context; using Serilog.Events; +using VstsSyncMigrator.Core.Execution; using ILogger = Serilog.ILogger; namespace VstsSyncMigrator.Engine @@ -47,7 +48,7 @@ namespace VstsSyncMigrator.Engine /// /// ready /// Work Items - public class WorkItemMigrationContext : MigrationProcessorBase + public class WorkItemMigrationContext : TfsMigrationProcessorBase { private static int _count = 0; @@ -66,8 +67,6 @@ public class WorkItemMigrationContext : MigrationProcessorBase private ILogger workItemLog; private List _itemsInError; - public TfsStaticEnrichers TfsStaticEnrichers { get; private set; } - public StaticEnrichers StaticEnrichers { get; private set; } public WorkItemMigrationContext(IMigrationEngine engine, IServiceProvider services, @@ -76,14 +75,11 @@ public WorkItemMigrationContext(IMigrationEngine engine, TfsStaticEnrichers tfsStaticEnrichers, IOptions engineConfig, StaticEnrichers staticEnrichers) - : base(engine, services, telemetry, logger) + : base(engine, tfsStaticEnrichers, staticEnrichers, services, telemetry, logger) { _telemetry = telemetry; _engineConfig = engineConfig.Value; contextLog = Serilog.Log.ForContext(); - // - TfsStaticEnrichers = tfsStaticEnrichers ?? throw new ArgumentNullException(nameof(tfsStaticEnrichers)); - StaticEnrichers = staticEnrichers ?? throw new ArgumentNullException(nameof(staticEnrichers)); } public override string Name => "WorkItemMigration"; @@ -805,7 +801,7 @@ private WorkItemData ReplayRevisions(List revisionsToMigrate, Work targetWorkItem.ToWorkItem().Fields["System.History"].Value = revision.Fields["System.History"].Value; // Todo: Ensure all field maps use WorkItemData.Fields to apply a correct mapping - Engine.FieldMaps.ApplyFieldMappings(currentRevisionWorkItem, targetWorkItem); + StaticEnrichers.FieldMappingTool.ApplyFieldMappings(currentRevisionWorkItem, targetWorkItem); // Todo: Think about an "UpdateChangedBy" flag as this is expensive! (2s/WI instead of 1,5s when writing "Migration") diff --git a/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemPostProcessingContext.cs b/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemPostProcessingContext.cs index 208a875d3..b10315928 100644 --- a/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemPostProcessingContext.cs +++ b/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemPostProcessingContext.cs @@ -13,6 +13,8 @@ using MigrationTools._EngineV1.Processors; using MigrationTools.DataContracts; using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; +using VstsSyncMigrator.Core.Execution; namespace VstsSyncMigrator.Engine { @@ -21,23 +23,12 @@ namespace VstsSyncMigrator.Engine /// /// preview /// Work Items - public class WorkItemPostProcessingContext : MigrationProcessorBase + public class WorkItemPostProcessingContext : TfsMigrationProcessorBase { private WorkItemPostProcessingConfig _config; - private TfsWorkItemEmbededLinkEnricher _workItemEmbeddedLinkEnricher; - private TfsEmbededImagesEnricher _workItemEmbededImagesEnricher; - public WorkItemPostProcessingContext( - IMigrationEngine engine, - IServiceProvider services, - ITelemetryLogger telemetry, - TfsWorkItemEmbededLinkEnricher workItemEmbeddedLinkEnricher, - TfsEmbededImagesEnricher embededImagesEnricher, - ILogger logger) - : base(engine, services, telemetry, logger) + public WorkItemPostProcessingContext(IMigrationEngine engine, TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, tfsStaticEnrichers, staticEnrichers, services, telemetry, logger) { - _workItemEmbeddedLinkEnricher = workItemEmbeddedLinkEnricher; - _workItemEmbededImagesEnricher = embededImagesEnricher; } public override string Name @@ -85,9 +76,9 @@ protected override void InternalExecute() { Log.LogInformation("...Exists"); TfsExtensions.ToWorkItem(targetFound).Open(); - Engine.FieldMaps.ApplyFieldMappings(sourceWI, targetFound); - _workItemEmbeddedLinkEnricher.Enrich(null, targetFound); - _workItemEmbededImagesEnricher.Enrich(sourceWI, targetFound); + StaticEnrichers.FieldMappingTool.ApplyFieldMappings(sourceWI, targetFound); + TfsStaticEnrichers.WorkItemEmbededLink.Enrich(null, targetFound); + TfsStaticEnrichers.EmbededImages.Enrich(sourceWI, targetFound); if (TfsExtensions.ToWorkItem(targetFound).IsDirty) { try diff --git a/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemQueryMigrationContext.cs b/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemQueryMigrationContext.cs index 7ecc964e6..54837a4d6 100644 --- a/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemQueryMigrationContext.cs +++ b/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemQueryMigrationContext.cs @@ -4,6 +4,9 @@ using MigrationTools._EngineV1.Configuration; using MigrationTools._EngineV1.Configuration.Processing; using MigrationTools._EngineV1.Processors; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; +using VstsSyncMigrator.Core.Execution; namespace VstsSyncMigrator.Engine { @@ -13,14 +16,14 @@ namespace VstsSyncMigrator.Engine /// preview /// Shared Queries [Obsolete("WorkItemQueryMigrationContext has been migrated to TfsSharedQueryProcessor: https://nkdagility.com/docs/azure-devops-migration-tools/Reference/Processors/TfsSharedQueryProcessor.html")] - public class WorkItemQueryMigrationContext : MigrationProcessorBase + public class WorkItemQueryMigrationContext : TfsMigrationProcessorBase { /// /// The processor configuration /// private WorkItemQueryMigrationConfig config; - public WorkItemQueryMigrationContext(IMigrationEngine engine, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, services, telemetry, logger) + public WorkItemQueryMigrationContext(IMigrationEngine engine, TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, tfsStaticEnrichers, staticEnrichers, services, telemetry, logger) { } diff --git a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/CreateTeamFolders.cs b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/CreateTeamFolders.cs index 7748450f2..28bf67804 100644 --- a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/CreateTeamFolders.cs +++ b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/CreateTeamFolders.cs @@ -9,7 +9,10 @@ using MigrationTools; using MigrationTools._EngineV1.Clients; using MigrationTools._EngineV1.Configuration; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; using VstsSyncMigrator._EngineV1.Processors; +using VstsSyncMigrator.Core.Execution; namespace VstsSyncMigrator.Engine { @@ -18,10 +21,9 @@ namespace VstsSyncMigrator.Engine /// /// alpha /// Shared Queries - public class CreateTeamFolders : StaticProcessorBase + public class CreateTeamFolders : TfsStaticProcessorBase { - public CreateTeamFolders(IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) - : base(services, me, telemetry, logger) + public CreateTeamFolders(TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(tfsStaticEnrichers, staticEnrichers, services, me, telemetry, logger) { } diff --git a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ExportProfilePictureFromADContext.cs b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ExportProfilePictureFromADContext.cs index b01d2e742..5e4fc8c2a 100644 --- a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ExportProfilePictureFromADContext.cs +++ b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ExportProfilePictureFromADContext.cs @@ -12,7 +12,10 @@ using MigrationTools; using MigrationTools._EngineV1.Configuration; using MigrationTools._EngineV1.Configuration.Processing; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; using VstsSyncMigrator._EngineV1.Processors; +using VstsSyncMigrator.Core.Execution; namespace VstsSyncMigrator.Engine { @@ -21,11 +24,15 @@ namespace VstsSyncMigrator.Engine /// /// alpha /// Profiles - public class ExportProfilePictureFromADContext : StaticProcessorBase + public class ExportProfilePictureFromADContext : TfsStaticProcessorBase { private IIdentityManagementService2 ims2; private ExportProfilePictureFromADConfig config; + public ExportProfilePictureFromADContext(TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(tfsStaticEnrichers, staticEnrichers, services, me, telemetry, logger) + { + } + public override string Name { get @@ -34,9 +41,6 @@ public override string Name } } - public ExportProfilePictureFromADContext(IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(services, me, telemetry, logger) - { - } public override void Configure(IProcessorConfig config) { diff --git a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ExportTeamList.cs b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ExportTeamList.cs index 7f435e331..3556939a9 100644 --- a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ExportTeamList.cs +++ b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ExportTeamList.cs @@ -7,13 +7,16 @@ using Microsoft.TeamFoundation.Server; using MigrationTools; using MigrationTools._EngineV1.Configuration; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; using VstsSyncMigrator._EngineV1.Processors; +using VstsSyncMigrator.Core.Execution; namespace VstsSyncMigrator.Engine { - public class ExportTeamList : StaticProcessorBase + public class ExportTeamList : TfsStaticProcessorBase { - public ExportTeamList(IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(services, me, telemetry, logger) + public ExportTeamList(TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(tfsStaticEnrichers, staticEnrichers, services, me, telemetry, logger) { } diff --git a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/FixGitCommitLinks.cs b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/FixGitCommitLinks.cs index 8e3730d3c..6c6534507 100644 --- a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/FixGitCommitLinks.cs +++ b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/FixGitCommitLinks.cs @@ -8,16 +8,18 @@ using MigrationTools._EngineV1.Configuration.Processing; using MigrationTools.DataContracts; using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; using VstsSyncMigrator._EngineV1.Processors; +using VstsSyncMigrator.Core.Execution; namespace VstsSyncMigrator.Engine { - public class FixGitCommitLinks : StaticProcessorBase + public class FixGitCommitLinks : TfsStaticProcessorBase { private FixGitCommitLinksConfig _config; private TfsGitRepositoryEnricher _GitRepositoryEnricher; - public FixGitCommitLinks(IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(services, me, telemetry, logger) + public FixGitCommitLinks(TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(tfsStaticEnrichers, staticEnrichers, services, me, telemetry, logger) { Logger = logger; } diff --git a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ImportProfilePictureContext.cs b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ImportProfilePictureContext.cs index bcd83047e..2a509b124 100644 --- a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ImportProfilePictureContext.cs +++ b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/ImportProfilePictureContext.cs @@ -11,7 +11,10 @@ using Microsoft.TeamFoundation.Framework.Common; using MigrationTools; using MigrationTools._EngineV1.Configuration; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; using VstsSyncMigrator._EngineV1.Processors; +using VstsSyncMigrator.Core.Execution; namespace VstsSyncMigrator.Engine { @@ -20,11 +23,11 @@ namespace VstsSyncMigrator.Engine /// /// alpha /// Profiles - public class ImportProfilePictureContext : StaticProcessorBase + public class ImportProfilePictureContext : TfsStaticProcessorBase { private readonly IIdentityManagementService2 ims2; - public ImportProfilePictureContext(IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(services, me, telemetry, logger) + public ImportProfilePictureContext(TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(tfsStaticEnrichers, staticEnrichers, services, me, telemetry, logger) { //http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C ims2 = (IIdentityManagementService2)me.Target.GetService(); diff --git a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemBulkEditProcessor.cs b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemBulkEditProcessor.cs index b2c5841dd..17114353a 100644 --- a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemBulkEditProcessor.cs +++ b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemBulkEditProcessor.cs @@ -6,7 +6,10 @@ using MigrationTools._EngineV1.Configuration; using MigrationTools._EngineV1.Configuration.Processing; using MigrationTools.DataContracts; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; using VstsSyncMigrator._EngineV1.Processors; +using VstsSyncMigrator.Core.Execution; namespace VstsSyncMigrator.Engine { @@ -14,11 +17,11 @@ namespace VstsSyncMigrator.Engine /// This processor allows you to make changes in place where we load from teh Target and update the Target. This is used for bulk updates with the most common reason being a process template change. /// /// WorkItem - public class WorkItemBulkEditProcessor : StaticProcessorBase + public class WorkItemBulkEditProcessor : TfsStaticProcessorBase { private WorkItemBulkEditProcessorConfig _config; - public WorkItemBulkEditProcessor(IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(services, me, telemetry, logger) + public WorkItemBulkEditProcessor(TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(tfsStaticEnrichers, staticEnrichers, services, me, telemetry, logger) { } @@ -50,7 +53,7 @@ protected override void InternalExecute() Stopwatch witstopwatch = Stopwatch.StartNew(); workitem.ToWorkItem().Open(); Log.LogInformation("Processing work item {0} - Type:{1} - ChangedDate:{2} - CreatedDate:{3}", workitem.Id, workitem.Type, workitem.ToWorkItem().ChangedDate.ToShortDateString(), workitem.ToWorkItem().CreatedDate.ToShortDateString()); - Engine.FieldMaps.ApplyFieldMappings(workitem); + StaticEnrichers.FieldMappingTool.ApplyFieldMappings(workitem); if (workitem.ToWorkItem().IsDirty) { diff --git a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemDelete.cs b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemDelete.cs index 103319151..7d72e06d2 100644 --- a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemDelete.cs +++ b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemDelete.cs @@ -8,7 +8,10 @@ using MigrationTools._EngineV1.Clients; using MigrationTools._EngineV1.Configuration; using MigrationTools._EngineV1.Configuration.Processing; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; using VstsSyncMigrator._EngineV1.Processors; +using VstsSyncMigrator.Core.Execution; namespace VstsSyncMigrator.Engine { @@ -18,12 +21,11 @@ namespace VstsSyncMigrator.Engine /// /// ready /// WorkItem - public class WorkItemDelete : StaticProcessorBase + public class WorkItemDelete : TfsStaticProcessorBase { private WorkItemDeleteConfig _config; - public WorkItemDelete(IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) - : base(services, me, telemetry, logger) + public WorkItemDelete(TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(tfsStaticEnrichers, staticEnrichers, services, me, telemetry, logger) { } diff --git a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemUpdateAreasAsTagsContext.cs b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemUpdateAreasAsTagsContext.cs index f129dbb80..808c2a241 100644 --- a/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemUpdateAreasAsTagsContext.cs +++ b/src/VstsSyncMigrator.Core/Execution/ProcessingContext/WorkItemUpdateAreasAsTagsContext.cs @@ -9,7 +9,10 @@ using MigrationTools._EngineV1.Configuration; using MigrationTools._EngineV1.Configuration.Processing; using MigrationTools.DataContracts; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; using VstsSyncMigrator._EngineV1.Processors; +using VstsSyncMigrator.Core.Execution; namespace VstsSyncMigrator.Engine { @@ -18,12 +21,11 @@ namespace VstsSyncMigrator.Engine /// /// Beta /// Work Item - public class WorkItemUpdateAreasAsTagsContext : StaticProcessorBase + public class WorkItemUpdateAreasAsTagsContext : TfsStaticProcessorBase { private WorkItemUpdateAreasAsTagsConfig config; - public WorkItemUpdateAreasAsTagsContext(IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) - : base(services, me, telemetry, logger) + public WorkItemUpdateAreasAsTagsContext(TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(tfsStaticEnrichers, staticEnrichers, services, me, telemetry, logger) { } diff --git a/src/VstsSyncMigrator.Core/Execution/TfsMigrationProcessorBase.cs b/src/VstsSyncMigrator.Core/Execution/TfsMigrationProcessorBase.cs new file mode 100644 index 000000000..ee88efaa4 --- /dev/null +++ b/src/VstsSyncMigrator.Core/Execution/TfsMigrationProcessorBase.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using MigrationTools; +using MigrationTools._EngineV1.Processors; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; + +namespace VstsSyncMigrator.Core.Execution +{ + public abstract class TfsMigrationProcessorBase : MigrationProcessorBase + { + public TfsStaticEnrichers TfsStaticEnrichers { get; private set; } + + protected TfsMigrationProcessorBase(IMigrationEngine engine, TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, ITelemetryLogger telemetry, ILogger logger) : base(engine, staticEnrichers, services, telemetry, logger) + { + TfsStaticEnrichers = tfsStaticEnrichers; + } + } +} diff --git a/src/VstsSyncMigrator.Core/Execution/TfsStaticProcessorBase.cs b/src/VstsSyncMigrator.Core/Execution/TfsStaticProcessorBase.cs new file mode 100644 index 000000000..d82864d22 --- /dev/null +++ b/src/VstsSyncMigrator.Core/Execution/TfsStaticProcessorBase.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using MigrationTools; +using MigrationTools.Enrichers; +using MigrationTools.ProcessorEnrichers; +using VstsSyncMigrator._EngineV1.Processors; + +namespace VstsSyncMigrator.Core.Execution +{ + public abstract class TfsStaticProcessorBase : StaticProcessorBase + { + protected TfsStaticProcessorBase(TfsStaticEnrichers tfsStaticEnrichers, StaticEnrichers staticEnrichers, IServiceProvider services, IMigrationEngine me, ITelemetryLogger telemetry, ILogger logger) : base(staticEnrichers, services, me, telemetry, logger) + { + TfsStaticEnrichers = tfsStaticEnrichers; + } + + public TfsStaticEnrichers TfsStaticEnrichers { get; private set; } + + + + } +}