Exemplo n.º 1
0
        private void SetDseInfo(IRow row)
        {
            if (row.ContainsColumn("workloads"))
            {
                Workloads = row.GetValue <string[]>("workloads");
            }
            else if (row.ContainsColumn("workload") && row.GetValue <string>("workload") != null)
            {
                Workloads = new[] { row.GetValue <string>("workload") };
            }
            else
            {
                Workloads = WorkloadsDefault;
            }

            if (row.ContainsColumn("dse_version"))
            {
                var dseVersion = row.GetValue <string>("dse_version");
                if (!string.IsNullOrEmpty(dseVersion))
                {
                    DseVersion = Version.Parse(dseVersion.Split('-')[0]);
                }
            }

            if (row.ContainsColumn("host_id"))
            {
                var nullableHostId = row.GetValue <Guid?>("host_id");
                if (nullableHostId.HasValue)
                {
                    HostId = nullableHostId.Value;
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Sets datacenter, rack and other basic information of a host.
        /// </summary>
        internal void SetInfo(IRow row)
        {
            Datacenter = row.GetValue <string>("data_center");
            Rack       = row.GetValue <string>("rack");
            Tokens     = row.GetValue <IEnumerable <string> >("tokens") ?? new string[0];

            if (row.ContainsColumn("release_version"))
            {
                var releaseVersion = row.GetValue <string>("release_version");
                if (releaseVersion != null)
                {
                    CassandraVersion = Version.Parse(releaseVersion.Split('-')[0]);
                }
            }

            if (row.ContainsColumn("host_id"))
            {
                var nullableHostId = row.GetValue <Guid?>("host_id");
                if (nullableHostId.HasValue)
                {
                    HostId = nullableHostId.Value;
                }
            }

            SetDseInfo(row);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Parses address from system table query response and translates it using the provided <paramref name="translator"/>.
        /// </summary>
        internal IPEndPoint GetRpcEndPoint(bool isPeersV2, IRow row, IAddressTranslator translator, int defaultPort)
        {
            IPAddress address;

            address = isPeersV2 ? GetRpcAddressFromPeersV2(row) : GetRpcAddressFromLocalPeersV1(row);

            if (address == null)
            {
                return(null);
            }

            if (TopologyRefresher.BindAllAddress.Equals(address))
            {
                if (row.ContainsColumn("peer") && !row.IsNull("peer"))
                {
                    // system.peers
                    address = row.GetValue <IPAddress>("peer");
                }
                else if (row.ContainsColumn("broadcast_address") && !row.IsNull("broadcast_address"))
                {
                    // system.local
                    address = row.GetValue <IPAddress>("broadcast_address");
                }
                else if (row.ContainsColumn("listen_address") && !row.IsNull("listen_address"))
                {
                    // system.local
                    address = row.GetValue <IPAddress>("listen_address");
                }
                else
                {
                    ControlConnection.Logger.Error(
                        "Found host with 0.0.0.0 as rpc_address and nulls as listen_address and broadcast_address. " +
                        "Because of this, the driver can not connect to this node.");
                    return(null);
                }

                ControlConnection.Logger.Warning(
                    "Found host with 0.0.0.0 as rpc_address, using listen_address ({0}) to contact it instead. " +
                    "If this is incorrect you should avoid the use of 0.0.0.0 server side.", address.ToString());
            }

            var rpcPort = defaultPort;

            if (isPeersV2)
            {
                var nullableRpcPort = GetRpcPortFromPeersV2(row);
                if (nullableRpcPort == null)
                {
                    ControlConnection.Logger.Warning(
                        "Found host with NULL native_port, using default port ({0}) to contact it instead. ", rpcPort);
                }
                else
                {
                    rpcPort = nullableRpcPort.Value;
                }
            }

            return(translator.Translate(new IPEndPoint(address, rpcPort)));
        }
Exemplo n.º 4
0
 /// <summary>
 /// Sets datacenter, rack and workload information of a host.
 /// </summary>
 internal void SetInfo(IRow row)
 {
     Datacenter = row.GetValue <string>("data_center");
     Rack       = row.GetValue <string>("rack");
     Tokens     = row.GetValue <IEnumerable <string> >("tokens") ?? new string[0];
     if (row.ContainsColumn("workloads"))
     {
         Workloads = row.GetValue <string[]>("workloads");
     }
     else if (row.ContainsColumn("workload") && row.GetValue <string>("workload") != null)
     {
         Workloads = new[] { row.GetValue <string>("workload") };
     }
     else
     {
         Workloads = WorkloadsDefault;
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Sets datacenter, rack and other basic information of a host.
        /// </summary>
        internal void SetInfo(IRow row)
        {
            Datacenter = row.GetValue <string>("data_center");
            Rack       = row.GetValue <string>("rack");
            Tokens     = row.GetValue <IEnumerable <string> >("tokens") ?? new string[0];

            if (row.ContainsColumn("release_version"))
            {
                var releaseVersion = row.GetValue <string>("release_version");
                if (releaseVersion != null)
                {
                    CassandraVersion = Version.Parse(releaseVersion.Split('-')[0]);
                }
            }
        }