diff --git a/src/Microsoft.FeatureManagement/ConfigurationFeatureDefinitionProvider.cs b/src/Microsoft.FeatureManagement/ConfigurationFeatureDefinitionProvider.cs index d487eee5..835c6d8e 100644 --- a/src/Microsoft.FeatureManagement/ConfigurationFeatureDefinitionProvider.cs +++ b/src/Microsoft.FeatureManagement/ConfigurationFeatureDefinitionProvider.cs @@ -474,7 +474,6 @@ private FeatureDefinition ParseMicrosoftSchemaFeatureDefinition(IConfigurationSe { Name = section[MicrosoftFeatureManagementFields.Name], ConfigurationValue = section.GetSection(MicrosoftFeatureManagementFields.VariantDefinitionConfigurationValue), - ConfigurationReference = section[MicrosoftFeatureManagementFields.VariantDefinitionConfigurationReference], StatusOverride = statusOverride }; diff --git a/src/Microsoft.FeatureManagement/FeatureManager.cs b/src/Microsoft.FeatureManagement/FeatureManager.cs index d9e8a99d..10baef9d 100644 --- a/src/Microsoft.FeatureManagement/FeatureManager.cs +++ b/src/Microsoft.FeatureManagement/FeatureManager.cs @@ -104,11 +104,6 @@ public IEnumerable SessionManagers /// public ILogger Logger { get; set; } - /// - /// The configuration reference for feature variants. - /// - public IConfiguration Configuration { get; set; } - /// /// The targeting context accessor for feature variant allocation. /// @@ -860,19 +855,6 @@ private Variant GetVariantFromVariantDefinition(VariantDefinition variantDefinit { variantConfiguration = variantDefinition.ConfigurationValue; } - else if (!string.IsNullOrEmpty(variantDefinition.ConfigurationReference)) - { - if (Configuration == null) - { - Logger?.LogWarning($"Cannot use {nameof(variantDefinition.ConfigurationReference)} as no instance of {nameof(IConfiguration)} is present."); - - return null; - } - else - { - variantConfiguration = Configuration.GetSection(variantDefinition.ConfigurationReference); - } - } return new Variant() { diff --git a/src/Microsoft.FeatureManagement/MicrosoftFeatureManagementFields.cs b/src/Microsoft.FeatureManagement/MicrosoftFeatureManagementFields.cs index f07bc694..bac65418 100644 --- a/src/Microsoft.FeatureManagement/MicrosoftFeatureManagementFields.cs +++ b/src/Microsoft.FeatureManagement/MicrosoftFeatureManagementFields.cs @@ -42,7 +42,6 @@ internal static class MicrosoftFeatureManagementFields // Variants keywords public const string VariantsSectionName = "variants"; public const string VariantDefinitionConfigurationValue = "configuration_value"; - public const string VariantDefinitionConfigurationReference = "configuration_reference"; public const string VariantDefinitionStatusOverride = "status_override"; // Telemetry keywords diff --git a/src/Microsoft.FeatureManagement/ServiceCollectionExtensions.cs b/src/Microsoft.FeatureManagement/ServiceCollectionExtensions.cs index 41149673..df7d3d00 100644 --- a/src/Microsoft.FeatureManagement/ServiceCollectionExtensions.cs +++ b/src/Microsoft.FeatureManagement/ServiceCollectionExtensions.cs @@ -50,7 +50,6 @@ public static IFeatureManagementBuilder AddFeatureManagement(this IServiceCollec SessionManagers = sp.GetRequiredService>(), Cache = sp.GetRequiredService(), Logger = sp.GetRequiredService().CreateLogger(), - Configuration = sp.GetService(), TargetingContextAccessor = sp.GetService(), AssignerOptions = sp.GetRequiredService>().Value }); @@ -137,7 +136,6 @@ public static IFeatureManagementBuilder AddScopedFeatureManagement(this IService SessionManagers = sp.GetRequiredService>(), Cache = sp.GetRequiredService(), Logger = sp.GetRequiredService().CreateLogger(), - Configuration = sp.GetService(), TargetingContextAccessor = sp.GetService(), AssignerOptions = sp.GetRequiredService>().Value }); diff --git a/src/Microsoft.FeatureManagement/VariantDefinition.cs b/src/Microsoft.FeatureManagement/VariantDefinition.cs index 77bd6d7d..138d2fc5 100644 --- a/src/Microsoft.FeatureManagement/VariantDefinition.cs +++ b/src/Microsoft.FeatureManagement/VariantDefinition.cs @@ -21,11 +21,6 @@ public class VariantDefinition /// public IConfigurationSection ConfigurationValue { get; set; } - /// - /// A reference pointing to the configuration for this variant of the feature. - /// - public string ConfigurationReference { get; set; } - /// /// Overrides the state of the feature if this variant has been assigned. /// diff --git a/tests/Tests.FeatureManagement/FeatureManagementTest.cs b/tests/Tests.FeatureManagement/FeatureManagementTest.cs index 48551376..d8adf251 100644 --- a/tests/Tests.FeatureManagement/FeatureManagementTest.cs +++ b/tests/Tests.FeatureManagement/FeatureManagementTest.cs @@ -1472,7 +1472,6 @@ public async Task UsesVariants() Variant variant = await featureManager.GetVariantAsync(Features.VariantFeaturePercentileOn, cancellationToken); Assert.Equal("Big", variant.Name); - Assert.Equal("green", variant.Configuration["Color"]); Assert.False(await featureManager.IsEnabledAsync(Features.VariantFeaturePercentileOn, cancellationToken)); variant = await featureManager.GetVariantAsync(Features.VariantFeaturePercentileOff, cancellationToken); @@ -1541,11 +1540,6 @@ public async Task VariantsInvalidScenarios() Assert.Null(variant); - // Verify that ConfigurationValue has priority over ConfigurationReference - variant = await featureManager.GetVariantAsync(Features.VariantFeatureBothConfigurations, cancellationToken); - - Assert.Equal("600px", variant.Configuration.Value); - // Verify that an exception is thrown for invalid StatusOverride value FeatureManagementException e = await Assert.ThrowsAsync(async () => { diff --git a/tests/Tests.FeatureManagement/Features.cs b/tests/Tests.FeatureManagement/Features.cs index 9562c9bb..22c22201 100644 --- a/tests/Tests.FeatureManagement/Features.cs +++ b/tests/Tests.FeatureManagement/Features.cs @@ -24,7 +24,6 @@ static class Features public const string VariantFeatureNoVariants = "VariantFeatureNoVariants"; public const string VariantFeatureNoAllocation = "VariantFeatureNoAllocation"; public const string VariantFeatureAlwaysOffNoAllocation = "VariantFeatureAlwaysOffNoAllocation"; - public const string VariantFeatureBothConfigurations = "VariantFeatureBothConfigurations"; public const string VariantFeatureInvalidStatusOverride = "VariantFeatureInvalidStatusOverride"; public const string VariantFeatureInvalidFromTo = "VariantFeatureInvalidFromTo"; public const string VariantImplementationFeature = "VariantImplementationFeature"; diff --git a/tests/Tests.FeatureManagement/appsettings.json b/tests/Tests.FeatureManagement/appsettings.json index 0556fdf0..a99a325d 100644 --- a/tests/Tests.FeatureManagement/appsettings.json +++ b/tests/Tests.FeatureManagement/appsettings.json @@ -6,17 +6,6 @@ }, "AllowedHosts": "*", - "ShoppingCart": { - "Big": { - "Size": 600, - "Color": "green" - }, - "Small": { - "Size": 300, - "Color": "gray" - } - }, - "feature_management": { "feature_flags": [ { @@ -209,7 +198,6 @@ "variants": [ { "name": "Big", - "configuration_reference": "ShoppingCart:Big", "status_override": "Disabled" } ], @@ -232,8 +220,7 @@ "enabled": true, "variants": [ { - "name": "Big", - "configuration_reference": "ShoppingCart:Big" + "name": "Big" } ], "allocation": { @@ -255,8 +242,7 @@ "enabled": false, "variants": [ { - "name": "Big", - "configuration_reference": "ShoppingCart:Big" + "name": "Big" } ], "allocation": { @@ -410,20 +396,6 @@ "enabled": true } }, - { - "id": "VariantFeatureBothConfigurations", - "enabled": true, - "variants": [ - { - "name": "Small", - "configuration_value": "600px", - "configuration_reference": "ShoppingCart:Small" - } - ], - "allocation": { - "default_when_enabled": "Small" - } - }, { "id": "VariantFeatureInvalidStatusOverride", "enabled": true,