public async Task <bool?> Register() { var logger = Utility.CreateLogger(nameof(KamajiClient), nameof(Register)); try { NodeRegisterModel model = new NodeRegisterModel(); model.Address = DataSources.Jsons.AppSettings.Config.Address; IResourceMonitor resourceMonitor = SystemInfo.CreateResourceMonitor(); model.ThreadCount = SystemInfo.ProcessorCount; model.TotalMemory = resourceMonitor.GetTotalMemory().ConvertTo <int>(); model.ComputerName = SystemInfo.ComputerName(); model.IpAddress = SystemInfo.GetIpv4Address()?.ToString(); string[] arr = model.Address.Split(':'); if (arr.Length > 1 && int.TryParse(arr[arr.Length - 1], out int port)) { model.Port = port; } bool success = await RestClient.Instance.PostAsync <bool>($"{KamajiNodeActions.Register}", model); await logger.Code(1).Info("A token has been taken and conected to Kamaji").SaveAsync(); return(success); } catch (Exception ex) { await logger.Code(1).Error(ex).SaveAsync(); return(null); } }
public Task <IActionResult> Register([FromBody] NodeRegisterModel node) { return(this.ResultAsync(async() => { bool ret = false; if (node.IsModelValid()) { INodeModel model = null; if (!String.IsNullOrEmpty(node.Address)) { model = await this.Db.Nodes.GetBy(node.Address); } if (null == model) { model = this.Db.ModelFactory.CreateNodeModel(); } model.CopyPropertiesFrom(node); model.ConnectionStatus = NodeConnectionStatus.Online; model.LastConnectionTime = DateTime.Now; model.CpuUsage = 0; model.MemoryUsage = 0; model.TotalBeatsCount = 0; model = await this.Db.Nodes.Save(model); NodeResourceUsages.Instance.Get(model.Address)?.Reset(); _ = this.HandleOfflineData(node.Address); ret = true; if (!_hasAny) { _hasAny = true; StartNanoServices(); } } return ret; })); }