internal static KVPair ToIAmAliveKVPair(String deploymentId, SiloAddress siloAddress, DateTime iAmAliveTime) { var ret = new KVPair(ConsulSiloRegistrationAssembler.ParseSiloIAmAliveKey(deploymentId, siloAddress)); ret.Value = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(iAmAliveTime)); return(ret); }
public async Task <MembershipTableData> ReadAll() { var deploymentKVAddresses = await _consulClient.KV.List(ConsulSiloRegistrationAssembler.ParseDeploymentKVPrefix(_deploymentId)); if (deploymentKVAddresses.Response == null) { _logger.Debug("Could not find any silo registrations for deployment {0}.", _deploymentId); return(new MembershipTableData(_tableVersion)); } var allSiloRegistrations = deploymentKVAddresses.Response .Where(siloKV => !siloKV.Key.EndsWith(ConsulSiloRegistrationAssembler.SiloIAmAliveSuffix, StringComparison.OrdinalIgnoreCase)) .Select(siloKV => { var iAmAliveKV = deploymentKVAddresses.Response.Where(kv => kv.Key.Equals(ConsulSiloRegistrationAssembler.ParseSiloIAmAliveKey(siloKV.Key), StringComparison.OrdinalIgnoreCase)).SingleOrDefault(); return(ConsulSiloRegistrationAssembler.FromKVPairs(_deploymentId, siloKV, iAmAliveKV)); }).ToArray(); return(AssembleMembershipTableData(allSiloRegistrations)); }
private async Task <ConsulSiloRegistration> GetConsulSiloRegistration(SiloAddress siloAddress) { var siloKey = ConsulSiloRegistrationAssembler.ParseDeploymentSiloKey(_deploymentId, siloAddress); var siloKVEntry = await _consulClient.KV.List(siloKey); if (siloKVEntry.Response == null) { return(null); } var siloKV = siloKVEntry.Response.Single(KV => KV.Key.Equals(siloKey, StringComparison.OrdinalIgnoreCase)); var iAmAliveKV = siloKVEntry.Response.SingleOrDefault(KV => KV.Key.Equals(ConsulSiloRegistrationAssembler.ParseSiloIAmAliveKey(siloKey), StringComparison.OrdinalIgnoreCase)); var siloRegistration = ConsulSiloRegistrationAssembler.FromKVPairs(_deploymentId, siloKV, iAmAliveKV); return(siloRegistration); }