/// <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(); }
#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); }
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); }
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); }
/// <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); }
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); }
/// <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); }
public CloudFoundryActuatorsStartupFilter(MediaTypeVersion mediaTypeVersion, ActuatorContext actuatorContext) { MediaTypeVersion = mediaTypeVersion; ActuatorContext = actuatorContext; }
/// <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))); }
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)); }