private static void ConfigureEurekaServices(IServiceCollection services, IConfiguration config, IServiceInfo info, InetOptions netOptions) { var einfo = info as EurekaServiceInfo; var clientSection = config.GetSection(EurekaClientOptions.EUREKA_CLIENT_CONFIGURATION_PREFIX); services.Configure <EurekaClientOptions>(clientSection); services.PostConfigure <EurekaClientOptions>((options) => { EurekaPostConfigurer.UpdateConfiguration(config, einfo, options); }); var instSection = config.GetSection(EurekaInstanceOptions.EUREKA_INSTANCE_CONFIGURATION_PREFIX); services.Configure <EurekaInstanceOptions>(instSection); services.PostConfigure <EurekaInstanceOptions>((options) => { IApplicationInstanceInfo appInfo = null; if (einfo?.ApplicationInfo == null) { appInfo = services.GetApplicationInstanceInfo(); } options.NetUtils = new InetUtils(netOptions); options.ApplyNetUtils(); EurekaPostConfigurer.UpdateConfiguration(config, einfo, options, einfo?.ApplicationInfo ?? appInfo); }); }
public TracingOptions(IApplicationInstanceInfo appInfo, IConfiguration config) { if (config == null) { throw new ArgumentNullException(nameof(config)); } var section = config.GetSection(CONFIG_PREFIX); if (section != null) { section.Bind(this); } _applicationInstanceInfo = appInfo; if (string.IsNullOrEmpty(IngressIgnorePattern)) { IngressIgnorePattern = DEFAULT_INGRESS_IGNORE_PATTERN; } if (string.IsNullOrEmpty(EgressIgnorePattern)) { EgressIgnorePattern = DEFAULT_EGRESS_IGNORE_PATTERN; } }
private static void ConfigureEurekaServices(IServiceCollection services, IConfiguration config, IServiceInfo info) { var einfo = info as EurekaServiceInfo; var clientSection = config.GetSection(EurekaClientOptions.EUREKA_CLIENT_CONFIGURATION_PREFIX); services.Configure <EurekaClientOptions>(clientSection); services.PostConfigure <EurekaClientOptions>((options) => { EurekaPostConfigurer.UpdateConfiguration(config, einfo, options); }); var instSection = config.GetSection(EurekaInstanceOptions.EUREKA_INSTANCE_CONFIGURATION_PREFIX); services.Configure <EurekaInstanceOptions>(instSection); services.PostConfigure <EurekaInstanceOptions>((options) => { IApplicationInstanceInfo appInfo = null; if (einfo?.ApplicationInfo == null) { appInfo = services.BuildServiceProvider().GetService <IApplicationInstanceInfo>() ?? new ApplicationInstanceInfo(config); } EurekaPostConfigurer.UpdateConfiguration(config, einfo, options, einfo?.ApplicationInfo ?? appInfo); }); }
private static void ConfigureEurekaServices(IServiceCollection services, IConfiguration config, IServiceInfo info, InetOptions netOptions) { var einfo = info as EurekaServiceInfo; var clientSection = config.GetSection(EurekaClientOptions.EUREKA_CLIENT_CONFIGURATION_PREFIX); services.Configure <EurekaClientOptions>(clientSection); services.PostConfigure <EurekaClientOptions>((options) => { EurekaPostConfigurer.UpdateConfiguration(config, einfo, options); }); var instSection = config.GetSection(EurekaInstanceOptions.EUREKA_INSTANCE_CONFIGURATION_PREFIX); services.Configure <EurekaInstanceOptions>(instSection); services.PostConfigure <EurekaInstanceOptions>((options) => { IApplicationInstanceInfo appInfo = null; if (einfo?.ApplicationInfo == null) { appInfo = services.GetApplicationInstanceInfo(); } options.NetUtils = new InetUtils(netOptions); options.ApplyNetUtils(); EurekaPostConfigurer.UpdateConfiguration(config, einfo, options, einfo?.ApplicationInfo ?? appInfo); }); services.TryAddSingleton(serviceProvider => { var clientOptions = serviceProvider.GetRequiredService <IOptions <EurekaClientOptions> >(); return(new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(clientOptions.Value.CacheTTL) }); }); }
internal static string GetInstanceId(ConsulDiscoveryOptions options, IApplicationInstanceInfo applicationInfo) { if (string.IsNullOrEmpty(options.InstanceId)) { return(NormalizeForConsul(GetDefaultInstanceId(applicationInfo))); } return(NormalizeForConsul(options.InstanceId)); }
public ServiceInfo(string id, IApplicationInstanceInfo info) { if (string.IsNullOrEmpty(id)) { throw new ArgumentNullException(nameof(id)); } Id = id; ApplicationInfo = info; }
internal static string GetDefaultInstanceId(IApplicationInstanceInfo applicationInfo) { var appName = applicationInfo.ApplicationNameInContext(SteeltoeComponent.Discovery, ConsulDiscoveryOptions.CONSUL_DISCOVERY_CONFIGURATION_PREFIX + ":serviceName"); var instanceId = applicationInfo.InstanceId; if (string.IsNullOrEmpty(instanceId)) { var rand = new Random(); instanceId = rand.Next().ToString(); } return(appName + ":" + instanceId); }
public BootAdminClientOptions(IConfiguration config, IApplicationInstanceInfo appInfo = null) { if (config == null) { throw new ArgumentNullException(nameof(config)); } var section = config.GetSection(PREFIX); if (section != null) { section.Bind(this); } BasePath ??= GetBasePath(config); appInfo ??= new ApplicationInstanceInfo(config); ApplicationName ??= appInfo.ApplicationName; }
public TraceExporterOptions(IApplicationInstanceInfo appInfo, IConfiguration config) : this() { if (appInfo is null) { throw new ArgumentNullException(nameof(appInfo)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } var section = config.GetSection(CONFIG_PREFIX); if (section != null) { section.Bind(this); } _applicationInstanceInfo = appInfo; ServiceName ??= _applicationInstanceInfo.ApplicationNameInContext(SteeltoeComponent.Management, CONFIG_PREFIX + ":serviceName"); }
public SpringBootAdminClientOptions(IConfiguration config, IApplicationInstanceInfo appInfo) { if (config == null) { throw new ArgumentNullException(nameof(config)); } if (appInfo is null) { throw new ArgumentNullException(nameof(appInfo)); } var section = config.GetSection(PREFIX); if (section != null) { section.Bind(this); } // Require base path to be supplied directly, in the config, or in the app instance info BasePath ??= GetBasePath(config) ?? appInfo?.Uris?.FirstOrDefault() ?? throw new NullReferenceException($"Please set {PREFIX}:BasePath in order to register with Spring Boot Admin"); ApplicationName ??= appInfo.ApplicationName; }
public CloudFoundryForwarderOptions(IApplicationInstanceInfo appInfo, IServicesInfo serviceInfo, IConfiguration config) { if (appInfo is null) { throw new ArgumentNullException(nameof(appInfo)); } if (serviceInfo is null) { throw new ArgumentNullException(nameof(serviceInfo)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } applicationInstanceInfo = appInfo; var section = config.GetSection(CONFIG_PREFIX); if (section != null) { section.Bind(this); } var servOptions = serviceInfo.GetInstancesOfType(FORWARDER_NAME); if (servOptions.Any()) { ConfigureServiceCredentials(servOptions.First().Credentials); } ApplicationId ??= applicationInstanceInfo.ApplicationId; InstanceId ??= applicationInstanceInfo.InstanceId; InstanceIndex ??= applicationInstanceInfo.InstanceIndex.ToString(); }
/// <summary> /// Create a Consul registration /// </summary> /// <param name="options">configuration options to use</param> /// <param name="applicationInfo">Info about this app instance</param> /// <returns>a registration</returns> public static ConsulRegistration CreateRegistration(ConsulDiscoveryOptions options, IApplicationInstanceInfo applicationInfo) { if (options == null) { throw new ArgumentNullException(nameof(options)); } var service = new AgentServiceRegistration(); service.ID = GetInstanceId(options, applicationInfo); if (!options.PreferAgentAddress) { service.Address = options.HostName; } var appName = applicationInfo.ApplicationNameInContext(SteeltoeComponent.Discovery, ConsulDiscoveryOptions.CONSUL_DISCOVERY_CONFIGURATION_PREFIX + ":serviceName"); service.Name = NormalizeForConsul(appName); service.Tags = CreateTags(options); if (options.Port != 0) { service.Port = options.Port; SetCheck(service, options); } return(new ConsulRegistration(service, options)); }
public static void UpdateConfiguration(IConfiguration config, EurekaInstanceOptions options, IApplicationInstanceInfo instanceInfo) { var defaultId = options.GetHostName(false) + ":" + EurekaInstanceOptions.Default_Appname + ":" + EurekaInstanceOptions.Default_NonSecurePort; if (EurekaInstanceOptions.Default_Appname.Equals(options.AppName)) { var springAppName = instanceInfo?.ApplicationNameInContext(SteeltoeComponent.Discovery); // this is a bit of a hack, but depending on how we got here, ApplicationNameInContext may or may not know about VCAP if (Platform.IsCloudFoundry && springAppName == System.Reflection.Assembly.GetEntryAssembly().GetName().Name&& !string.IsNullOrEmpty(instanceInfo?.ApplicationName)) { options.AppName = instanceInfo.ApplicationName; } else if (!string.IsNullOrEmpty(springAppName)) { options.AppName = springAppName; } } if (string.IsNullOrEmpty(options.VirtualHostName)) { options.VirtualHostName = options.AppName; } if (string.IsNullOrEmpty(options.SecureVirtualHostName)) { options.SecureVirtualHostName = options.AppName; } if (string.IsNullOrEmpty(options.RegistrationMethod)) { var springRegMethod = config.GetValue <string>(SPRING_CLOUD_DISCOVERY_REGISTRATIONMETHOD_KEY); if (!string.IsNullOrEmpty(springRegMethod)) { options.RegistrationMethod = springRegMethod; } } // try to pull some values out of server config to override defaults, but only if registration method hasn't been set // if registration method has been set, the user probably wants to define their own behavior var urls = config["urls"]; if (!string.IsNullOrEmpty(urls) && string.IsNullOrEmpty(options.RegistrationMethod)) { var addresses = urls.Split(";"); foreach (var address in addresses) { if (!Uri.TryCreate(address, UriKind.Absolute, out var uri) && (address.Contains("*") || address.Contains("::"))) { Uri.TryCreate(address.Replace("*", WILDCART_HOST).Replace("::", $"{WILDCART_HOST}:"), UriKind.Absolute, out uri); } SetOptionsFromUrls(options, uri); } } if (defaultId.Equals(options.InstanceId)) { var springInstanceId = instanceInfo?.InstanceId; if (!string.IsNullOrEmpty(springInstanceId)) { options.InstanceId = springInstanceId; } else { if (options.SecurePortEnabled) { options.InstanceId = options.GetHostName(false) + ":" + options.AppName + ":" + options.SecurePort; } else { options.InstanceId = options.GetHostName(false) + ":" + options.AppName + ":" + options.NonSecurePort; } } } }
public static void UpdateConfiguration(IConfiguration config, EurekaInstanceOptions options, IApplicationInstanceInfo instanceInfo) { var defaultId = options.GetHostName(false) + ":" + EurekaInstanceOptions.Default_Appname + ":" + EurekaInstanceOptions.Default_NonSecurePort; if (EurekaInstanceOptions.Default_Appname.Equals(options.AppName)) { var springAppName = instanceInfo?.ApplicationNameInContext(SteeltoeComponent.Discovery); // this is a bit of a hack, but depending on how we got here, ApplicationNameInContext may or may not know about VCAP if (Platform.IsCloudFoundry && springAppName == System.Reflection.Assembly.GetEntryAssembly().GetName().Name&& !string.IsNullOrEmpty(instanceInfo?.ApplicationName)) { options.AppName = instanceInfo.ApplicationName; } else if (!string.IsNullOrEmpty(springAppName)) { options.AppName = springAppName; } } if (string.IsNullOrEmpty(options.VirtualHostName)) { options.VirtualHostName = options.AppName; } if (string.IsNullOrEmpty(options.SecureVirtualHostName)) { options.SecureVirtualHostName = options.AppName; } if (defaultId.Equals(options.InstanceId)) { var springInstanceId = instanceInfo?.InstanceId; if (!string.IsNullOrEmpty(springInstanceId)) { options.InstanceId = springInstanceId; } else { options.InstanceId = options.GetHostName(false) + ":" + options.AppName + ":" + options.NonSecurePort; } } if (string.IsNullOrEmpty(options.RegistrationMethod)) { string springRegMethod = config.GetValue <string>(SPRING_CLOUD_DISCOVERY_REGISTRATIONMETHOD_KEY); if (!string.IsNullOrEmpty(springRegMethod)) { options.RegistrationMethod = springRegMethod; } } }
public IndexModel(IApplicationInstanceInfo applicationInstanceInfo, IConfiguration configuration, ILogger <IndexModel> logger) { _applicationInstanceInfo = applicationInstanceInfo; _configuration = configuration; _logger = logger; }
public TestServiceInfo(string id, IApplicationInstanceInfo info) : base(id, info) { }
public static void UpdateConfiguration(IConfiguration config, EurekaServiceInfo si, EurekaInstanceOptions instOptions, IApplicationInstanceInfo appInfo) { if (instOptions == null) { return; } UpdateConfiguration(config, instOptions, appInfo); if (si == null) { return; } if (EurekaInstanceOptions.Default_Appname.Equals(instOptions.AppName)) { instOptions.AppName = si.ApplicationInfo.ApplicationName; } if (string.IsNullOrEmpty(instOptions.RegistrationMethod) || ROUTE_REGISTRATIONMETHOD.Equals(instOptions.RegistrationMethod, StringComparison.OrdinalIgnoreCase)) { UpdateWithDefaultsForRoute(si, instOptions); return; } if (DIRECT_REGISTRATIONMETHOD.Equals(instOptions.RegistrationMethod, StringComparison.OrdinalIgnoreCase)) { UpdateWithDefaultsForDirect(si, instOptions); return; } if (HOST_REGISTRATIONMETHOD.Equals(instOptions.RegistrationMethod, StringComparison.OrdinalIgnoreCase)) { UpdateWithDefaultsForHost(si, instOptions, instOptions.HostName); } }