Ejemplo n.º 1
0
        /// <summary>
        /// Add all CloudFoundry Actuators (Info, Health, Loggers, Trace)
        /// </summary>
        /// <param name="app">AppBuilder needing actuators added</param>
        /// <param name="configuration">configuration to use for actuators</param>
        /// <param name="apiExplorer">a IApiExplorer to use for mappings actuator</param>
        /// <param name="loggerProvider">the Steeltoe logging provider to use for loggers actuator</param>
        /// <param name="loggerFactory">logging factory used to create loggers for the actuators</param>
        /// <param name="version">MediaTypeVersion</param>
        /// <param name="context">Actuator Context</param>
        public static void UseCloudFoundryActuators(this IAppBuilder app, IConfiguration configuration, IApiExplorer apiExplorer, ILoggerProvider loggerProvider, ILoggerFactory loggerFactory, MediaTypeVersion version, ActuatorContext context)
        {
            app.UseDiagnosticSourceMiddleware(loggerFactory);

            if (context != ActuatorContext.Actuator)
            {
                app.UseCloudFoundrySecurityMiddleware(configuration, loggerFactory);
                app.UseCloudFoundryActuator(configuration, loggerFactory);
            }

            if (context != ActuatorContext.CloudFoundry)
            {
                app.UseHypermediaActuator(configuration, loggerFactory);
            }

            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                app.UseThreadDumpActuator(configuration, loggerFactory);
                app.UseHeapDumpActuator(configuration, null, loggerFactory);
            }

            app.UseInfoActuator(configuration, loggerFactory);
            app.UseHealthActuator(configuration, loggerFactory);
            app.UseLoggersActuator(configuration, loggerProvider, loggerFactory);

            app.UseTraceActuator(configuration, null, loggerFactory);

            app.UseMappingActuator(configuration, apiExplorer, loggerFactory);
        }
        /// <summary>
        /// Add all CloudFoundry Actuators (Info, Health, Loggers, Trace) and configure CORS
        /// </summary>
        /// <param name="app">AppBuilder needing actuators added</param>
        /// <param name="version">Mediatype version of the response</param>
        /// <param name="context">Actuator context for endpoints</param>
        public static void UseCloudFoundryActuators(this IApplicationBuilder app, MediaTypeVersion version, ActuatorContext context)
        {
            if (context != ActuatorContext.Actuator)
            {
                app.UseCors(builder =>
                {
                    builder.AllowAnyOrigin()
                    .WithMethods("GET", "POST")
                    .WithHeaders("Authorization", "X-Cf-App-Instance", "Content-Type");
                });

                app.UseCloudFoundrySecurity();
                app.UseCloudFoundryActuator();
            }

            if (context != ActuatorContext.CloudFoundry)
            {
                app.UseHypermediaActuator();
            }

            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                app.UseThreadDumpActuator(version);
                app.UseHeapDumpActuator();
            }

            app.UseInfoActuator();
            app.UseHealthActuator();
            app.UseLoggersActuator();
            app.UseTraceActuator(version);
            app.UseMappingsActuator();
        }
Ejemplo n.º 3
0
#pragma warning disable S107 // Methods should not have too many parameters
        public static void UseCloudFoundryActuators(this IAppBuilder app, IConfiguration configuration, IEnumerable <IHealthContributor> healthContributors, IApiExplorer apiExplorer, ILoggerProvider loggerProvider, ILoggerFactory loggerFactory, MediaTypeVersion version, ActuatorContext context)
#pragma warning restore S107 // Methods should not have too many parameters
        {
            app.UseDiagnosticSourceMiddleware(loggerFactory);
            if (context != ActuatorContext.Actuator)
            {
                app.UseCloudFoundrySecurityMiddleware(configuration, loggerFactory);
                app.UseCloudFoundryActuator(configuration, loggerFactory);
            }

            if (context != ActuatorContext.CloudFoundry)
            {
                app.UseHypermediaActuator(configuration, loggerFactory);
            }

            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                app.UseThreadDumpActuator(configuration, loggerFactory, version);
                app.UseHeapDumpActuator(configuration, null, loggerFactory);
            }

            app.UseInfoActuator(configuration, loggerFactory);
            app.UseEnvActuator(configuration, loggerFactory);
            var healthOptions = new HealthEndpointOptions(configuration);

            app.UseHealthActuator(healthOptions, new DefaultHealthAggregator(), healthContributors, loggerFactory);

            app.UseLoggersActuator(configuration, loggerProvider, loggerFactory);
            app.UseTraceActuator(configuration, null, loggerFactory, version);
            app.UseMappingActuator(configuration, apiExplorer, loggerFactory);
        }
Ejemplo n.º 4
0
        public static void UseCloudFoundryActuators(IConfiguration configuration, ILoggerProvider dynamicLogger, MediaTypeVersion version, ActuatorContext context, IEnumerable <IHealthContributor> healthContributors = null, IApiExplorer apiExplorer = null, ILoggerFactory loggerFactory = null)
        {
            if (context != ActuatorContext.Actuator)
            {
                UseCloudFoundrySecurity(configuration, null, loggerFactory);
                UseCloudFoundryActuator(configuration, loggerFactory);
            }
            else
            {
                UseHypermediaActuator(configuration, loggerFactory);
            }

            UseHealthActuator(configuration, null, healthContributors, loggerFactory);
            UseHeapDumpActuator(configuration, null, loggerFactory);
            UseThreadDumpActuator(configuration, version, null, loggerFactory);
            UseInfoActuator(configuration, null, loggerFactory);
            UseLoggerActuator(configuration, dynamicLogger, loggerFactory);
            UseTraceActuator(configuration, version, null, loggerFactory);
            UseMappingsActuator(configuration, apiExplorer, loggerFactory);
        }
Ejemplo n.º 5
0
 public static void UseAllActuators(IConfiguration configuration, ILoggerProvider dynamicLogger, MediaTypeVersion version, ActuatorContext context, IEnumerable <IHealthContributor> healthContributors = null, IApiExplorer apiExplorer = null, ILoggerFactory loggerFactory = null)
 {
     UseCloudFoundryActuators(configuration, dynamicLogger, version, context, healthContributors, apiExplorer, loggerFactory);
     UseEnvActuator(configuration, null, loggerFactory);
     UseRefreshActuator(configuration, loggerFactory);
     UseMetricsActuator(configuration, loggerFactory);
 }
Ejemplo n.º 6
0
        /// <summary>
        /// Add Actuators to Microsoft DI
        /// </summary>
        /// <param name="services">Service collection</param>
        /// <param name="config">Application Configuration</param>
        /// <param name="version">Set response type version</param>
        /// <param name="context">The context in which to run the actuators</param>
        /// <param name="buildCorsPolicy">Customize the CORS policy. </param>
        public static void AddCloudFoundryActuators(this IServiceCollection services, IConfiguration config, MediaTypeVersion version, ActuatorContext context, Action <CorsPolicyBuilder> buildCorsPolicy = null)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            if (context != ActuatorContext.Actuator)
            {
                var managementOptions = new CloudFoundryManagementOptions(config);
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IManagementOptions>(managementOptions));

                services.AddCors(setup =>
                {
                    setup.AddPolicy("SteeltoeManagement", (policy) =>
                    {
                        policy
                        .WithMethods("GET", "POST")
                        .WithHeaders("Authorization", "X-Cf-App-Instance", "Content-Type");

                        if (buildCorsPolicy != null)
                        {
                            buildCorsPolicy(policy);
                        }
                        else
                        {
                            policy.AllowAnyOrigin();
                        }
                    });
                });
                services.AddCloudFoundryActuator(config);
            }

            if (context != ActuatorContext.CloudFoundry)
            {
                services.AddHypermediaActuator(config);
            }

            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                services.AddThreadDumpActuator(config, version);
                services.AddHeapDumpActuator(config);
            }

            services.AddInfoActuator(config);
            services.AddHealthActuator(config);
            services.AddLoggersActuator(config);
            services.AddTraceActuator(config, version);
            services.AddMappingsActuator(config);
        }
