private void DataGridViewFrontDoors_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { if (e.RowIndex < 0) { return; } this.dataGridViewFrontEnds.DataSource = null; DataGridViewRow SelectedRow = this.dataGridViewFrontDoors.Rows[e.RowIndex]; FrontDoorModel SelectedFrontDoor = SelectedRow?.DataBoundItem as FrontDoorModel; if (SelectedFrontDoor != null) { this.dataGridViewFrontEnds.DataSource = SelectedFrontDoor.FrontendEndpoints; this.dataGridViewBackEnds.DataSource = SelectedFrontDoor.BackendPools; this.dataGridViewRules.DataSource = SelectedFrontDoor.RoutingRules; textBoxAddFrontDoor.Text = SelectedFrontDoor.Name; } tabControlAreas.SelectedIndex = 1; }
private static void VerifyFrontDoor(FrontDoorModel frontDoor, FrontDoorModel parameters) { Assert.Equal(frontDoor.Location.ToLower(), parameters.Location.ToLower()); Assert.Equal(frontDoor.FriendlyName, parameters.FriendlyName); Assert.Equal(frontDoor.Tags.Count, parameters.Tags.Count); Assert.True(frontDoor.Tags.SequenceEqual(parameters.Tags)); VerifyRoutingRules(frontDoor.RoutingRules, parameters.RoutingRules); VerifyBackendPool(frontDoor.BackendPools, parameters.BackendPools); VerifyHealthProbeSettings(frontDoor.HealthProbeSettings, parameters.HealthProbeSettings); VerifyLoadBalancingSettings(frontDoor.LoadBalancingSettings, parameters.LoadBalancingSettings); VerifyFrontendEndpoint(frontDoor.FrontendEndpoints, parameters.FrontendEndpoints); }
public async Task <Boolean> CreateFrontEnd(String resourceGroup, String frontDoor, String endpointName, String hostName) { FrontDoorManagementClient Interface = await GetClientInstance(); FrontendEndpoint Parameters = new FrontendEndpoint() { HostName = hostName, Name = endpointName, SessionAffinityEnabledState = "Enabled", WebApplicationFirewallPolicyLink = null, }; AzureOperationResponse <FrontDoorModel> Response; try { //Add the frontend by pulling down and reuploading the full config for the frontdoor FrontDoorModel TargetFrontDoor = Interface.FrontDoors.Get(resourceGroup, frontDoor); TargetFrontDoor.FrontendEndpoints.Add(Parameters); Response = await Interface.FrontDoors.CreateOrUpdateWithHttpMessagesAsync(resourceGroup, frontDoor, TargetFrontDoor); } catch (ErrorResponseException exc) { this.LastError = exc.Response?.Content; if (String.IsNullOrWhiteSpace(this.LastError)) { this.LastError = exc.ToString(); } return(false); } return(Response.Response.IsSuccessStatusCode); }
/// <summary> /// Creates a new Front Door with a Front Door name under the specified /// subscription and resource group. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// Name of the Resource group within the Azure subscription. /// </param> /// <param name='frontDoorName'> /// Name of the Front Door which is globally unique. /// </param> /// <param name='frontDoorParameters'> /// Front Door properties needed to create a new Front Door. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <FrontDoorModel> BeginCreateOrUpdateAsync(this IFrontDoorsOperations operations, string resourceGroupName, string frontDoorName, FrontDoorModel frontDoorParameters, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.BeginCreateOrUpdateWithHttpMessagesAsync(resourceGroupName, frontDoorName, frontDoorParameters, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// Creates a new Front Door with a Front Door name under the specified /// subscription and resource group. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// Name of the Resource group within the Azure subscription. /// </param> /// <param name='frontDoorName'> /// Name of the Front Door which is globally unique. /// </param> /// <param name='frontDoorParameters'> /// Front Door properties needed to create a new Front Door. /// </param> public static FrontDoorModel BeginCreateOrUpdate(this IFrontDoorsOperations operations, string resourceGroupName, string frontDoorName, FrontDoorModel frontDoorParameters) { return(operations.BeginCreateOrUpdateAsync(resourceGroupName, frontDoorName, frontDoorParameters).GetAwaiter().GetResult()); }
public void FrontDoorCRUDTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var frontDoorMgmtClient = FrontDoorTestUtilities.GetFrontDoorManagementClient(context, handler1); var resourcesClient = FrontDoorTestUtilities.GetResourceManagementClient(context, handler2); // Get subscription id string subid = frontDoorMgmtClient.SubscriptionId; // Create resource group var resourceGroupName = FrontDoorTestUtilities.CreateResourceGroup(resourcesClient); // Create two different frontDoor string frontDoorName = TestUtilities.GenerateName("frontDoor"); ForwardingConfiguration forwardingConfiguration = new ForwardingConfiguration( forwardingProtocol: "MatchRequest", backendPool: new refID("/subscriptions/" + subid + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.Network/frontDoors/" + frontDoorName + "/backendPools/backendPool1")); RoutingRule routingrule1 = new RoutingRule( name: "routingrule1", frontendEndpoints: new List <refID> { new refID("/subscriptions/" + subid + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.Network/frontDoors/" + frontDoorName + "/frontendEndpoints/frontendEndpoint1") }, acceptedProtocols: new List <string> { "Https" }, patternsToMatch: new List <string> { "/*" }, routeConfiguration: forwardingConfiguration, enabledState: "Enabled" ); HealthProbeSettingsModel healthProbeSettings1 = new HealthProbeSettingsModel( name: "healthProbeSettings1", path: "/", protocol: "Http", intervalInSeconds: 120, healthProbeMethod: "Get", enabledState: "Enabled" ); LoadBalancingSettingsModel loadBalancingSettings1 = new LoadBalancingSettingsModel( name: "loadBalancingSettings1", additionalLatencyMilliseconds: 0, sampleSize: 4, successfulSamplesRequired: 2 ); Backend backend1 = new Backend( address: "contoso1.azurewebsites.net", httpPort: 80, httpsPort: 443, enabledState: "Enabled", weight: 1, priority: 2 ); BackendPool backendPool1 = new BackendPool( name: "backendPool1", backends: new List <Backend> { backend1 }, loadBalancingSettings: new refID("/subscriptions/" + subid + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.Network/frontDoors/" + frontDoorName + "/loadBalancingSettings/loadBalancingSettings1"), healthProbeSettings: new refID("/subscriptions/" + subid + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.Network/frontDoors/" + frontDoorName + "/healthProbeSettings/healthProbeSettings1") ); BackendPoolsSettings backendPoolsSettings1 = new BackendPoolsSettings( sendRecvTimeoutSeconds: 123 ); FrontendEndpoint frontendEndpoint1 = new FrontendEndpoint( name: "frontendEndpoint1", hostName: frontDoorName + ".azurefd.net", sessionAffinityEnabledState: "Disabled", sessionAffinityTtlSeconds: 0 ); FrontDoorModel createParameters = new FrontDoorModel { Location = "global", FriendlyName = frontDoorName, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } }, RoutingRules = new List <RoutingRule> { routingrule1 }, LoadBalancingSettings = new List <LoadBalancingSettingsModel> { loadBalancingSettings1 }, HealthProbeSettings = new List <HealthProbeSettingsModel> { healthProbeSettings1 }, FrontendEndpoints = new List <FrontendEndpoint> { frontendEndpoint1 }, BackendPools = new List <BackendPool> { backendPool1 }, BackendPoolsSettings = backendPoolsSettings1 }; var createdFrontDoor = frontDoorMgmtClient.FrontDoors.CreateOrUpdate(resourceGroupName, frontDoorName, createParameters); // validate that correct frontdoor is created VerifyFrontDoor(createdFrontDoor, createParameters); // Retrieve frontdoor var retrievedFrontDoor = frontDoorMgmtClient.FrontDoors.Get(resourceGroupName, frontDoorName); // validate that correct frontdoor is retrieved VerifyFrontDoor(retrievedFrontDoor, createParameters); // update FrontDoor retrievedFrontDoor.Tags = new Dictionary <string, string> { { "key3", "value3" }, { "key4", "value4" } }; var updatedFrontDoor = frontDoorMgmtClient.FrontDoors.CreateOrUpdate(resourceGroupName, frontDoorName, retrievedFrontDoor); // validate that frontDoor is correctly updated VerifyFrontDoor(updatedFrontDoor, retrievedFrontDoor); // Delete frontDoor frontDoorMgmtClient.FrontDoors.Delete(resourceGroupName, frontDoorName); // Verify that frontDoor is deleted Assert.ThrowsAny <ErrorResponseException>(() => { frontDoorMgmtClient.FrontDoors.Get(resourceGroupName, frontDoorName); }); FrontDoorTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void FrontDoorCRUDTestWithRulesEngine() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var frontDoorMgmtClient = FrontDoorTestUtilities.GetFrontDoorManagementClient(context, handler1); var resourcesClient = FrontDoorTestUtilities.GetResourceManagementClient(context, handler2); // Get subscription id string subid = frontDoorMgmtClient.SubscriptionId; // Create resource group var resourceGroupName = FrontDoorTestUtilities.CreateResourceGroup(resourcesClient); // Create two different frontDoor string frontDoorName = TestUtilities.GenerateName("frontDoor"); ForwardingConfiguration forwardingConfiguration = new ForwardingConfiguration( forwardingProtocol: "MatchRequest", backendPool: new refID("/subscriptions/" + subid + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.Network/frontDoors/" + frontDoorName + "/backendPools/backendPool1")); RoutingRule routingrule1 = new RoutingRule( name: "routingrule1", frontendEndpoints: new List <refID> { new refID("/subscriptions/" + subid + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.Network/frontDoors/" + frontDoorName + "/frontendEndpoints/frontendEndpoint1") }, acceptedProtocols: new List <string> { "Https" }, patternsToMatch: new List <string> { "/*" }, routeConfiguration: forwardingConfiguration, enabledState: "Enabled" ); HealthProbeSettingsModel healthProbeSettings1 = new HealthProbeSettingsModel( name: "healthProbeSettings1", path: "/", protocol: "Http", intervalInSeconds: 120, healthProbeMethod: "Get", enabledState: "Enabled" ); LoadBalancingSettingsModel loadBalancingSettings1 = new LoadBalancingSettingsModel( name: "loadBalancingSettings1", additionalLatencyMilliseconds: 0, sampleSize: 4, successfulSamplesRequired: 2 ); Backend backend1 = new Backend( address: "contoso1.azurewebsites.net", httpPort: 80, httpsPort: 443, enabledState: "Enabled", weight: 1, priority: 2 ); BackendPool backendPool1 = new BackendPool( name: "backendPool1", backends: new List <Backend> { backend1 }, loadBalancingSettings: new refID("/subscriptions/" + subid + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.Network/frontDoors/" + frontDoorName + "/loadBalancingSettings/loadBalancingSettings1"), healthProbeSettings: new refID("/subscriptions/" + subid + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.Network/frontDoors/" + frontDoorName + "/healthProbeSettings/healthProbeSettings1") ); BackendPoolsSettings backendPoolsSettings1 = new BackendPoolsSettings( sendRecvTimeoutSeconds: 123 ); FrontendEndpoint frontendEndpoint1 = new FrontendEndpoint( name: "frontendEndpoint1", hostName: frontDoorName + ".azurefd.net", sessionAffinityEnabledState: "Disabled", sessionAffinityTtlSeconds: 0 ); FrontDoorModel createParameters = new FrontDoorModel { Location = "global", FriendlyName = frontDoorName, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } }, RoutingRules = new List <RoutingRule> { routingrule1 }, LoadBalancingSettings = new List <LoadBalancingSettingsModel> { loadBalancingSettings1 }, HealthProbeSettings = new List <HealthProbeSettingsModel> { healthProbeSettings1 }, FrontendEndpoints = new List <FrontendEndpoint> { frontendEndpoint1 }, BackendPools = new List <BackendPool> { backendPool1 }, BackendPoolsSettings = backendPoolsSettings1 }; var createdFrontDoor = frontDoorMgmtClient.FrontDoors.CreateOrUpdate(resourceGroupName, frontDoorName, createParameters); // validate that correct frontdoor is created VerifyFrontDoor(createdFrontDoor, createParameters); // Create rules engine for front door RulesEngineAction rulesEngineAction1 = new RulesEngineAction( requestHeaderActions: new List <HeaderAction> { }, responseHeaderActions: new List <HeaderAction> { }, routeConfigurationOverride: new ForwardingConfiguration( customForwardingPath: null, forwardingProtocol: "HttpsOnly", cacheConfiguration: new CacheConfiguration(queryParameterStripDirective: "StripNone", dynamicCompression: "Disabled"), backendPool: new refID("/subscriptions/" + subid + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.Network/frontDoors/" + frontDoorName + "/backendPools/backendPool1") ) ); RulesEngineMatchCondition rulesEngineMatchCondition1 = new RulesEngineMatchCondition( rulesEngineMatchVariable: "RequestHeader", selector: "Rules-engine-action", rulesEngineOperator: "Equal", rulesEngineMatchValue: new List <string> { "Route-override-forwarding" }, negateCondition: false, transforms: new List <string> { } ); RulesEngineRule rule1 = new RulesEngineRule( priority: 1, name: "Rules1", matchProcessingBehavior: "Stop", action: rulesEngineAction1, matchConditions: new List <RulesEngineMatchCondition> { rulesEngineMatchCondition1 } ); RulesEngine rulesEngine1 = new RulesEngine( rules: new List <RulesEngineRule> { rule1 }, name: "RulesEngine1" ); var rulesEngineParameters = new List <RulesEngine> { rulesEngine1 }; var createdRulesEngine = frontDoorMgmtClient.RulesEngines.CreateOrUpdate(resourceGroupName, frontDoorName, rulesEngine1.Name, rulesEngineParameters[0]); // Validate correct rules engine created VerifyRulesEngine(createdRulesEngine, rulesEngineParameters[0]); // Retrieve rules engines for front door var retrievedRulesEngines = frontDoorMgmtClient.RulesEngines.ListByFrontDoor(resourceGroupName, frontDoorName).ToList <RulesEngine>(); // Validate correct rules engines retrieved from front door VerifyRulesEngines(retrievedRulesEngines, rulesEngineParameters); // Retrieve frontdoor and validate rules engine present var retrievedFrontDoor = frontDoorMgmtClient.FrontDoors.Get(resourceGroupName, frontDoorName); VerifyFrontDoor(retrievedFrontDoor, createParameters); VerifyRulesEngines(retrievedFrontDoor.RulesEngines, rulesEngineParameters); // Link rules engine to routing rule // why did sdk not autogenerate into subresource? retrievedFrontDoor.RoutingRules[0].RulesEngine = new refID("/subscriptions/" + subid + "/resourceGroups/" + resourceGroupName + "/providers/Microsoft.Network/frontDoors/" + frontDoorName + "/rulesEngines/" + rulesEngine1.Name); var updatedFrontDoor = frontDoorMgmtClient.FrontDoors.CreateOrUpdate(resourceGroupName, frontDoorName, retrievedFrontDoor); // Validate rules engine has been linked. VerifyFrontDoor(updatedFrontDoor, retrievedFrontDoor); // Unlink rules engine and delete rules engine. frontDoorMgmtClient.FrontDoors.CreateOrUpdate(resourceGroupName, frontDoorName, createParameters); frontDoorMgmtClient.RulesEngines.Delete(resourceGroupName, frontDoorName, rulesEngine1.Name); // Verify rules engine deleted retrievedRulesEngines = frontDoorMgmtClient.RulesEngines.ListByFrontDoor(resourceGroupName, frontDoorName).ToList <RulesEngine>(); Assert.Empty(retrievedRulesEngines); // Delete frontDoor frontDoorMgmtClient.FrontDoors.Delete(resourceGroupName, frontDoorName); // Verify that frontDoor is deleted Assert.ThrowsAny <ErrorResponseException>(() => { frontDoorMgmtClient.FrontDoors.Get(resourceGroupName, frontDoorName); }); FrontDoorTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }