public void MetadataUpdate(DiscoveryMetadata metadata) { if (!String.IsNullOrWhiteSpace(metadata.Value)) { if (HostMetadata != null) { if (HostMetadata.Contains(metadata)) { try { Predicate <DiscoveryMetadata> finder = (DiscoveryMetadata m) => { return(m.Name == metadata.Name); }; DiscoveryMetadata data = HostMetadata.Find(finder); data.Value = metadata.Value; EndpointDiscoveryBehavior behavior = HostEndpoint.Behaviors.Find <EndpointDiscoveryBehavior>(); foreach (XElement element in behavior.Extensions.Elements <XElement>()) { if (element.Name.Equals(metadata.Name.ToString())) { element.SetValue(metadata.Value); } } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); throw ex; } } } } }
public void MetadataSet(DiscoveryMetadata metadata) { if (HostMetadata == null) { HostMetadata = new List <DiscoveryMetadata>(); } HostMetadata.Add(metadata); }
HostMetadata GetHostMetadata() { HostMetadata hostMetadata = new HostMetadata() { HostName = _HostName, Instance = _Instance, HostAddress = _HostAddress + (_HostAddress.EndsWith("/") ? "" : "/") }; return(hostMetadata); }
public void CanParseMalformedKernels( string fullVersion, string expectedKernel, string expectedRelease, string expectedVersion) { HostMetadata.ParseKernel(fullVersion, out var kernel, out var release, out var version); using var scope = new AssertionScope(); kernel.Should().Be(expectedKernel); release.Should().Be(expectedRelease); version.Should().Be(expectedVersion); }
public IActionResult Deregister(HttpRequestMessage request, string name, string instance) { lock (Hub.Hosts) { HostMetadata host = Hub.Hosts.FirstOrDefault(item => item.HostName.ToLower() == name.ToLower() && item.Instance.ToLower() == instance.ToLower()); if (host != null) { Hub.Hosts.Remove(host); } } return(new ObjectResult("OK")); }
public IActionResult Register(HttpRequestMessage request, [FromBody] HostMetadata host) { lock (Hub.Hosts) { if (Hub.Hosts == null) { Hub.Hosts = new List <HostMetadata>(); } HostMetadata existingHost = Hub.Hosts.FirstOrDefault(item => item.HostAddress.ToLower() == host.HostAddress.ToLower() && item.Instance.ToLower() == host.Instance.ToLower()); if (existingHost == null) { Hub.Hosts.Add(host); } } return(new ObjectResult("OK")); }
public HostMetadata Connect(string url) { var host = new HostMetadata(); using (var client = new HttpClient()) { var referer = ConfigurationSettings.AppSettings.Get("Referer"); var strs = referer.Split(':'); client.DefaultRequestHeaders.Referrer = new Uri(referer); AddHostResponce responce = null; var task = client.GetAsync(url + "/api/host/add?host=" + strs[0] + "&port=" + strs[1]).ContinueWith((taskwithresponse) => { var response = taskwithresponse.Result; var jsonString = response.Content.ReadAsStringAsync(); jsonString.Wait(); responce = JsonConvert.DeserializeObject <AddHostResponce>(jsonString.Result); }); task.Wait(); var markedStr = MarkString(responce.VerificationString); var r = new AddHostVerificationRequest() { EncodedString = markedStr, RequestId = responce.RequestId, Host = strs[0], Port = strs[1] }; var buffer = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(r)); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); HttpStatusCode result = HttpStatusCode.BadRequest; task = client.PostAsync(url + "/api/host/Verify", byteContent).ContinueWith((taskwithresponse) => { var response = taskwithresponse.Result; result = response.StatusCode; }); task.Wait(); if (result != HttpStatusCode.OK) { throw new Exception(result.ToString()); } } return(host); }
public void Start() { IConfigurationBuilder configBuilder = new ConfigurationBuilder(); configBuilder.AddJsonFile("host.json"); IConfigurationRoot configuration = configBuilder.Build(); _HostName = configuration["hostName"]; _Instance = GenerateUniqueInstanceIdentifier(); _WebHost.Start(); _DiscoveryMetadata = GetDiscoveryMetadata(); _EventSubscriptions = GetEventSubscriptions(); _HostMetadata = GetHostMetadata(); // discovery hub _DiscoveryHubTimer = new Timer(5000); _DiscoveryHubTimer.Elapsed += (s, e) => { _DiscoveryHubTimer.Stop(); if (!_ConnectedToDiscoveryHub) { _ConnectedToDiscoveryHub = ConnectToDiscoveryHub(); OnDiscoveryHubConnect(_ConnectedToDiscoveryHub); } else { _ConnectedToDiscoveryHub = PingDiscoveryHub(); } _DiscoveryHubTimer.Start(); }; _DiscoveryHubTimer.Start(); // event hub _EventHubTimer = new Timer(5000); _EventHubTimer.Elapsed += (s, e) => { _EventHubTimer.Stop(); if (!_SubscribedToEvents) { _SubscribedToEvents = SubscribeToEvents(); OnEventHubSubscribed(_SubscribedToEvents); } else { _SubscribedToEvents = PingEventHub(); } _EventHubTimer.Start(); }; _EventHubTimer.Start(); // monitor hub _MonitorHubTimer = new Timer(5000); _MonitorHubTimer.Elapsed += (s, e) => { _MonitorHubTimer.Stop(); if (!_RegisteredWithMonitorHub) { _RegisteredWithMonitorHub = RegisterWithMonitorHub(); OnMonitorHubRegistered(_RegisteredWithMonitorHub); } else { _RegisteredWithMonitorHub = PingMonitorHub(); } _MonitorHubTimer.Start(); }; _MonitorHubTimer.Start(); }