public async Task UpdateOutboundRule(string resourceGroupName, string securityGroupName,
                                             NsgRuleDto rule, CancellationToken cancellationToken = default)
        {
            var operationStep1 = _azure.NetworkSecurityGroups
                                 .GetByResourceGroup(resourceGroupName, securityGroupName)
                                 .Update();

            var operationStep2 = operationStep1
                                 .UpdateRule(rule.Name);

            var operationStep3 = (rule.Action == RuleAction.Allow ? operationStep2.AllowOutbound() : operationStep2.DenyOutbound())
                                 .FromAddresses(rule.SourceAddress);

            var operationStep4 = (rule.SourcePort == 0 ? operationStep3.FromAnyPort() : operationStep3.FromPort(rule.SourcePort));
            //ruleMapped.DestinationAddress = "*";
            //ruleMapped.DestinationPort = 0;

            var operationStep5 = (rule.DestinationAddress == "*" ? operationStep4.ToAnyAddress() : operationStep2.ToAddress(rule.DestinationAddress));

            _ = operationStep5
                .ToAnyPort()
                .WithAnyProtocol()
                .WithPriority(rule.Priority)
                .WithDescription(rule.Description);

            await operationStep1.ApplyAsync();
        }
        public async Task AddInboundRule(string resourceGroupName, string securityGroupName,
                                         NsgRuleDto rule, CancellationToken cancellationToken = default)
        {
            var createOperation = _azure.NetworkSecurityGroups
                                  .GetByResourceGroup(resourceGroupName, securityGroupName)
                                  .Update()
                                  .DefineRule(rule.Name);

            var operationWithRules = (rule.Action == RuleAction.Allow ? createOperation.AllowInbound() : createOperation.DenyInbound())
                                     .FromAddresses(rule.SourceAddress)
                                     .FromAnyPort()
                                     .ToAddresses(rule.DestinationAddress);

            _ = await(rule.DestinationPort == 0 ? operationWithRules.ToAnyPort() : operationWithRules.ToPort(rule.DestinationPort))
                .WithAnyProtocol()
                .WithPriority(rule.Priority)
                .WithDescription(rule.Description)
                .Attach()
                .ApplyAsync(cancellationToken);
        }
        public async Task UpdateInboundRule(string resourceGroupName, string securityGroupName,
                                            NsgRuleDto rule, CancellationToken cancellationToken = default)
        {
            var updateNsgOperation = _azure.NetworkSecurityGroups
                                     .GetByResourceGroup(resourceGroupName, securityGroupName)
                                     .Update();


            var updateRuleOp = updateNsgOperation
                               .UpdateRule(rule.Name);

            //Decide of allow or deny
            (rule.Action == RuleAction.Allow ? updateRuleOp.AllowInbound() : updateRuleOp.DenyInbound())

            .FromAddresses(rule.SourceAddress)
            .FromAnyPort()
            .ToAddresses(rule.DestinationAddress);
            _ = (rule.DestinationPort == 0 ? updateRuleOp.ToAnyPort() : updateRuleOp.ToPort(rule.DestinationPort))

                .WithAnyProtocol()
                .WithPriority(rule.Priority)
                .WithDescription(rule.Description);
            await updateNsgOperation.ApplyAsync();
        }