Ejemplo n.º 1
0
        /// <summary>
        /// SendAsync override method.
        /// Recursive call.
        /// </summary>
        /// <param name="request">The request given.</param>
        /// <param name="cancellationToken">The cancelation token.</param>
        /// <returns>The Http response.</returns>
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            Uri         originalUri = request.RequestUri;
            DnsEndPoint host        = await TargetSelector.SelectHostAsync(ServiceDescription);

            if (host == null)
            {
                Logger?.LogInformation("No Dns Host Found");
                return(await base.SendAsync(request, cancellationToken));
            }

            request.RequestUri = ReplaceHost(request.RequestUri, host);
            Logger?.LogInformation("Request uri : {requestRequestUri}", request.RequestUri);
            var response = await base.SendAsync(request, cancellationToken);

            if (response == null)
            {
                return(response);
            }

            Logger?.LogTrace("Response status code : {response.StatusCode}", response.StatusCode);
            if (QuarantinePolicy.ShouldQuarantine(response))
            {
                Logger?.LogWarning("Host {host} (from original host {original_host}) is send in quarantine", host, originalUri.Host);
                await TargetSelector.BlacklistHostForAsync(host, QuarantinePolicy.QuarantineDuration);

                request.RequestUri = originalUri;
                return(await SendAsync(request, cancellationToken));
            }

            return(response);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Updates the policies for the specified container registry.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group to which the container registry belongs.
 /// </param>
 /// <param name='registryName'>
 /// The name of the container registry.
 /// </param>
 /// <param name='quarantinePolicy'>
 /// An object that represents quarantine policy for a container registry.
 /// </param>
 /// <param name='trustPolicy'>
 /// An object that represents content trust policy for a container registry.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async System.Threading.Tasks.Task <RegistryPolicies> BeginUpdatePoliciesAsync(this IRegistriesOperations operations, string resourceGroupName, string registryName, QuarantinePolicy quarantinePolicy = default(QuarantinePolicy), TrustPolicy trustPolicy = default(TrustPolicy), CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.BeginUpdatePoliciesWithHttpMessagesAsync(resourceGroupName, registryName, quarantinePolicy, trustPolicy, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Updates the policies for the specified container registry.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group to which the container registry belongs.
 /// </param>
 /// <param name='registryName'>
 /// The name of the container registry.
 /// </param>
 /// <param name='quarantinePolicy'>
 /// An object that represents quarantine policy for a container registry.
 /// </param>
 /// <param name='trustPolicy'>
 /// An object that represents content trust policy for a container registry.
 /// </param>
 public static RegistryPolicies BeginUpdatePolicies(this IRegistriesOperations operations, string resourceGroupName, string registryName, QuarantinePolicy quarantinePolicy = default(QuarantinePolicy), TrustPolicy trustPolicy = default(TrustPolicy))
 {
     return(operations.BeginUpdatePoliciesAsync(resourceGroupName, registryName, quarantinePolicy, trustPolicy).GetAwaiter().GetResult());
 }