/// <summary> /// Update <see cref="EurekaInstanceOptions"/> with information from the runtime environment /// </summary> /// <param name="config">Application Configuration</param> /// <param name="options">Eureka instance information (for identifying the application)</param> /// <param name="instanceInfo">Information about this application instance</param> public static void UpdateConfiguration(IConfiguration config, EurekaInstanceOptions options, IApplicationInstanceInfo instanceInfo) { var defaultIdEnding = ":" + 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; } } options.ApplyConfigUrls(config.GetAspNetCoreUrls(), ConfigurationUrlHelpers.WILDCARD_HOST); if (options.InstanceId.EndsWith(defaultIdEnding)) { 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) { var defaultId = options.GetHostName(false) + ":" + EurekaInstanceOptions.Default_Appname + ":" + EurekaInstanceOptions.Default_NonSecurePort; if (EurekaInstanceOptions.Default_Appname.Equals(options.AppName)) { string springAppName = config.GetValue <string>(SPRING_APPLICATION_NAME_KEY); 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)) { string springInstanceId = config.GetValue <string>(SPRING_APPLICATION_INSTANCEID_KEY); 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 string GetHost() { return(InstConfig.GetHostName(false)); }
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; } } } }