private static object CreateNodeResponse()

in src/Elastic.Transport.VirtualizedCluster/Products/Elasticsearch/ElasticsearchSniffResponseFactory.cs [44:87]


	private static object CreateNodeResponse(Node node, string name, string elasticsearchVersion, string publishAddressOverride, bool randomFqdn)
	{
		var port = node.Uri.Port;
		var fqdn = randomFqdn ? $"fqdn{port}/" : "";
		var host = !string.IsNullOrWhiteSpace(publishAddressOverride) ? publishAddressOverride : "127.0.0.1";

		var settings = new Dictionary<string, object>
			{
				{ "cluster.name", ClusterName },
				{ "node.name", name }
			};
		foreach (var kv in node.Settings) settings[kv.Key] = kv.Value;

		var httpEnabled = node.HasFeature(ElasticsearchNodeFeatures.HttpEnabled);

		var nodeResponse = new
		{
			name,
			settings,
			transport_address = $"127.0.0.1:{port + 1000}]",
			host = Guid.NewGuid().ToString("N").Substring(0, 8),
			ip = "127.0.0.1",
			version = elasticsearchVersion,
			build_hash = Guid.NewGuid().ToString("N").Substring(0, 8),
			roles = new List<string>(),
			http = httpEnabled
				? new
				{
					bound_address = new[]
					{
							$"{fqdn}127.0.0.1:{port}"
					},
					//publish_address = $"{fqdn}${publishAddress}"
					publish_address = $"{fqdn}{host}:{port}"
				}
				: null
		};
		if (node.HasFeature(ElasticsearchNodeFeatures.MasterEligible)) nodeResponse.roles.Add("master");
		if (node.HasFeature(ElasticsearchNodeFeatures.HoldsData)) nodeResponse.roles.Add("data");
		if (node.HasFeature(ElasticsearchNodeFeatures.IngestEnabled)) nodeResponse.roles.Add("ingest");
		if (!httpEnabled)
			nodeResponse.settings.Add("http.enabled", false);
		return nodeResponse;
	}