Ejemplo n.º 7
0
        public static void AddCloudFoundryActuators(this IServiceCollection services, IConfiguration config, MediaTypeVersion version, ActuatorContext context)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            if (context != ActuatorContext.Actuator)
            {
                var managmentOptions = new CloudFoundryManagementOptions(config, Platform.IsCloudFoundry);
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IManagementOptions>(managmentOptions));

                services.AddCors();
                services.AddCloudFoundryActuator(config);
            }

            if (context != ActuatorContext.CloudFoundry)
            {
                services.AddHypermediaActuator(config);
            }

            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                services.AddThreadDumpActuator(config, version);
                services.AddHeapDumpActuator(config);
            }

            services.AddInfoActuator(config);
            services.AddHealthActuator(config);
            services.AddLoggersActuator(config);
            services.AddTraceActuator(config, version);
            services.AddMappingsActuator(config);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Add all CloudFoundry Actuators (Info, Health, Loggers, Trace) and configure CORS
        /// </summary>
        /// <param name="app">AppBuilder needing actuators added</param>
        /// <param name="version">Mediatype version of the response</param>
        /// <param name="context">Actuator context for endpoints</param>
        public static void UseCloudFoundryActuators(this IApplicationBuilder app, MediaTypeVersion version, ActuatorContext context)
        {
            if (context != ActuatorContext.Actuator)
            {
                app.UseCors("SteeltoeManagement");

                app.UseCloudFoundrySecurity();
                app.UseCloudFoundryActuator();
            }

            if (context != ActuatorContext.CloudFoundry)
            {
                app.UseHypermediaActuator();
            }

            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                app.UseThreadDumpActuator(version);
                app.UseHeapDumpActuator();
            }

            app.UseInfoActuator();
            app.UseHealthActuator();
            app.UseLoggersActuator();
            app.UseTraceActuator(version);
            app.UseMappingsActuator();
        }
        /// <summary>
        /// Add all cloudfoundry actuator OWIN Middlewares, configure CORS and Cloud Foundry request security
        /// </summary>
        /// <param name="container">Autofac DI <see cref="ContainerBuilder"/></param>
        /// <param name="config">Your application's <see cref="IConfiguration"/></param>
        /// <param name="apiExplorer">An <see cref="ApiExplorer" /> that has access to your HttpConfiguration.<para />If not provided, mappings actuator will not be registered</param>
        /// <param name="version">MediaType version for response</param>
        /// <param name="context">Actuator Context for endpoints</param>
        public static void RegisterCloudFoundryActuators(this ContainerBuilder container, IConfiguration config, IApiExplorer apiExplorer, MediaTypeVersion version, ActuatorContext context)
        {
            if (container == null)
            {
                throw new ArgumentNullException(nameof(container));
            }

            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            container.RegisterDiagnosticSourceMiddleware();
            if (context != ActuatorContext.Actuator)
            {
                container.RegisterCloudFoundrySecurityMiddleware(config);
                container.RegisterCloudFoundryActuator(config);
            }

            if (context != ActuatorContext.CloudFoundry)
            {
                container.RegisterDiagnosticSourceMiddleware();
                container.RegisterHypermediaActuator(config);
            }

            container.RegisterHealthActuator(config);
            container.RegisterHeapDumpActuator(config);
            container.RegisterInfoActuator(config);
            container.RegisterLoggersActuator(config);
            if (apiExplorer != null)
            {
                container.RegisterMappingsActuator(config, apiExplorer);
            }

            container.RegisterThreadDumpActuator(config, version);
            container.RegisterTraceActuator(config, version);
        }
Ejemplo n.º 10
0
 public CloudFoundryActuatorsStartupFilter(MediaTypeVersion mediaTypeVersion, ActuatorContext actuatorContext)
 {
     MediaTypeVersion = mediaTypeVersion;
     ActuatorContext  = actuatorContext;
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Adds all Actuators supported by Apps Manager. Also configures DynamicLogging if not previously setup.
 /// </summary>
 /// <param name="hostBuilder">Your Hostbuilder</param>
 /// <param name="mediaTypeVersion">Spring Boot media type version to use with responses</param>
 /// <param name="actuatorContext">Select how targeted to Apps Manager actuators should be</param>
 /// <param name="buildCorsPolicy">Customize the CORS policy. </param>
 public static IHostBuilder AddCloudFoundryActuators(this IHostBuilder hostBuilder, MediaTypeVersion mediaTypeVersion, ActuatorContext actuatorContext, Action <CorsPolicyBuilder> buildCorsPolicy = null)
 {
     return(hostBuilder
            .ConfigureLogging(ConfigureDynamicLogging)
            .ConfigureServices((context, collection) => ConfigureServices(collection, context.Configuration, mediaTypeVersion, actuatorContext, buildCorsPolicy)));
 }
Ejemplo n.º 12
0
 private static void ConfigureServices(IServiceCollection collection, IConfiguration configuration, MediaTypeVersion mediaTypeVersion, ActuatorContext actuatorContext, Action <CorsPolicyBuilder> buildCorsPolicy)
 {
     collection.AddCloudFoundryActuators(configuration, mediaTypeVersion, actuatorContext, buildCorsPolicy);
     collection.AddSingleton <IStartupFilter>(new CloudFoundryActuatorsStartupFilter(mediaTypeVersion, actuatorContext));
 }