Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 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);
        }
Ejemplo n.º 4
0
 /// <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);
     }
 }
Ejemplo n.º 5
0
 /// <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());
 }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
        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);
            }
        }