/*
 * Copyright DataStax, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.datastax.dse.driver.api.core.metadata;

import com.datastax.oss.driver.api.core.Version;
import com.datastax.oss.driver.api.core.metadata.Node;

The keys for the additional DSE-specific properties stored in Node.getExtras().
/** The keys for the additional DSE-specific properties stored in {@link Node#getExtras()}. */
public class DseNodeProperties {
The DSE version that the node is running.

The associated value in Node.getExtras() is a Version).

/** * The DSE version that the node is running. * * <p>The associated value in {@link Node#getExtras()} is a {@link Version}). */
public static final String DSE_VERSION = "DSE_VERSION";
The value of the server_id field in the peers system table for this node.

This is the single identifier of the machine running a DSE instance. If DSE has been configured with Multi-Instance, the server_id helps identifying the single physical machine that runs the multiple DSE instances. If DSE is not configured with DSE Multi-Instance, the server_id will be automatically set and be unique for each node.

This information is only available if connecting to a DSE 6.0+ node.

The associated value in Node.getExtras() is a String).

See Also:
/** * The value of the {@code server_id} field in the {@code peers} system table for this node. * * <p>This is the single identifier of the machine running a DSE instance. If DSE has been * configured with Multi-Instance, the {@code server_id} helps identifying the single physical * machine that runs the multiple DSE instances. If DSE is not configured with DSE Multi-Instance, * the {@code server_id} will be automatically set and be unique for each node. * * <p>This information is only available if connecting to a DSE 6.0+ node. * * <p>The associated value in {@link Node#getExtras()} is a {@code String}). * * @see <a * href="http://docs.datastax.com/en/dse/5.1/dse-admin/datastax_enterprise/multiInstance/multiInstanceTOC.html">DSE * Multi-Instance (DSE Administrator Guide)</a> * @see <a * href="http://docs.datastax.com/en/dse/5.1/dse-admin/datastax_enterprise/config/configDseYaml.html#configDseYaml__dseMultiInstance"> * server_id (DSE Administrator Guide)</a> */
public static final String SERVER_ID = "SERVER_ID";
The DSE workloads that the node is running.

This is based on the workload or workloads columns in system.local and system.peers.

Workload labels may vary depending on the DSE version in use; e.g. DSE 5.1 may report two distinct workloads: Search and Analytics, while DSE 5.0 would report a single SearchAnalytics workload instead. It is up to users to deal with such discrepancies; the driver simply returns the workload labels as reported by DSE, without any form of pre-processing (with the exception of Graph in DSE 5.0, which is stored in a separate column, but will be reported as Graph here).

The associated value in Node.getExtras() is an immutable Set<String>.

/** * The DSE workloads that the node is running. * * <p>This is based on the {@code workload} or {@code workloads} columns in {@code system.local} * and {@code system.peers}. * * <p>Workload labels may vary depending on the DSE version in use; e.g. DSE 5.1 may report two * distinct workloads: {@code Search} and {@code Analytics}, while DSE 5.0 would report a single * {@code SearchAnalytics} workload instead. It is up to users to deal with such discrepancies; * the driver simply returns the workload labels as reported by DSE, without any form of * pre-processing (with the exception of Graph in DSE 5.0, which is stored in a separate column, * but will be reported as {@code Graph} here). * * <p>The associated value in {@link Node#getExtras()} is an immutable {@code Set<String>}. */
public static final String DSE_WORKLOADS = "DSE_WORKLOADS";
The port for the native transport connections on the DSE node.

The native transport port is 9042 by default but can be changed on instances requiring specific firewall configurations. This can be configured in the cassandra.yaml configuration file under the native_transport_port property.

This information is only available if connecting the driver to a DSE 6.0+ node.

The associated value in Node.getExtras() is an Integer.

/** * The port for the native transport connections on the DSE node. * * <p>The native transport port is {@code 9042} by default but can be changed on instances * requiring specific firewall configurations. This can be configured in the {@code * cassandra.yaml} configuration file under the {@code native_transport_port} property. * * <p>This information is only available if connecting the driver to a DSE 6.0+ node. * * <p>The associated value in {@link Node#getExtras()} is an {@code Integer}. */
public static final String NATIVE_TRANSPORT_PORT = "NATIVE_TRANSPORT_PORT";
The port for the encrypted native transport connections on the DSE node.

In most scenarios enabling client communications in DSE will result in using a single port that will only accept encrypted connections (by default the port 9042 is reused since unencrypted connections are not allowed).

However, it is possible to configure DSE to use both encrypted and a non-encrypted communication ports with clients. In that case the port accepting encrypted connections will differ from the non-encrypted one (see NATIVE_TRANSPORT_PORT) and will be exposed via this method.

This information is only available if connecting the driver to a DSE 6.0+ node.

The associated value in Node.getExtras() is an Integer.

/** * The port for the encrypted native transport connections on the DSE node. * * <p>In most scenarios enabling client communications in DSE will result in using a single port * that will only accept encrypted connections (by default the port {@code 9042} is reused since * unencrypted connections are not allowed). * * <p>However, it is possible to configure DSE to use both encrypted and a non-encrypted * communication ports with clients. In that case the port accepting encrypted connections will * differ from the non-encrypted one (see {@link #NATIVE_TRANSPORT_PORT}) and will be exposed via * this method. * * <p>This information is only available if connecting the driver to a DSE 6.0+ node. * * <p>The associated value in {@link Node#getExtras()} is an {@code Integer}. */
public static final String NATIVE_TRANSPORT_PORT_SSL = "NATIVE_TRANSPORT_PORT_SSL";
The storage port used by the DSE node.

The storage port is used for internal communication between the DSE server nodes. This port is never used by the driver.

This information is only available if connecting the driver to a DSE 6.0+ node.

The associated value in Node.getExtras() is an Integer.

/** * The storage port used by the DSE node. * * <p>The storage port is used for internal communication between the DSE server nodes. This port * is never used by the driver. * * <p>This information is only available if connecting the driver to a DSE 6.0+ node. * * <p>The associated value in {@link Node#getExtras()} is an {@code Integer}. */
public static final String STORAGE_PORT = "STORAGE_PORT";
The encrypted storage port used by the DSE node.

If inter-node encryption is enabled on the DSE cluster, nodes will communicate securely between each other via this port. This port is never used by the driver.

This information is only available if connecting the driver to a DSE 6.0+ node.

The associated value in Node.getExtras() is an Integer.

/** * The encrypted storage port used by the DSE node. * * <p>If inter-node encryption is enabled on the DSE cluster, nodes will communicate securely * between each other via this port. This port is never used by the driver. * * <p>This information is only available if connecting the driver to a DSE 6.0+ node. * * <p>The associated value in {@link Node#getExtras()} is an {@code Integer}. */
public static final String STORAGE_PORT_SSL = "STORAGE_PORT_SSL";
The JMX port used by this node.

The JMX port can be configured in the cassandra-env.sh configuration file separately on each node.

This information is only available if connecting the driver to a DSE 6.0+ node.

The associated value in Node.getExtras() is an Integer.

/** * The JMX port used by this node. * * <p>The JMX port can be configured in the {@code cassandra-env.sh} configuration file separately * on each node. * * <p>This information is only available if connecting the driver to a DSE 6.0+ node. * * <p>The associated value in {@link Node#getExtras()} is an {@code Integer}. */
public static final String JMX_PORT = "JMX_PORT"; }