Пример #1
0
        /// <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;
                    }
                }
            }
        }
Пример #2
0
        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;
                }
            }
        }
Пример #3
0
 public string GetHost()
 {
     return(InstConfig.GetHostName(false));
 }
Пример #4
0
        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;
                    }
                }
            }
        }