From 2b810ca00ba2536d5fcdf8765bbb01fffbb07ad1 Mon Sep 17 00:00:00 2001 From: Andreas Neumann Date: Wed, 28 Oct 2020 10:23:22 +0100 Subject: [PATCH] Started extending Parameters with additional attributes and types (#162) * Extended Parameters with additional attributes and types Signed-off-by: Andreas Neumann --- DEVELOPMENT.md | 4 + docs/parameters.md | 678 +++--- metadata.sh | 2 +- operator/operator.yaml | 2 +- operator/params.yaml | 1894 +++++++++++++---- .../templates/generate-cassandra-yaml.yaml | 52 +- operator/templates/jvm-options.yaml | 19 +- templates/operator/params.yaml.template | 1894 +++++++++++++---- tests/go.mod | 18 +- tests/go.sum | 273 +++ tests/suites/sanity/sanity_test.go | 5 +- tools/generate_parameters_markdown.py | 84 +- 12 files changed, 3858 insertions(+), 1067 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index bac151e5..d10a9db0 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -243,6 +243,10 @@ with `tools/compile_templates.sh`. ### Running tests +```bash +./tests/run.sh +``` + ### Style guide #### Opening pull requests diff --git a/docs/parameters.md b/docs/parameters.md index 3b3bdac5..77ee14ba 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -1,251 +1,427 @@ -# Parameters - -| Name | Description | Default | -| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **NODE_COUNT** | Number of Cassandra nodes. | 3 | -| **NODE_CPU_MC** | CPU request (in millicores) for the Cassandra node containers. | 1000 | -| **NODE_CPU_LIMIT_MC** | CPU limit (in millicores) for the Cassandra node containers. | 1000 | -| **NODE_MEM_MIB** | Memory request (in MiB) for the Cassandra node containers. | 4096 | -| **NODE_MEM_LIMIT_MIB** | Memory limit (in MiB) for the Cassandra node containers. | 4096 | -| **NODE_DISK_SIZE_GIB** | Disk size (in GiB) for the Cassandra node containers. | 20 | -| **NODE_STORAGE_CLASS** | The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used. | | -| **NODE_DOCKER_IMAGE** | Cassandra node Docker image. | mesosphere/cassandra:3.11.7-1.0.2 | -| **NODE_DOCKER_IMAGE_PULL_POLICY** | Cassandra node Docker image pull policy. | Always | -| **NODE_READINESS_PROBE_INITIAL_DELAY_S** | Number of seconds after the container has started before the readiness probe is initiated. | 0 | -| **NODE_READINESS_PROBE_PERIOD_S** | How often (in seconds) to perform the readiness probe. | 5 | -| **NODE_READINESS_PROBE_TIMEOUT_S** | How long (in seconds) to wait for a readiness probe to succeed. | 60 | -| **NODE_READINESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the readiness probe to be considered successful after having failed. | 1 | -| **NODE_READINESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the readiness probe fails, `failure_threshold` attempts will be made before marking the pod as 'unready'. | 3 | -| **NODE_LIVENESS_PROBE_INITIAL_DELAY_S** | Number of seconds after the container has started before the liveness probe is initiated. | 15 | -| **NODE_LIVENESS_PROBE_PERIOD_S** | How often (in seconds) to perform the liveness probe. | 20 | -| **NODE_LIVENESS_PROBE_TIMEOUT_S** | How long (in seconds) to wait for a liveness probe to succeed. | 60 | -| **NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the liveness probe to be considered successful after having failed. | 1 | -| **NODE_LIVENESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the liveness probe fails, `failure_threshold` attempts will be made before restarting the pod. | 3 | -| **NODE_TOLERATIONS** | A list of kubernetes tolerations to let pods get scheduled on tainted nodes | | -| **OVERRIDE_CLUSTER_NAME** | Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing. | | -| **EXTERNAL_SERVICE** | Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work | False | -| **EXTERNAL_NATIVE_TRANSPORT** | This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster | False | -| **EXTERNAL_RPC** | This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true | False | -| **EXTERNAL_NATIVE_TRANSPORT_PORT** | The external port to use for Cassandra native transport protocol. | 9042 | -| **EXTERNAL_RPC_PORT** | The external port to use for Cassandra rpc protocol. | 9160 | -| **BOOTSTRAP_TIMEOUT** | Timeout for the bootstrap binary to join the cluster with the new IP. Valid time units are 'ns', 'us', 'ms', 's', 'm', 'h'. | 12h30m | -| **SHUTDOWN_OLD_REACHABLE_NODE** | When a node replace is done, try to connect to the old node and shut it down before starting up the old node | False | -| **JOLOKIA_PORT** | The internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port. | 7777 | -| **BACKUP_RESTORE_ENABLED** | Global flag that enables the medusa sidecar for backups | False | -| **BACKUP_TRIGGER** | Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup | 1 | -| **BACKUP_AWS_CREDENTIALS_SECRET** | If set, can be used to provide the access_key, secret_key and security_token with a secret | | -| **BACKUP_AWS_S3_BUCKET_NAME** | The name of the AWS S3 bucket to store the backups | | -| **BACKUP_AWS_S3_STORAGE_PROVIDER** | Should be one of the s3\_\* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py | s3_us_west_oregon | -| **BACKUP_PREFIX** | A prefix to be used inside the S3 bucket | | -| **BACKUP_MEDUSA_CPU_MC** | CPU request (in millicores) for the Medusa backup containers. | 100 | -| **BACKUP_MEDUSA_CPU_LIMIT_MC** | CPU limit (in millicores) for the Medusa backup containers. | 500 | -| **BACKUP_MEDUSA_MEM_MIB** | Memory request (in MiB) for the Medusa backup containers. | 256 | -| **BACKUP_MEDUSA_MEM_LIMIT_MIB** | Memory limit (in MiB) for the Medusa backup containers. | 512 | -| **BACKUP_MEDUSA_DOCKER_IMAGE** | Medusa backup Docker image. | mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2 | -| **BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY** | Medusa backup Docker image pull policy. | Always | -| **BACKUP_NAME** | The name of the backup to create or restore | | -| **RESTORE_FLAG** | If true, a restore is done on installation | False | -| **RESTORE_OLD_NAMESPACE** | The namespace from the operator that was used to create the backup | | -| **RESTORE_OLD_NAME** | The instance name from the operator that was used to create the backup | | -| **NODE_TOPOLOGY** | This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details. | | -| **NODE_ANTI_AFFINITY** | Ensure that every Cassandra node is deployed on separate hosts. | False | -| **SERVICE_ACCOUNT_INSTALL** | This flag can be set to true to automatic installation of a cluster role, service account and role binding. | False | -| **EXTERNAL_SEED_NODES** | List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters. | | -| **PROMETHEUS_EXPORTER_ENABLED** | A toggle to enable the prometheus metrics exporter. | False | -| **PROMETHEUS_EXPORTER_PORT** | Prometheus exporter port. | 7200 | -| **PROMETHEUS_EXPORTER_CPU_MC** | CPU request (in millicores) for the Prometheus exporter containers. | 500 | -| **PROMETHEUS_EXPORTER_CPU_LIMIT_MC** | CPU limit (in millicores) for the Prometheus exporter containers. | 1000 | -| **PROMETHEUS_EXPORTER_MEM_MIB** | Memory request (in MiB) for the Prometheus exporter containers. | 512 | -| **PROMETHEUS_EXPORTER_MEM_LIMIT_MIB** | Memory limit (in MiB) for the Prometheus exporter containers. | 512 | -| **PROMETHEUS_EXPORTER_DOCKER_IMAGE** | Prometheus exporter Docker image. | mesosphere/cassandra-prometheus-exporter:2.3.4-1.0.2 | -| **PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY** | Prometheus exporter Docker image pull policy. | Always | -| **PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME** | The properties present in this configmap will be appended to the prometheus configuration properties | | -| **STORAGE_PORT** | The port for inter-node communication. | 7000 | -| **SSL_STORAGE_PORT** | The port for inter-node communication over SSL. | 7001 | -| **NATIVE_TRANSPORT_PORT** | The port for CQL communication. | 9042 | -| **RPC_PORT** | The port for Thrift RPC communication. | 9160 | -| **JMX_PORT** | The JMX port that will be used to interface with the Cassandra application. | 7199 | -| **RMI_PORT** | The RMI port that will be used to interface with the Cassandra application when TRANSPORT_ENCRYPTION_ENABLED is set. | 7299 | -| **JMX_LOCAL_ONLY** | If true, the JMX port will only be opened on localhost and not be available to the cluster | True | -| **TRANSPORT_ENCRYPTION_ENABLED** | Enable node-to-node encryption. | False | -| **TRANSPORT_ENCRYPTION_CLIENT_ENABLED** | Enable client-to-node encryption. | False | -| **TRANSPORT_ENCRYPTION_CIPHERS** | Comma-separated list of JSSE Cipher Suite Names. | TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | -| **TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT** | Enable Server-Client plaintext communication alongside encrypted traffic. | False | -| **TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on node-to-node transport encryption. | True | -| **TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on client-to-node transport encryption. | True | -| **TLS_SECRET_NAME** | The TLS secret that contains the self-signed certificate (cassandra.crt) and the private key (cassandra.key). The secret will be mounted as a volume to make the artifacts available. | cassandra-tls | -| **NODE_MIN_HEAP_SIZE_MB** | The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | -| **NODE_MAX_HEAP_SIZE_MB** | The maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | -| **NODE_NEW_GENERATION_HEAP_SIZE_MB** | The JVM new generation heap size in MB. | | -| **SEED_PROVIDER_CLASS** | The class within Cassandra that handles the seed logic. | org.apache.cassandra.locator.SimpleSeedProvider | -| **NUM_TOKENS** | The number of tokens assigned to each node. | 256 | -| **HINTED_HANDOFF_ENABLED** | If true, hinted handoff is enabled for the cluster. | True | -| **MAX_HINT_WINDOW_IN_MS** | The maximum amount of time, in ms, that hints are generated for an unresponsive node. | 10800000 | -| **HINTED_HANDOFF_THROTTLE_IN_KB** | The maximum throttle per delivery thread in KBs per second. | 1024 | -| **MAX_HINTS_DELIVERY_THREADS** | The maximum number of delivery threads for hinted handoff. | 2 | -| **BATCHLOG_REPLAY_THROTTLE_IN_KB** | The total maximum throttle for replaying failed logged batches in KBs per second. | 1024 | -| **AUTHENTICATOR** | Authentication backend, implementing IAuthenticator; used to identify users. | AllowAllAuthenticator | -| **AUTHENTICATION_SECRET_NAME** | Name of the secret containing the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry. | | -| **AUTHORIZER** | Authorization backend, implementing IAuthorizer; used to limit access/provide permissions. | AllowAllAuthorizer | -| **ROLE_MANAGER** | Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager | CassandraRoleManager | -| **ROLES_VALIDITY_IN_MS** | Validity period for roles cache; set to 0 to disable | 2000 | -| **ROLES_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also. | | -| **CREDENTIALS_VALIDITY_IN_MS** | This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable. | 2000 | -| **CREDENTIALS_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero. | | -| **PERMISSIONS_VALIDITY_IN_MS** | How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0. | 2000 | -| **PERMISSIONS_UPDATE_INTERVAL_IN_MS** | If enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero. | | -| **PARTITIONER** | The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications. | org.apache.cassandra.dht.Murmur3Partitioner | -| **KEY_CACHE_SAVE_PERIOD** | The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O. | 14400 | -| **ROW_CACHE_SIZE_IN_MB** | Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache. | 0 | -| **ROW_CACHE_SAVE_PERIOD** | Duration in seconds that rows are saved in cache. 0 disables caching. | 0 | -| **COMMITLOG_SYNC_PERIOD_IN_MS** | The number of milliseconds between disk fsync calls. | 10000 | -| **COMMITLOG_SYNC_BATCH_WINDOW_IN_MS** | Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2 | | -| **COMMITLOG_SEGMENT_SIZE_IN_MB** | The size of each commit log segment in Mb. | 32 | -| **CONCURRENT_READS** | For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them. | 16 | -| **CONCURRENT_WRITES** | Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores. | 32 | -| **CONCURRENT_COUNTER_WRITES** | Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) . | 16 | -| **MEMTABLE_ALLOCATION_TYPE** | The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency. | heap_buffers | -| **INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTES** | How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates. | 60 | -| **START_NATIVE_TRANSPORT** | If true, CQL is enabled. | True | -| **START_RPC** | If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications. | False | -| **RPC_KEEPALIVE** | Enables or disables keepalive on client connections (RPC or native). | True | -| **THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB** | Frame size (maximum field length) for Thrift. | 15 | -| **TOMBSTONE_WARN_THRESHOLD** | The maximum number of tombstones a query can scan before warning. | 1000 | -| **TOMBSTONE_FAILURE_THRESHOLD** | The maximum number of tombstones a query can scan before aborting. | 100000 | -| **COLUMN_INDEX_SIZE_IN_KB** | The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed. | 64 | -| **BATCH_SIZE_WARN_THRESHOLD_IN_KB** | Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability. | 5 | -| **BATCH_SIZE_FAIL_THRESHOLD_IN_KB** | Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability. | 50 | -| **COMPACTION_THROUGHPUT_MB_PER_SEC** | Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second). | 16 | -| **SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB** | When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot. | 50 | -| **READ_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for read operations to complete in ms. | 5000 | -| **RANGE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for range scans complete in ms. | 10000 | -| **WRITE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for write operations to complete in ms. | 2000 | -| **COUNTER_WRITE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for counter write operations to complete in ms. | 5000 | -| **CAS_CONTENTION_TIMEOUT_IN_MS** | The time for which the coordinator will retry CAS operations on the same row in ms. | 1000 | -| **TRUNCATE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for truncate operations to complete in ms. | 60000 | -| **REQUEST_TIMEOUT_IN_MS** | The default timeout for all other requests in ms. | 10000 | -| **DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before updating node scores. | 100 | -| **DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover. | 600000 | -| **DYNAMIC_SNITCH_BADNESS_THRESHOLD** | Sets the performance threshold for dynamically routing client requests away from a poorly performing node. | 0.1 | -| **INTERNODE_COMPRESSION** | Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters. | dc | -| **MAX_HINTS_FILE_SIZE_IN_MB** | The maximum size of the hints file in Mb. | 128 | -| **HINTS_FLUSH_PERIOD_IN_MS** | The time, in ms, for the period in which hints are flushed to disk. | 10000 | -| **CONCURRENT_MATERIALIZED_VIEW_WRITES** | The maximum number of concurrent writes to materialized views. | 32 | -| **COMMITLOG_TOTAL_SPACE_IN_MB** | The total size of the commit log in Mb. | | -| **AUTO_SNAPSHOT** | Take a snapshot of the data before truncating a keyspace or dropping a table | True | -| **KEY_CACHE_KEYS_TO_SAVE** | The number of keys from the key cache to save | | -| **ROW_CACHE_KEYS_TO_SAVE** | The number of keys from the row cache to save | | -| **COUNTER_CACHE_KEYS_TO_SAVE** | The number of keys from the counter cache to save | | -| **FILE_CACHE_SIZE_IN_MB** | The total memory to use for SSTable-reading buffers | | -| **MEMTABLE_HEAP_SPACE_IN_MB** | The amount of on-heap memory allocated for memtables | | -| **MEMTABLE_OFFHEAP_SPACE_IN_MB** | The total amount of off-heap memory allocated for memtables | | -| **MEMTABLE_CLEANUP_THRESHOLD** | The ratio used for automatic memtable flush | | -| **MEMTABLE_FLUSH_WRITERS** | The number of memtable flush writer threads | | -| **LISTEN_ON_BROADCAST_ADDRESS** | Listen on the address set in broadcast_address property | | -| **INTERNODE_AUTHENTICATOR** | The internode authentication backend | | -| **NATIVE_TRANSPORT_MAX_THREADS** | The maximum number of thread handling requests | | -| **NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB** | The maximum allowed size of a frame | | -| **NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS** | The maximum number of concurrent client connections | | -| **NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP** | The maximum number of concurrent client connections per source IP address | | -| **RPC_MIN_THREADS** | The minimum thread pool size for remote procedure calls | | -| **RPC_MAX_THREADS** | The maximum thread pool size for remote procedure calls | | -| **RPC_SEND_BUFF_SIZE_IN_BYTES** | The sending socket buffer size in bytes for remote procedure calls | | -| **RPC_RECV_BUFF_SIZE_IN_BYTES** | The receiving socket buffer size for remote procedure calls | | -| **CONCURRENT_COMPACTORS** | The number of concurrent compaction processes allowed to run simultaneously on a node | | -| **STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all outbound streaming file transfers on a node | | -| **INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all streaming file transfers between datacenters | | -| **STREAMING_KEEP_ALIVE_PERIOD_IN_SECS** | Interval to send keep-alive messages. The stream session fails when a keep-alive message is not received for 2 keep-alive cycles. | | -| **PHI_CONVICT_THRESHOLD** | The sensitivity of the failure detector on an exponential scale | | -| **BUFFER_POOL_USE_HEAP_IF_EXHAUSTED** | Allocate on-heap memory when the SSTable buffer pool is exhausted | | -| **DISK_OPTIMIZATION_STRATEGY** | The strategy for optimizing disk reads | | -| **MAX_VALUE_SIZE_IN_MB** | The maximum size of any value in SSTables | | -| **OTC_COALESCING_STRATEGY** | The strategy to use for coalescing network messages. Values can be: fixed, movingaverage, timehorizon, disabled (default) | | -| **UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD** | Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit. | 10 | -| **COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB** | Cassandra logs a warning when compacting partitions larger than the set value. | 100 | -| **REQUEST_SCHEDULER** | The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces. | org.apache.cassandra.scheduler.NoScheduler | -| **INTER_DC_TCP_NODELAY** | Enable this property for inter-datacenter communication. | False | -| **TRACETYPE_QUERY_TTL** | TTL for different trace types used during logging of the query process. | 86400 | -| **TRACETYPE_REPAIR_TTL** | TTL for different trace types used during logging of the repair process. | 604800 | -| **GC_WARN_THRESHOLD_IN_MS** | Any GC pause longer than this interval is logged at the WARN level. | 1000 | -| **WINDOWS_TIMER_INTERVAL** | The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. Lowering this value on Windows can provide much tighter latency and better throughput, however some virtualized environments may see a negative performance impact from changing this setting below their system default. | 1 | -| **COUNTER_CACHE_SAVE_PERIOD** | the amount of time after which Cassandra saves the counter cache (keys only). | 7200 | -| **TRICKLE_FSYNC_INTERVAL_IN_KB** | The size of the fsync in kilobytes. | 10240 | -| **TRICKLE_FSYNC** | When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval | False | -| **INCREMENTAL_BACKUPS** | Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data. | False | -| **SNAPSHOT_BEFORE_COMPACTION** | Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change. | False | -| **CROSS_NODE_TIMEOUT** | operation timeout information exchange between nodes (to accurately measure request timeouts). | False | -| **COMMIT_FAILURE_POLICY** | Policy for commit disk failures. | stop | -| **KEY_CACHE_SIZE_IN_MB** | A global cache setting for the maximum size of the key cache in memory (for all tables). | | -| **COUNTER_CACHE_SIZE_IN_MB** | When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB. | | -| **COMMITLOG_SYNC** | The method that Cassandra uses to acknowledge writes in milliseconds | periodic | -| **INDEX_SUMMARY_CAPACITY_IN_MB** | Fixed memory pool size in MB for SSTable index summaries. | | -| **RPC_SERVER_TYPE** | Cassandra provides three options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. | sync | -| **ENDPOINT_SNITCH** | Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests. | SimpleSnitch | -| **DISK_FAILURE_POLICY** | The policy for how Cassandra responds to disk failure | stop | -| **ENABLE_USER_DEFINED_FUNCTIONS** | User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code. | False | -| **ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS** | Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false | False | -| **ENABLE_MATERIALIZED_VIEWS** | Enables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use. | False | -| **CDC_ENABLED** | Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection | False | -| **CDC_TOTAL_SPACE_IN_MB** | Total space to use for change-data-capture (CDC) logs on disk. | | -| **CDC_FREE_SPACE_CHECK_INTERVAL_MS** | Interval between checks for new available space for CDC-tracked tables when the cdc_total_space_in_mb threshold is reached and the CDCCompactor is running behind or experiencing back pressure. | | -| **PREPARED_STATEMENTS_CACHE_SIZE_MB** | Maximum size of the native protocol prepared statement cache | | -| **THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB** | Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift. | | -| **COLUMN_INDEX_CACHE_SIZE_IN_KB** | A threshold for the total size of all index entries for a partition that the database stores in the partition key cache. | 2 | -| **SLOW_QUERY_LOG_TIMEOUT_IN_MS** | How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0. | 500 | -| **BACK_PRESSURE_ENABLED** | Enable for the coordinator to apply the specified back pressure strategy to each mutation that is sent to replicas. | False | -| **BACK_PRESSURE_STRATEGY_CLASS_NAME** | The back-pressure strategy applied. The default implementation, RateBasedBackPressure, takes three arguments: high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests. | org.apache.cassandra.net.RateBasedBackPressure | -| **BACK_PRESSURE_STRATEGY_HIGH_RATIO** | When outgoing mutations are below this value, they are rate limited according to the incoming rate decreased by the factor. When above this value, the rate limiting is increased by the factor. | 0.9 | -| **BACK_PRESSURE_STRATEGY_FACTOR** | A number between 1 and 10. Increases or decreases rate limiting. | 5 | -| **BACK_PRESSURE_STRATEGY_FLOW** | The flow speed to apply rate limiting: FAST - rate limited to the speed of the fastest replica. SLOW - rate limit to the speed of the slowest replica. | FAST | -| **ALLOCATE_TOKENS_FOR_KEYSPACE** | Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace. | | -| **HINTS_DIRECTORY** | Directory where Cassandra should store hints. | | -| **COMMITLOG_DIRECTORY** | When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is \$CASSANDRA_HOME/data/commitlog. | | -| **CDC_RAW_DIRECTORY** | CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table | | -| **ROW_CACHE_CLASS_NAME** | Row cache implementation class name. | | -| **SAVED_CACHES_DIRECTORY** | saved caches If not set, the default directory is \$CASSANDRA_HOME/data/saved_caches. | | -| **INTERNODE_SEND_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm | | -| **INTERNODE_RECV_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem | | -| **GC_LOG_THRESHOLD_IN_MS** | GC Pauses greater than 200 ms will be logged at INFO level This threshold can be adjusted to minimize logging if necessary | | -| **OTC_COALESCING_WINDOW_US** | How many microseconds to wait for coalescing. | | -| **OTC_COALESCING_ENOUGH_COALESCED_MESSAGES** | Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128. | | -| **OTC_BACKLOG_EXPIRATION_INTERVAL_MS** | How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection. | | -| **REPAIR_SESSION_MAX_TREE_DEPTH** | Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs. | | -| **ENABLE_SASI_INDEXES** | Enables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use. | | -| **CUSTOM_CASSANDRA_YAML_BASE64** | Base64-encoded Cassandra properties appended to cassandra.yaml. | | -| **KUBECTL_VERSION** | Version of 'bitnami/kubectl' image. This image is used for some functionality of the operator. | 1.18.4 | -| **JVM_OPT_AVAILABLE_PROCESSORS** | In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity. | | -| **JVM_OPT_JOIN_RING** | Set to false to start Cassandra on a node but not have the node join the cluster. | | -| **JVM_OPT_LOAD_RING_STATE** | Set to false to clear all gossip state for the node on restart. Use when you have changed node information in cassandra.yaml (such as listen_address). | | -| **JVM_OPT_REPLAYLIST** | Allow restoring specific tables from an archived commit log. | | -| **JVM_OPT_RING_DELAY_MS** | Allows overriding of the default RING_DELAY (30000ms), which is the amount of time a node waits before joining the ring. | | -| **JVM_OPT_TRIGGERS_DIR** | Set the default location for the trigger JARs. (Default: conf/triggers) | | -| **JVM_OPT_WRITE_SURVEY** | For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload. | | -| **JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION** | To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect. | | -| **JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE** | To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page. | | -| **JVM_OPT_PREFER_IPV4_STACK** | Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support). | True | -| **JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY** | Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. | | -| **JVM_OPT_THREAD_PRIORITY_POLICY** | allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything. | 42 | -| **JVM_OPT_THREAD_STACK_SIZE** | Per-thread stack size. | 256k | -| **JVM_OPT_STRING_TABLE_SIZE** | Larger interned string table, for gossip's benefit (CASSANDRA-6410) | 1000003 | -| **JVM_OPT_SURVIVOR_RATIO** | CMS Settings: SurvivorRatio | 8 | -| **JVM_OPT_MAX_TENURING_THRESHOLD** | CMS Settings: MaxTenuringThreshold | 1 | -| **JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION** | CMS Settings: CMSInitiatingOccupancyFraction | 75 | -| **JVM_OPT_CMS_WAIT_DURATION** | CMS Settings: CMSWaitDuration | 10000 | -| **JVM_OPT_NUMBER_OF_GC_LOG_FILES** | GC logging options: NumberOfGCLogFiles | 10 | -| **JVM_OPT_GC_LOG_FILE_SIZE** | GC logging options: GCLOGFILESIZE | 10M | -| **JVM_OPT_GC_LOG_DIRECTORY** | GC logging options: GC_LOG_DIRECTORY | | -| **JVM_OPT_PRINT_FLS_STATISTICS** | GC logging options: PrintFLSStatistics | | -| **JVM_OPT_CONC_GC_THREADS** | By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations. | | -| **JVM_OPT_INITIATING_HEAP_OCCUPANCY_PERCENT** | Save CPU time on large (>= 16GB) heaps by delaying region scanning until the heap is 70% full. The default in Hotspot 8u40 is 40%. | | -| **JVM_OPT_MAX_GC_PAUSE_MILLIS** | Main G1GC tunable: lowering the pause target will lower throughput and vise versa. | | -| **JVM_OPT_G1R_SET_UPDATING_PAUSE_TIME_PERCENT** | Have the JVM do less remembered set work during STW, instead preferring concurrent GC. Reduces p99.9 latency. | | -| **CUSTOM_JVM_OPTIONS_BASE64** | Base64-encoded JVM options appended to jvm.options. | | -| **POD_MANAGEMENT_POLICY** | podManagementPolicy of the Cassandra Statefulset | OrderedReady | -| **REPAIR_POD** | Name of the pod on which 'nodetool repair' should be run. | | -| **RECOVERY_CONTROLLER** | Needs to be true for automatic failure recovery and node eviction | False | -| **RECOVERY_CONTROLLER_DOCKER_IMAGE** | Recovery controller Docker image. | mesosphere/kudo-cassandra-recovery:0.0.2-1.0.2 | -| **RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY** | Recovery controller Docker image pull policy. | Always | -| **RECOVERY_CONTROLLER_CPU_MC** | CPU request (in millicores) for the Recovery controller container. | 50 | -| **RECOVERY_CONTROLLER_CPU_LIMIT_MC** | CPU limit (in millicores) for the Recovery controller container. | 200 | -| **RECOVERY_CONTROLLER_MEM_MIB** | Memory request (in MiB) for the Recovery controller container. | 50 | -| **RECOVERY_CONTROLLER_MEM_LIMIT_MIB** | Memory limit (in MiB) for the Recovery controller container. | 256 | +# Groups + +| Group | Description | +| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [General Settings](#general) | Common settings for the Operator. | +| [Nodes](#nodes) | Common configuration for Cassandra Nodes. | +| [Liveness checks](#liveness-checks) | Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes. | +| [Readiness checks](#readiness-checks) | Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes. | +| [Backup and Restore](#backup) | Configuration related to backup and restore of the Cassandra Cluster. | +| [Restore](#restore) | Options only required if a backup should be restored on installation. | +| [External Cluster Access](#external) | Allow access to the Cassandra Cluster from outside Kubernetes. | +| [Metrics Export](#metrics) | Metrics can be exported with the Prometheus Metrics Exporter. | +| [Recovery Controller](#recovery) | The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails. | +| [Repair](#repair) | Options to repair a node in the cluster. | +| [Advanced Configuration](#advanced) | Advanced configuration that is only required for very advanced usecases. | +| [Advanced Nodes](#node-advanced) | Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters. | +| [Security](#security) | Security related settings. | +| [Caches](#caches) | Cache related settings. | +| [Racks and Datacenter Awareness](#racks_and_dc) | Options related to Rack Awareness and Multi-Datacenter options. | +| [Optimization Settings](#optimization) | Settings to fine-tune the Cassandra cluster and optimize the performance. | +| [Safety Thresholds](#safety_thresholds) | Warning and Failure Thresholds. | +| [Network](#network) | Network related settings. | +| [Timeouts](#timeouts) | Timeouts. | +| [Java Virtual Machine Settings](#jvm) | Settings related to the Java JVM and the Garbage Collector. | +| [Directories](#directories) | Directory configurations. These should usually not be changed, as they probably require changes to the used docker image. | + +## General Settings + +Common settings for the Operator. + +| Name | Description | Default | +| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | +| **NODE_COUNT** | The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum. | 3 | +| **NODE_CPU_MC** | CPU request for the Cassandra node containers. | 1000 | +| **NODE_CPU_LIMIT_MC** | CPU limit for the Cassandra node containers. | 1000 | +| **NODE_MEM_MIB** | Memory request for the Cassandra node containers. | 4096 | +| **NODE_MEM_LIMIT_MIB** | Memory limit for the Cassandra node containers. | 4096 | +| **NODE_DISK_SIZE_GIB** | Disk size (in GiB) for the Cassandra node containers. | 20 | +| **NODE_STORAGE_CLASS** | The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used. | | +| **NODE_DOCKER_IMAGE** | Cassandra node Docker image. | mesosphere/cassandra:3.11.7-1.0.2 | +| **NODE_DOCKER_IMAGE_PULL_POLICY** | Cassandra node Docker image pull policy. | Always | +| **POD_MANAGEMENT_POLICY** | Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time. | OrderedReady | +| **OVERRIDE_CLUSTER_NAME** | Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing. | | + +## Nodes + +Common configuration for Cassandra Nodes. + +| Name | Description | Default | +| -------------------- | ---------------------------------------------------------------------------- | ------- | +| **NODE_TOLERATIONS** | A list of kubernetes tolerations to let pods get scheduled on tainted nodes. | | + +## Liveness checks + +Parameters to configure the liveness of a Cassandra Node. When a Node fails +liveness checks, it is automatically restarted by Kubernetes. + +| Name | Description | Default | +| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ------- | +| **NODE_LIVENESS_PROBE_INITIAL_DELAY_S** | Number of seconds after the container has started before the liveness probe is initiated. | 15 | +| **NODE_LIVENESS_PROBE_PERIOD_S** | How often (in seconds) to perform the liveness probe. | 20 | +| **NODE_LIVENESS_PROBE_TIMEOUT_S** | How long (in seconds) to wait for a liveness probe to succeed. | 60 | +| **NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the liveness probe to be considered successful after having failed. | 1 | +| **NODE_LIVENESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the liveness probe fails, `failure_threshold` attempts will be made before restarting the pod. | 3 | + +## Readiness checks + +Parameters to configure the readiness of a Cassandra Node. When a Node fails +readiness checks, it is automatically removed from the service by Kubernetes. + +| Name | Description | Default | +| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- | ------- | +| **NODE_READINESS_PROBE_INITIAL_DELAY_S** | Number of seconds after the container has started before the readiness probe is initiated. | 0 | +| **NODE_READINESS_PROBE_PERIOD_S** | How often (in seconds) to perform the readiness probe. | 5 | +| **NODE_READINESS_PROBE_TIMEOUT_S** | How long (in seconds) to wait for a readiness probe to succeed. | 60 | +| **NODE_READINESS_PROBE_SUCCESS_THRESHOLD** | Minimum consecutive successes for the readiness probe to be considered successful after having failed. | 1 | +| **NODE_READINESS_PROBE_FAILURE_THRESHOLD** | When a pod starts and the readiness probe fails, `failure_threshold` attempts will be made before marking the pod as 'unready'. | 3 | + +## Backup and Restore + +Configuration related to backup and restore of the Cassandra Cluster. + +| Name | Description | Default | +| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | +| **BACKUP_RESTORE_ENABLED** | Global flag that enables the medusa sidecar for backups. | False | +| **BACKUP_TRIGGER** | Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup. | | +| **BACKUP_AWS_CREDENTIALS_SECRET** | If set, can be used to provide the access_key, secret_key and security_token with a secret. | | +| **BACKUP_AWS_S3_BUCKET_NAME** | The name of the AWS S3 bucket to store the backups. | | +| **BACKUP_AWS_S3_STORAGE_PROVIDER** | Should be one of the s3\_\* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py . | s3_us_west_oregon | +| **BACKUP_PREFIX** | If a prefix is given, multiple different backups can be stored in the same S3 bucket. | | +| **BACKUP_MEDUSA_CPU_MC** | CPU request for the Medusa backup containers. | 100 | +| **BACKUP_MEDUSA_CPU_LIMIT_MC** | CPU limit for the Medusa backup containers. | 500 | +| **BACKUP_MEDUSA_MEM_MIB** | Memory request for the Medusa backup containers. | 256 | +| **BACKUP_MEDUSA_MEM_LIMIT_MIB** | Memory limit for the Medusa backup containers. | 512 | +| **BACKUP_MEDUSA_DOCKER_IMAGE** | Medusa backup Docker image which is used to make backups. | mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2 | +| **BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY** | The Pull policy for the Medusa Docker Image. | Always | +| **BACKUP_NAME** | The name of the backup to create or restore. | | + +## Restore + +Options only required if a backup should be restored on installation. + +| Name | Description | Default | +| ------------------------- | ---------------------------------------------------------------------------------------------------------------- | ------- | +| **RESTORE_FLAG** | When this is true, all backup configuration must point to an existing backup which is restored as a new cluster. | False | +| **RESTORE_OLD_NAMESPACE** | The namespace from the operator that was used to create the backup. | | +| **RESTORE_OLD_NAME** | The instance name from the operator that was used to create the backup. | | + +## External Cluster Access + +Allow access to the Cassandra Cluster from outside Kubernetes. + +| Name | Description | Default | +| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | +| **EXTERNAL_SERVICE** | Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work. | False | +| **EXTERNAL_NATIVE_TRANSPORT** | This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. | False | +| **EXTERNAL_RPC** | This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true. | False | +| **EXTERNAL_NATIVE_TRANSPORT_PORT** | The external port to use for Cassandra native transport protocol. | 9042 | +| **EXTERNAL_RPC_PORT** | The external port to use for Cassandra rpc protocol. | 9160 | + +## Metrics Export + +Metrics can be exported with the Prometheus Metrics Exporter. + +| Name | Description | Default | +| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | +| **PROMETHEUS_EXPORTER_ENABLED** | A toggle to enable the prometheus metrics exporter. | False | +| **PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME** | The properties present in this configmap will be appended to the prometheus configuration properties. | | +| **PROMETHEUS_EXPORTER_PORT** | Prometheus exporter port. | 7200 | +| **PROMETHEUS_EXPORTER_CPU_MC** | CPU request for the Prometheus exporter containers. | 500 | +| **PROMETHEUS_EXPORTER_CPU_LIMIT_MC** | CPU limit for the Prometheus exporter containers. | 1000 | +| **PROMETHEUS_EXPORTER_MEM_MIB** | Memory request for the Prometheus exporter containers. | 512 | +| **PROMETHEUS_EXPORTER_MEM_LIMIT_MIB** | Memory limit for the Prometheus exporter containers. | 512 | +| **PROMETHEUS_EXPORTER_DOCKER_IMAGE** | The docker image of the Prometheus exporter. | mesosphere/cassandra-prometheus-exporter:2.3.4-1.0.2 | +| **PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY** | Prometheus exporter Docker image pull policy. | Always | + +## Recovery Controller + +The Recovery Controller allows the Cluster to autoheal when a Kubernetes node +fails. + +| Name | Description | Default | +| ------------------------------------------------ | ------------------------------------------------------------------ | ---------------------------------------------- | +| **RECOVERY_CONTROLLER** | Needs to be true for automatic failure recovery and node eviction. | False | +| **RECOVERY_CONTROLLER_DOCKER_IMAGE** | Docker image for the recovery controller. | mesosphere/kudo-cassandra-recovery:0.0.2-1.0.2 | +| **RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY** | Recovery controller Docker image pull policy. | Always | +| **RECOVERY_CONTROLLER_CPU_MC** | CPU request for the Recovery controller container. | 50 | +| **RECOVERY_CONTROLLER_CPU_LIMIT_MC** | CPU limit for the Recovery controller container. | 200 | +| **RECOVERY_CONTROLLER_MEM_MIB** | Memory request for the Recovery controller container. | 50 | +| **RECOVERY_CONTROLLER_MEM_LIMIT_MIB** | Memory limit for the Recovery controller container. | 256 | + +## Repair + +Options to repair a node in the cluster. + +| Name | Description | Default | +| -------------- | --------------------------------------------------------- | ------- | +| **REPAIR_POD** | Name of the pod on which 'nodetool repair' should be run. | | + +## Advanced Configuration + +Advanced configuration that is only required for very advanced usecases. + +| Name | Description | Default | +| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------- | +| **BOOTSTRAP_TIMEOUT** | Timeout for the bootstrap binary to join the cluster with the new IP. . | 12h30m | +| **SHUTDOWN_OLD_REACHABLE_NODE** | When a node replace is done, try to connect to the old node and shut it down before starting up the old node. | False | +| **JOLOKIA_PORT** | The internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port. | 7777 | +| **CUSTOM_CASSANDRA_YAML_BASE64** | Base64-encoded Cassandra properties are appended to cassandra.yaml and overwrite the default values. | | +| **KUBECTL_VERSION** | Version of 'bitnami/kubectl' image. This image is used for some functionality of the operator. | 1.18.4 | + +## Advanced Nodes + +Advanced configuration options for Cassandra nodes. These are not-commonly +modifed settings. See +https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html +and other Cassandra documentation for details on parameters. + +| Name | Description | Default | +| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | +| **STORAGE_PORT** | The port for inter-node communication. | 7000 | +| **SSL_STORAGE_PORT** | The port for inter-node communication over SSL. | 7001 | +| **START_NATIVE_TRANSPORT** | If true, CQL is enabled. | True | +| **NATIVE_TRANSPORT_PORT** | The port for CQL communication. | 9042 | +| **NATIVE_TRANSPORT_MAX_THREADS** | The maximum number of thread handling requests. | | +| **NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB** | The maximum allowed size of a frame. If you're changing this parameter, you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048. | | +| **NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS** | The maximum number of concurrent client connections. Defaults to -1, meaning unlimited. | | +| **NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP** | The maximum number of concurrent client connections per source IP address. Defaults to -1, meaning unlimited. | | +| **RPC_PORT** | The port for Thrift RPC communication. | 9160 | +| **JMX_PORT** | The JMX port that will be used to interface with the Cassandra application. | 7199 | +| **RMI_PORT** | The RMI port that will be used to interface with the Cassandra application when TRANSPORT_ENCRYPTION_ENABLED is set. | 7299 | +| **JMX_LOCAL_ONLY** | If true, the JMX port will only be opened on localhost and not be available inside the Kubernetes cluster. | True | +| **START_RPC** | If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications. | False | +| **RPC_SERVER_TYPE** | Cassandra provides two options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. (https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configCassandra_yaml.html#configCassandra_yaml__rpc_server_type). | sync | +| **RPC_KEEPALIVE** | Enables or disables keepalive on client connections (RPC or native). | True | +| **RPC_MIN_THREADS** | The minimum thread pool size for remote procedure calls. | | +| **RPC_MAX_THREADS** | The maximum thread pool size for remote procedure calls. | | +| **RPC_SEND_BUFF_SIZE_IN_BYTES** | The sending socket buffer size in bytes for remote procedure calls. | | +| **RPC_RECV_BUFF_SIZE_IN_BYTES** | The receiving socket buffer size for remote procedure calls. | | +| **PARTITIONER** | The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications. | org.apache.cassandra.dht.Murmur3Partitioner | +| **SEED_PROVIDER_CLASS** | The class within Cassandra that handles the seed logic. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#seed-provider) | org.apache.cassandra.locator.SimpleSeedProvider | +| **NUM_TOKENS** | The number of tokens assigned to each node. | 256 | +| **HINTED_HANDOFF_ENABLED** | If true, hinted handoff is enabled for the cluster. (https://cassandra.apache.org/doc/latest/operating/hints.html#hinted-handoff) | True | +| **MAX_HINT_WINDOW_IN_MS** | The maximum amount of time, in ms, that hints are generated for an unresponsive node. | 10800000 | +| **HINTED_HANDOFF_THROTTLE_IN_KB** | The maximum throttle per delivery thread in KBs per second. | 1024 | +| **MAX_HINTS_DELIVERY_THREADS** | The maximum number of delivery threads for hinted handoff. | 2 | +| **BATCHLOG_REPLAY_THROTTLE_IN_KB** | The total maximum throttle for replaying failed logged batches in KBs per second. | 1024 | +| **MAX_HINTS_FILE_SIZE_IN_MB** | The maximum size of a single hints file in Mb. | 128 | +| **COMMITLOG_TOTAL_SPACE_IN_MB** | The total size of the commit log in Mb. | | +| **AUTO_SNAPSHOT** | Take a snapshot of the data before truncating a keyspace or dropping a table. | True | +| **MEMTABLE_HEAP_SPACE_IN_MB** | The amount of on-heap memory allocated for memtables. | | +| **MEMTABLE_OFFHEAP_SPACE_IN_MB** | The total amount of off-heap memory allocated for memtables. | | +| **STREAMING_KEEP_ALIVE_PERIOD_IN_SECS** | Interval to send keep-alive messages. The stream session fails when a keep-alive message is not received for 2 keep-alive cycles. | | +| **PHI_CONVICT_THRESHOLD** | The sensitivity of the failure detector on an exponential scale. | | +| **REQUEST_SCHEDULER** | The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces. | org.apache.cassandra.scheduler.NoScheduler | +| **INCREMENTAL_BACKUPS** | Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data. | False | +| **SNAPSHOT_BEFORE_COMPACTION** | Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change. | False | +| **COMMIT_FAILURE_POLICY** | Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy). | stop | +| **INDEX_SUMMARY_CAPACITY_IN_MB** | Fixed memory pool size in MB for SSTable index summaries. | | +| **ENDPOINT_SNITCH** | Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests. | SimpleSnitch | +| **DISK_FAILURE_POLICY** | The policy for how Cassandra responds to disk failure. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-failure-policy). | stop | +| **ENABLE_USER_DEFINED_FUNCTIONS** | User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code. | False | +| **ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS** | Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false. | False | +| **ENABLE_MATERIALIZED_VIEWS** | Enables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use. | False | +| **CDC_ENABLED** | Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection. | False | +| **CDC_TOTAL_SPACE_IN_MB** | Total space to use for change-data-capture (CDC) logs on disk. . | | +| **CDC_FREE_SPACE_CHECK_INTERVAL_MS** | Interval between checks for new available space for CDC-tracked tables when the cdc_total_space_in_mb threshold is reached and the CDCCompactor is running behind or experiencing back pressure. | | +| **COLUMN_INDEX_SIZE_IN_KB** | The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed. | 64 | +| **ALLOCATE_TOKENS_FOR_KEYSPACE** | Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace. | | +| **REPAIR_SESSION_MAX_TREE_DEPTH** | Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs. | | +| **ENABLE_SASI_INDEXES** | Enables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use. | | +| **JVM_OPT_JOIN_RING** | Set to false to start Cassandra on a node but not have the node join the cluster. | | +| **JVM_OPT_LOAD_RING_STATE** | Set to false to clear all gossip state for the node on restart. Use when you have changed node information in cassandra.yaml (such as listen_address). | | +| **JVM_OPT_REPLAYLIST** | Allow restoring specific tables from an archived commit log. | | +| **JVM_OPT_RING_DELAY_MS** | Allows overriding of the default RING_DELAY (30000ms), which is the amount of time a node waits before joining the ring. | | +| **JVM_OPT_WRITE_SURVEY** | For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload. | | +| **JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE** | To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page. | | +| **JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY** | Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. (https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/config/cassandraSystemProperties.html) | | + +## Security + +Security related settings. + +| Name | Description | Default | +| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **TRANSPORT_ENCRYPTION_ENABLED** | Enable node-to-node encryption. | False | +| **TRANSPORT_ENCRYPTION_CLIENT_ENABLED** | Enable client-to-node encryption. | False | +| **TRANSPORT_ENCRYPTION_CIPHERS** | Comma-separated list of JSSE Cipher Suite Names. Might require changes to the installed Java Runtime. | TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | +| **TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT** | Enable Server-Client plaintext communication alongside encrypted traffic. | False | +| **TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on node-to-node transport encryption. | True | +| **TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH** | Enable client certificate authentication on client-to-node transport encryption. | True | +| **TLS_SECRET_NAME** | The TLS secret that contains the self-signed certificate (cassandra.crt) and the private key (cassandra.key). The secret will be mounted as a volume to make the artifacts available. | cassandra-tls | +| **AUTHENTICATOR** | Authentication backend, implementing IAuthenticator; used to identify users. (https://cassandra.apache.org/doc/latest/operating/security.html#authentication) | AllowAllAuthenticator | +| **AUTHENTICATION_SECRET_NAME** | The secret must contain the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry. | | +| **AUTHORIZER** | Authorization backend, implementing IAuthorizer; used to limit access/provide permissions. (https://cassandra.apache.org/doc/latest/operating/security.html#authorization) | AllowAllAuthorizer | +| **ROLE_MANAGER** | Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager. (https://cassandra.apache.org/doc/latest/operating/security.html#roles) | CassandraRoleManager | +| **ROLES_VALIDITY_IN_MS** | Validity period for roles cache; set to 0 to disable. | 2000 | +| **ROLES_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also. | | +| **CREDENTIALS_VALIDITY_IN_MS** | This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable. | 2000 | +| **CREDENTIALS_UPDATE_INTERVAL_IN_MS** | After this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero. | | +| **PERMISSIONS_VALIDITY_IN_MS** | How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0. | 2000 | +| **PERMISSIONS_UPDATE_INTERVAL_IN_MS** | If enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero. | | +| **INTERNODE_AUTHENTICATOR** | The internode authentication backend. | | +| **JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION** | To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect. | | + +## Caches + +Cache related settings. + +| Name | Description | Default | +| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| **KEY_CACHE_SIZE_IN_MB** | A global cache setting for the maximum size of the key cache in memory (for all tables). . | | +| **KEY_CACHE_SAVE_PERIOD** | The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O. | 14400 | +| **KEY_CACHE_KEYS_TO_SAVE** | The number of keys from the key cache to save. | | +| **COUNTER_CACHE_SIZE_IN_MB** | Maximum size of the counter cache in memory. When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB. | | +| **COUNTER_CACHE_SAVE_PERIOD** | The amount of time after which Cassandra saves the counter cache (keys only). | 7200 | +| **COUNTER_CACHE_KEYS_TO_SAVE** | The number of keys from the counter cache to save. | | +| **ROW_CACHE_SIZE_IN_MB** | Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache. | 0 | +| **ROW_CACHE_SAVE_PERIOD** | Duration in seconds that rows are saved in cache. 0 disables saving . | 0 | +| **ROW_CACHE_KEYS_TO_SAVE** | The number of keys from the row cache to save. | | +| **FILE_CACHE_SIZE_IN_MB** | The total memory to use for SSTable-reading buffers. Defaults to the smaller of 1/4 of heap or 512MB. | | +| **ROW_CACHE_CLASS_NAME** | Row cache implementation class name. Can be 'org.apache.cassandra.cache.OHCProvider' (default) or 'org.apache.cassandra.cache.SerializingCacheProvider'. | | +| **BUFFER_POOL_USE_HEAP_IF_EXHAUSTED** | Allocate on-heap memory when the SSTable buffer pool is exhausted. | | +| **PREPARED_STATEMENTS_CACHE_SIZE_MB** | Maximum size of the native protocol prepared statement cache. | | +| **THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB** | Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift/RPC. | | +| **COLUMN_INDEX_CACHE_SIZE_IN_KB** | A threshold for the total size of all index entries for a partition that the database stores in the partition key cache. | 2 | + +## Racks and Datacenter Awareness + +Options related to Rack Awareness and Multi-Datacenter options. + +| Name | Description | Default | +| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| **NODE_TOPOLOGY** | This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details. | | +| **SERVICE_ACCOUNT_INSTALL** | If true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups. | False | +| **NODE_ANTI_AFFINITY** | Ensure that every Cassandra node is deployed on a separate Kubernetes node. (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity) | False | +| **EXTERNAL_SEED_NODES** | List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters. | | +| **INTER_DC_TCP_NODELAY** | Enable or disable tcp_nodelay for inter-dc communication. Disabling it will result in larger (but fewer) network packets being sent, reducing overhead from the TCP protocol itself, at the cost of increasing latency if you block for cross-datacenter responses. | | + +## Optimization Settings + +Settings to fine-tune the Cassandra cluster and optimize the performance. + +| Name | Description | Default | +| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | +| **COMMITLOG_SYNC** | The method that Cassandra uses to acknowledge writes in milliseconds. | periodic | +| **COMMITLOG_SYNC_PERIOD_IN_MS** | The number of milliseconds between disk fsync calls. | 5000 | +| **COMMITLOG_SYNC_BATCH_WINDOW_IN_MS** | Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2. | | +| **COMMITLOG_SEGMENT_SIZE_IN_MB** | The size of each commit log segment in Mb. | 32 | +| **CONCURRENT_READS** | For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them. | 16 | +| **CONCURRENT_WRITES** | Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores. | 32 | +| **CONCURRENT_COUNTER_WRITES** | Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) . | 16 | +| **CONCURRENT_MATERIALIZED_VIEW_WRITES** | The maximum number of concurrent writes to materialized views. | 32 | +| **MEMTABLE_ALLOCATION_TYPE** | The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#memtable-allocation-type ). | heap_buffers | +| **INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTES** | How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates. | 60 | +| **TRICKLE_FSYNC** | When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval. | false | +| **TRICKLE_FSYNC_INTERVAL_IN_KB** | The size of the fsync in kilobytes. | 10240 | +| **COMPACTION_THROUGHPUT_MB_PER_SEC** | Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second). | 64 | +| **SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB** | When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot. | 50 | +| **DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before updating node scores. | 100 | +| **DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS** | The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover. | 600000 | +| **DYNAMIC_SNITCH_BADNESS_THRESHOLD** | Sets the performance threshold for dynamically routing client requests away from a poorly performing node. | 0.1 | +| **HINTS_FLUSH_PERIOD_IN_MS** | The time, in ms, for the period in which hints are flushed to disk. | 10000 | +| **MEMTABLE_CLEANUP_THRESHOLD** | The ratio used for automatic memtable flush. | | +| **MEMTABLE_FLUSH_WRITERS** | The number of memtable flush writer threads. | | +| **CONCURRENT_COMPACTORS** | The number of concurrent compaction processes allowed to run simultaneously on a node. | | +| **DISK_OPTIMIZATION_STRATEGY** | The strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy). | | +| **TRACETYPE_QUERY_TTL** | TTL for different trace types used during logging of the query process. | | +| **TRACETYPE_REPAIR_TTL** | TTL for different trace types used during logging of the repair process. | | +| **JVM_OPT_AVAILABLE_PROCESSORS** | In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity. | | + +## Safety Thresholds + +Warning and Failure Thresholds. + +| Name | Description | Default | +| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| **TOMBSTONE_WARN_THRESHOLD** | The maximum number of tombstones a query can scan before warning. | 1000 | +| **TOMBSTONE_FAILURE_THRESHOLD** | The maximum number of tombstones a query can scan before aborting. | 100000 | +| **BATCH_SIZE_WARN_THRESHOLD_IN_KB** | Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability. | 5 | +| **BATCH_SIZE_FAIL_THRESHOLD_IN_KB** | Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability. | 50 | +| **UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD** | Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit. | 10 | +| **COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB** | Cassandra logs a warning when compacting partitions larger than the set value. | 100 | +| **GC_WARN_THRESHOLD_IN_MS** | Any GC pause longer than this interval is logged at the WARN level. | 1000 | +| **GC_LOG_THRESHOLD_IN_MS** | GC Pauses greater than this interval will be logged at INFO level. This threshold can be adjusted to minimize logging if necessary. | 200 | +| **MAX_VALUE_SIZE_IN_MB** | The maximum size of any value in SSTables. | | +| **SLOW_QUERY_LOG_TIMEOUT_IN_MS** | How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0. | 500 | + +## Network + +Network related settings. + +| Name | Description | Default | +| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| **THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB** | Frame size (maximum field length) for Thrift. | 15 | +| **INTERNODE_SEND_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm. | | +| **INTERNODE_RECV_BUFF_SIZE_IN_BYTES** | Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem. | | +| **INTERNODE_COMPRESSION** | Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters. | dc | +| **OTC_COALESCING_STRATEGY** | The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy). | | +| **OTC_COALESCING_WINDOW_US** | How many microseconds to wait for coalescing. | | +| **OTC_COALESCING_ENOUGH_COALESCED_MESSAGES** | Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128. | | +| **OTC_BACKLOG_EXPIRATION_INTERVAL_MS** | How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection. | | +| **LISTEN_ON_BROADCAST_ADDRESS** | Listen on the address set in broadcast_address property. | | +| **STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all outbound streaming file transfers on a node. | | +| **INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC** | The maximum throughput of all streaming file transfers between datacenters. | | +| **JVM_OPT_PREFER_IPV4_STACK** | Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support). | True | + +## Timeouts + +Timeouts. + +| Name | Description | Default | +| --------------------------------------- | ---------------------------------------------------------------------------------------------- | ------- | +| **READ_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for read operations to complete in ms. | 5000 | +| **RANGE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for range scans complete in ms. | 10000 | +| **WRITE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for write operations to complete in ms. | 2000 | +| **COUNTER_WRITE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for counter write operations to complete in ms. | 5000 | +| **CAS_CONTENTION_TIMEOUT_IN_MS** | The time for which the coordinator will retry CAS operations on the same row in ms. | 1000 | +| **TRUNCATE_REQUEST_TIMEOUT_IN_MS** | The time that the coordinator waits for truncate operations to complete in ms. | 60000 | +| **REQUEST_TIMEOUT_IN_MS** | The default timeout for all other requests in ms. | 10000 | +| **CROSS_NODE_TIMEOUT** | Operation timeout information exchange between nodes (to accurately measure request timeouts). | False | + +## Java Virtual Machine Settings + +Settings related to the Java JVM and the Garbage Collector. + +| Name | Description | Default | +| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| **NODE_MIN_HEAP_SIZE_MB** | The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | +| **NODE_MAX_HEAP_SIZE_MB** | The maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set. | | +| **NODE_NEW_GENERATION_HEAP_SIZE_MB** | The JVM new generation heap size in MB. | | +| **JVM_OPT_THREAD_PRIORITY_POLICY** | Allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything. | 0 | +| **JVM_OPT_THREAD_STACK_SIZE** | Per-thread stack size. | 256k | +| **JVM_OPT_STRING_TABLE_SIZE** | Larger interned string table, for gossip's benefit (CASSANDRA-6410). | 1000003 | +| **JVM_OPT_SURVIVOR_RATIO** | The Ratio between eden and survivor space parts of the heap. A value of 6 sets the ratio between eden and a survivor space to 1:6. In other words, each survivor space will be one-sixth the size of eden, and thus one-eighth the size of the young generation (not one-seventh, because there are two survivor spaces). | | +| **JVM_OPT_MAX_TENURING_THRESHOLD** | The number of times an object is moved between eden spaces before it is promoted to the survivor (old-gen) space. | | +| **JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION** | The amount of heap that needs to be full before a CMS GC cycle is triggered. | | +| **JVM_OPT_USE_CMS_INITIATING_OCCUPANCY_ONLY** | If set to true, the GC will not autodetect when to trigger a GC cycle, only the defined CMSInitiatingOccupancyFraction. | | +| **JVM_OPT_CMS_WAIT_DURATION** | Once CMS collection is triggered, it will wait for next young collection to perform initial mark right after. This parameter specifies how long CMS can wait for young collection. | | +| **JVM_OPT_PARALLEL_GC_THREADS** | For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. Otherwise equal to the number of cores when 8 or less. Machines with > 10 cores should try setting these to <= full cores. | | +| **JVM_OPT_CONC_GC_THREADS** | By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations. | | +| **JVM_OPT_NUMBER_OF_GC_LOG_FILES** | GC logging options: NumberOfGCLogFiles. | 10 | +| **JVM_OPT_GC_LOG_FILE_SIZE** | GC logging options: GCLOGFILESIZE. | 10M | +| **JVM_OPT_GC_LOG_DIRECTORY** | GC logging options: GC_LOG_DIRECTORY. | | +| **JVM_OPT_PRINT_FLS_STATISTICS** | GC logging options: PrintFLSStatistics. | | +| **CUSTOM_JVM_OPTIONS_BASE64** | Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there. | | + +## Directories + +Directory configurations. These should usually not be changed, as they probably +require changes to the used docker image. + +| Name | Description | Default | +| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| **HINTS_DIRECTORY** | Directory where Cassandra should store hints. | | +| **COMMITLOG_DIRECTORY** | When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is \$CASSANDRA_HOME/data/commitlog. | | +| **CDC_RAW_DIRECTORY** | CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table. | | +| **SAVED_CACHES_DIRECTORY** | Saved caches. If not set, the default directory is \$CASSANDRA_HOME/data/saved_caches. | | +| **JVM_OPT_TRIGGERS_DIR** | Set the default location for the trigger JARs. (Default: conf/triggers). | | + +## Ungrouped Parameters + +All parameters that are not assigned to a specific group. + +| Name | Description | Default | +| ---- | ----------- | ------- | + diff --git a/metadata.sh b/metadata.sh index de412b76..bf64af03 100644 --- a/metadata.sh +++ b/metadata.sh @@ -40,7 +40,7 @@ export VENDOR_DIRECTORY="${_project_directory}/shared/vendor" export CASSANDRA_VERSION="3.11.7" # https://github.com/kudobuilder/kudo/releases/tag/vx.y.z -export KUDO_VERSION="0.16.0" +export KUDO_VERSION="0.17.0" export KUBERNETES_VERSION="1.16.0" diff --git a/operator/operator.yaml b/operator/operator.yaml index d54c9cc7..94baad09 100644 --- a/operator/operator.yaml +++ b/operator/operator.yaml @@ -1,7 +1,7 @@ apiVersion: kudo.dev/v1beta1 name: "cassandra" operatorVersion: "1.0.2" -kudoVersion: "0.16.0" +kudoVersion: "0.17.0" kubernetesVersion: "1.16.0" appVersion: "3.11.7" maintainers: diff --git a/operator/params.yaml b/operator/params.yaml index 75df9ed7..a99bd7e0 100644 --- a/operator/params.yaml +++ b/operator/params.yaml @@ -1,1033 +1,2179 @@ apiVersion: kudo.dev/v1beta1 +groups: + - name: general + displayName: "General Settings" + description: "Common settings for the Operator." + prio: 10 + + - name: nodes + displayName: "Nodes" + description: "Common configuration for Cassandra Nodes." + prio: 20 + + - name: liveness-checks + displayName: "Liveness checks" + description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes." + prio: 30 + + - name: readiness-checks + displayName: "Readiness checks" + description: "Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes." + prio: 40 + + - name: backup + displayName: "Backup and Restore" + description: "Configuration related to backup and restore of the Cassandra Cluster." + prio: 50 + + - name: restore + displayName: "Restore" + description: "Options only required if a backup should be restored on installation." + prio: 60 + + - name: external + displayName: "External Cluster Access" + description: "Allow access to the Cassandra Cluster from outside Kubernetes." + prio: 70 + + - name: metrics + displayName: "Metrics Export" + description: "Metrics can be exported with the Prometheus Metrics Exporter." + prio: 80 + + - name: recovery + displayName: "Recovery Controller" + description: "The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails." + prio: 90 + + - name: repair + displayName: "Repair" + description: "Options to repair a node in the cluster." + prio: 100 + + - name: advanced + displayName: "Advanced Configuration" + description: "Advanced configuration that is only required for very advanced usecases." + prio: 110 + + - name: node-advanced + displayName: "Advanced Nodes" + description: "Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters." + prio: 120 + + - name: security + displayName: "Security" + description: "Security related settings." + prio: 130 + + - name: caches + displayName: "Caches" + description: "Cache related settings." + prio: 140 + + - name: racks_and_dc + displayName: "Racks and Datacenter Awareness" + description: "Options related to Rack Awareness and Multi-Datacenter options." + prio: 150 + + - name: optimization + displayName: "Optimization Settings" + description: "Settings to fine-tune the Cassandra cluster and optimize the performance." + prio: 160 + + - name: safety_thresholds + displayName: "Safety Thresholds" + description: "Warning and Failure Thresholds." + prio: 170 + + - name: network + displayName: "Network" + description: "Network related settings." + prio: 180 + + - name: timeouts + displayName: "Timeouts" + description: "Timeouts." + prio: 190 + + - name: jvm + displayName: "Java Virtual Machine Settings" + description: "Settings related to the Java JVM and the Garbage Collector." + prio: 200 + + - name: directories + displayName: "Directories" + description: "Directory configurations. These should usually not be changed, as they probably require changes to the used docker image." + prio: 210 + parameters: ################################################################################ ############################### Operator settings ############################## ################################################################################ - name: NODE_COUNT - description: "Number of Cassandra nodes." + description: "The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum." default: "3" + displayName: "Node Count" + hint: "Number of Cassandra nodes." + type: integer + group: general - name: NODE_CPU_MC - description: "CPU request (in millicores) for the Cassandra node containers." + displayName: "CPU Request" + hint: "Allowed CPU usage in millicores." + description: "CPU request for the Cassandra node containers." + type: integer default: "1000" + group: general - name: NODE_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Cassandra node containers." + displayName: "CPU Limit" + hint: "Temporary allowed CPU limit in millicores." + description: "CPU limit for the Cassandra node containers." default: "1000" + type: integer + group: general - name: NODE_MEM_MIB - description: "Memory request (in MiB) for the Cassandra node containers." + displayName: "Memory Request" + description: "Memory request for the Cassandra node containers." + hint: "Allowed Memory usage in MiB." default: "4096" + type: integer + group: general - name: NODE_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Cassandra node containers." + displayName: "Memory Limit" + description: "Memory limit for the Cassandra node containers." + hint: "Temporary allowed Memory limit in MiB." default: "4096" + type: integer + group: general - name: NODE_DISK_SIZE_GIB description: "Disk size (in GiB) for the Cassandra node containers." default: "20" + displayName: "Disk Size" + hint: "Peristent memory in GiB." + type: integer + group: general - name: NODE_STORAGE_CLASS + displayName: "Storage Class" + type: string description: "The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used." + hint: "The kubernetes storage class." required: false + advanced: true + group: general - name: NODE_DOCKER_IMAGE + displayName: "Main Docker Image" + type: string description: "Cassandra node Docker image." + hint: "Docker Image for Cassandra." default: "mesosphere/cassandra:3.11.7-1.0.2" + advanced: true + group: general - name: NODE_DOCKER_IMAGE_PULL_POLICY + displayName: "Main Docker Image Pull Policy" + type: string description: "Cassandra node Docker image pull policy." + hint: "Pull policy." default: "Always" + advanced: true + group: general + enum: + - "Always" + - "IfNotPresent" + - "Never" + + - name: POD_MANAGEMENT_POLICY + displayName: "Pod Management Policy" + hint: "Whether to start pods in order or parallel." + description: "Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time." + type: string + default: "OrderedReady" + group: general + enum: + - "OrderedReady" + - "Parallel" - name: NODE_READINESS_PROBE_INITIAL_DELAY_S description: "Number of seconds after the container has started before the readiness probe is initiated." default: "0" + type: integer + displayName: "Initial Delay" + hint: "Number of seconds." + group: readiness-checks - name: NODE_READINESS_PROBE_PERIOD_S description: "How often (in seconds) to perform the readiness probe." default: "5" + type: integer + displayName: "Repeat Period" + hint: "Number of seconds." + group: readiness-checks - name: NODE_READINESS_PROBE_TIMEOUT_S description: "How long (in seconds) to wait for a readiness probe to succeed." default: "60" + type: integer + displayName: "Timeout" + hint: "Number of seconds." + group: readiness-checks - name: NODE_READINESS_PROBE_SUCCESS_THRESHOLD description: "Minimum consecutive successes for the readiness probe to be considered successful after having failed." default: "1" + type: integer + displayName: "Success Threshold" + hint: "Number of successes after failure." + group: readiness-checks - name: NODE_READINESS_PROBE_FAILURE_THRESHOLD description: "When a pod starts and the readiness probe fails, `failure_threshold` attempts will be made before marking the pod as 'unready'." default: "3" + type: integer + displayName: "Failure Threshold" + hint: "Number of failures." + group: readiness-checks - name: NODE_LIVENESS_PROBE_INITIAL_DELAY_S description: "Number of seconds after the container has started before the liveness probe is initiated." default: "15" + type: integer + displayName: "Initial Delay" + hint: "Number of seconds." + group: liveness-checks - name: NODE_LIVENESS_PROBE_PERIOD_S description: "How often (in seconds) to perform the liveness probe." default: "20" + type: integer + displayName: "Repeat Period" + hint: "Number of seconds." + group: liveness-checks - name: NODE_LIVENESS_PROBE_TIMEOUT_S description: "How long (in seconds) to wait for a liveness probe to succeed." default: "60" + type: integer + displayName: "Timeout" + hint: "Number of seconds." + group: liveness-checks - name: NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD description: "Minimum consecutive successes for the liveness probe to be considered successful after having failed." default: "1" + type: integer + displayName: "Success Threshold" + hint: "Number of successes after failure." + group: liveness-checks - name: NODE_LIVENESS_PROBE_FAILURE_THRESHOLD description: "When a pod starts and the liveness probe fails, `failure_threshold` attempts will be made before restarting the pod." default: "3" + type: integer + displayName: "Failure Threshold" + hint: "Number of failures." + group: liveness-checks - name: NODE_TOLERATIONS - description: A list of kubernetes tolerations to let pods get scheduled on tainted nodes + description: "A list of kubernetes tolerations to let pods get scheduled on tainted nodes." + displayName: "Node Tolerations" + hint: "YAML definition of node tolerations." type: array + advanced: true + required: false + group: nodes - name: OVERRIDE_CLUSTER_NAME + displayName: "Cluster Name Override" + hint: "Uniqe cluster name to separate multiple clusters." + type: string description: "Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing." default: "" + advanced: true + group: general - name: EXTERNAL_SERVICE - displayName: "Main toggle for external access" - description: "Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work" + displayName: "External access" + hint: "Main toggle for external access." + type: boolean + description: "Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work." default: "false" + group: external - name: EXTERNAL_NATIVE_TRANSPORT - displayName: "Enable external native transport" - description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster" + displayName: "Native transport" + hint: "Enable external native transport access." + type: boolean + description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster." default: "false" + group: external - name: EXTERNAL_RPC - displayName: "Enable external rpc" - description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true" + displayName: "RPC" + hint: "Enable external RPC access." + type: boolean + description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true." default: "false" + group: external - name: EXTERNAL_NATIVE_TRANSPORT_PORT - displayName: "External advertised native transport port" + displayName: "Native Transport Port" + hint: "External advertised native transport port." + type: integer description: "The external port to use for Cassandra native transport protocol." default: "9042" + group: external - name: EXTERNAL_RPC_PORT - displayName: "External advertised rpc port" + displayName: "RPC Port" + hint: "External advertised rpc port." + type: integer description: "The external port to use for Cassandra rpc protocol." default: "9160" + group: external - name: BOOTSTRAP_TIMEOUT - description: "Timeout for the bootstrap binary to join the cluster with the new IP. Valid time units are 'ns', 'us', 'ms', 's', 'm', 'h'." + displayName: "Bootstrap Timeout" + type: string + hint: "Timeout, Valid units are 'ns', 'us', 'ms', 's', 'm', 'h'." + description: "Timeout for the bootstrap binary to join the cluster with the new IP. ." default: "12h30m" + advanced: true + group: advanced - name: SHUTDOWN_OLD_REACHABLE_NODE - description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node" + displayName: "Shutdown old reachable Nodes" + type: boolean + description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node." + hint: "Experimental flag to shutdown a Cassandra node that was replaced." default: false + advanced: true + group: advanced - name: JOLOKIA_PORT + displayName: Jolokia Port + hint: "Change only in case of port conflicts." + type: integer description: "The internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port." - default: 7777 + default: "7777" + advanced: true + group: advanced ################################################################################ ########################## Backup and Restore settings ######################### ################################################################################ - name: BACKUP_RESTORE_ENABLED - description: "Global flag that enables the medusa sidecar for backups" + displayName: "Enable Backup and Restore" + description: "Global flag that enables the medusa sidecar for backups." + hint: "Start the Medusa Container." + type: boolean + group: backup default: "false" - name: BACKUP_TRIGGER - description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup" - default: "1" + displayName: "Trigger Backup" + type: string + hint: "Do not set this on installation. Used to trigger a backup." + description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup." + group: backup trigger: backup + advanced: true + required: false - name: BACKUP_AWS_CREDENTIALS_SECRET - description: If set, can be used to provide the access_key, secret_key and security_token with a secret + displayName: "AWS Credentials Secret" + hint: "Name of a Kubernetes Secret." + type: string + description: "If set, can be used to provide the access_key, secret_key and security_token with a secret." required: false + group: backup - name: BACKUP_AWS_S3_BUCKET_NAME - description: The name of the AWS S3 bucket to store the backups + displayName: "AWS S3 Bucket" + hint: "Name of an S3 bucket." + type: string + description: "The name of the AWS S3 bucket to store the backups." required: false + group: backup - name: BACKUP_AWS_S3_STORAGE_PROVIDER - description: Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py + displayName: "AWS Storage Provider" + hint: "A Storage Provider Type." + type: string + description: "Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py ." required: false default: s3_us_west_oregon + group: backup - name: BACKUP_PREFIX - description: A prefix to be used inside the S3 bucket + displayName: "Backup Prefix" + hint: "A prefix to be used inside the S3 bucket." + type: string + description: "If a prefix is given, multiple different backups can be stored in the same S3 bucket." required: false + group: backup - name: BACKUP_MEDUSA_CPU_MC - description: "CPU request (in millicores) for the Medusa backup containers." + displayName: "CPU request" + hint: "CPU request in millicores." + type: integer + description: "CPU request for the Medusa backup containers." default: "100" + advanced: true + group: backup - name: BACKUP_MEDUSA_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Medusa backup containers." + displayName: "CPU limit" + hint: "CPU limit in millicores." + type: integer + description: "CPU limit for the Medusa backup containers." default: "500" + advanced: true + group: backup - name: BACKUP_MEDUSA_MEM_MIB - description: "Memory request (in MiB) for the Medusa backup containers." + displayName: "Memory request" + hint: "Memory request in MiB." + type: integer + description: "Memory request for the Medusa backup containers." default: "256" + advanced: true + group: backup - name: BACKUP_MEDUSA_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Medusa backup containers." + displayName: "Memory limit" + hint: "Memory limit in MiB." + type: integer + description: "Memory limit for the Medusa backup containers." default: "512" + advanced: true + group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE - description: "Medusa backup Docker image." + displayName: "Docker Image" + hint: "The Medusa Docker Image." + description: "Medusa backup Docker image which is used to make backups." + type: string default: "mesosphere/kudo-cassandra-medusa:0.6.0-1.0.2" + advanced: true + group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY - description: "Medusa backup Docker image pull policy." + displayName: "Pull Policy" + hint: "The Docker Image Pull Policy." + description: "The Pull policy for the Medusa Docker Image." + type: string default: "Always" + advanced: true + group: backup + enum: + - "Always" + - "IfNotPresent" + - "Never" - name: BACKUP_NAME - description: "The name of the backup to create or restore" - default: "" + displayName: "Backup Name" + hint: "Do not use on installation." + type: string + description: "The name of the backup to create or restore." + required: false + group: backup - name: RESTORE_FLAG - description: "If true, a restore is done on installation" + displayName: "Restore" + hint: "If true, an existing backup is restored on installation." + type: boolean + description: "When this is true, all backup configuration must point to an existing backup which is restored as a new cluster." default: "false" + advanced: true + group: restore - name: RESTORE_OLD_NAMESPACE - description: "The namespace from the operator that was used to create the backup" + displayName: "Old Namespace for Restore" + hint: "The Namespace that was used when creating the backup." + type: string + description: "The namespace from the operator that was used to create the backup." + advanced: true default: "" + group: restore - name: RESTORE_OLD_NAME - description: "The instance name from the operator that was used to create the backup" + displayName: "Old Name for Restore" + hint: "The Instance Name that was used when creating the backup." + type: string + description: "The instance name from the operator that was used to create the backup." + advanced: true default: "" + group: restore ################################################################################ ######################### Datacenter and Rack awareness ######################## ################################################################################ - name: NODE_TOPOLOGY + displayName: "Node Topology" description: "This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details." + hint: "A list of node-topology yaml values." default: type: array + group: racks_and_dc - - name: NODE_ANTI_AFFINITY - description: "Ensure that every Cassandra node is deployed on separate hosts." + - name: SERVICE_ACCOUNT_INSTALL + displayName: "ServiceAccount Install" + description: "If true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups." + hint: "Automatically install RBAC elements." + type: boolean default: "false" + group: racks_and_dc - - name: SERVICE_ACCOUNT_INSTALL - description: "This flag can be set to true to automatic installation of a cluster role, service account and role binding." + - name: NODE_ANTI_AFFINITY + displayName: "Node Anti-Affinity" + description: "Ensure that every Cassandra node is deployed on a separate Kubernetes node. (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity)" + hint: "Deploy on separate Kubernetes nodes." + type: boolean + group: racks_and_dc default: "false" - name: EXTERNAL_SEED_NODES + displayName: "External Seed Nodes" description: "List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters." + hint: "List of IP-Adresses or host names." default: type: array + group: racks_and_dc ################################################################################ ######################### Prometheus exporter settings ######################### ################################################################################ - name: PROMETHEUS_EXPORTER_ENABLED + displayName: "Metrics Enabled" + hint: "Global toggle for metrics exporter." description: "A toggle to enable the prometheus metrics exporter." + type: boolean default: "false" + group: metrics + + - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME + displayName: "Custom prometheus configuration configmap name" + description: "The properties present in this configmap will be appended to the prometheus configuration properties." + hint: "Name of a config map." + type: string + required: false + group: metrics - name: PROMETHEUS_EXPORTER_PORT + displayName: "Port" + hint: "Port used for prometheus exporter." + type: integer description: "Prometheus exporter port." default: "7200" + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_CPU_MC - description: "CPU request (in millicores) for the Prometheus exporter containers." + displayName: "CPU Request" + hint: "Allowed CPU usage in millicores." + description: "CPU request for the Prometheus exporter containers." + type: integer default: "500" + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Prometheus exporter containers." + displayName: "CPU Limit" + hint: "Allowed CPU limit in millicores." + description: "CPU limit for the Prometheus exporter containers." + type: integer default: "1000" + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_MEM_MIB - description: "Memory request (in MiB) for the Prometheus exporter containers." + displayName: "Memory Request" + description: "Memory request for the Prometheus exporter containers." + hint: "Allowed Memory usage in MiB." default: "512" + type: integer + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Prometheus exporter containers." + displayName: "Memory Limit" + description: "Memory limit for the Prometheus exporter containers." + hint: "Temporary allowed Memory limit in MiB." default: "512" + type: integer + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE - description: "Prometheus exporter Docker image." + displayName: "Docker Image" + type: string + hint: "Prometheus Docker Image." + description: "The docker image of the Prometheus exporter." default: "mesosphere/cassandra-prometheus-exporter:2.3.4-1.0.2" + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY + displayName: "Pull Policy" + type: string + hint: "Docker Image Pull Policy." description: "Prometheus exporter Docker image pull policy." default: "Always" - - - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME - displayName: "custom prometheus configuration configmap name" - description: "The properties present in this configmap will be appended to the prometheus configuration properties" - required: false + advanced: true + enum: + - "Always" + - "IfNotPresent" + - "Never" + group: metrics ################################################################################ ########################### Cassandra node settings ############################ ################################################################################ - name: STORAGE_PORT + displayName: "Storage Port" + hint: "A port number over 1024." + type: integer description: "The port for inter-node communication." default: "7000" + group: node-advanced - name: SSL_STORAGE_PORT + displayName: "SSL Storage Port" + hint: "A port number over 1024." + type: integer description: "The port for inter-node communication over SSL." default: "7001" + group: node-advanced + + - name: START_NATIVE_TRANSPORT + displayName: "Enable Native Transport" + type: boolean + description: "If true, CQL is enabled." + hint: "start_native_transport - CQL. Defaults to true." + default: "true" + group: node-advanced - name: NATIVE_TRANSPORT_PORT + displayName: "Native Transport Port" + hint: "A port number over 1024." + type: integer description: "The port for CQL communication." default: "9042" + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_THREADS + displayName: "Native Transport Max Threads" + type: integer + description: "The maximum number of thread handling requests." + hint: "native_transport_max_threads - Number of Threads. 128 if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB + displayName: "Native Transport Max Frame Size" + type: integer + description: "The maximum allowed size of a frame. If you're changing this parameter, you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048." + hint: "native_transport_max_frame_size_in_mb - In MB. 256 if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS + displayName: "Native Transport Max Concurrent Connections" + type: integer + description: "The maximum number of concurrent client connections. Defaults to -1, meaning unlimited." + hint: "native_transport_max_concurrent_connections - unlimited if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP + displayName: "Native Transport Max Concurrent Connections per IP" + type: integer + description: "The maximum number of concurrent client connections per source IP address. Defaults to -1, meaning unlimited." + hint: "native_transport_max_concurrent_connections_per_ip - unlimited if not set." + required: false + advanced: true + group: node-advanced - name: RPC_PORT + displayName: "RPC Port" + type: integer + hint: "A port number over 1024." description: "The port for Thrift RPC communication." default: "9160" + group: node-advanced - name: JMX_PORT + displayName: "JMX Port" + type: integer description: "The JMX port that will be used to interface with the Cassandra application." + hint: "A port number over 1024." default: "7199" + group: node-advanced - name: RMI_PORT + displayName: "JMX RMI Port" + type: integer description: "The RMI port that will be used to interface with the Cassandra application when TRANSPORT_ENCRYPTION_ENABLED is set." + hint: "A port number over 1024." default: "7299" + group: node-advanced - name: JMX_LOCAL_ONLY - description: "If true, the JMX port will only be opened on localhost and not be available to the cluster" + displayName: "JMX Local Only" + type: boolean + description: "If true, the JMX port will only be opened on localhost and not be available inside the Kubernetes cluster." + hint: "Start JMX on localhost only." + default: "true" + group: node-advanced + + - name: START_RPC + displayName: "Start Thrift RPC" + type: boolean + description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." + hint: "start_rpc - Defaults to false." + default: "false" + group: node-advanced + + - name: RPC_SERVER_TYPE + displayName: "RPC Server Type" + type: string + description: "Cassandra provides two options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. (https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configCassandra_yaml.html#configCassandra_yaml__rpc_server_type)." + hint: "rpc_server_type - Type RPC server type." + default: "sync" + enum: + - "sync" + - "hsha" + group: node-advanced + + - name: RPC_KEEPALIVE + displayName: "Connection Keepalive" + type: boolean + description: "Enables or disables keepalive on client connections (RPC or native)." + hint: "rpc_keepalive - Defaults to true." default: "true" + group: node-advanced + + - name: RPC_MIN_THREADS + displayName: "RPC Min Threads" + type: integer + description: "The minimum thread pool size for remote procedure calls." + hint: "rpc_min_threads - Number of threads. 16 if not set." + required: false + group: node-advanced + + - name: RPC_MAX_THREADS + displayName: "RPC Max Threads" + type: integer + description: "The maximum thread pool size for remote procedure calls." + hint: "rpc_max_threads - Number of Threads. unlimited if not set." + required: false + group: node-advanced + + - name: RPC_SEND_BUFF_SIZE_IN_BYTES + displayName: "RPC Send Buffer Socket Size" + type: integer + description: "The sending socket buffer size in bytes for remote procedure calls." + hint: "rpc_send_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: node-advanced + + - name: RPC_RECV_BUFF_SIZE_IN_BYTES + displayName: "RPC Receive Buffer Socket Size" + type: integer + description: "The receiving socket buffer size for remote procedure calls." + hint: "rpc_recv_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: node-advanced + + - name: PARTITIONER + displayName: "Partitioner" + type: string + description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." + hint: "partitioner - Java Class Name." + default: "org.apache.cassandra.dht.Murmur3Partitioner" + group: node-advanced - name: TRANSPORT_ENCRYPTION_ENABLED + displayName: "Transport Encryption" + type: boolean description: "Enable node-to-node encryption." + hint: "Node-to-Node encryption." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_ENABLED + displayName: "Client Transport Encryption" + type: boolean description: "Enable client-to-node encryption." + hint: "Client-to-Node encryption." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_CIPHERS - description: "Comma-separated list of JSSE Cipher Suite Names." + displayName: "Encryption Ciphers" + type: string + description: "Comma-separated list of JSSE Cipher Suite Names. Might require changes to the installed Java Runtime." + hint: "JSSE Cipher Suite Names." default: "TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" + advanced: true + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT + displayName: "Allow Plaintext Transport" + hint: "Allow both plaintext and secure." + type: boolean description: "Enable Server-Client plaintext communication alongside encrypted traffic." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH + displayName: "Client Auth for Node-To-Node" + type: boolean description: "Enable client certificate authentication on node-to-node transport encryption." + hint: "For Node-to-Node transport encryption." default: "true" + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH + displayName: "Client Auth for Client-To-Node" + type: boolean description: "Enable client certificate authentication on client-to-node transport encryption." + hint: "For Client-to-Node transport encryption." default: "true" + group: security - name: TLS_SECRET_NAME + displayName: "ConfigMap with TLS Secret" description: "The TLS secret that contains the self-signed certificate (cassandra.crt) and the private key (cassandra.key). The secret will be mounted as a volume to make the artifacts available." + hint: "Name of a ConfigMap installed by the user." + type: string default: "cassandra-tls" + group: security - name: NODE_MIN_HEAP_SIZE_MB + displayName: "Node Min Heap Size" + type: integer description: "The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set." - default: "" + hint: "-Xms - In MB. Should be the same as Max Heap Size." + required: false + group: jvm - name: NODE_MAX_HEAP_SIZE_MB + displayName: "Node Max Heap Size" + type: integer description: "The maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set." - default: "" + hint: "-Xmx - In MB. Should be the same as Min Heap Size." + required: false + group: jvm - name: NODE_NEW_GENERATION_HEAP_SIZE_MB + displayName: "New Generation Heap Size" + type: integer description: "The JVM new generation heap size in MB." - default: "" + hint: "-Xmn - In MB. Automatic if not set." + required: false + group: jvm - name: SEED_PROVIDER_CLASS - description: "The class within Cassandra that handles the seed logic." + displayName: "Seed Provider Class" + type: string + description: "The class within Cassandra that handles the seed logic. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#seed-provider)" + hint: "Name of a Java Class." default: "org.apache.cassandra.locator.SimpleSeedProvider" + group: node-advanced - name: NUM_TOKENS + displayName: "Number of Tokens" + hint: "num_tokens - Can only be set at installation." + type: integer description: "The number of tokens assigned to each node." default: "256" + immutable: true + group: node-advanced - name: HINTED_HANDOFF_ENABLED - description: "If true, hinted handoff is enabled for the cluster." + displayName: "Hinted Handoff" + type: boolean + description: "If true, hinted handoff is enabled for the cluster. (https://cassandra.apache.org/doc/latest/operating/hints.html#hinted-handoff)" + hint: "hinted_handoff_enabled - Only change in advanced usecases." default: "true" + group: node-advanced - name: MAX_HINT_WINDOW_IN_MS + displayName: "Max Hint Window" + type: integer description: "The maximum amount of time, in ms, that hints are generated for an unresponsive node." + hint: "max_hint_window_in_ms - In milliseconds." default: "10800000" + group: node-advanced - name: HINTED_HANDOFF_THROTTLE_IN_KB + displayName: "Hinted Handoff Throttle" + type: integer description: "The maximum throttle per delivery thread in KBs per second." + hint: "hinted_handoff_throttle_in_kb - In kB." default: "1024" + group: node-advanced - name: MAX_HINTS_DELIVERY_THREADS + displayName: "Max Hints Delivery Threads" + type: integer description: "The maximum number of delivery threads for hinted handoff." + hint: "max_hints_delivery_threads - Number of threads." default: "2" + group: node-advanced - name: BATCHLOG_REPLAY_THROTTLE_IN_KB + displayName: "Batchlog Replay Throttle" + type: integer description: "The total maximum throttle for replaying failed logged batches in KBs per second." + hint: "batchlog_replay_throttle_in_kb - In kB." default: "1024" + group: node-advanced - name: AUTHENTICATOR - description: "Authentication backend, implementing IAuthenticator; used to identify users." + displayName: "Authenticator" + description: "Authentication backend, implementing IAuthenticator; used to identify users. (https://cassandra.apache.org/doc/latest/operating/security.html#authentication)" + hint: "Authentication backend." + type: string default: "AllowAllAuthenticator" + group: security + enum: + - AllowAllAuthenticator + - PasswordAuthenticator - name: AUTHENTICATION_SECRET_NAME - description: "Name of the secret containing the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry." + displayName: "NodeTool Authentication Secret" + description: "The secret must contain the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry." + hint: "Name of a Kubernetes Secret." default: "" + type: string + group: security - name: AUTHORIZER - description: "Authorization backend, implementing IAuthorizer; used to limit access/provide permissions." + displayName: "Authorization" + description: "Authorization backend, implementing IAuthorizer; used to limit access/provide permissions. (https://cassandra.apache.org/doc/latest/operating/security.html#authorization)" + hint: "Authorization backend." default: "AllowAllAuthorizer" + group: security + type: string + enum: + - AllowAllAuthorizer + - CassandraAuthorizer - name: ROLE_MANAGER - description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager" + displayName: "Role Manager" + description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager. (https://cassandra.apache.org/doc/latest/operating/security.html#roles)" + hint: "Java Class of the Role Manager." + type: string default: "CassandraRoleManager" + group: security - name: ROLES_VALIDITY_IN_MS - description: "Validity period for roles cache; set to 0 to disable" + displayName: "Role Validity Period" + type: integer + description: "Validity period for roles cache; set to 0 to disable." + hint: "roles_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: ROLES_UPDATE_INTERVAL_IN_MS + displayName: "Role Update Interval" + type: integer description: "After this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also." - default: "" + hint: "roles_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - name: CREDENTIALS_VALIDITY_IN_MS + displayName: "Credentials Validity Period" + type: integer description: " This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable." + hint: "credentials_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: CREDENTIALS_UPDATE_INTERVAL_IN_MS + displayName: "Credentials Update Interval" + type: integer description: "After this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero." - default: "" + hint: "credentials_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - name: PERMISSIONS_VALIDITY_IN_MS + displayName: "Permissions Validity Period" + type: integer description: "How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0." + hint: "permissions_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: PERMISSIONS_UPDATE_INTERVAL_IN_MS + displayName: "Permissions Update Interval" + type: integer description: "If enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero." - default: "" + hint: "permissions_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - - name: PARTITIONER - description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." - default: "org.apache.cassandra.dht.Murmur3Partitioner" + - name: KEY_CACHE_SIZE_IN_MB + displayName: "Key Cache Size" + type: integer + description: "A global cache setting for the maximum size of the key cache in memory (for all tables). ." + hint: "key_cache_size_in_mb - In MB. Keep empty for automatic." + required: false + group: caches - name: KEY_CACHE_SAVE_PERIOD + displayName: "Key Cache Save Period" + type: integer description: "The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O." + hint: "key_cache_save_period - In seconds." default: "14400" + group: caches + + - name: KEY_CACHE_KEYS_TO_SAVE + displayName: "Key Cache Save Number" + type: integer + description: "The number of keys from the key cache to save." + hint: "key_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches + + - name: COUNTER_CACHE_SIZE_IN_MB + displayName: "Counter Cache Size" + type: integer + description: "Maximum size of the counter cache in memory. When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB." + hint: "counter_cache_size_in_mb - In MB. Keep empty for automatic." + required: false + group: caches + + - name: COUNTER_CACHE_SAVE_PERIOD + displayName: "Counter Cache Save Period" + type: integer + description: "The amount of time after which Cassandra saves the counter cache (keys only)." + hint: "counter_cache_save_period - In seconds." + default: "7200" + group: caches + + - name: COUNTER_CACHE_KEYS_TO_SAVE + displayName: "Counter Cache Save Number" + type: integer + description: "The number of keys from the counter cache to save." + hint: "counter_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches - name: ROW_CACHE_SIZE_IN_MB + displayName: "Row Cache Size" + type: integer description: "Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache." + hint: "row_cache_size_in_mb - In MB. 0 to disable row caching." default: "0" + group: caches - name: ROW_CACHE_SAVE_PERIOD - description: "Duration in seconds that rows are saved in cache. 0 disables caching." + displayName: "Row Cache Save Period" + type: integer + description: "Duration in seconds that rows are saved in cache. 0 disables saving ." + hint: "row_cache_save_period - In Seconds. 0 to disable saving." default: "0" + group: caches + + - name: ROW_CACHE_KEYS_TO_SAVE + displayName: "Row Cache Save Number" + type: integer + description: "The number of keys from the row cache to save." + hint: "row_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches + + - name: FILE_CACHE_SIZE_IN_MB + displayName: "File Cache Size" + type: integer + description: "The total memory to use for SSTable-reading buffers. Defaults to the smaller of 1/4 of heap or 512MB." + hint: "file_cache_size_in_mb - In MB." + required: false + group: caches + + - name: ROW_CACHE_CLASS_NAME + displayName: "Row Cache ClassName" + description: "Row cache implementation class name. Can be 'org.apache.cassandra.cache.OHCProvider' (default) or 'org.apache.cassandra.cache.SerializingCacheProvider'." + hint: "Java Class name." + type: string + required: false + group: caches + + - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED + displayName: "Use On-Heap Memory for Buffer Pool" + type: boolean + description: "Allocate on-heap memory when the SSTable buffer pool is exhausted." + hint: "buffer_pool_use_heap_if_exhausted - Defaults to true if not set." + required: false + group: caches + + - name: PREPARED_STATEMENTS_CACHE_SIZE_MB + displayName: "Native Prepared Statements Cache Size" + type: integer + description: "Maximum size of the native protocol prepared statement cache." + hint: "prepared_statements_cache_size_mb - In MB. Auto if unset." + required: false + group: caches + + - name: THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB + displayName: "Thrift Prepared Statements Cache Size" + type: integer + description: "Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift/RPC." + hint: "thrift_prepared_statements_cache_size_mb - In MB. Auto if unset." + required: false + group: caches + + - name: COLUMN_INDEX_CACHE_SIZE_IN_KB + displayName: "Column Index Cache Size" + type: integer + description: "A threshold for the total size of all index entries for a partition that the database stores in the partition key cache." + hint: "column_index_cache_size_in_kb - In KB. Defaults to 2." + default: "2" + group: caches + + - name: COMMITLOG_SYNC + displayName: "Commitlog Sync" + type: string + description: "The method that Cassandra uses to acknowledge writes in milliseconds." + hint: "commitlog_sync - Type of sync." + default: "periodic" + enum: + - "periodic" + - "batch" + group: optimization - name: COMMITLOG_SYNC_PERIOD_IN_MS + displayName: "Commitlog Sync Period" + type: integer description: "The number of milliseconds between disk fsync calls." - default: "10000" + hint: "commitlog_sync_period_in_ms - In milliseconds." + default: "5000" + group: optimization - name: COMMITLOG_SYNC_BATCH_WINDOW_IN_MS - description: "Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2" - default: "" + displayName: "Commitlog Sync Batch Window" + type: integer + description: "Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2." + hint: "commitlog_sync_batch_window_in_ms - In milliseconds." + required: false + group: optimization - name: COMMITLOG_SEGMENT_SIZE_IN_MB + displayName: "Commitlog Segment Size" + type: integer description: "The size of each commit log segment in Mb." + hint: "commitlog_segment_size_in_mb - In MB. Defaults to 32." default: "32" + group: optimization - name: CONCURRENT_READS + displayName: "Concurrent Reads" + type: integer description: "For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them." + hint: "concurrent_reads - Number of reads." default: "16" + group: optimization - name: CONCURRENT_WRITES + displayName: "Concurrent Writes" + type: integer description: "Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores." + hint: "concurrent_writes - Number of writes." default: "32" + group: optimization - name: CONCURRENT_COUNTER_WRITES + displayName: "Concurrent Counter Writes" + type: integer description: "Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) ." + hint: "concurrent_counter_writes - Number of writes." default: "16" + group: optimization + + - name: CONCURRENT_MATERIALIZED_VIEW_WRITES + displayName: "Concurrent Materialized View Writes" + type: integer + description: "The maximum number of concurrent writes to materialized views." + hint: "concurrent_materialized_view_writes - Number of writes." + default: "32" + group: optimization - name: MEMTABLE_ALLOCATION_TYPE - description: "The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency." + displayName: "MemTable Allocation Type" + type: string + description: "The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#memtable-allocation-type )." + hint: "memtable_allocation_type - Type of Allocation." default: "heap_buffers" + enum: + - "heap_buffers" + - "offheap_buffers" + - "offheap_objects" + group: optimization - name: INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTES + displayName: "Index Summary Resize Interval" + type: integer description: "How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates." + hint: "index_summary_resize_interval_in_minutes - In Minutes. -1 to disable." default: "60" + group: optimization - - name: START_NATIVE_TRANSPORT - description: "If true, CQL is enabled." - default: "true" - - - name: START_RPC - description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." + - name: TRICKLE_FSYNC + displayName: "Trickle FSync" + type: boolean + description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval." + hint: "trickle_fsync - Defaults to false." default: "false" + group: optimization - - name: RPC_KEEPALIVE - description: "Enables or disables keepalive on client connections (RPC or native)." - default: "true" + - name: TRICKLE_FSYNC_INTERVAL_IN_KB + displayName: "Trickle FSync Interval" + type: integer + description: "The size of the fsync in kilobytes." + hint: "trickle_fsync_interval_in_kb - In KB. Defaults to 10240." + default: "10240" + group: optimization - name: THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB + displayName: "Thrift Frame Size" + type: integer description: "Frame size (maximum field length) for Thrift." + hint: "thrift_framed_transport_size_in_mb - In MB. Defaults to 15." default: "15" + group: "network" + + - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES + displayName: "Internode Send Buffer Size" + type: integer + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm." + hint: "internode_send_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: network + + - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES + displayName: "Internode Receive Buffer Size" + type: integer + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem." + hint: "internode_recv_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: network + + - name: INTERNODE_COMPRESSION + displayName: "Internode Compression" + type: string + description: "Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters." + hint: "internode_compression - Defaults to dc." + default: "dc" + enum: + - "none" + - "dc" + - "all" + group: network + + - name: OTC_COALESCING_STRATEGY + displayName: "Coalescing Strategy" + type: string + description: "The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy)." + hint: "otc_coalescing_strategy - Defaults to disabled if not set." + required: false + enum: + - "disabled" + - "fixed" + - "movingaverage" + - "timehorizon" + group: network + + - name: OTC_COALESCING_WINDOW_US + displayName: "Coalescing Window" + type: integer + description: "How many microseconds to wait for coalescing." + hint: "otc_coalescing_window_us - In microseconds. 200 if not set." + required: false + group: network + + - name: OTC_COALESCING_ENOUGH_COALESCED_MESSAGES + displayName: "Coalescing Message Limit" + type: integer + description: "Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128." + hint: "otc_coalescing_enough_coalesced_messages - Number of messages. 8 if not set." + required: false + group: network + + - name: OTC_BACKLOG_EXPIRATION_INTERVAL_MS + displayName: "Coalescing Backlog Expiration Interval" + type: integer + description: "How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection." + hint: "otc_backlog_expiration_interval_ms - In milliseconds. 200 if not set." + required: false + group: network - name: TOMBSTONE_WARN_THRESHOLD + displayName: "Tombstone Warning Threshold" + type: integer description: "The maximum number of tombstones a query can scan before warning." + hint: "tombstone_warn_threshold - Defaults to 1000." default: "1000" + group: safety_thresholds - name: TOMBSTONE_FAILURE_THRESHOLD + displayName: "Tombstone Failure Threshold" + type: integer description: "The maximum number of tombstones a query can scan before aborting." + hint: "tombstone_failure_threshold - Defaults to 100000." default: "100000" - - - name: COLUMN_INDEX_SIZE_IN_KB - description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." - default: "64" + group: safety_thresholds - name: BATCH_SIZE_WARN_THRESHOLD_IN_KB + displayName: "Batch Size Warning Threshold" + type: integer description: "Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." + hint: "batch_size_warn_threshold_in_kb - In KB. Defaults to 5." default: "5" + group: safety_thresholds - name: BATCH_SIZE_FAIL_THRESHOLD_IN_KB + displayName: "Batch Size Failure Threshold" + type: integer description: "Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." + hint: "batch_size_fail_threshold_in_kb - In KB. Defaults to 50." default: "50" + group: safety_thresholds + + - name: UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD + displayName: "Unlogged Batch Across Partitions Warning Threshold" + type: integer + description: "Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit." + hint: "compaction_large_partition_warning_threshold_mb - In MB. Defaults to 10." + default: "10" + group: safety_thresholds + + - name: COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB + displayName: "Large Partition Compaction Warning Threshold" + type: integer + description: "Cassandra logs a warning when compacting partitions larger than the set value." + hint: "compaction_large_partition_warning_threshold_mb - In MB. Defaults to 100." + default: "100" + group: safety_thresholds + + - name: GC_WARN_THRESHOLD_IN_MS + displayName: "GC Warning Threshold" + type: integer + description: "Any GC pause longer than this interval is logged at the WARN level." + hint: "gc_warn_threshold_in_ms - In Milliseconds. 1000 if not set." + default: "1000" + required: false + group: safety_thresholds + + - name: GC_LOG_THRESHOLD_IN_MS + displayName: "GC Logging Threshold" + type: integer + description: "GC Pauses greater than this interval will be logged at INFO level. This threshold can be adjusted to minimize logging if necessary." + hint: "gc_log_threshold_in_ms - In Milliseconds. 200 if not set." + default: "200" + required: false + group: safety_thresholds + + - name: MAX_VALUE_SIZE_IN_MB + displayName: "Max Value Size" + type: integer + description: "The maximum size of any value in SSTables." + hint: "max_value_size_in_mb - In MB. 256 if not set." + required: false + group: safety_thresholds + + - name: SLOW_QUERY_LOG_TIMEOUT_IN_MS + displayName: "Slow Query Logging Threshold" + type: integer + description: "How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0." + hint: "slow_query_log_timeout_in_ms - In milliseconds. 0 to disable." + default: "500" + group: safety_thresholds - name: COMPACTION_THROUGHPUT_MB_PER_SEC + displayName: "Compaction Throughput Throttle" + type: integer description: "Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second)." - default: "16" + hint: "compaction_throughput_mb_per_sec - In MB/sec. 0 to disable throttling." + default: "64" + group: optimization - name: SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB + displayName: "SSTable Preemptive Open Interval" + type: integer description: "When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot." + hint: "sstable_preemptive_open_interval_in_mb - In MB." default: "50" + group: optimization - name: READ_REQUEST_TIMEOUT_IN_MS + displayName: "Read Request Timeout" + type: integer description: "The time that the coordinator waits for read operations to complete in ms." + hint: "read_request_timeout_in_ms - In milliseconds. Defaults to 5000." default: "5000" + group: timeouts - name: RANGE_REQUEST_TIMEOUT_IN_MS + displayName: "Range Request Timeout" + type: integer description: "The time that the coordinator waits for range scans complete in ms." + hint: "range_request_timeout_in_ms - In milliseconds. Defaults to 10000." default: "10000" + group: timeouts - name: WRITE_REQUEST_TIMEOUT_IN_MS + displayName: "Write Request Timeout" + type: integer description: "The time that the coordinator waits for write operations to complete in ms." + hint: "write_request_timeout_in_ms - In milliseconds. Defaults to 2000." default: "2000" + group: timeouts - name: COUNTER_WRITE_REQUEST_TIMEOUT_IN_MS + displayName: "Counter Write Request Timeout" + type: integer description: "The time that the coordinator waits for counter write operations to complete in ms." + hint: "counter_write_request_timeout_in_ms - In milliseconds. Defaults to 5000." default: "5000" + group: timeouts - name: CAS_CONTENTION_TIMEOUT_IN_MS + displayName: "CAS Contention Timeout" + type: integer description: "The time for which the coordinator will retry CAS operations on the same row in ms." + hint: "cas_contention_timeout_in_ms - In milliseconds. Defaults to 1000." default: "1000" + group: timeouts - name: TRUNCATE_REQUEST_TIMEOUT_IN_MS + displayName: "Truncate Request Timeout" + type: integer description: "The time that the coordinator waits for truncate operations to complete in ms." + hint: "truncate_request_timeout_in_ms - In milliseconds. Defaults to 60000." default: "60000" + group: timeouts - name: REQUEST_TIMEOUT_IN_MS + displayName: "Default Request Timeout" + type: integer description: "The default timeout for all other requests in ms." + hint: "request_timeout_in_ms - In milliseconds. Defaults to 10000." default: "10000" + group: timeouts + + - name: CROSS_NODE_TIMEOUT + displayName: "Cross Node Timeout" + type: boolean + description: "Operation timeout information exchange between nodes (to accurately measure request timeouts)." + hint: "cross_node_timeout - Defaults to false." + default: "false" + group: timeouts - name: DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS + displayName: "Dynamic Snitch Update Interval" + type: integer description: "The time, in ms, the snitch will wait before updating node scores." + hint: "dynamic_snitch_update_interval_in_ms - In milliseconds. Defaults to 100." default: "100" + group: optimization - name: DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS + displayName: "Dynamic Snitch Reset Interval" + type: integer description: "The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover." + hint: "dynamic_snitch_reset_interval_in_ms - In milliseconds. Defaults to 600000." default: "600000" + group: optimization - name: DYNAMIC_SNITCH_BADNESS_THRESHOLD + displayName: "Dynamic Snitch Badness Threshold" + type: number description: "Sets the performance threshold for dynamically routing client requests away from a poorly performing node." + hint: "dynamic_snitch_badness_threshold - A percentage from 0 to 1." default: "0.1" - - - name: INTERNODE_COMPRESSION - description: "Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters." - default: "dc" + group: optimization - name: MAX_HINTS_FILE_SIZE_IN_MB - description: "The maximum size of the hints file in Mb." + displayName: "Hints Max File Size" + type: integer + description: "The maximum size of a single hints file in Mb." + hint: "max_hints_file_size_in_mb - In MB. Defaults to 128." default: "128" + group: node-advanced - name: HINTS_FLUSH_PERIOD_IN_MS + displayName: "Hints Flush Period" + type: integer description: "The time, in ms, for the period in which hints are flushed to disk." + hint: "hints_flush_period_in_ms - In milliseconds. Defaults to 10000." default: "10000" - - - name: CONCURRENT_MATERIALIZED_VIEW_WRITES - description: "The maximum number of concurrent writes to materialized views." - default: "32" + group: optimization - name: COMMITLOG_TOTAL_SPACE_IN_MB + displayName: "Commitlog Total Size" + type: integer description: "The total size of the commit log in Mb." - default: "" + hint: "commitlog_total_space_in_mb - In Mb. Auto if not set." + required: false + group: node-advanced - name: AUTO_SNAPSHOT - description: "Take a snapshot of the data before truncating a keyspace or dropping a table" + displayName: "Auto Snapshot" + type: boolean + description: "Take a snapshot of the data before truncating a keyspace or dropping a table." + hint: "auto_snapshot - Defaults to true." default: "true" - - - name: KEY_CACHE_KEYS_TO_SAVE - description: "The number of keys from the key cache to save" - default: "" - - - name: ROW_CACHE_KEYS_TO_SAVE - description: "The number of keys from the row cache to save" - default: "" - - - name: COUNTER_CACHE_KEYS_TO_SAVE - description: "The number of keys from the counter cache to save" - default: "" - - - name: FILE_CACHE_SIZE_IN_MB - description: "The total memory to use for SSTable-reading buffers" - default: "" + group: node-advanced - name: MEMTABLE_HEAP_SPACE_IN_MB - description: "The amount of on-heap memory allocated for memtables" - default: "" + displayName: "Memtable Onheap Space" + type: integer + description: "The amount of on-heap memory allocated for memtables." + hint: "memtable_heap_space_in_mb - In MB - System dependent if not set." + required: false + group: node-advanced - name: MEMTABLE_OFFHEAP_SPACE_IN_MB - description: "The total amount of off-heap memory allocated for memtables" - default: "" + displayName: "Memtable Offheap Space" + type: integer + description: "The total amount of off-heap memory allocated for memtables." + hint: "memtable_offheap_space_in_mb - In MB - System dependent if not set." + required: false + group: node-advanced - name: MEMTABLE_CLEANUP_THRESHOLD - description: "The ratio used for automatic memtable flush" - default: "" + displayName: "Memtable Cleanup Threshold" + type: number + description: "The ratio used for automatic memtable flush." + hint: "memtable_cleanup_threshold - DEPRECATED - System dependent if not set." + required: false + group: optimization - name: MEMTABLE_FLUSH_WRITERS - description: "The number of memtable flush writer threads" - default: "" + displayName: "Memtable Flush Writers" + type: integer + description: "The number of memtable flush writer threads." + hint: "memtable_flush_writers - System dependent if not set." + required: false + group: optimization - name: LISTEN_ON_BROADCAST_ADDRESS - description: "Listen on the address set in broadcast_address property" - default: "" + displayName: "Listen on Broadcast Adress" + type: boolean + description: "Listen on the address set in broadcast_address property." + hint: "listen_on_broadcast_address - false if not set." + required: false + group: network - name: INTERNODE_AUTHENTICATOR - description: "The internode authentication backend" - default: "" - - - name: NATIVE_TRANSPORT_MAX_THREADS - description: "The maximum number of thread handling requests" - default: "" - - - name: NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB - description: "The maximum allowed size of a frame" - default: "" - - - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS - description: "The maximum number of concurrent client connections" - default: "" - - - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP - description: "The maximum number of concurrent client connections per source IP address" - default: "" - - - name: RPC_MIN_THREADS - description: "The minimum thread pool size for remote procedure calls" - default: "" - - - name: RPC_MAX_THREADS - description: "The maximum thread pool size for remote procedure calls" - default: "" - - - name: RPC_SEND_BUFF_SIZE_IN_BYTES - description: "The sending socket buffer size in bytes for remote procedure calls" - default: "" - - - name: RPC_RECV_BUFF_SIZE_IN_BYTES - description: "The receiving socket buffer size for remote procedure calls" - default: "" + displayName: "Internode Authenticator" + type: string + description: "The internode authentication backend." + hint: "internode_authenticator - Java ClassName - AllowAllInternodeAuthenticator if not set." + required: false + group: security - name: CONCURRENT_COMPACTORS - description: "The number of concurrent compaction processes allowed to run simultaneously on a node" - default: "" + displayName: "Concurrent Compactors" + type: integer + description: "The number of concurrent compaction processes allowed to run simultaneously on a node." + hint: "concurrent_compactors - System dependent if not set." + required: false + group: optimization - name: STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC - description: "The maximum throughput of all outbound streaming file transfers on a node" - default: "" + displayName: "Stream Outbound Throughput Limit" + type: integer + description: "The maximum throughput of all outbound streaming file transfers on a node." + hint: "stream_throughput_outbound_megabits_per_sec - In Mbps - Defaults to 200 if unset." + required: false + group: network - name: INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC - description: "The maximum throughput of all streaming file transfers between datacenters" - default: "" + displayName: "Inter-DC Stream Outbound Throughput Limit" + type: integer + description: "The maximum throughput of all streaming file transfers between datacenters." + hint: "inter_dc_stream_throughput_outbound_megabits_per_sec - In Mbps - Defaults to 200 if unset." + required: false + group: network - name: STREAMING_KEEP_ALIVE_PERIOD_IN_SECS + displayName: "Streaming Keep-Alive Period" + type: integer description: "Interval to send keep-alive messages. The stream session fails when a keep-alive message is not received for 2 keep-alive cycles." - default: "" + hint: "streaming_keep_alive_period_in_secs - Defaults to 300 if not set." + required: false + group: node-advanced - name: PHI_CONVICT_THRESHOLD - description: "The sensitivity of the failure detector on an exponential scale" - default: "" - - - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED - description: "Allocate on-heap memory when the SSTable buffer pool is exhausted" - default: "" + displayName: "Phi Convict Threshold" + type: integer + description: "The sensitivity of the failure detector on an exponential scale." + hint: "phi_convict_threshold - Automatic if not set." + required: false + advanced: true + group: node-advanced - name: DISK_OPTIMIZATION_STRATEGY - description: "The strategy for optimizing disk reads" - default: "" - - - name: MAX_VALUE_SIZE_IN_MB - description: "The maximum size of any value in SSTables" - default: "" - - - name: OTC_COALESCING_STRATEGY - description: "The strategy to use for coalescing network messages. Values can be: fixed, movingaverage, timehorizon, disabled (default)" - default: "" - - - name: UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD - description: "Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit." - default: "10" - - - name: COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB - description: "Cassandra logs a warning when compacting partitions larger than the set value." - default: "100" + displayName: "Disk optimization strategy" + type: string + description: "The strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy)." + hint: "disk_optimization_strategy - Defaults to ssd if not set." + required: false + enum: + - "ssd" + - "spinning" + group: optimization - name: REQUEST_SCHEDULER + displayName: "Request Scheduler" + type: string description: "The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces." + hint: "request_scheduler - Java ClassName." default: "org.apache.cassandra.scheduler.NoScheduler" + group: node-advanced - name: INTER_DC_TCP_NODELAY - description: "Enable this property for inter-datacenter communication." - default: "false" + displayName: "Inter-DC TCP NoDelay" + type: boolean + description: "Enable or disable tcp_nodelay for inter-dc communication. Disabling it will result in larger (but fewer) network packets being sent, reducing overhead from the TCP protocol itself, at the cost of increasing latency if you block for cross-datacenter responses." + hint: "inter_dc_tcp_nodelay - Defaults to false if not set." + required: false + group: racks_and_dc - name: TRACETYPE_QUERY_TTL + displayName: "Tracetype Query TTL" + type: integer description: "TTL for different trace types used during logging of the query process." - default: "86400" + hint: "tracetype_query_ttl - Defaults to 86400 if not set." + required: false + group: optimization - name: TRACETYPE_REPAIR_TTL + displayName: "Tracetype Repair TTL" + type: integer description: "TTL for different trace types used during logging of the repair process." - default: "604800" - - - name: GC_WARN_THRESHOLD_IN_MS - description: "Any GC pause longer than this interval is logged at the WARN level." - default: "1000" - - - name: WINDOWS_TIMER_INTERVAL - description: "The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. Lowering this value on Windows can provide much tighter latency and better throughput, however some virtualized environments may see a negative performance impact from changing this setting below their system default." - default: "1" - - - name: COUNTER_CACHE_SAVE_PERIOD - description: "the amount of time after which Cassandra saves the counter cache (keys only)." - default: "7200" - - - name: TRICKLE_FSYNC_INTERVAL_IN_KB - description: "The size of the fsync in kilobytes." - default: "10240" - - - name: TRICKLE_FSYNC - description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval " - default: "false" + hint: "tracetype_repair_ttl - Defaults to 604800 if not set." + required: false + group: optimization - name: INCREMENTAL_BACKUPS + displayName: "Incremental Backups" + type: boolean description: "Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data." + hint: "incremental_backups - Defaults to false." default: "false" + group: node-advanced - name: SNAPSHOT_BEFORE_COMPACTION + displayName: "Snapshot before compaction" + type: boolean description: "Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change." + hint: "snapshot_before_compaction - Defaults to false." default: "false" - - - name: CROSS_NODE_TIMEOUT - description: "operation timeout information exchange between nodes (to accurately measure request timeouts)." - default: "false" + group: node-advanced - name: COMMIT_FAILURE_POLICY - description: "Policy for commit disk failures." + displayName: "Commit Failure Policy" + type: string + description: "Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy)." + hint: "commit_failure_policy - Defaults to stop." default: "stop" - - - name: KEY_CACHE_SIZE_IN_MB - description: "A global cache setting for the maximum size of the key cache in memory (for all tables). " - default: "" - - - name: COUNTER_CACHE_SIZE_IN_MB - description: "When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB." - default: "" - - - name: COMMITLOG_SYNC - description: "The method that Cassandra uses to acknowledge writes in milliseconds" - default: "periodic" + enum: + - "die" + - "stop" + - "stop_commit" + - "ignore" + group: node-advanced - name: INDEX_SUMMARY_CAPACITY_IN_MB + displayName: "Index Summary Capacity" + type: integer description: "Fixed memory pool size in MB for SSTable index summaries." - default: "" - - - name: RPC_SERVER_TYPE - description: "Cassandra provides three options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory." - default: "sync" + hint: "index_summary_capacity_in_mb - Defaults to 5% of heap if not set." + required: false + group: node-advanced - name: ENDPOINT_SNITCH + displayName: "Snitch Type" + type: string description: "Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests." + hint: "endpoint_snitch - Java Class Name." default: "SimpleSnitch" + enum: + - "SimpleSnitch" + - "GossipingPropertyFileSnitch" + - "PropertyFileSnitch" + - "Ec2Snitch" + - "Ec2MultiRegionSnitch" + - "RackInferringSnitch" + group: node-advanced - name: DISK_FAILURE_POLICY - description: "The policy for how Cassandra responds to disk failure" + displayName: "Disk Failure Policy" + hint: "How Cassanda Responds to disk failure." + type: string + description: "The policy for how Cassandra responds to disk failure. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-failure-policy)." default: "stop" + enum: + - "die" + - "stop_paranoid" + - "stop" + - "best_effort" + - "ignore" + group: node-advanced - name: ENABLE_USER_DEFINED_FUNCTIONS + displayName: "User Defined Functions" + type: boolean description: " User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code." + hint: "enable_user_defined_functions - May be a security risk." default: "false" + group: node-advanced - name: ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS - description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false" + displayName: "Scripted User Defined Functions" + type: boolean + description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false." + hint: "enable_scripted_user_defined_functions - May be a security risk." default: "false" + group: node-advanced - name: ENABLE_MATERIALIZED_VIEWS + displayName: "Materialized Views" + type: boolean description: "Enables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use." + hint: "enable_materialized_views - EXPERIMENTAL." default: "false" + group: node-advanced - name: CDC_ENABLED - description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection" + displayName: "CDC - Changed Data Capture" + type: boolean + description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection." + hint: "cdc_enabled - Defaults to false." default: "false" + group: node-advanced - name: CDC_TOTAL_SPACE_IN_MB - description: "Total space to use for change-data-capture (CDC) logs on disk. " - default: "" + displayName: "CDC Total Space" + type: integer + description: "Total space to use for change-data-capture (CDC) logs on disk. ." + hint: "cdc_total_space_in_mb - In MB. Auto if not set." + required: false + group: node-advanced - name: CDC_FREE_SPACE_CHECK_INTERVAL_MS + displayName: "CDC Free Space Check Interval" + type: integer description: "Interval between checks for new available space for CDC-tracked tables when the cdc_total_space_in_mb threshold is reached and the CDCCompactor is running behind or experiencing back pressure." - default: "" - - - name: PREPARED_STATEMENTS_CACHE_SIZE_MB - description: "Maximum size of the native protocol prepared statement cache" - default: "" - - - name: THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB - description: "Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift." - default: "" - - - name: COLUMN_INDEX_CACHE_SIZE_IN_KB - description: "A threshold for the total size of all index entries for a partition that the database stores in the partition key cache." - default: "2" - - - name: SLOW_QUERY_LOG_TIMEOUT_IN_MS - description: "How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0." - default: "500" - - - name: BACK_PRESSURE_ENABLED - description: "Enable for the coordinator to apply the specified back pressure strategy to each mutation that is sent to replicas." - default: "false" - - - name: BACK_PRESSURE_STRATEGY_CLASS_NAME - description: "The back-pressure strategy applied. The default implementation, RateBasedBackPressure, takes three arguments: high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests." - default: "org.apache.cassandra.net.RateBasedBackPressure" - - - name: BACK_PRESSURE_STRATEGY_HIGH_RATIO - description: "When outgoing mutations are below this value, they are rate limited according to the incoming rate decreased by the factor. When above this value, the rate limiting is increased by the factor." - default: "0.9" - - - name: BACK_PRESSURE_STRATEGY_FACTOR - description: "A number between 1 and 10. Increases or decreases rate limiting." - default: "5" + hint: "cdc_free_space_check_interval_ms - In milliseconds. Auto if not set." + required: false + group: node-advanced - - name: BACK_PRESSURE_STRATEGY_FLOW - description: "The flow speed to apply rate limiting: FAST - rate limited to the speed of the fastest replica. SLOW - rate limit to the speed of the slowest replica." - default: "FAST" + - name: COLUMN_INDEX_SIZE_IN_KB + displayName: "Column Index Size" + type: integer + description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." + hint: "column_index_size_in_kb - In KB. Defaults to 64." + default: "64" + group: node-advanced - name: ALLOCATE_TOKENS_FOR_KEYSPACE + displayName: "Allocate Tokens for Keyspace" + type: string description: "Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace." - default: "" + hint: "allocate_tokens_for_keyspace - The name of a keyspace." + required: false + group: node-advanced - name: HINTS_DIRECTORY + displayName: "Hints Directory" + type: string description: "Directory where Cassandra should store hints." - default: "" + hint: "hints_directory - A directory." + required: false + advanced: true + group: directories - name: COMMITLOG_DIRECTORY + displayName: "Commitlog Directory" + type: string description: "When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog." - default: "" + hint: "commitlog_directory - A directory." + required: false + advanced: true + group: directories - name: CDC_RAW_DIRECTORY - description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table" - default: "" - - - name: ROW_CACHE_CLASS_NAME - description: "Row cache implementation class name." - default: "" + displayName: "CDC Raw Directory" + type: string + description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table." + hint: "cdc_raw_directory - A directory." + required: false + advanced: true + group: directories - name: SAVED_CACHES_DIRECTORY - description: "saved caches If not set, the default directory is $CASSANDRA_HOME/data/saved_caches." - default: "" - - - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm" - default: "" - - - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem" - default: "" - - - name: GC_LOG_THRESHOLD_IN_MS - description: "GC Pauses greater than 200 ms will be logged at INFO level This threshold can be adjusted to minimize logging if necessary" - default: "" - - - name: OTC_COALESCING_WINDOW_US - description: "How many microseconds to wait for coalescing." - default: "" - - - name: OTC_COALESCING_ENOUGH_COALESCED_MESSAGES - description: "Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128." - default: "" - - - name: OTC_BACKLOG_EXPIRATION_INTERVAL_MS - description: "How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection." - default: "" + displayName: "Saved Caches Directory" + type: string + description: "Saved caches. If not set, the default directory is $CASSANDRA_HOME/data/saved_caches." + hint: "saved_caches_directory - A directory." + required: false + advanced: true + group: directories - name: REPAIR_SESSION_MAX_TREE_DEPTH + displayName: "Repair Session Max Tree Depth" + type: integer description: "Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs." - default: "" + hint: "repair_session_max_tree_depth - Defaults to 18 if not set." + required: false + group: node-advanced - name: ENABLE_SASI_INDEXES + displayName: "Enable SASI indexes" + type: string description: "Enables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use." - default: "" + hint: "enable_sasi_indexes - EXPERIMENTAL." + required: false + group: node-advanced - name: CUSTOM_CASSANDRA_YAML_BASE64 - description: "Base64-encoded Cassandra properties appended to cassandra.yaml." - default: "" + displayName: "Custom cassandra.yaml properties" + hint: "Base64 encoded properties." + type: string + description: "Base64-encoded Cassandra properties are appended to cassandra.yaml and overwrite the default values." + group: "advanced" + required: false - name: KUBECTL_VERSION + displayName: "KubeCtl Version" + hint: "Version of the 'bitnami/kubectl' image." + type: string description: "Version of 'bitnami/kubectl' image. This image is used for some functionality of the operator." default: "1.18.4" + group: "advanced" ################################################################################ ################################ JVM Options ################################### ################################################################################ - name: JVM_OPT_AVAILABLE_PROCESSORS + displayName: "Available Processors" + type: integer description: "In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity." - default: "" + hint: "-Dcassandra.available_processors - Auto detect if not set." + required: false + group: optimization - name: JVM_OPT_JOIN_RING + displayName: "Join Ring" + type: boolean description: "Set to false to start Cassandra on a node but not have the node join the cluster." - default: "" + hint: "-Dcassandra.join_ring - True if not set." + required: false + group: node-advanced - name: JVM_OPT_LOAD_RING_STATE + displayName: "Load Ring State" + type: boolean description: "Set to false to clear all gossip state for the node on restart. Use when you have changed node information in cassandra.yaml (such as listen_address)." - default: "" + hint: "-Dcassandra.load_ring_state - True if not set." + required: false + group: node-advanced - name: JVM_OPT_REPLAYLIST + displayName: "Replay List" + type: string description: "Allow restoring specific tables from an archived commit log." - default: "" + hint: "-Dcassandra.replayList - Name of a table." + required: false + advanced: true + group: node-advanced - name: JVM_OPT_RING_DELAY_MS + displayName: "Join Ring Delay" + type: integer description: "Allows overriding of the default RING_DELAY (30000ms), which is the amount of time a node waits before joining the ring." - default: "" + hint: "-Dcassandra.ring_delay_ms - In milliseconds - 30000 if not set." + required: false + group: node-advanced - name: JVM_OPT_TRIGGERS_DIR - description: "Set the default location for the trigger JARs. (Default: conf/triggers)" - default: "" + displayName: "Trigger JAR directory" + type: string + description: "Set the default location for the trigger JARs. (Default: conf/triggers)." + hint: "-Dcassandra.triggers_dir - 'conf/triggers' if not set." + required: false + advanced: true + group: directories - name: JVM_OPT_WRITE_SURVEY + displayName: "Enable Write Survey" + type: boolean description: "For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload." - default: "" + hint: "-Dcassandra.write_survey - false if not set." + required: false + group: node-advanced - name: JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION + displayName: "Disable Auth Cache Remote Configuration" + type: boolean description: "To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect." - default: "" + hint: "-Dcassandra.disable_auth_caches_remote_configuration - false if not set." + required: false + group: security - name: JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE + displayName: "Force Indexing Page Size" + type: boolean description: "To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page." - default: "" + hint: "-Dcassandra.force_default_indexing_page_size - false if not set." + required: false + group: node-advanced + advanced: true - name: JVM_OPT_PREFER_IPV4_STACK + displayName: "Prefer IPv4 Stack" + type: boolean description: "Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support)." + hint: "-Djava.net.preferIPv4Stack - Defaults to true." default: "true" + group: "network" - name: JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY - description: "Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date." - default: "" + displayName: "Expiration Date Overflow Policy" + type: string + description: "Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. (https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/config/cassandraSystemProperties.html)" + hint: "-Dcassandra.expiration_date_overflow_policy - REJECT if not set." + required: false + group: node-advanced + enum: + - REJECT + - CAP + - CAP-NOWARN - name: JVM_OPT_THREAD_PRIORITY_POLICY - description: "allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything." - default: "42" + displayName: "Thread Priority Policy" + type: integer + description: "Allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything." + hint: "-XX:ThreadPriorityPolicy - Can be 0 or 1." + default: "0" + group: jvm - name: JVM_OPT_THREAD_STACK_SIZE + displayName: "Thread Stack Size" + type: string description: "Per-thread stack size." + hint: "-Xss - Can have k, m, g postfix. Defaults to 256k." default: "256k" + group: jvm - name: JVM_OPT_STRING_TABLE_SIZE - description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)" + displayName: "String Table Size" + type: integer + description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)." + hint: "-XX:StringTableSize - Number of Strings." default: "1000003" + group: jvm - name: JVM_OPT_SURVIVOR_RATIO - description: "CMS Settings: SurvivorRatio" - default: "8" + displayName: "CMS: Survivor Ratio" + type: integer + description: "The Ratio between eden and survivor space parts of the heap. A value of 6 sets the ratio between eden and a survivor space to 1:6. In other words, each survivor space will be one-sixth the size of eden, and thus one-eighth the size of the young generation (not one-seventh, because there are two survivor spaces)." + hint: "-XX:SurvivorRatio - JVM dependent if not set." + required: false + group: jvm - name: JVM_OPT_MAX_TENURING_THRESHOLD - description: "CMS Settings: MaxTenuringThreshold" - default: "1" + displayName: "CMS: Max Tenuring Threshold" + type: integer + description: "The number of times an object is moved between eden spaces before it is promoted to the survivor (old-gen) space." + hint: "-XX:MaxTenuringThreshold - JVM dependent if not set." + required: false + group: jvm - name: JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION - description: "CMS Settings: CMSInitiatingOccupancyFraction" - default: "75" + displayName: "CMS: InitiatingOccupancyFraction" + type: integer + description: "The amount of heap that needs to be full before a CMS GC cycle is triggered." + hint: "-XX:CMSInitiatingOccupancyFraction - JVM dependent if not set." + required: false + group: jvm + + - name: JVM_OPT_USE_CMS_INITIATING_OCCUPANCY_ONLY + displayName: "CMS: UseCMSInitiatingOccupancyOnly" + type: boolean + description: "If set to true, the GC will not autodetect when to trigger a GC cycle, only the defined CMSInitiatingOccupancyFraction." + hint: "-XX+UseCMSInitiatingOccupancyOnly - False if not set." + required: false + group: jvm - name: JVM_OPT_CMS_WAIT_DURATION - description: "CMS Settings: CMSWaitDuration" - default: "10000" + displayName: "CMS: WaitDuration" + type: integer + description: "Once CMS collection is triggered, it will wait for next young collection to perform initial mark right after. This parameter specifies how long CMS can wait for young collection." + hint: "-XX:CMSWaitDuration - JVM dependent if not set." + required: false + group: jvm + + - name: JVM_OPT_PARALLEL_GC_THREADS + displayName: "GC - Parallel GC Threads" + type: integer + description: "For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. Otherwise equal to the number of cores when 8 or less. Machines with > 10 cores should try setting these to <= full cores." + hint: "-XX:ParallelGCThreads - Number of Threads." + required: false + group: jvm + + - name: JVM_OPT_CONC_GC_THREADS + displayName: "GC - Concurrent GC Threads" + type: integer + description: "By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations." + hint: "-XX:ConcGCThreads - Number of Threads." + required: false + group: jvm - name: JVM_OPT_NUMBER_OF_GC_LOG_FILES - description: "GC logging options: NumberOfGCLogFiles" + displayName: "GC Number of Log Files" + type: integer + description: "GC logging options: NumberOfGCLogFiles." + hint: "-XX:NumberOfGCLogFiles - Number of log files. Defaults to 10." default: "10" + group: jvm - name: JVM_OPT_GC_LOG_FILE_SIZE - description: "GC logging options: GCLOGFILESIZE" + displayName: "GC Log File Size" + type: string + description: "GC logging options: GCLOGFILESIZE." + hint: "-XX:GCLogFileSize - Size of log files. Defaults to 10M." default: "10M" + group: jvm - name: JVM_OPT_GC_LOG_DIRECTORY - description: "GC logging options: GC_LOG_DIRECTORY" - default: "" + displayName: "GC Log Directory" + type: string + description: "GC logging options: GC_LOG_DIRECTORY." + hint: "-Xloggc: - File name for GC logs. Use for debugging." + advanced: true + required: false + group: jvm - name: JVM_OPT_PRINT_FLS_STATISTICS - description: "GC logging options: PrintFLSStatistics" - default: "" - - - name: JVM_OPT_CONC_GC_THREADS - description: "By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations." - default: "" - - - name: JVM_OPT_INITIATING_HEAP_OCCUPANCY_PERCENT - description: "Save CPU time on large (>= 16GB) heaps by delaying region scanning until the heap is 70% full. The default in Hotspot 8u40 is 40%." - default: "" - - - name: JVM_OPT_MAX_GC_PAUSE_MILLIS - description: "Main G1GC tunable: lowering the pause target will lower throughput and vise versa." - default: "" - - - name: JVM_OPT_G1R_SET_UPDATING_PAUSE_TIME_PERCENT - description: "Have the JVM do less remembered set work during STW, instead preferring concurrent GC. Reduces p99.9 latency." - default: "" + displayName: "GC Print FLS Statistics" + type: integer + description: "GC logging options: PrintFLSStatistics." + hint: "-XX:PrintFLSStatistics - Can be 0 (off), 1 or 2. Off if not set." + required: false + group: jvm - name: CUSTOM_JVM_OPTIONS_BASE64 - description: "Base64-encoded JVM options appended to jvm.options." - default: "" - - - name: POD_MANAGEMENT_POLICY - description: "podManagementPolicy of the Cassandra Statefulset" - default: "OrderedReady" + displayName: "Custom JVM Options" + hint: "Base64 encoded JVM options." + description: "Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there." + type: string + required: false + group: jvm ################################################################################ ################################ Repair options ################################ ################################################################################ - name: REPAIR_POD + displayName: "Pod to Repair" description: "Name of the pod on which 'nodetool repair' should be run." - default: "" + hint: "Name of a pod." + required: false + type: "string" trigger: repair + group: repair ################################################################################ - ################################ Repair options ################################ + ############################### Recovery options ############################### ################################################################################ - name: RECOVERY_CONTROLLER - displayName: "Enables or disables the recovery controller" - description: "Needs to be true for automatic failure recovery and node eviction" + displayName: "Recovery Controller Enabled" + type: boolean + description: "Needs to be true for automatic failure recovery and node eviction." + hint: "Start the Recovery Controller." default: "false" + group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE - description: "Recovery controller Docker image." + displayName: "Docker Image" + description: "Docker image for the recovery controller." + hint: "Docker Image." + type: string default: "mesosphere/kudo-cassandra-recovery:0.0.2-1.0.2" + advanced: true + group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY + displayName: "Pull Policy" description: "Recovery controller Docker image pull policy." + hint: "Pull Policy for the docker image." + type: string default: "Always" + advanced: true + enum: + - "Always" + - "IfNotPresent" + - "Never" + group: recovery - name: RECOVERY_CONTROLLER_CPU_MC - description: "CPU request (in millicores) for the Recovery controller container." + displayName: "CPU Request" + hint: "Allowed CPU usage in millicores." + description: "CPU request for the Recovery controller container." + type: integer default: "50" + advanced: true + group: recovery - name: RECOVERY_CONTROLLER_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Recovery controller container." + displayName: "CPU Limit" + hint: "Allowed CPU limit in millicores." + description: "CPU limit for the Recovery controller container." + type: integer default: "200" + advanced: true + group: recovery - name: RECOVERY_CONTROLLER_MEM_MIB - description: "Memory request (in MiB) for the Recovery controller container." + displayName: "Memory Request" + description: "Memory request for the Recovery controller container." + hint: "Allowed Memory usage in MiB." default: "50" + type: integer + advanced: true + group: recovery - name: RECOVERY_CONTROLLER_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Recovery controller container." + displayName: "Memory Limit" + description: "Memory limit for the Recovery controller container." + hint: "Temporary allowed Memory limit in MiB." default: "256" + type: integer + advanced: true + group: recovery diff --git a/operator/templates/generate-cassandra-yaml.yaml b/operator/templates/generate-cassandra-yaml.yaml index f2c36a28..cbdf4b4e 100644 --- a/operator/templates/generate-cassandra-yaml.yaml +++ b/operator/templates/generate-cassandra-yaml.yaml @@ -362,7 +362,9 @@ data: # Constantly re-preparing statements is a performance penalty. # # Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater + {{ if .Params.PREPARED_STATEMENTS_CACHE_SIZE_MB }} prepared_statements_cache_size_mb: {{ .Params.PREPARED_STATEMENTS_CACHE_SIZE_MB }} + {{ end }} # Maximum size of the Thrift prepared statement cache # @@ -371,7 +373,9 @@ data: # See description of 'prepared_statements_cache_size_mb' above for more information. # # Default value ("auto") is 1/256th of the heap or 10MB, whichever is greater + {{ if .Params.THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB }} thrift_prepared_statements_cache_size_mb: {{ .Params.THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB }} + {{ end }} # Maximum size of the key cache in memory. # @@ -385,7 +389,9 @@ data: # NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. # # Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache. + {{ if .Params.KEY_CACHE_SIZE_IN_MB }} key_cache_size_in_mb: {{ .Params.KEY_CACHE_SIZE_IN_MB }} + {{ end }} # Duration in seconds after which Cassandra should # save the key cache. Caches are saved to saved_caches_directory as @@ -434,7 +440,9 @@ data: # has limited use. # # Default is 0 to disable saving the row cache. + {{ if .Params.ROW_CACHE_SAVE_PERIOD }} row_cache_save_period: {{ .Params.ROW_CACHE_SAVE_PERIOD }} + {{ end }} # Number of keys from the row cache to save. # Specify 0 (which is the default), meaning all keys are going to be saved @@ -455,7 +463,9 @@ data: # # Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache. # NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache. + {{ if .Params.COUNTER_CACHE_SIZE_IN_MB }} counter_cache_size_in_mb: {{ .Params.COUNTER_CACHE_SIZE_IN_MB }} + {{ end }} # Duration in seconds after which Cassandra should # save the counter cache (keys only). Caches are saved to saved_caches_directory as @@ -708,7 +718,9 @@ data: # shrink their index summaries in order to meet this limit. However, this # is a best-effort process. In extreme conditions Cassandra may need to use # more than this amount of memory. + {{ if .Params.INDEX_SUMMARY_CAPACITY_IN_MB }} index_summary_capacity_in_mb: {{ .Params.INDEX_SUMMARY_CAPACITY_IN_MB }} + {{ end }} # How frequently index summaries should be resampled. This is done # periodically to redistribute memory from the fixed-size pool to sstables @@ -816,7 +828,7 @@ data: # The maximum number of concurrent client connections per source ip. # The default is -1, which means unlimited. - {{ if .Params.NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB }} + {{ if .Params.NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP }} native_transport_max_concurrent_connections_per_ip: {{ .Params.NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP }} {{ end }} @@ -1268,11 +1280,17 @@ data: # Disabling it will result in larger (but fewer) network packets being sent, # reducing overhead from the TCP protocol itself, at the cost of increasing # latency if you block for cross-datacenter responses. + {{ if .Params.INTER_DC_TCP_NODELAY }} inter_dc_tcp_nodelay: {{ .Params.INTER_DC_TCP_NODELAY }} + {{ end }} # TTL for different trace types used during logging of the repair process. + {{ if .Params.TRACETYPE_QUERY_TTL }} tracetype_query_ttl: {{ .Params.TRACETYPE_QUERY_TTL }} + {{ end }} + {{ if .Params.TRACETYPE_REPAIR_TTL }} tracetype_repair_ttl: {{ .Params.TRACETYPE_REPAIR_TTL }} + {{ end }} # By default, Cassandra logs GC Pauses greater than 200 ms at INFO level # This threshold can be adjusted to minimize logging if necessary @@ -1296,13 +1314,6 @@ data: # Materialized views are considered experimental and are not recommended for production use. enable_materialized_views: {{ .Params.ENABLE_MATERIALIZED_VIEWS }} - # The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. - # Lowering this value on Windows can provide much tighter latency and better throughput, however - # some virtualized environments may see a negative performance impact from changing this setting - # below their system default. The sysinternals 'clockres' tool can confirm your system's default - # setting. - windows_timer_interval: {{ .Params.WINDOWS_TIMER_INTERVAL }} - # Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from # a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by # the "key_alias" is the only key that will be used for encrypt opertaions; previously used keys @@ -1362,7 +1373,9 @@ data: # GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level # Adjust the threshold based on your application throughput requirement # By default, Cassandra logs GC Pauses greater than 200 ms at INFO level + {{ if .Params.GC_WARN_THRESHOLD_IN_MS }} gc_warn_threshold_in_ms: {{ .Params.GC_WARN_THRESHOLD_IN_MS }} + {{ end }} # Maximum size of any value in SSTables. Safety measure to detect SSTable corruption # early. Any value size larger than this threshold will result into marking an SSTable @@ -1371,27 +1384,8 @@ data: max_value_size_in_mb: {{ .Params.MAX_VALUE_SIZE_IN_MB }} {{ end }} - # Back-pressure settings # - # If enabled, the coordinator will apply the back-pressure strategy specified below to each mutation - # sent to replicas, with the aim of reducing pressure on overloaded replicas. - back_pressure_enabled: {{ .Params.BACK_PRESSURE_ENABLED }} - # The back-pressure strategy applied. - # The default implementation, RateBasedBackPressure, takes three arguments: - # high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests. - # If below high ratio, outgoing mutations are rate limited according to the incoming rate decreased by the given factor; - # if above high ratio, the rate limiting is increased by the given factor; - # such factor is usually best configured between 1 and 10, use larger values for a faster recovery - # at the expense of potentially more dropped mutations; - # the rate limiting is applied according to the flow type: if FAST, it's rate limited at the speed of the fastest replica, - # if SLOW at the speed of the slowest one. - # New strategies can be added. Implementors need to implement org.apache.cassandra.net.BackpressureStrategy and - # provide a public constructor accepting a Map. - back_pressure_strategy: - - class_name: {{ .Params.BACK_PRESSURE_STRATEGY_CLASS_NAME }} - parameters: - - high_ratio: {{ .Params.BACK_PRESSURE_STRATEGY_HIGH_RATIO }} - factor: {{ .Params.BACK_PRESSURE_STRATEGY_FACTOR }} - flow: {{ .Params.BACK_PRESSURE_STRATEGY_FLOW }} + # Back-pressure settings # Removed, see: https://issues.apache.org/jira/browse/CASSANDRA-15375 + # Coalescing Strategies # # Coalescing multiples messages turns out to significantly boost message processing throughput (think doubling or more). # On bare metal, the floor for packet processing throughput is high enough that many applications won't notice, but in diff --git a/operator/templates/jvm-options.yaml b/operator/templates/jvm-options.yaml index 6a1b81e0..9d63a3d6 100644 --- a/operator/templates/jvm-options.yaml +++ b/operator/templates/jvm-options.yaml @@ -226,7 +226,6 @@ data: # times. If in doubt, and if you do not particularly want to tweak, go # 100 MB per physical CPU core. # - # TODO(mpereira): calculate this automatically based on the formula above. {{ if .Params.NODE_NEW_GENERATION_HEAP_SIZE_MB }} -Xmn{{ .Params.NODE_NEW_GENERATION_HEAP_SIZE_MB }}M {{ end }} @@ -266,7 +265,9 @@ data: -XX:CMSInitiatingOccupancyFraction={{ .Params.JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION }} {{ end }} + {{ if .Params.JVM_OPT_USE_CMS_INITIATING_OCCUPANCY_ONLY }} -XX:+UseCMSInitiatingOccupancyOnly + {{ end }} {{ if .Params.JVM_OPT_CMS_WAIT_DURATION }} -XX:CMSWaitDuration={{ .Params.JVM_OPT_CMS_WAIT_DURATION }} @@ -284,29 +285,27 @@ data: # ## Have the JVM do less remembered set work during STW, instead ## preferring concurrent GC. Reduces p99.9 latency. - {{ if .Params.JVM_OPT_G1R_SET_UPDATING_PAUSE_TIME_PERCENT }} - -XX:G1RSetUpdatingPauseTimePercent={{ .Params.JVM_OPT_G1R_SET_UPDATING_PAUSE_TIME_PERCENT }} - {{ end }} + #-XX:G1RSetUpdatingPauseTimePercent= # ## Main G1GC tunable: lowering the pause target will lower throughput and vise versa. ## 200ms is the JVM default and lowest viable setting ## 1000ms increases throughput. Keep it smaller than the timeouts in cassandra.yaml. - {{ if .Params.JVM_OPT_MAX_GC_PAUSE_MILLIS }} - -XX:MaxGCPauseMillis={{ .Params.JVM_OPT_MAX_GC_PAUSE_MILLIS }} - {{ end }} + #-XX:MaxGCPauseMillis= ## Optional G1 Settings # Save CPU time on large (>= 16GB) heaps by delaying region scanning # until the heap is 70% full. The default in Hotspot 8u40 is 40%. - {{ if .Params.JVM_OPT_INITIATING_HEAP_OCCUPANCY_PERCENT }} - -XX:InitiatingHeapOccupancyPercent={{ .Params.JVM_OPT_INITIATING_HEAP_OCCUPANCY_PERCENT }} - {{ end }} + #-XX:InitiatingHeapOccupancyPercent= # For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. # Otherwise equal to the number of cores when 8 or less. # Machines with > 10 cores should try setting these to <= full cores. # -XX:ParallelGCThreads=16 + {{ if .Params.JVM_OPT_PARALLEL_GC_THREADS }} + -XX:ParallelGCThreads={{ .Params.JVM_OPT_PARALLEL_GC_THREADS }} + {{ end }} + # By default, ConcGCThreads is 1/4 of ParallelGCThreads. # Setting both to the same value can reduce STW durations. {{ if .Params.JVM_OPT_CONC_GC_THREADS }} diff --git a/templates/operator/params.yaml.template b/templates/operator/params.yaml.template index f07aa0f1..0bb9ea78 100644 --- a/templates/operator/params.yaml.template +++ b/templates/operator/params.yaml.template @@ -1,1033 +1,2179 @@ apiVersion: kudo.dev/v1beta1 +groups: + - name: general + displayName: "General Settings" + description: "Common settings for the Operator." + prio: 10 + + - name: nodes + displayName: "Nodes" + description: "Common configuration for Cassandra Nodes." + prio: 20 + + - name: liveness-checks + displayName: "Liveness checks" + description: "Parameters to configure the liveness of a Cassandra Node. When a Node fails liveness checks, it is automatically restarted by Kubernetes." + prio: 30 + + - name: readiness-checks + displayName: "Readiness checks" + description: "Parameters to configure the readiness of a Cassandra Node. When a Node fails readiness checks, it is automatically removed from the service by Kubernetes." + prio: 40 + + - name: backup + displayName: "Backup and Restore" + description: "Configuration related to backup and restore of the Cassandra Cluster." + prio: 50 + + - name: restore + displayName: "Restore" + description: "Options only required if a backup should be restored on installation." + prio: 60 + + - name: external + displayName: "External Cluster Access" + description: "Allow access to the Cassandra Cluster from outside Kubernetes." + prio: 70 + + - name: metrics + displayName: "Metrics Export" + description: "Metrics can be exported with the Prometheus Metrics Exporter." + prio: 80 + + - name: recovery + displayName: "Recovery Controller" + description: "The Recovery Controller allows the Cluster to autoheal when a Kubernetes node fails." + prio: 90 + + - name: repair + displayName: "Repair" + description: "Options to repair a node in the cluster." + prio: 100 + + - name: advanced + displayName: "Advanced Configuration" + description: "Advanced configuration that is only required for very advanced usecases." + prio: 110 + + - name: node-advanced + displayName: "Advanced Nodes" + description: "Advanced configuration options for Cassandra nodes. These are not-commonly modifed settings. See https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html and other Cassandra documentation for details on parameters." + prio: 120 + + - name: security + displayName: "Security" + description: "Security related settings." + prio: 130 + + - name: caches + displayName: "Caches" + description: "Cache related settings." + prio: 140 + + - name: racks_and_dc + displayName: "Racks and Datacenter Awareness" + description: "Options related to Rack Awareness and Multi-Datacenter options." + prio: 150 + + - name: optimization + displayName: "Optimization Settings" + description: "Settings to fine-tune the Cassandra cluster and optimize the performance." + prio: 160 + + - name: safety_thresholds + displayName: "Safety Thresholds" + description: "Warning and Failure Thresholds." + prio: 170 + + - name: network + displayName: "Network" + description: "Network related settings." + prio: 180 + + - name: timeouts + displayName: "Timeouts" + description: "Timeouts." + prio: 190 + + - name: jvm + displayName: "Java Virtual Machine Settings" + description: "Settings related to the Java JVM and the Garbage Collector." + prio: 200 + + - name: directories + displayName: "Directories" + description: "Directory configurations. These should usually not be changed, as they probably require changes to the used docker image." + prio: 210 + parameters: ################################################################################ ############################### Operator settings ############################## ################################################################################ - name: NODE_COUNT - description: "Number of Cassandra nodes." + description: "The number of Cassandra nodes to create for the cluster. Should be an odd number of nodes and at least 3 to create a useful quorum." default: "3" + displayName: "Node Count" + hint: "Number of Cassandra nodes." + type: integer + group: general - name: NODE_CPU_MC - description: "CPU request (in millicores) for the Cassandra node containers." + displayName: "CPU Request" + hint: "Allowed CPU usage in millicores." + description: "CPU request for the Cassandra node containers." + type: integer default: "1000" + group: general - name: NODE_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Cassandra node containers." + displayName: "CPU Limit" + hint: "Temporary allowed CPU limit in millicores." + description: "CPU limit for the Cassandra node containers." default: "1000" + type: integer + group: general - name: NODE_MEM_MIB - description: "Memory request (in MiB) for the Cassandra node containers." + displayName: "Memory Request" + description: "Memory request for the Cassandra node containers." + hint: "Allowed Memory usage in MiB." default: "4096" + type: integer + group: general - name: NODE_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Cassandra node containers." + displayName: "Memory Limit" + description: "Memory limit for the Cassandra node containers." + hint: "Temporary allowed Memory limit in MiB." default: "4096" + type: integer + group: general - name: NODE_DISK_SIZE_GIB description: "Disk size (in GiB) for the Cassandra node containers." default: "20" + displayName: "Disk Size" + hint: "Peristent memory in GiB." + type: integer + group: general - name: NODE_STORAGE_CLASS + displayName: "Storage Class" + type: string description: "The storage class to be used in volumeClaimTemplates. By default, it is not required and the default storage class is used." + hint: "The kubernetes storage class." required: false + advanced: true + group: general - name: NODE_DOCKER_IMAGE + displayName: "Main Docker Image" + type: string description: "Cassandra node Docker image." + hint: "Docker Image for Cassandra." default: "${CASSANDRA_DOCKER_IMAGE}" + advanced: true + group: general - name: NODE_DOCKER_IMAGE_PULL_POLICY + displayName: "Main Docker Image Pull Policy" + type: string description: "Cassandra node Docker image pull policy." + hint: "Pull policy." default: "Always" + advanced: true + group: general + enum: + - "Always" + - "IfNotPresent" + - "Never" + + - name: POD_MANAGEMENT_POLICY + displayName: "Pod Management Policy" + hint: "Whether to start pods in order or parallel." + description: "Parallel startup may decrease the startup time of big clusters but lead to failing pods in the beginning when two nodes try to join at the very same time." + type: string + default: "OrderedReady" + group: general + enum: + - "OrderedReady" + - "Parallel" - name: NODE_READINESS_PROBE_INITIAL_DELAY_S description: "Number of seconds after the container has started before the readiness probe is initiated." default: "0" + type: integer + displayName: "Initial Delay" + hint: "Number of seconds." + group: readiness-checks - name: NODE_READINESS_PROBE_PERIOD_S description: "How often (in seconds) to perform the readiness probe." default: "5" + type: integer + displayName: "Repeat Period" + hint: "Number of seconds." + group: readiness-checks - name: NODE_READINESS_PROBE_TIMEOUT_S description: "How long (in seconds) to wait for a readiness probe to succeed." default: "60" + type: integer + displayName: "Timeout" + hint: "Number of seconds." + group: readiness-checks - name: NODE_READINESS_PROBE_SUCCESS_THRESHOLD description: "Minimum consecutive successes for the readiness probe to be considered successful after having failed." default: "1" + type: integer + displayName: "Success Threshold" + hint: "Number of successes after failure." + group: readiness-checks - name: NODE_READINESS_PROBE_FAILURE_THRESHOLD description: "When a pod starts and the readiness probe fails, `failure_threshold` attempts will be made before marking the pod as 'unready'." default: "3" + type: integer + displayName: "Failure Threshold" + hint: "Number of failures." + group: readiness-checks - name: NODE_LIVENESS_PROBE_INITIAL_DELAY_S description: "Number of seconds after the container has started before the liveness probe is initiated." default: "15" + type: integer + displayName: "Initial Delay" + hint: "Number of seconds." + group: liveness-checks - name: NODE_LIVENESS_PROBE_PERIOD_S description: "How often (in seconds) to perform the liveness probe." default: "20" + type: integer + displayName: "Repeat Period" + hint: "Number of seconds." + group: liveness-checks - name: NODE_LIVENESS_PROBE_TIMEOUT_S description: "How long (in seconds) to wait for a liveness probe to succeed." default: "60" + type: integer + displayName: "Timeout" + hint: "Number of seconds." + group: liveness-checks - name: NODE_LIVENESS_PROBE_SUCCESS_THRESHOLD description: "Minimum consecutive successes for the liveness probe to be considered successful after having failed." default: "1" + type: integer + displayName: "Success Threshold" + hint: "Number of successes after failure." + group: liveness-checks - name: NODE_LIVENESS_PROBE_FAILURE_THRESHOLD description: "When a pod starts and the liveness probe fails, `failure_threshold` attempts will be made before restarting the pod." default: "3" + type: integer + displayName: "Failure Threshold" + hint: "Number of failures." + group: liveness-checks - name: NODE_TOLERATIONS - description: A list of kubernetes tolerations to let pods get scheduled on tainted nodes + description: "A list of kubernetes tolerations to let pods get scheduled on tainted nodes." + displayName: "Node Tolerations" + hint: "YAML definition of node tolerations." type: array + advanced: true + required: false + group: nodes - name: OVERRIDE_CLUSTER_NAME + displayName: "Cluster Name Override" + hint: "Uniqe cluster name to separate multiple clusters." + type: string description: "Override the name of the Cassandra cluster set by the operator. This shouldn't be explicit set, unless you know what you're doing." default: "" + advanced: true + group: general - name: EXTERNAL_SERVICE - displayName: "Main toggle for external access" - description: "Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work" + displayName: "External access" + hint: "Main toggle for external access." + type: boolean + description: "Needs to be true for either EXTERNAL_NATIVE_TRANSPORT or EXTERNAL_RPC to work." default: "false" + group: external - name: EXTERNAL_NATIVE_TRANSPORT - displayName: "Enable external native transport" - description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster" + displayName: "Native transport" + hint: "Enable external native transport access." + type: boolean + description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster." default: "false" + group: external - name: EXTERNAL_RPC - displayName: "Enable external rpc" - description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true" + displayName: "RPC" + hint: "Enable external RPC access." + type: boolean + description: "This exposes the Cassandra cluster via an external service so it can be accessed from outside the Kubernetes cluster. Works only if START_RPC is true." default: "false" + group: external - name: EXTERNAL_NATIVE_TRANSPORT_PORT - displayName: "External advertised native transport port" + displayName: "Native Transport Port" + hint: "External advertised native transport port." + type: integer description: "The external port to use for Cassandra native transport protocol." default: "9042" + group: external - name: EXTERNAL_RPC_PORT - displayName: "External advertised rpc port" + displayName: "RPC Port" + hint: "External advertised rpc port." + type: integer description: "The external port to use for Cassandra rpc protocol." default: "9160" + group: external - name: BOOTSTRAP_TIMEOUT - description: "Timeout for the bootstrap binary to join the cluster with the new IP. Valid time units are 'ns', 'us', 'ms', 's', 'm', 'h'." + displayName: "Bootstrap Timeout" + type: string + hint: "Timeout, Valid units are 'ns', 'us', 'ms', 's', 'm', 'h'." + description: "Timeout for the bootstrap binary to join the cluster with the new IP. ." default: "12h30m" + advanced: true + group: advanced - name: SHUTDOWN_OLD_REACHABLE_NODE - description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node" + displayName: "Shutdown old reachable Nodes" + type: boolean + description: "When a node replace is done, try to connect to the old node and shut it down before starting up the old node." + hint: "Experimental flag to shutdown a Cassandra node that was replaced." default: false + advanced: true + group: advanced - name: JOLOKIA_PORT + displayName: Jolokia Port + hint: "Change only in case of port conflicts." + type: integer description: "The internal port for the Jolokia Agent. This port is not exposed, but can be changed if it conflicts with another port." - default: 7777 + default: "7777" + advanced: true + group: advanced ################################################################################ ########################## Backup and Restore settings ######################### ################################################################################ - name: BACKUP_RESTORE_ENABLED - description: "Global flag that enables the medusa sidecar for backups" + displayName: "Enable Backup and Restore" + description: "Global flag that enables the medusa sidecar for backups." + hint: "Start the Medusa Container." + type: boolean + group: backup default: "false" - name: BACKUP_TRIGGER - description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup" - default: "1" + displayName: "Trigger Backup" + type: string + hint: "Do not set this on installation. Used to trigger a backup." + description: "Trigger parameter to start a backup. Simply needs to be changed from the current value to start a backup." + group: backup trigger: backup + advanced: true + required: false - name: BACKUP_AWS_CREDENTIALS_SECRET - description: If set, can be used to provide the access_key, secret_key and security_token with a secret + displayName: "AWS Credentials Secret" + hint: "Name of a Kubernetes Secret." + type: string + description: "If set, can be used to provide the access_key, secret_key and security_token with a secret." required: false + group: backup - name: BACKUP_AWS_S3_BUCKET_NAME - description: The name of the AWS S3 bucket to store the backups + displayName: "AWS S3 Bucket" + hint: "Name of an S3 bucket." + type: string + description: "The name of the AWS S3 bucket to store the backups." required: false + group: backup - name: BACKUP_AWS_S3_STORAGE_PROVIDER - description: Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py + displayName: "AWS Storage Provider" + hint: "A Storage Provider Type." + type: string + description: "Should be one of the s3_* values from https://github.com/apache/libcloud/blob/trunk/libcloud/storage/types.py ." required: false default: s3_us_west_oregon + group: backup - name: BACKUP_PREFIX - description: A prefix to be used inside the S3 bucket + displayName: "Backup Prefix" + hint: "A prefix to be used inside the S3 bucket." + type: string + description: "If a prefix is given, multiple different backups can be stored in the same S3 bucket." required: false + group: backup - name: BACKUP_MEDUSA_CPU_MC - description: "CPU request (in millicores) for the Medusa backup containers." + displayName: "CPU request" + hint: "CPU request in millicores." + type: integer + description: "CPU request for the Medusa backup containers." default: "100" + advanced: true + group: backup - name: BACKUP_MEDUSA_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Medusa backup containers." + displayName: "CPU limit" + hint: "CPU limit in millicores." + type: integer + description: "CPU limit for the Medusa backup containers." default: "500" + advanced: true + group: backup - name: BACKUP_MEDUSA_MEM_MIB - description: "Memory request (in MiB) for the Medusa backup containers." + displayName: "Memory request" + hint: "Memory request in MiB." + type: integer + description: "Memory request for the Medusa backup containers." default: "256" + advanced: true + group: backup - name: BACKUP_MEDUSA_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Medusa backup containers." + displayName: "Memory limit" + hint: "Memory limit in MiB." + type: integer + description: "Memory limit for the Medusa backup containers." default: "512" + advanced: true + group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE - description: "Medusa backup Docker image." + displayName: "Docker Image" + hint: "The Medusa Docker Image." + description: "Medusa backup Docker image which is used to make backups." + type: string default: "${MEDUSA_BACKUP_DOCKER_IMAGE}" + advanced: true + group: backup - name: BACKUP_MEDUSA_DOCKER_IMAGE_PULL_POLICY - description: "Medusa backup Docker image pull policy." + displayName: "Pull Policy" + hint: "The Docker Image Pull Policy." + description: "The Pull policy for the Medusa Docker Image." + type: string default: "Always" + advanced: true + group: backup + enum: + - "Always" + - "IfNotPresent" + - "Never" - name: BACKUP_NAME - description: "The name of the backup to create or restore" - default: "" + displayName: "Backup Name" + hint: "Do not use on installation." + type: string + description: "The name of the backup to create or restore." + required: false + group: backup - name: RESTORE_FLAG - description: "If true, a restore is done on installation" + displayName: "Restore" + hint: "If true, an existing backup is restored on installation." + type: boolean + description: "When this is true, all backup configuration must point to an existing backup which is restored as a new cluster." default: "false" + advanced: true + group: restore - name: RESTORE_OLD_NAMESPACE - description: "The namespace from the operator that was used to create the backup" + displayName: "Old Namespace for Restore" + hint: "The Namespace that was used when creating the backup." + type: string + description: "The namespace from the operator that was used to create the backup." + advanced: true default: "" + group: restore - name: RESTORE_OLD_NAME - description: "The instance name from the operator that was used to create the backup" + displayName: "Old Name for Restore" + hint: "The Instance Name that was used when creating the backup." + type: string + description: "The instance name from the operator that was used to create the backup." + advanced: true default: "" + group: restore ################################################################################ ######################### Datacenter and Rack awareness ######################## ################################################################################ - name: NODE_TOPOLOGY + displayName: "Node Topology" description: "This describes a multi-datacenter setup. When set it has precedence over NODE_COUNT. See docs/multidatacenter.md for more details." + hint: "A list of node-topology yaml values." default: type: array + group: racks_and_dc - - name: NODE_ANTI_AFFINITY - description: "Ensure that every Cassandra node is deployed on separate hosts." + - name: SERVICE_ACCOUNT_INSTALL + displayName: "ServiceAccount Install" + description: "If true, the operator automatically installs a cluster role, service account and role binding. This is required for advanced functionality of multi-datacenter setups." + hint: "Automatically install RBAC elements." + type: boolean default: "false" + group: racks_and_dc - - name: SERVICE_ACCOUNT_INSTALL - description: "This flag can be set to true to automatic installation of a cluster role, service account and role binding." + - name: NODE_ANTI_AFFINITY + displayName: "Node Anti-Affinity" + description: "Ensure that every Cassandra node is deployed on a separate Kubernetes node. (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity)" + hint: "Deploy on separate Kubernetes nodes." + type: boolean + group: racks_and_dc default: "false" - name: EXTERNAL_SEED_NODES + displayName: "External Seed Nodes" description: "List of seed nodes external to this instance to add to the cluster. This allows clusters spanning multiple Kubernetes clusters." + hint: "List of IP-Adresses or host names." default: type: array + group: racks_and_dc ################################################################################ ######################### Prometheus exporter settings ######################### ################################################################################ - name: PROMETHEUS_EXPORTER_ENABLED + displayName: "Metrics Enabled" + hint: "Global toggle for metrics exporter." description: "A toggle to enable the prometheus metrics exporter." + type: boolean default: "false" + group: metrics + + - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME + displayName: "Custom prometheus configuration configmap name" + description: "The properties present in this configmap will be appended to the prometheus configuration properties." + hint: "Name of a config map." + type: string + required: false + group: metrics - name: PROMETHEUS_EXPORTER_PORT + displayName: "Port" + hint: "Port used for prometheus exporter." + type: integer description: "Prometheus exporter port." default: "7200" + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_CPU_MC - description: "CPU request (in millicores) for the Prometheus exporter containers." + displayName: "CPU Request" + hint: "Allowed CPU usage in millicores." + description: "CPU request for the Prometheus exporter containers." + type: integer default: "500" + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Prometheus exporter containers." + displayName: "CPU Limit" + hint: "Allowed CPU limit in millicores." + description: "CPU limit for the Prometheus exporter containers." + type: integer default: "1000" + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_MEM_MIB - description: "Memory request (in MiB) for the Prometheus exporter containers." + displayName: "Memory Request" + description: "Memory request for the Prometheus exporter containers." + hint: "Allowed Memory usage in MiB." default: "512" + type: integer + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Prometheus exporter containers." + displayName: "Memory Limit" + description: "Memory limit for the Prometheus exporter containers." + hint: "Temporary allowed Memory limit in MiB." default: "512" + type: integer + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE - description: "Prometheus exporter Docker image." + displayName: "Docker Image" + type: string + hint: "Prometheus Docker Image." + description: "The docker image of the Prometheus exporter." default: "${PROMETHEUS_EXPORTER_DOCKER_IMAGE}" + advanced: true + group: metrics - name: PROMETHEUS_EXPORTER_DOCKER_IMAGE_PULL_POLICY + displayName: "Pull Policy" + type: string + hint: "Docker Image Pull Policy." description: "Prometheus exporter Docker image pull policy." default: "Always" - - - name: PROMETHEUS_EXPORTER_CUSTOM_CONFIG_CM_NAME - displayName: "custom prometheus configuration configmap name" - description: "The properties present in this configmap will be appended to the prometheus configuration properties" - required: false + advanced: true + enum: + - "Always" + - "IfNotPresent" + - "Never" + group: metrics ################################################################################ ########################### Cassandra node settings ############################ ################################################################################ - name: STORAGE_PORT + displayName: "Storage Port" + hint: "A port number over 1024." + type: integer description: "The port for inter-node communication." default: "7000" + group: node-advanced - name: SSL_STORAGE_PORT + displayName: "SSL Storage Port" + hint: "A port number over 1024." + type: integer description: "The port for inter-node communication over SSL." default: "7001" + group: node-advanced + + - name: START_NATIVE_TRANSPORT + displayName: "Enable Native Transport" + type: boolean + description: "If true, CQL is enabled." + hint: "start_native_transport - CQL. Defaults to true." + default: "true" + group: node-advanced - name: NATIVE_TRANSPORT_PORT + displayName: "Native Transport Port" + hint: "A port number over 1024." + type: integer description: "The port for CQL communication." default: "9042" + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_THREADS + displayName: "Native Transport Max Threads" + type: integer + description: "The maximum number of thread handling requests." + hint: "native_transport_max_threads - Number of Threads. 128 if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB + displayName: "Native Transport Max Frame Size" + type: integer + description: "The maximum allowed size of a frame. If you're changing this parameter, you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048." + hint: "native_transport_max_frame_size_in_mb - In MB. 256 if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS + displayName: "Native Transport Max Concurrent Connections" + type: integer + description: "The maximum number of concurrent client connections. Defaults to -1, meaning unlimited." + hint: "native_transport_max_concurrent_connections - unlimited if not set." + required: false + advanced: true + group: node-advanced + + - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP + displayName: "Native Transport Max Concurrent Connections per IP" + type: integer + description: "The maximum number of concurrent client connections per source IP address. Defaults to -1, meaning unlimited." + hint: "native_transport_max_concurrent_connections_per_ip - unlimited if not set." + required: false + advanced: true + group: node-advanced - name: RPC_PORT + displayName: "RPC Port" + type: integer + hint: "A port number over 1024." description: "The port for Thrift RPC communication." default: "9160" + group: node-advanced - name: JMX_PORT + displayName: "JMX Port" + type: integer description: "The JMX port that will be used to interface with the Cassandra application." + hint: "A port number over 1024." default: "7199" + group: node-advanced - name: RMI_PORT + displayName: "JMX RMI Port" + type: integer description: "The RMI port that will be used to interface with the Cassandra application when TRANSPORT_ENCRYPTION_ENABLED is set." + hint: "A port number over 1024." default: "7299" + group: node-advanced - name: JMX_LOCAL_ONLY - description: "If true, the JMX port will only be opened on localhost and not be available to the cluster" + displayName: "JMX Local Only" + type: boolean + description: "If true, the JMX port will only be opened on localhost and not be available inside the Kubernetes cluster." + hint: "Start JMX on localhost only." + default: "true" + group: node-advanced + + - name: START_RPC + displayName: "Start Thrift RPC" + type: boolean + description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." + hint: "start_rpc - Defaults to false." + default: "false" + group: node-advanced + + - name: RPC_SERVER_TYPE + displayName: "RPC Server Type" + type: string + description: "Cassandra provides two options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory. (https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configCassandra_yaml.html#configCassandra_yaml__rpc_server_type)." + hint: "rpc_server_type - Type RPC server type." + default: "sync" + enum: + - "sync" + - "hsha" + group: node-advanced + + - name: RPC_KEEPALIVE + displayName: "Connection Keepalive" + type: boolean + description: "Enables or disables keepalive on client connections (RPC or native)." + hint: "rpc_keepalive - Defaults to true." default: "true" + group: node-advanced + + - name: RPC_MIN_THREADS + displayName: "RPC Min Threads" + type: integer + description: "The minimum thread pool size for remote procedure calls." + hint: "rpc_min_threads - Number of threads. 16 if not set." + required: false + group: node-advanced + + - name: RPC_MAX_THREADS + displayName: "RPC Max Threads" + type: integer + description: "The maximum thread pool size for remote procedure calls." + hint: "rpc_max_threads - Number of Threads. unlimited if not set." + required: false + group: node-advanced + + - name: RPC_SEND_BUFF_SIZE_IN_BYTES + displayName: "RPC Send Buffer Socket Size" + type: integer + description: "The sending socket buffer size in bytes for remote procedure calls." + hint: "rpc_send_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: node-advanced + + - name: RPC_RECV_BUFF_SIZE_IN_BYTES + displayName: "RPC Receive Buffer Socket Size" + type: integer + description: "The receiving socket buffer size for remote procedure calls." + hint: "rpc_recv_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: node-advanced + + - name: PARTITIONER + displayName: "Partitioner" + type: string + description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." + hint: "partitioner - Java Class Name." + default: "org.apache.cassandra.dht.Murmur3Partitioner" + group: node-advanced - name: TRANSPORT_ENCRYPTION_ENABLED + displayName: "Transport Encryption" + type: boolean description: "Enable node-to-node encryption." + hint: "Node-to-Node encryption." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_ENABLED + displayName: "Client Transport Encryption" + type: boolean description: "Enable client-to-node encryption." + hint: "Client-to-Node encryption." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_CIPHERS - description: "Comma-separated list of JSSE Cipher Suite Names." + displayName: "Encryption Ciphers" + type: string + description: "Comma-separated list of JSSE Cipher Suite Names. Might require changes to the installed Java Runtime." + hint: "JSSE Cipher Suite Names." default: "TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" + advanced: true + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_ALLOW_PLAINTEXT + displayName: "Allow Plaintext Transport" + hint: "Allow both plaintext and secure." + type: boolean description: "Enable Server-Client plaintext communication alongside encrypted traffic." default: "false" + group: security - name: TRANSPORT_ENCRYPTION_REQUIRE_CLIENT_AUTH + displayName: "Client Auth for Node-To-Node" + type: boolean description: "Enable client certificate authentication on node-to-node transport encryption." + hint: "For Node-to-Node transport encryption." default: "true" + group: security - name: TRANSPORT_ENCRYPTION_CLIENT_REQUIRE_CLIENT_AUTH + displayName: "Client Auth for Client-To-Node" + type: boolean description: "Enable client certificate authentication on client-to-node transport encryption." + hint: "For Client-to-Node transport encryption." default: "true" + group: security - name: TLS_SECRET_NAME + displayName: "ConfigMap with TLS Secret" description: "The TLS secret that contains the self-signed certificate (cassandra.crt) and the private key (cassandra.key). The secret will be mounted as a volume to make the artifacts available." + hint: "Name of a ConfigMap installed by the user." + type: string default: "cassandra-tls" + group: security - name: NODE_MIN_HEAP_SIZE_MB + displayName: "Node Min Heap Size" + type: integer description: "The minimum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set." - default: "" + hint: "-Xms - In MB. Should be the same as Max Heap Size." + required: false + group: jvm - name: NODE_MAX_HEAP_SIZE_MB + displayName: "Node Max Heap Size" + type: integer description: "The maximum JVM heap size in MB. This has a smart default and doesn't need to be explicitly set." - default: "" + hint: "-Xmx - In MB. Should be the same as Min Heap Size." + required: false + group: jvm - name: NODE_NEW_GENERATION_HEAP_SIZE_MB + displayName: "New Generation Heap Size" + type: integer description: "The JVM new generation heap size in MB." - default: "" + hint: "-Xmn - In MB. Automatic if not set." + required: false + group: jvm - name: SEED_PROVIDER_CLASS - description: "The class within Cassandra that handles the seed logic." + displayName: "Seed Provider Class" + type: string + description: "The class within Cassandra that handles the seed logic. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#seed-provider)" + hint: "Name of a Java Class." default: "org.apache.cassandra.locator.SimpleSeedProvider" + group: node-advanced - name: NUM_TOKENS + displayName: "Number of Tokens" + hint: "num_tokens - Can only be set at installation." + type: integer description: "The number of tokens assigned to each node." default: "256" + immutable: true + group: node-advanced - name: HINTED_HANDOFF_ENABLED - description: "If true, hinted handoff is enabled for the cluster." + displayName: "Hinted Handoff" + type: boolean + description: "If true, hinted handoff is enabled for the cluster. (https://cassandra.apache.org/doc/latest/operating/hints.html#hinted-handoff)" + hint: "hinted_handoff_enabled - Only change in advanced usecases." default: "true" + group: node-advanced - name: MAX_HINT_WINDOW_IN_MS + displayName: "Max Hint Window" + type: integer description: "The maximum amount of time, in ms, that hints are generated for an unresponsive node." + hint: "max_hint_window_in_ms - In milliseconds." default: "10800000" + group: node-advanced - name: HINTED_HANDOFF_THROTTLE_IN_KB + displayName: "Hinted Handoff Throttle" + type: integer description: "The maximum throttle per delivery thread in KBs per second." + hint: "hinted_handoff_throttle_in_kb - In kB." default: "1024" + group: node-advanced - name: MAX_HINTS_DELIVERY_THREADS + displayName: "Max Hints Delivery Threads" + type: integer description: "The maximum number of delivery threads for hinted handoff." + hint: "max_hints_delivery_threads - Number of threads." default: "2" + group: node-advanced - name: BATCHLOG_REPLAY_THROTTLE_IN_KB + displayName: "Batchlog Replay Throttle" + type: integer description: "The total maximum throttle for replaying failed logged batches in KBs per second." + hint: "batchlog_replay_throttle_in_kb - In kB." default: "1024" + group: node-advanced - name: AUTHENTICATOR - description: "Authentication backend, implementing IAuthenticator; used to identify users." + displayName: "Authenticator" + description: "Authentication backend, implementing IAuthenticator; used to identify users. (https://cassandra.apache.org/doc/latest/operating/security.html#authentication)" + hint: "Authentication backend." + type: string default: "AllowAllAuthenticator" + group: security + enum: + - AllowAllAuthenticator + - PasswordAuthenticator - name: AUTHENTICATION_SECRET_NAME - description: "Name of the secret containing the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry." + displayName: "NodeTool Authentication Secret" + description: "The secret must contain the credentials used by the operator when running 'nodetool' for its functionality. Only relevant if AUTHENTICATOR is set to 'PasswordAuthenticator'. The secret needs to have a 'username' and a 'password' entry." + hint: "Name of a Kubernetes Secret." default: "" + type: string + group: security - name: AUTHORIZER - description: "Authorization backend, implementing IAuthorizer; used to limit access/provide permissions." + displayName: "Authorization" + description: "Authorization backend, implementing IAuthorizer; used to limit access/provide permissions. (https://cassandra.apache.org/doc/latest/operating/security.html#authorization)" + hint: "Authorization backend." default: "AllowAllAuthorizer" + group: security + type: string + enum: + - AllowAllAuthorizer + - CassandraAuthorizer - name: ROLE_MANAGER - description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager" + displayName: "Role Manager" + description: "Part of the Authentication & Authorization backend that implements IRoleManager to maintain grants and memberships between roles, By default, the value set is Apache Cassandra's out of the box Role Manager: CassandraRoleManager. (https://cassandra.apache.org/doc/latest/operating/security.html#roles)" + hint: "Java Class of the Role Manager." + type: string default: "CassandraRoleManager" + group: security - name: ROLES_VALIDITY_IN_MS - description: "Validity period for roles cache; set to 0 to disable" + displayName: "Role Validity Period" + type: integer + description: "Validity period for roles cache; set to 0 to disable." + hint: "roles_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: ROLES_UPDATE_INTERVAL_IN_MS + displayName: "Role Update Interval" + type: integer description: "After this interval, cache entries become eligible for refresh. Upon next access, Cassandra schedules an async reload, and returns the old value until the reload completes. If roles_validity_in_ms is non-zero, then this must be also." - default: "" + hint: "roles_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - name: CREDENTIALS_VALIDITY_IN_MS + displayName: "Credentials Validity Period" + type: integer description: " This cache is tightly coupled to the provided PasswordAuthenticator implementation of IAuthenticator. If another IAuthenticator implementation is configured, Cassandra does not use this cache, and these settings have no effect. Set to 0 to disable." + hint: "credentials_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: CREDENTIALS_UPDATE_INTERVAL_IN_MS + displayName: "Credentials Update Interval" + type: integer description: "After this interval, cache entries become eligible for refresh. The next time the cache is accessed, the system schedules an asynchronous reload of the cache. Until this cache reload is complete, the cache returns the old values. If credentials_validity_in_ms is nonzero, this property must also be nonzero." - default: "" + hint: "credentials_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - name: PERMISSIONS_VALIDITY_IN_MS + displayName: "Permissions Validity Period" + type: integer description: "How many milliseconds permissions in cache remain valid. Fetching permissions can be resource intensive. To disable the cache, set this to 0." + hint: "permissions_validity_in_ms - Cache time in milliseconds." default: "2000" + group: security - name: PERMISSIONS_UPDATE_INTERVAL_IN_MS + displayName: "Permissions Update Interval" + type: integer description: "If enabled, sets refresh interval for the permissions cache. After this interval, cache entries become eligible for refresh. On next access, Cassandra schedules an async reload and returns the old value until the reload completes. If permissions_validity_in_ms is nonzero, permissions_update_interval_in_ms must also be non-zero." - default: "" + hint: "permissions_update_interval_in_ms - Update interval in milliseconds." + required: false + group: security - - name: PARTITIONER - description: "The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications." - default: "org.apache.cassandra.dht.Murmur3Partitioner" + - name: KEY_CACHE_SIZE_IN_MB + displayName: "Key Cache Size" + type: integer + description: "A global cache setting for the maximum size of the key cache in memory (for all tables). ." + hint: "key_cache_size_in_mb - In MB. Keep empty for automatic." + required: false + group: caches - name: KEY_CACHE_SAVE_PERIOD + displayName: "Key Cache Save Period" + type: integer description: "The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O." + hint: "key_cache_save_period - In seconds." default: "14400" + group: caches + + - name: KEY_CACHE_KEYS_TO_SAVE + displayName: "Key Cache Save Number" + type: integer + description: "The number of keys from the key cache to save." + hint: "key_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches + + - name: COUNTER_CACHE_SIZE_IN_MB + displayName: "Counter Cache Size" + type: integer + description: "Maximum size of the counter cache in memory. When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB." + hint: "counter_cache_size_in_mb - In MB. Keep empty for automatic." + required: false + group: caches + + - name: COUNTER_CACHE_SAVE_PERIOD + displayName: "Counter Cache Save Period" + type: integer + description: "The amount of time after which Cassandra saves the counter cache (keys only)." + hint: "counter_cache_save_period - In seconds." + default: "7200" + group: caches + + - name: COUNTER_CACHE_KEYS_TO_SAVE + displayName: "Counter Cache Save Number" + type: integer + description: "The number of keys from the counter cache to save." + hint: "counter_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches - name: ROW_CACHE_SIZE_IN_MB + displayName: "Row Cache Size" + type: integer description: "Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache." + hint: "row_cache_size_in_mb - In MB. 0 to disable row caching." default: "0" + group: caches - name: ROW_CACHE_SAVE_PERIOD - description: "Duration in seconds that rows are saved in cache. 0 disables caching." + displayName: "Row Cache Save Period" + type: integer + description: "Duration in seconds that rows are saved in cache. 0 disables saving ." + hint: "row_cache_save_period - In Seconds. 0 to disable saving." default: "0" + group: caches + + - name: ROW_CACHE_KEYS_TO_SAVE + displayName: "Row Cache Save Number" + type: integer + description: "The number of keys from the row cache to save." + hint: "row_cache_keys_to_save - Number of Keys. Defaults to 'all' if not set." + required: false + group: caches + + - name: FILE_CACHE_SIZE_IN_MB + displayName: "File Cache Size" + type: integer + description: "The total memory to use for SSTable-reading buffers. Defaults to the smaller of 1/4 of heap or 512MB." + hint: "file_cache_size_in_mb - In MB." + required: false + group: caches + + - name: ROW_CACHE_CLASS_NAME + displayName: "Row Cache ClassName" + description: "Row cache implementation class name. Can be 'org.apache.cassandra.cache.OHCProvider' (default) or 'org.apache.cassandra.cache.SerializingCacheProvider'." + hint: "Java Class name." + type: string + required: false + group: caches + + - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED + displayName: "Use On-Heap Memory for Buffer Pool" + type: boolean + description: "Allocate on-heap memory when the SSTable buffer pool is exhausted." + hint: "buffer_pool_use_heap_if_exhausted - Defaults to true if not set." + required: false + group: caches + + - name: PREPARED_STATEMENTS_CACHE_SIZE_MB + displayName: "Native Prepared Statements Cache Size" + type: integer + description: "Maximum size of the native protocol prepared statement cache." + hint: "prepared_statements_cache_size_mb - In MB. Auto if unset." + required: false + group: caches + + - name: THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB + displayName: "Thrift Prepared Statements Cache Size" + type: integer + description: "Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift/RPC." + hint: "thrift_prepared_statements_cache_size_mb - In MB. Auto if unset." + required: false + group: caches + + - name: COLUMN_INDEX_CACHE_SIZE_IN_KB + displayName: "Column Index Cache Size" + type: integer + description: "A threshold for the total size of all index entries for a partition that the database stores in the partition key cache." + hint: "column_index_cache_size_in_kb - In KB. Defaults to 2." + default: "2" + group: caches + + - name: COMMITLOG_SYNC + displayName: "Commitlog Sync" + type: string + description: "The method that Cassandra uses to acknowledge writes in milliseconds." + hint: "commitlog_sync - Type of sync." + default: "periodic" + enum: + - "periodic" + - "batch" + group: optimization - name: COMMITLOG_SYNC_PERIOD_IN_MS + displayName: "Commitlog Sync Period" + type: integer description: "The number of milliseconds between disk fsync calls." - default: "10000" + hint: "commitlog_sync_period_in_ms - In milliseconds." + default: "5000" + group: optimization - name: COMMITLOG_SYNC_BATCH_WINDOW_IN_MS - description: "Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2" - default: "" + displayName: "Commitlog Sync Batch Window" + type: integer + description: "Time to wait between batch fsyncs, if commitlog_sync is in batch mode then default value should be: 2." + hint: "commitlog_sync_batch_window_in_ms - In milliseconds." + required: false + group: optimization - name: COMMITLOG_SEGMENT_SIZE_IN_MB + displayName: "Commitlog Segment Size" + type: integer description: "The size of each commit log segment in Mb." + hint: "commitlog_segment_size_in_mb - In MB. Defaults to 32." default: "32" + group: optimization - name: CONCURRENT_READS + displayName: "Concurrent Reads" + type: integer description: "For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them." + hint: "concurrent_reads - Number of reads." default: "16" + group: optimization - name: CONCURRENT_WRITES + displayName: "Concurrent Writes" + type: integer description: "Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores." + hint: "concurrent_writes - Number of writes." default: "32" + group: optimization - name: CONCURRENT_COUNTER_WRITES + displayName: "Concurrent Counter Writes" + type: integer description: "Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) ." + hint: "concurrent_counter_writes - Number of writes." default: "16" + group: optimization + + - name: CONCURRENT_MATERIALIZED_VIEW_WRITES + displayName: "Concurrent Materialized View Writes" + type: integer + description: "The maximum number of concurrent writes to materialized views." + hint: "concurrent_materialized_view_writes - Number of writes." + default: "32" + group: optimization - name: MEMTABLE_ALLOCATION_TYPE - description: "The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency." + displayName: "MemTable Allocation Type" + type: string + description: "The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#memtable-allocation-type )." + hint: "memtable_allocation_type - Type of Allocation." default: "heap_buffers" + enum: + - "heap_buffers" + - "offheap_buffers" + - "offheap_objects" + group: optimization - name: INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTES + displayName: "Index Summary Resize Interval" + type: integer description: "How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates." + hint: "index_summary_resize_interval_in_minutes - In Minutes. -1 to disable." default: "60" + group: optimization - - name: START_NATIVE_TRANSPORT - description: "If true, CQL is enabled." - default: "true" - - - name: START_RPC - description: "If true, Thrift RPC is enabled. This is deprecated but may be necessary for legacy applications." + - name: TRICKLE_FSYNC + displayName: "Trickle FSync" + type: boolean + description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval." + hint: "trickle_fsync - Defaults to false." default: "false" + group: optimization - - name: RPC_KEEPALIVE - description: "Enables or disables keepalive on client connections (RPC or native)." - default: "true" + - name: TRICKLE_FSYNC_INTERVAL_IN_KB + displayName: "Trickle FSync Interval" + type: integer + description: "The size of the fsync in kilobytes." + hint: "trickle_fsync_interval_in_kb - In KB. Defaults to 10240." + default: "10240" + group: optimization - name: THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB + displayName: "Thrift Frame Size" + type: integer description: "Frame size (maximum field length) for Thrift." + hint: "thrift_framed_transport_size_in_mb - In MB. Defaults to 15." default: "15" + group: "network" + + - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES + displayName: "Internode Send Buffer Size" + type: integer + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm." + hint: "internode_send_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: network + + - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES + displayName: "Internode Receive Buffer Size" + type: integer + description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem." + hint: "internode_recv_buff_size_in_bytes - In Bytes. System dependent if not set." + required: false + group: network + + - name: INTERNODE_COMPRESSION + displayName: "Internode Compression" + type: string + description: "Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters." + hint: "internode_compression - Defaults to dc." + default: "dc" + enum: + - "none" + - "dc" + - "all" + group: network + + - name: OTC_COALESCING_STRATEGY + displayName: "Coalescing Strategy" + type: string + description: "The strategy to use for coalescing network messages. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#otc-coalescing-strategy)." + hint: "otc_coalescing_strategy - Defaults to disabled if not set." + required: false + enum: + - "disabled" + - "fixed" + - "movingaverage" + - "timehorizon" + group: network + + - name: OTC_COALESCING_WINDOW_US + displayName: "Coalescing Window" + type: integer + description: "How many microseconds to wait for coalescing." + hint: "otc_coalescing_window_us - In microseconds. 200 if not set." + required: false + group: network + + - name: OTC_COALESCING_ENOUGH_COALESCED_MESSAGES + displayName: "Coalescing Message Limit" + type: integer + description: "Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128." + hint: "otc_coalescing_enough_coalesced_messages - Number of messages. 8 if not set." + required: false + group: network + + - name: OTC_BACKLOG_EXPIRATION_INTERVAL_MS + displayName: "Coalescing Backlog Expiration Interval" + type: integer + description: "How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection." + hint: "otc_backlog_expiration_interval_ms - In milliseconds. 200 if not set." + required: false + group: network - name: TOMBSTONE_WARN_THRESHOLD + displayName: "Tombstone Warning Threshold" + type: integer description: "The maximum number of tombstones a query can scan before warning." + hint: "tombstone_warn_threshold - Defaults to 1000." default: "1000" + group: safety_thresholds - name: TOMBSTONE_FAILURE_THRESHOLD + displayName: "Tombstone Failure Threshold" + type: integer description: "The maximum number of tombstones a query can scan before aborting." + hint: "tombstone_failure_threshold - Defaults to 100000." default: "100000" - - - name: COLUMN_INDEX_SIZE_IN_KB - description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." - default: "64" + group: safety_thresholds - name: BATCH_SIZE_WARN_THRESHOLD_IN_KB + displayName: "Batch Size Warning Threshold" + type: integer description: "Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." + hint: "batch_size_warn_threshold_in_kb - In KB. Defaults to 5." default: "5" + group: safety_thresholds - name: BATCH_SIZE_FAIL_THRESHOLD_IN_KB + displayName: "Batch Size Failure Threshold" + type: integer description: "Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability." + hint: "batch_size_fail_threshold_in_kb - In KB. Defaults to 50." default: "50" + group: safety_thresholds + + - name: UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD + displayName: "Unlogged Batch Across Partitions Warning Threshold" + type: integer + description: "Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit." + hint: "compaction_large_partition_warning_threshold_mb - In MB. Defaults to 10." + default: "10" + group: safety_thresholds + + - name: COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB + displayName: "Large Partition Compaction Warning Threshold" + type: integer + description: "Cassandra logs a warning when compacting partitions larger than the set value." + hint: "compaction_large_partition_warning_threshold_mb - In MB. Defaults to 100." + default: "100" + group: safety_thresholds + + - name: GC_WARN_THRESHOLD_IN_MS + displayName: "GC Warning Threshold" + type: integer + description: "Any GC pause longer than this interval is logged at the WARN level." + hint: "gc_warn_threshold_in_ms - In Milliseconds. 1000 if not set." + default: "1000" + required: false + group: safety_thresholds + + - name: GC_LOG_THRESHOLD_IN_MS + displayName: "GC Logging Threshold" + type: integer + description: "GC Pauses greater than this interval will be logged at INFO level. This threshold can be adjusted to minimize logging if necessary." + hint: "gc_log_threshold_in_ms - In Milliseconds. 200 if not set." + default: "200" + required: false + group: safety_thresholds + + - name: MAX_VALUE_SIZE_IN_MB + displayName: "Max Value Size" + type: integer + description: "The maximum size of any value in SSTables." + hint: "max_value_size_in_mb - In MB. 256 if not set." + required: false + group: safety_thresholds + + - name: SLOW_QUERY_LOG_TIMEOUT_IN_MS + displayName: "Slow Query Logging Threshold" + type: integer + description: "How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0." + hint: "slow_query_log_timeout_in_ms - In milliseconds. 0 to disable." + default: "500" + group: safety_thresholds - name: COMPACTION_THROUGHPUT_MB_PER_SEC + displayName: "Compaction Throughput Throttle" + type: integer description: "Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second)." - default: "16" + hint: "compaction_throughput_mb_per_sec - In MB/sec. 0 to disable throttling." + default: "64" + group: optimization - name: SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB + displayName: "SSTable Preemptive Open Interval" + type: integer description: "When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot." + hint: "sstable_preemptive_open_interval_in_mb - In MB." default: "50" + group: optimization - name: READ_REQUEST_TIMEOUT_IN_MS + displayName: "Read Request Timeout" + type: integer description: "The time that the coordinator waits for read operations to complete in ms." + hint: "read_request_timeout_in_ms - In milliseconds. Defaults to 5000." default: "5000" + group: timeouts - name: RANGE_REQUEST_TIMEOUT_IN_MS + displayName: "Range Request Timeout" + type: integer description: "The time that the coordinator waits for range scans complete in ms." + hint: "range_request_timeout_in_ms - In milliseconds. Defaults to 10000." default: "10000" + group: timeouts - name: WRITE_REQUEST_TIMEOUT_IN_MS + displayName: "Write Request Timeout" + type: integer description: "The time that the coordinator waits for write operations to complete in ms." + hint: "write_request_timeout_in_ms - In milliseconds. Defaults to 2000." default: "2000" + group: timeouts - name: COUNTER_WRITE_REQUEST_TIMEOUT_IN_MS + displayName: "Counter Write Request Timeout" + type: integer description: "The time that the coordinator waits for counter write operations to complete in ms." + hint: "counter_write_request_timeout_in_ms - In milliseconds. Defaults to 5000." default: "5000" + group: timeouts - name: CAS_CONTENTION_TIMEOUT_IN_MS + displayName: "CAS Contention Timeout" + type: integer description: "The time for which the coordinator will retry CAS operations on the same row in ms." + hint: "cas_contention_timeout_in_ms - In milliseconds. Defaults to 1000." default: "1000" + group: timeouts - name: TRUNCATE_REQUEST_TIMEOUT_IN_MS + displayName: "Truncate Request Timeout" + type: integer description: "The time that the coordinator waits for truncate operations to complete in ms." + hint: "truncate_request_timeout_in_ms - In milliseconds. Defaults to 60000." default: "60000" + group: timeouts - name: REQUEST_TIMEOUT_IN_MS + displayName: "Default Request Timeout" + type: integer description: "The default timeout for all other requests in ms." + hint: "request_timeout_in_ms - In milliseconds. Defaults to 10000." default: "10000" + group: timeouts + + - name: CROSS_NODE_TIMEOUT + displayName: "Cross Node Timeout" + type: boolean + description: "Operation timeout information exchange between nodes (to accurately measure request timeouts)." + hint: "cross_node_timeout - Defaults to false." + default: "false" + group: timeouts - name: DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS + displayName: "Dynamic Snitch Update Interval" + type: integer description: "The time, in ms, the snitch will wait before updating node scores." + hint: "dynamic_snitch_update_interval_in_ms - In milliseconds. Defaults to 100." default: "100" + group: optimization - name: DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS + displayName: "Dynamic Snitch Reset Interval" + type: integer description: "The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover." + hint: "dynamic_snitch_reset_interval_in_ms - In milliseconds. Defaults to 600000." default: "600000" + group: optimization - name: DYNAMIC_SNITCH_BADNESS_THRESHOLD + displayName: "Dynamic Snitch Badness Threshold" + type: number description: "Sets the performance threshold for dynamically routing client requests away from a poorly performing node." + hint: "dynamic_snitch_badness_threshold - A percentage from 0 to 1." default: "0.1" - - - name: INTERNODE_COMPRESSION - description: "Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters." - default: "dc" + group: optimization - name: MAX_HINTS_FILE_SIZE_IN_MB - description: "The maximum size of the hints file in Mb." + displayName: "Hints Max File Size" + type: integer + description: "The maximum size of a single hints file in Mb." + hint: "max_hints_file_size_in_mb - In MB. Defaults to 128." default: "128" + group: node-advanced - name: HINTS_FLUSH_PERIOD_IN_MS + displayName: "Hints Flush Period" + type: integer description: "The time, in ms, for the period in which hints are flushed to disk." + hint: "hints_flush_period_in_ms - In milliseconds. Defaults to 10000." default: "10000" - - - name: CONCURRENT_MATERIALIZED_VIEW_WRITES - description: "The maximum number of concurrent writes to materialized views." - default: "32" + group: optimization - name: COMMITLOG_TOTAL_SPACE_IN_MB + displayName: "Commitlog Total Size" + type: integer description: "The total size of the commit log in Mb." - default: "" + hint: "commitlog_total_space_in_mb - In Mb. Auto if not set." + required: false + group: node-advanced - name: AUTO_SNAPSHOT - description: "Take a snapshot of the data before truncating a keyspace or dropping a table" + displayName: "Auto Snapshot" + type: boolean + description: "Take a snapshot of the data before truncating a keyspace or dropping a table." + hint: "auto_snapshot - Defaults to true." default: "true" - - - name: KEY_CACHE_KEYS_TO_SAVE - description: "The number of keys from the key cache to save" - default: "" - - - name: ROW_CACHE_KEYS_TO_SAVE - description: "The number of keys from the row cache to save" - default: "" - - - name: COUNTER_CACHE_KEYS_TO_SAVE - description: "The number of keys from the counter cache to save" - default: "" - - - name: FILE_CACHE_SIZE_IN_MB - description: "The total memory to use for SSTable-reading buffers" - default: "" + group: node-advanced - name: MEMTABLE_HEAP_SPACE_IN_MB - description: "The amount of on-heap memory allocated for memtables" - default: "" + displayName: "Memtable Onheap Space" + type: integer + description: "The amount of on-heap memory allocated for memtables." + hint: "memtable_heap_space_in_mb - In MB - System dependent if not set." + required: false + group: node-advanced - name: MEMTABLE_OFFHEAP_SPACE_IN_MB - description: "The total amount of off-heap memory allocated for memtables" - default: "" + displayName: "Memtable Offheap Space" + type: integer + description: "The total amount of off-heap memory allocated for memtables." + hint: "memtable_offheap_space_in_mb - In MB - System dependent if not set." + required: false + group: node-advanced - name: MEMTABLE_CLEANUP_THRESHOLD - description: "The ratio used for automatic memtable flush" - default: "" + displayName: "Memtable Cleanup Threshold" + type: number + description: "The ratio used for automatic memtable flush." + hint: "memtable_cleanup_threshold - DEPRECATED - System dependent if not set." + required: false + group: optimization - name: MEMTABLE_FLUSH_WRITERS - description: "The number of memtable flush writer threads" - default: "" + displayName: "Memtable Flush Writers" + type: integer + description: "The number of memtable flush writer threads." + hint: "memtable_flush_writers - System dependent if not set." + required: false + group: optimization - name: LISTEN_ON_BROADCAST_ADDRESS - description: "Listen on the address set in broadcast_address property" - default: "" + displayName: "Listen on Broadcast Adress" + type: boolean + description: "Listen on the address set in broadcast_address property." + hint: "listen_on_broadcast_address - false if not set." + required: false + group: network - name: INTERNODE_AUTHENTICATOR - description: "The internode authentication backend" - default: "" - - - name: NATIVE_TRANSPORT_MAX_THREADS - description: "The maximum number of thread handling requests" - default: "" - - - name: NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB - description: "The maximum allowed size of a frame" - default: "" - - - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS - description: "The maximum number of concurrent client connections" - default: "" - - - name: NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP - description: "The maximum number of concurrent client connections per source IP address" - default: "" - - - name: RPC_MIN_THREADS - description: "The minimum thread pool size for remote procedure calls" - default: "" - - - name: RPC_MAX_THREADS - description: "The maximum thread pool size for remote procedure calls" - default: "" - - - name: RPC_SEND_BUFF_SIZE_IN_BYTES - description: "The sending socket buffer size in bytes for remote procedure calls" - default: "" - - - name: RPC_RECV_BUFF_SIZE_IN_BYTES - description: "The receiving socket buffer size for remote procedure calls" - default: "" + displayName: "Internode Authenticator" + type: string + description: "The internode authentication backend." + hint: "internode_authenticator - Java ClassName - AllowAllInternodeAuthenticator if not set." + required: false + group: security - name: CONCURRENT_COMPACTORS - description: "The number of concurrent compaction processes allowed to run simultaneously on a node" - default: "" + displayName: "Concurrent Compactors" + type: integer + description: "The number of concurrent compaction processes allowed to run simultaneously on a node." + hint: "concurrent_compactors - System dependent if not set." + required: false + group: optimization - name: STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC - description: "The maximum throughput of all outbound streaming file transfers on a node" - default: "" + displayName: "Stream Outbound Throughput Limit" + type: integer + description: "The maximum throughput of all outbound streaming file transfers on a node." + hint: "stream_throughput_outbound_megabits_per_sec - In Mbps - Defaults to 200 if unset." + required: false + group: network - name: INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC - description: "The maximum throughput of all streaming file transfers between datacenters" - default: "" + displayName: "Inter-DC Stream Outbound Throughput Limit" + type: integer + description: "The maximum throughput of all streaming file transfers between datacenters." + hint: "inter_dc_stream_throughput_outbound_megabits_per_sec - In Mbps - Defaults to 200 if unset." + required: false + group: network - name: STREAMING_KEEP_ALIVE_PERIOD_IN_SECS + displayName: "Streaming Keep-Alive Period" + type: integer description: "Interval to send keep-alive messages. The stream session fails when a keep-alive message is not received for 2 keep-alive cycles." - default: "" + hint: "streaming_keep_alive_period_in_secs - Defaults to 300 if not set." + required: false + group: node-advanced - name: PHI_CONVICT_THRESHOLD - description: "The sensitivity of the failure detector on an exponential scale" - default: "" - - - name: BUFFER_POOL_USE_HEAP_IF_EXHAUSTED - description: "Allocate on-heap memory when the SSTable buffer pool is exhausted" - default: "" + displayName: "Phi Convict Threshold" + type: integer + description: "The sensitivity of the failure detector on an exponential scale." + hint: "phi_convict_threshold - Automatic if not set." + required: false + advanced: true + group: node-advanced - name: DISK_OPTIMIZATION_STRATEGY - description: "The strategy for optimizing disk reads" - default: "" - - - name: MAX_VALUE_SIZE_IN_MB - description: "The maximum size of any value in SSTables" - default: "" - - - name: OTC_COALESCING_STRATEGY - description: "The strategy to use for coalescing network messages. Values can be: fixed, movingaverage, timehorizon, disabled (default)" - default: "" - - - name: UNLOGGED_BATCH_ACROSS_PARTITIONS_WARN_THRESHOLD - description: "Causes Cassandra to log a WARN message on any batches not of type LOGGED that span across more partitions than this limit." - default: "10" - - - name: COMPACTION_LARGE_PARTITION_WARNING_THRESHOLD_MB - description: "Cassandra logs a warning when compacting partitions larger than the set value." - default: "100" + displayName: "Disk optimization strategy" + type: string + description: "The strategy for optimizing disk reads. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-optimization-strategy)." + hint: "disk_optimization_strategy - Defaults to ssd if not set." + required: false + enum: + - "ssd" + - "spinning" + group: optimization - name: REQUEST_SCHEDULER + displayName: "Request Scheduler" + type: string description: "The scheduler to handle incoming client requests according to a defined policy. This scheduler is useful for throttling client requests in single clusters containing multiple keyspaces." + hint: "request_scheduler - Java ClassName." default: "org.apache.cassandra.scheduler.NoScheduler" + group: node-advanced - name: INTER_DC_TCP_NODELAY - description: "Enable this property for inter-datacenter communication." - default: "false" + displayName: "Inter-DC TCP NoDelay" + type: boolean + description: "Enable or disable tcp_nodelay for inter-dc communication. Disabling it will result in larger (but fewer) network packets being sent, reducing overhead from the TCP protocol itself, at the cost of increasing latency if you block for cross-datacenter responses." + hint: "inter_dc_tcp_nodelay - Defaults to false if not set." + required: false + group: racks_and_dc - name: TRACETYPE_QUERY_TTL + displayName: "Tracetype Query TTL" + type: integer description: "TTL for different trace types used during logging of the query process." - default: "86400" + hint: "tracetype_query_ttl - Defaults to 86400 if not set." + required: false + group: optimization - name: TRACETYPE_REPAIR_TTL + displayName: "Tracetype Repair TTL" + type: integer description: "TTL for different trace types used during logging of the repair process." - default: "604800" - - - name: GC_WARN_THRESHOLD_IN_MS - description: "Any GC pause longer than this interval is logged at the WARN level." - default: "1000" - - - name: WINDOWS_TIMER_INTERVAL - description: "The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. Lowering this value on Windows can provide much tighter latency and better throughput, however some virtualized environments may see a negative performance impact from changing this setting below their system default." - default: "1" - - - name: COUNTER_CACHE_SAVE_PERIOD - description: "the amount of time after which Cassandra saves the counter cache (keys only)." - default: "7200" - - - name: TRICKLE_FSYNC_INTERVAL_IN_KB - description: "The size of the fsync in kilobytes." - default: "10240" - - - name: TRICKLE_FSYNC - description: "When set to true, causes fsync to force the operating system to flush the dirty buffers at the set interval " - default: "false" + hint: "tracetype_repair_ttl - Defaults to 604800 if not set." + required: false + group: optimization - name: INCREMENTAL_BACKUPS + displayName: "Incremental Backups" + type: boolean description: "Backs up data updated since the last snapshot was taken. When enabled, Cassandra creates a hard link to each SSTable flushed or streamed locally in a backups subdirectory of the keyspace data." + hint: "incremental_backups - Defaults to false." default: "false" + group: node-advanced - name: SNAPSHOT_BEFORE_COMPACTION + displayName: "Snapshot before compaction" + type: boolean description: "Enables or disables taking a snapshot before each compaction. A snapshot is useful to back up data when there is a data format change." + hint: "snapshot_before_compaction - Defaults to false." default: "false" - - - name: CROSS_NODE_TIMEOUT - description: "operation timeout information exchange between nodes (to accurately measure request timeouts)." - default: "false" + group: node-advanced - name: COMMIT_FAILURE_POLICY - description: "Policy for commit disk failures." + displayName: "Commit Failure Policy" + type: string + description: "Policy for commit disk failures. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#commit-failure-policy)." + hint: "commit_failure_policy - Defaults to stop." default: "stop" - - - name: KEY_CACHE_SIZE_IN_MB - description: "A global cache setting for the maximum size of the key cache in memory (for all tables). " - default: "" - - - name: COUNTER_CACHE_SIZE_IN_MB - description: "When no value is set, Cassandra uses the smaller of minimum of 2.5% of Heap or 50MB." - default: "" - - - name: COMMITLOG_SYNC - description: "The method that Cassandra uses to acknowledge writes in milliseconds" - default: "periodic" + enum: + - "die" + - "stop" + - "stop_commit" + - "ignore" + group: node-advanced - name: INDEX_SUMMARY_CAPACITY_IN_MB + displayName: "Index Summary Capacity" + type: integer description: "Fixed memory pool size in MB for SSTable index summaries." - default: "" - - - name: RPC_SERVER_TYPE - description: "Cassandra provides three options for the RPC server. sync and hsha performance is about the same, but hsha uses less memory." - default: "sync" + hint: "index_summary_capacity_in_mb - Defaults to 5% of heap if not set." + required: false + group: node-advanced - name: ENDPOINT_SNITCH + displayName: "Snitch Type" + type: string description: "Set to a class that implements the IEndpointSnitch interface. Cassandra uses the snitch to locate nodes and route requests." + hint: "endpoint_snitch - Java Class Name." default: "SimpleSnitch" + enum: + - "SimpleSnitch" + - "GossipingPropertyFileSnitch" + - "PropertyFileSnitch" + - "Ec2Snitch" + - "Ec2MultiRegionSnitch" + - "RackInferringSnitch" + group: node-advanced - name: DISK_FAILURE_POLICY - description: "The policy for how Cassandra responds to disk failure" + displayName: "Disk Failure Policy" + hint: "How Cassanda Responds to disk failure." + type: string + description: "The policy for how Cassandra responds to disk failure. (https://cassandra.apache.org/doc/latest/configuration/cassandra_config_file.html#disk-failure-policy)." default: "stop" + enum: + - "die" + - "stop_paranoid" + - "stop" + - "best_effort" + - "ignore" + group: node-advanced - name: ENABLE_USER_DEFINED_FUNCTIONS + displayName: "User Defined Functions" + type: boolean description: " User defined functions (UDFs) present a security risk, since they are executed on the server side. UDFs are executed in a sandbox to contain the execution of malicious code." + hint: "enable_user_defined_functions - May be a security risk." default: "false" + group: node-advanced - name: ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS - description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false" + displayName: "Scripted User Defined Functions" + type: boolean + description: "Java UDFs are always enabled, if enable_user_defined_functions is true. Enable this option to use UDFs with language javascript or any custom JSR-223 provider. This option has no effect if enable_user_defined_functions is false." + hint: "enable_scripted_user_defined_functions - May be a security risk." default: "false" + group: node-advanced - name: ENABLE_MATERIALIZED_VIEWS + displayName: "Materialized Views" + type: boolean description: "Enables materialized view creation on this node. Materialized views are considered experimental and are not recommended for production use." + hint: "enable_materialized_views - EXPERIMENTAL." default: "false" + group: node-advanced - name: CDC_ENABLED - description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection" + displayName: "CDC - Changed Data Capture" + type: boolean + description: "Enable / disable CDC functionality on a per-node basis. This modifies the logic used for write path allocation rejection." + hint: "cdc_enabled - Defaults to false." default: "false" + group: node-advanced - name: CDC_TOTAL_SPACE_IN_MB - description: "Total space to use for change-data-capture (CDC) logs on disk. " - default: "" + displayName: "CDC Total Space" + type: integer + description: "Total space to use for change-data-capture (CDC) logs on disk. ." + hint: "cdc_total_space_in_mb - In MB. Auto if not set." + required: false + group: node-advanced - name: CDC_FREE_SPACE_CHECK_INTERVAL_MS + displayName: "CDC Free Space Check Interval" + type: integer description: "Interval between checks for new available space for CDC-tracked tables when the cdc_total_space_in_mb threshold is reached and the CDCCompactor is running behind or experiencing back pressure." - default: "" - - - name: PREPARED_STATEMENTS_CACHE_SIZE_MB - description: "Maximum size of the native protocol prepared statement cache" - default: "" - - - name: THRIFT_PREPARED_STATEMENTS_CACHE_SIZE_MB - description: "Maximum size of the Thrift prepared statement cache. Leave empty if you do not use Thrift." - default: "" - - - name: COLUMN_INDEX_CACHE_SIZE_IN_KB - description: "A threshold for the total size of all index entries for a partition that the database stores in the partition key cache." - default: "2" - - - name: SLOW_QUERY_LOG_TIMEOUT_IN_MS - description: "How long before a node logs slow queries. Select queries that exceed this value generate an aggregated log message to identify slow queries. To disable, set to 0." - default: "500" - - - name: BACK_PRESSURE_ENABLED - description: "Enable for the coordinator to apply the specified back pressure strategy to each mutation that is sent to replicas." - default: "false" - - - name: BACK_PRESSURE_STRATEGY_CLASS_NAME - description: "The back-pressure strategy applied. The default implementation, RateBasedBackPressure, takes three arguments: high ratio, factor, and flow type, and uses the ratio between incoming mutation responses and outgoing mutation requests." - default: "org.apache.cassandra.net.RateBasedBackPressure" - - - name: BACK_PRESSURE_STRATEGY_HIGH_RATIO - description: "When outgoing mutations are below this value, they are rate limited according to the incoming rate decreased by the factor. When above this value, the rate limiting is increased by the factor." - default: "0.9" - - - name: BACK_PRESSURE_STRATEGY_FACTOR - description: "A number between 1 and 10. Increases or decreases rate limiting." - default: "5" + hint: "cdc_free_space_check_interval_ms - In milliseconds. Auto if not set." + required: false + group: node-advanced - - name: BACK_PRESSURE_STRATEGY_FLOW - description: "The flow speed to apply rate limiting: FAST - rate limited to the speed of the fastest replica. SLOW - rate limit to the speed of the slowest replica." - default: "FAST" + - name: COLUMN_INDEX_SIZE_IN_KB + displayName: "Column Index Size" + type: integer + description: "The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed." + hint: "column_index_size_in_kb - In KB. Defaults to 64." + default: "64" + group: node-advanced - name: ALLOCATE_TOKENS_FOR_KEYSPACE + displayName: "Allocate Tokens for Keyspace" + type: string description: "Triggers automatic allocation of num_tokens tokens for this node. The allocation algorithm attempts to choose tokens in a way that optimizes replicated load over the nodes in the datacenter for the replication strategy used by the specified keyspace." - default: "" + hint: "allocate_tokens_for_keyspace - The name of a keyspace." + required: false + group: node-advanced - name: HINTS_DIRECTORY + displayName: "Hints Directory" + type: string description: "Directory where Cassandra should store hints." - default: "" + hint: "hints_directory - A directory." + required: false + advanced: true + group: directories - name: COMMITLOG_DIRECTORY + displayName: "Commitlog Directory" + type: string description: "When running on magnetic HDD, this should be a separate spindle than the data directories. If not set, the default directory is $CASSANDRA_HOME/data/commitlog." - default: "" + hint: "commitlog_directory - A directory." + required: false + advanced: true + group: directories - name: CDC_RAW_DIRECTORY - description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table" - default: "" - - - name: ROW_CACHE_CLASS_NAME - description: "Row cache implementation class name." - default: "" + displayName: "CDC Raw Directory" + type: string + description: "CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the segment contains mutations for a CDC-enabled table." + hint: "cdc_raw_directory - A directory." + required: false + advanced: true + group: directories - name: SAVED_CACHES_DIRECTORY - description: "saved caches If not set, the default directory is $CASSANDRA_HOME/data/saved_caches." - default: "" - - - name: INTERNODE_SEND_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wm" - default: "" - - - name: INTERNODE_RECV_BUFF_SIZE_IN_BYTES - description: "Set socket buffer size for internode communication Note that when setting this, the buffer size is limited by net.core.wmem_max and when not setting it it is defined by net.ipv4.tcp_wmem" - default: "" - - - name: GC_LOG_THRESHOLD_IN_MS - description: "GC Pauses greater than 200 ms will be logged at INFO level This threshold can be adjusted to minimize logging if necessary" - default: "" - - - name: OTC_COALESCING_WINDOW_US - description: "How many microseconds to wait for coalescing." - default: "" - - - name: OTC_COALESCING_ENOUGH_COALESCED_MESSAGES - description: "Do not try to coalesce messages if we already got that many messages. This should be more than 2 and less than 128." - default: "" - - - name: OTC_BACKLOG_EXPIRATION_INTERVAL_MS - description: "How many milliseconds to wait between two expiration runs on the backlog (queue) of the OutboundTcpConnection." - default: "" + displayName: "Saved Caches Directory" + type: string + description: "Saved caches. If not set, the default directory is $CASSANDRA_HOME/data/saved_caches." + hint: "saved_caches_directory - A directory." + required: false + advanced: true + group: directories - name: REPAIR_SESSION_MAX_TREE_DEPTH + displayName: "Repair Session Max Tree Depth" + type: integer description: "Limits the maximum Merkle tree depth to avoid consuming too much memory during repairs." - default: "" + hint: "repair_session_max_tree_depth - Defaults to 18 if not set." + required: false + group: node-advanced - name: ENABLE_SASI_INDEXES + displayName: "Enable SASI indexes" + type: string description: "Enables SASI index creation on this node. SASI indexes are considered experimental and are not recommended for production use." - default: "" + hint: "enable_sasi_indexes - EXPERIMENTAL." + required: false + group: node-advanced - name: CUSTOM_CASSANDRA_YAML_BASE64 - description: "Base64-encoded Cassandra properties appended to cassandra.yaml." - default: "" + displayName: "Custom cassandra.yaml properties" + hint: "Base64 encoded properties." + type: string + description: "Base64-encoded Cassandra properties are appended to cassandra.yaml and overwrite the default values." + group: "advanced" + required: false - name: KUBECTL_VERSION + displayName: "KubeCtl Version" + hint: "Version of the 'bitnami/kubectl' image." + type: string description: "Version of 'bitnami/kubectl' image. This image is used for some functionality of the operator." default: "1.18.4" + group: "advanced" ################################################################################ ################################ JVM Options ################################### ################################################################################ - name: JVM_OPT_AVAILABLE_PROCESSORS + displayName: "Available Processors" + type: integer description: "In a multi-instance deployment, multiple Cassandra instances will independently assume that all CPU processors are available to it. This setting allows you to specify a smaller set of processors and perhaps have affinity." - default: "" + hint: "-Dcassandra.available_processors - Auto detect if not set." + required: false + group: optimization - name: JVM_OPT_JOIN_RING + displayName: "Join Ring" + type: boolean description: "Set to false to start Cassandra on a node but not have the node join the cluster." - default: "" + hint: "-Dcassandra.join_ring - True if not set." + required: false + group: node-advanced - name: JVM_OPT_LOAD_RING_STATE + displayName: "Load Ring State" + type: boolean description: "Set to false to clear all gossip state for the node on restart. Use when you have changed node information in cassandra.yaml (such as listen_address)." - default: "" + hint: "-Dcassandra.load_ring_state - True if not set." + required: false + group: node-advanced - name: JVM_OPT_REPLAYLIST + displayName: "Replay List" + type: string description: "Allow restoring specific tables from an archived commit log." - default: "" + hint: "-Dcassandra.replayList - Name of a table." + required: false + advanced: true + group: node-advanced - name: JVM_OPT_RING_DELAY_MS + displayName: "Join Ring Delay" + type: integer description: "Allows overriding of the default RING_DELAY (30000ms), which is the amount of time a node waits before joining the ring." - default: "" + hint: "-Dcassandra.ring_delay_ms - In milliseconds - 30000 if not set." + required: false + group: node-advanced - name: JVM_OPT_TRIGGERS_DIR - description: "Set the default location for the trigger JARs. (Default: conf/triggers)" - default: "" + displayName: "Trigger JAR directory" + type: string + description: "Set the default location for the trigger JARs. (Default: conf/triggers)." + hint: "-Dcassandra.triggers_dir - 'conf/triggers' if not set." + required: false + advanced: true + group: directories - name: JVM_OPT_WRITE_SURVEY + displayName: "Enable Write Survey" + type: boolean description: "For testing new compaction and compression strategies. It allows you to experiment with different strategies and benchmark write performance differences without affecting the production workload." - default: "" + hint: "-Dcassandra.write_survey - false if not set." + required: false + group: node-advanced - name: JVM_OPT_DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION + displayName: "Disable Auth Cache Remote Configuration" + type: boolean description: "To disable configuration via JMX of auth caches (such as those for credentials, permissions and roles). This will mean those config options can only be set (persistently) in cassandra.yaml and will require a restart for new values to take effect." - default: "" + hint: "-Dcassandra.disable_auth_caches_remote_configuration - false if not set." + required: false + group: security - name: JVM_OPT_FORCE_DEFAULT_INDEXING_PAGE_SIZE + displayName: "Force Indexing Page Size" + type: boolean description: "To disable dynamic calculation of the page size used when indexing an entire partition (during initial index build/rebuild). If set to true, the page size will be fixed to the default of 10000 rows per page." - default: "" + hint: "-Dcassandra.force_default_indexing_page_size - false if not set." + required: false + group: node-advanced + advanced: true - name: JVM_OPT_PREFER_IPV4_STACK + displayName: "Prefer IPv4 Stack" + type: boolean description: "Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: comment out this entry to enable IPv6 support)." + hint: "-Djava.net.preferIPv4Stack - Defaults to true." default: "true" + group: "network" - name: JVM_OPT_EXPIRATION_DATE_OVERFLOW_POLICY - description: "Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date." - default: "" + displayName: "Expiration Date Overflow Policy" + type: string + description: "Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date. (https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/config/cassandraSystemProperties.html)" + hint: "-Dcassandra.expiration_date_overflow_policy - REJECT if not set." + required: false + group: node-advanced + enum: + - REJECT + - CAP + - CAP-NOWARN - name: JVM_OPT_THREAD_PRIORITY_POLICY - description: "allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything." - default: "42" + displayName: "Thread Priority Policy" + type: integer + description: "Allows lowering thread priority without being root on linux - probably not necessary on Windows but doesn't harm anything." + hint: "-XX:ThreadPriorityPolicy - Can be 0 or 1." + default: "0" + group: jvm - name: JVM_OPT_THREAD_STACK_SIZE + displayName: "Thread Stack Size" + type: string description: "Per-thread stack size." + hint: "-Xss - Can have k, m, g postfix. Defaults to 256k." default: "256k" + group: jvm - name: JVM_OPT_STRING_TABLE_SIZE - description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)" + displayName: "String Table Size" + type: integer + description: "Larger interned string table, for gossip's benefit (CASSANDRA-6410)." + hint: "-XX:StringTableSize - Number of Strings." default: "1000003" + group: jvm - name: JVM_OPT_SURVIVOR_RATIO - description: "CMS Settings: SurvivorRatio" - default: "8" + displayName: "CMS: Survivor Ratio" + type: integer + description: "The Ratio between eden and survivor space parts of the heap. A value of 6 sets the ratio between eden and a survivor space to 1:6. In other words, each survivor space will be one-sixth the size of eden, and thus one-eighth the size of the young generation (not one-seventh, because there are two survivor spaces)." + hint: "-XX:SurvivorRatio - JVM dependent if not set." + required: false + group: jvm - name: JVM_OPT_MAX_TENURING_THRESHOLD - description: "CMS Settings: MaxTenuringThreshold" - default: "1" + displayName: "CMS: Max Tenuring Threshold" + type: integer + description: "The number of times an object is moved between eden spaces before it is promoted to the survivor (old-gen) space." + hint: "-XX:MaxTenuringThreshold - JVM dependent if not set." + required: false + group: jvm - name: JVM_OPT_CMS_INITIATING_OCCUPANCY_FRACTION - description: "CMS Settings: CMSInitiatingOccupancyFraction" - default: "75" + displayName: "CMS: InitiatingOccupancyFraction" + type: integer + description: "The amount of heap that needs to be full before a CMS GC cycle is triggered." + hint: "-XX:CMSInitiatingOccupancyFraction - JVM dependent if not set." + required: false + group: jvm + + - name: JVM_OPT_USE_CMS_INITIATING_OCCUPANCY_ONLY + displayName: "CMS: UseCMSInitiatingOccupancyOnly" + type: boolean + description: "If set to true, the GC will not autodetect when to trigger a GC cycle, only the defined CMSInitiatingOccupancyFraction." + hint: "-XX+UseCMSInitiatingOccupancyOnly - False if not set." + required: false + group: jvm - name: JVM_OPT_CMS_WAIT_DURATION - description: "CMS Settings: CMSWaitDuration" - default: "10000" + displayName: "CMS: WaitDuration" + type: integer + description: "Once CMS collection is triggered, it will wait for next young collection to perform initial mark right after. This parameter specifies how long CMS can wait for young collection." + hint: "-XX:CMSWaitDuration - JVM dependent if not set." + required: false + group: jvm + + - name: JVM_OPT_PARALLEL_GC_THREADS + displayName: "GC - Parallel GC Threads" + type: integer + description: "For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. Otherwise equal to the number of cores when 8 or less. Machines with > 10 cores should try setting these to <= full cores." + hint: "-XX:ParallelGCThreads - Number of Threads." + required: false + group: jvm + + - name: JVM_OPT_CONC_GC_THREADS + displayName: "GC - Concurrent GC Threads" + type: integer + description: "By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations." + hint: "-XX:ConcGCThreads - Number of Threads." + required: false + group: jvm - name: JVM_OPT_NUMBER_OF_GC_LOG_FILES - description: "GC logging options: NumberOfGCLogFiles" + displayName: "GC Number of Log Files" + type: integer + description: "GC logging options: NumberOfGCLogFiles." + hint: "-XX:NumberOfGCLogFiles - Number of log files. Defaults to 10." default: "10" + group: jvm - name: JVM_OPT_GC_LOG_FILE_SIZE - description: "GC logging options: GCLOGFILESIZE" + displayName: "GC Log File Size" + type: string + description: "GC logging options: GCLOGFILESIZE." + hint: "-XX:GCLogFileSize - Size of log files. Defaults to 10M." default: "10M" + group: jvm - name: JVM_OPT_GC_LOG_DIRECTORY - description: "GC logging options: GC_LOG_DIRECTORY" - default: "" + displayName: "GC Log Directory" + type: string + description: "GC logging options: GC_LOG_DIRECTORY." + hint: "-Xloggc: - File name for GC logs. Use for debugging." + advanced: true + required: false + group: jvm - name: JVM_OPT_PRINT_FLS_STATISTICS - description: "GC logging options: PrintFLSStatistics" - default: "" - - - name: JVM_OPT_CONC_GC_THREADS - description: "By default, ConcGCThreads is 1/4 of ParallelGCThreads. Setting both to the same value can reduce STW durations." - default: "" - - - name: JVM_OPT_INITIATING_HEAP_OCCUPANCY_PERCENT - description: "Save CPU time on large (>= 16GB) heaps by delaying region scanning until the heap is 70% full. The default in Hotspot 8u40 is 40%." - default: "" - - - name: JVM_OPT_MAX_GC_PAUSE_MILLIS - description: "Main G1GC tunable: lowering the pause target will lower throughput and vise versa." - default: "" - - - name: JVM_OPT_G1R_SET_UPDATING_PAUSE_TIME_PERCENT - description: "Have the JVM do less remembered set work during STW, instead preferring concurrent GC. Reduces p99.9 latency." - default: "" + displayName: "GC Print FLS Statistics" + type: integer + description: "GC logging options: PrintFLSStatistics." + hint: "-XX:PrintFLSStatistics - Can be 0 (off), 1 or 2. Off if not set." + required: false + group: jvm - name: CUSTOM_JVM_OPTIONS_BASE64 - description: "Base64-encoded JVM options appended to jvm.options." - default: "" - - - name: POD_MANAGEMENT_POLICY - description: "podManagementPolicy of the Cassandra Statefulset" - default: "OrderedReady" + displayName: "Custom JVM Options" + hint: "Base64 encoded JVM options." + description: "Base64-encoded JVM options are appended to the default jvm.options and overwrite existing values there." + type: string + required: false + group: jvm ################################################################################ ################################ Repair options ################################ ################################################################################ - name: REPAIR_POD + displayName: "Pod to Repair" description: "Name of the pod on which 'nodetool repair' should be run." - default: "" + hint: "Name of a pod." + required: false + type: "string" trigger: repair + group: repair ################################################################################ - ################################ Repair options ################################ + ############################### Recovery options ############################### ################################################################################ - name: RECOVERY_CONTROLLER - displayName: "Enables or disables the recovery controller" - description: "Needs to be true for automatic failure recovery and node eviction" + displayName: "Recovery Controller Enabled" + type: boolean + description: "Needs to be true for automatic failure recovery and node eviction." + hint: "Start the Recovery Controller." default: "false" + group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE - description: "Recovery controller Docker image." + displayName: "Docker Image" + description: "Docker image for the recovery controller." + hint: "Docker Image." + type: string default: "${RECOVERY_CONTROLLER_DOCKER_IMAGE}" + advanced: true + group: recovery - name: RECOVERY_CONTROLLER_DOCKER_IMAGE_PULL_POLICY + displayName: "Pull Policy" description: "Recovery controller Docker image pull policy." + hint: "Pull Policy for the docker image." + type: string default: "Always" + advanced: true + enum: + - "Always" + - "IfNotPresent" + - "Never" + group: recovery - name: RECOVERY_CONTROLLER_CPU_MC - description: "CPU request (in millicores) for the Recovery controller container." + displayName: "CPU Request" + hint: "Allowed CPU usage in millicores." + description: "CPU request for the Recovery controller container." + type: integer default: "50" + advanced: true + group: recovery - name: RECOVERY_CONTROLLER_CPU_LIMIT_MC - description: "CPU limit (in millicores) for the Recovery controller container." + displayName: "CPU Limit" + hint: "Allowed CPU limit in millicores." + description: "CPU limit for the Recovery controller container." + type: integer default: "200" + advanced: true + group: recovery - name: RECOVERY_CONTROLLER_MEM_MIB - description: "Memory request (in MiB) for the Recovery controller container." + displayName: "Memory Request" + description: "Memory request for the Recovery controller container." + hint: "Allowed Memory usage in MiB." default: "50" + type: integer + advanced: true + group: recovery - name: RECOVERY_CONTROLLER_MEM_LIMIT_MIB - description: "Memory limit (in MiB) for the Recovery controller container." + displayName: "Memory Limit" + description: "Memory limit for the Recovery controller container." + hint: "Temporary allowed Memory limit in MiB." default: "256" + type: integer + advanced: true + group: recovery diff --git a/tests/go.mod b/tests/go.mod index 1ee8932f..b812f63d 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -5,16 +5,14 @@ go 1.13 require ( github.com/aws/aws-sdk-go v1.29.14 github.com/google/uuid v1.1.1 - github.com/imdario/mergo v0.3.8 // indirect - github.com/jstemmer/go-junit-report v0.9.1 // indirect - github.com/kudobuilder/kudo v0.15.0 + github.com/kudobuilder/kudo v0.17.0 github.com/kudobuilder/test-tools v0.7.0 - github.com/onsi/ginkgo v1.12.0 - github.com/onsi/gomega v1.9.0 - github.com/sirupsen/logrus v1.4.2 - github.com/spf13/afero v1.2.2 - github.com/thoas/go-funk v0.6.0 + github.com/onsi/ginkgo v1.14.1 + github.com/onsi/gomega v1.10.2 + github.com/sirupsen/logrus v1.6.0 + github.com/spf13/afero v1.4.0 + github.com/thoas/go-funk v0.7.0 gopkg.in/yaml.v2 v2.3.0 - k8s.io/api v0.18.4 - k8s.io/apimachinery v0.18.4 + k8s.io/api v0.19.2 + k8s.io/apimachinery v0.19.2 ) diff --git a/tests/go.sum b/tests/go.sum index 26190883..5973c1d3 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -2,16 +2,34 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0 h1:ROfEUZz+Gh5pa62DJWXSaonyu3StP6EA6lPEXPI6mCo= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.51.0 h1:PvKAVQWCtlGUSlZkGW3QLelKaWq7KYv/MW1EboG8bfM= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.6 h1:5YWtOnckcudzIw8lPPBcWOnmIFWMtHci1ZWAZulMSx0= +github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= github.com/Azure/go-autorest/autorest/adal v0.5.0 h1:q2gDruN08/guU9vAjuPWff0+QIrpH6ediguzdAzXAUU= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.2 h1:O1X4oexUxnZCaEUGsvMnr8ZGj8HI37tNezwY4npRqA0= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= github.com/Azure/go-autorest/autorest/date v0.1.0 h1:YGrhWfrgtFs84+h0o46rJrlmsZtyZRg470CqAXTZaGM= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.2.0 h1:Ww5g4zThfD/6cLb4z6xxgeyDa7QDkizMkJKe0ysZXp0= github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= @@ -25,6 +43,8 @@ github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RP github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver/v3 v3.1.0 h1:Y2lUDsFKVRSYGojLJ1yLxSXdMmMYTYls0rCvoqmMUQk= +github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= @@ -40,7 +60,9 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/alecthomas/gometalinter v3.0.0+incompatible/go.mod h1:qfIpQGGz3d+NmgyPBqv+LSh50emm1pt72EtcX2vKYQk= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alessio/shellescape v0.0.0-20190409004728-b115ca0f9053 h1:H/GMMKYPkEIC3DF/JWQz8Pdd+Feifov2EIgGfNpeogI= github.com/alessio/shellescape v0.0.0-20190409004728-b115ca0f9053/go.mod h1:xW8sBma2LE3QxFSzCnH9qe6gAE2yO9GvQaWwX89HxbE= @@ -54,10 +76,12 @@ github.com/aws/aws-sdk-go v1.29.14/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTg github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -80,6 +104,7 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -116,6 +141,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.0.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= @@ -127,17 +154,25 @@ github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-bindata/go-bindata v3.1.2+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= +github.com/go-bindata/go-bindata/v3 v3.1.3/go.mod h1:1/zrpXsLD8YDIbhZRqXzm1Ghc7NhEvIN9+Z6R5/xH4I= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0 h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-logr/logr v0.2.1 h1:fV3MLmabKIZ383XifUjFSwcoGee0v9qgPp8wy5svibE= +github.com/go-logr/logr v0.2.1/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/zapr v0.1.0 h1:h+WVe9j6HAA01niTJPA/kKH0i7e0rLZBCwauQFcRE54= github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= @@ -200,13 +235,25 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef h1:veQD95Isof8w9/WXiA+pa3tz3fJXkt5B7QaRBrM62gk= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= @@ -216,8 +263,13 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -225,6 +277,9 @@ github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= @@ -232,10 +287,13 @@ github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.1 h1:WeAefnSUHlBb0iJKwxFDZdbfGwkd7xRNuV+IpXMJhYk= github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= +github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gophercloud/gophercloud v0.2.0 h1:lD2Bce2xBAMNNcFZ0dObTpXkGLlVIb33RPVUNVpw6ic= github.com/gophercloud/gophercloud v0.2.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= @@ -256,6 +314,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -263,11 +323,16 @@ github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0 github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= +github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= @@ -281,19 +346,25 @@ github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46O github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.4.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= @@ -306,9 +377,15 @@ github.com/kudobuilder/kudo v0.15.0-rc1 h1:QZ4sqaRwLzwy4Wq4LQX+9IA1ooL66y0BZhXRL github.com/kudobuilder/kudo v0.15.0-rc1/go.mod h1:/u5OOb9i/ygWC8YRoNCB1aYl/oLNoLYXJ/KjljfJt9I= github.com/kudobuilder/kudo v0.15.0 h1:YpKORR4f4+VpiL6NfnfXNDVCd5tYVYX49vWaY0luxu0= github.com/kudobuilder/kudo v0.15.0/go.mod h1:9Vu7uXXPQz8Owj7CN1+EztdUsHjsXcrI1mP5YgWRSJE= +github.com/kudobuilder/kudo v0.16.0 h1:wNS3RpGWnuwZ/HZJJl2NIVoa9R8pajYnJ/ivbMv4znc= +github.com/kudobuilder/kudo v0.16.0/go.mod h1:ZzEOwlGKWIR01pT0Z/ic8m+Ih3ul0WjlSrbSMUxWTtU= +github.com/kudobuilder/kudo v0.17.0 h1:rbMPaY+GrzM34PRGkP4yt6ZQpRivYknXEtS3gCM6KWM= +github.com/kudobuilder/kudo v0.17.0/go.mod h1:GqeSzfVZIz+Gl/pbmJCou7tsCxFfaeHaqoZUxMIJF30= github.com/kudobuilder/kuttl v0.2.1/go.mod h1:h3TcBWcPKnspaq4DE3qFgYNO3mEVKq+0owUzlzxP0Bk= github.com/kudobuilder/kuttl v0.5.0/go.mod h1:o9M5BBmunm69oMnPjvNGb6biz3nm5AswAdJ0EIhTJQA= github.com/kudobuilder/kuttl v0.5.1/go.mod h1:o9M5BBmunm69oMnPjvNGb6biz3nm5AswAdJ0EIhTJQA= +github.com/kudobuilder/kuttl v0.6.0/go.mod h1:HAaSKGN3P7VJqbBIWQlbhrkvFcNe013oLkwvk0lM1kE= +github.com/kudobuilder/kuttl v0.6.1/go.mod h1:HAaSKGN3P7VJqbBIWQlbhrkvFcNe013oLkwvk0lM1kE= github.com/kudobuilder/test-tools v0.4.0 h1:ZAKlowgEmcDyLPYDmckeDV6/Dgmzo+QWvC6BL73ma48= github.com/kudobuilder/test-tools v0.4.0/go.mod h1:g7Ja38zg8gZ7cQUrxMdYZfrIBUltr7NlXVAgPoWiU50= github.com/kudobuilder/test-tools v0.5.0 h1:Dl+TDbMQdPMgxL3OeMugeN2blJwWqpsnBkGgeUMdnHA= @@ -339,6 +416,7 @@ github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/manifoldco/promptui v0.6.0/go.mod h1:o9/C5VV8IPXxjxpl9au84MtQGIi5dwn7eldAgEdePPs= github.com/manifoldco/promptui v0.7.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= +github.com/manifoldco/promptui v0.8.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= @@ -357,6 +435,7 @@ github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/ github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -365,6 +444,9 @@ github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUb github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/moby/term v0.0.0-20200915141129-7f0af18e79f2 h1:SPoLlS9qUUnXcIY4pvA4CTwYjk0Is5f4UPEkeESr53k= +github.com/moby/term v0.0.0-20200915141129-7f0af18e79f2/go.mod h1:TjQg8pa4iejrUrjiz0MCtMV38jdMNW4doKSiBrEvCQQ= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -378,6 +460,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nicksnyder/go-i18n v1.10.1/go.mod h1:e4Di5xjP9oTVrC6y3C7C0HoSYXjSbhh/dU0eUV32nB4= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -388,6 +472,11 @@ github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.0 h1:Iw5WCbBcaAAd0fpRb1c9r5YCylv4XDoCSigm1zLevwU= github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.14.1 h1:jMU0WaQrP0a/YAEq8eJmJKjBoMs+pClEr1vDMlM/Do4= +github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -396,6 +485,10 @@ github.com/onsi/gomega v1.8.1 h1:C5Dqfs/LeauYDX0jJXIe2SWmwCbGzx9yF8C8xy3Lh34= github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.9.0 h1:R1uwffexN6Pr340GtYRIdZmAiN4J+iw6WG4wog1DUXg= github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.2 h1:aY/nuoWlKJud2J6U0E3NWsjlg+0GtwXxgEqthRdzlcs= +github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= @@ -411,6 +504,7 @@ github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -419,6 +513,7 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -428,13 +523,17 @@ github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7q github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -444,11 +543,17 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.3.2 h1:GDarE4TJQI52kYSbSAmLiId1Elfj+xgSDqrUZxFhxlU= +github.com/spf13/afero v1.3.2/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.4.0 h1:jsLTaI1zwYO3vjrzHalkVcIHXTNmdQFepW4OI8H3+x8= +github.com/spf13/afero v1.4.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= @@ -473,10 +578,13 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/thoas/go-funk v0.5.0 h1:XXFUVqX6xnIDqXxENFHBFS1X5AoT0EDs7HJq2krRfD8= github.com/thoas/go-funk v0.5.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= github.com/thoas/go-funk v0.6.0 h1:ryxN0pa9FnI7YHgODdLIZ4T6paCZJt8od6N9oRztMxM= github.com/thoas/go-funk v0.6.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= +github.com/thoas/go-funk v0.7.0 h1:GmirKrs6j6zJbhJIficOsz2aAI7700KsU/5YrdHRM1Y= +github.com/thoas/go-funk v0.7.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -492,13 +600,19 @@ github.com/xlab/treeprint v1.0.0/go.mod h1:IoImgRak9i3zJyuxOKUP1v4UZd1tMoKkq/Cim github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yourbasic/graph v0.0.0-20170921192928-40eb135c0b26 h1:4u7nCRnWizT8R6xOP7cGaq+Ov0oBGkKMsLWZKiwDFas= github.com/yourbasic/graph v0.0.0-20170921192928-40eb135c0b26/go.mod h1:Rfzr+sqaDreiCaoQbFCu3sTXxeFq/9kXRuyOoSlGQHE= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -511,21 +625,41 @@ golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975 h1:/Tl7pH94bvbAAHBdZJT947M/+gp0+CqQXDtMRC0fseo= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -538,7 +672,10 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -549,13 +686,22 @@ golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8ou golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2 h1:eDrdRpKgkcCqKZQwyZRyeFZgfqt37SL7Kv3tok06cKE= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA= +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -565,6 +711,10 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200930132711-30421366ff76 h1:JnxiSYT3Nm0BT2a8CyvYyM6cnrWpidecD1UuSYbhKm0= +golang.org/x/sync v0.0.0-20200930132711-30421366ff76/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -580,33 +730,53 @@ golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd h1:3x5uuvBgE6oaXJjCOvpCC1IpgJogqQ+PqGGU3ZxAgII= golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200408040146-ea54a3c99b9b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121 h1:rITEj+UZHYC927n8GT97eC3zrpzXdb/voyeOuVKS46o= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f h1:6Sc1XOXTulBN6imkqo6XoAXDEzoQ4/ro6xy7Vn8+rOM= +golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0 h1:xQwXv67TxFo9nC1GJFyab5eq/5B590r6RlnL/G8Sz7w= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -619,38 +789,83 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191025023517-2077df36852e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616195046-dc31b401abb5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200723000907-a7c6fd066f6d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.0.1 h1:xyiBuvkD2g5n7cYzx6u2sxQvsAy4QJsZFCzGVdzOXZ0= gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873 h1:nfPFGzJkUDX6uBmpN/pSw7MbOAWegH5QDQuoXFHedLg= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1 h1:q4XQuHFC6I28BKZpo6IYyb3mNO+l7lSOxRuYTCiDfXk= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alecthomas/kingpin.v3-unstable v3.0.0-20171010053543-63abe20a23e2/go.mod h1:3HH7i1SgMqlzxCcBmUHW657sD4Kvv9sC3HpL3YukzwA= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -658,6 +873,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= @@ -682,11 +898,15 @@ gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20191106092431-e228e37189d3 h1:ho4SukHOmqjp7XHH7nPNx7GcgDK6ObVflhAQAT7MvpE= gopkg.in/yaml.v3 v3.0.0-20191106092431-e228e37189d3/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200121175148-a6ecf24a6d71/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= k8s.io/api v0.17.2/go.mod h1:BS9fjjLc4CMuqfSO8vgbHPKMt5+SF0ET6u/RVDihTo4= k8s.io/api v0.17.3/go.mod h1:YZ0OTkuw7ipbe305fMpIdf3GLXZKRigjtZaV5gzC2J0= @@ -697,6 +917,10 @@ k8s.io/api v0.18.2/go.mod h1:SJCWI7OLzhZSvbY7U8zwNl9UA4o1fizoug34OV/2r78= k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA= k8s.io/api v0.18.4 h1:8x49nBRxuXGUlDlwlWd3RMY1SayZrzFfxea3UZSkFw4= k8s.io/api v0.18.4/go.mod h1:lOIQAKYgai1+vz9J7YcDZwC26Z0zQewYOGWdyIPUUQ4= +k8s.io/api v0.18.6 h1:osqrAXbOQjkKIWDTjrqxWQ3w0GkKb1KA1XkUGHHYpeE= +k8s.io/api v0.18.6/go.mod h1:eeyxr+cwCjMdLAmr2W3RyDI0VvTawSg/3RFFBEnmZGI= +k8s.io/api v0.19.2 h1:q+/krnHWKsL7OBZg/rxnycsl9569Pud76UJ77MvKXms= +k8s.io/api v0.19.2/go.mod h1:IQpK0zFQ1xc5iNIQPqzgoOwuFugaYHK4iCknlAQP9nI= k8s.io/apiextensions-apiserver v0.17.0/go.mod h1:XiIFUakZywkUl54fVXa7QTEHcqQz9HG55nHd1DCoHj8= k8s.io/apiextensions-apiserver v0.17.2 h1:cP579D2hSZNuO/rZj9XFRzwJNYb41DbNANJb6Kolpss= k8s.io/apiextensions-apiserver v0.17.2/go.mod h1:4KdMpjkEjjDI2pPfBA15OscyNldHWdBCfsWMDWAmSTs= @@ -705,6 +929,10 @@ k8s.io/apiextensions-apiserver v0.17.6/go.mod h1:Z3CHLP3Tha+Rbav7JR3S+ye427UaJkH k8s.io/apiextensions-apiserver v0.18.2/go.mod h1:q3faSnRGmYimiocj6cHQ1I3WpLqmDgJFlKL37fC4ZvY= k8s.io/apiextensions-apiserver v0.18.4 h1:Y3HGERmS8t9u12YNUFoOISqefaoGRuTc43AYCLzWmWE= k8s.io/apiextensions-apiserver v0.18.4/go.mod h1:NYeyeYq4SIpFlPxSAB6jHPIdvu3hL0pc36wuRChybio= +k8s.io/apiextensions-apiserver v0.18.6 h1:vDlk7cyFsDyfwn2rNAO2DbmUbvXy5yT5GE3rrqOzaMo= +k8s.io/apiextensions-apiserver v0.18.6/go.mod h1:lv89S7fUysXjLZO7ke783xOwVTm6lKizADfvUM/SS/M= +k8s.io/apiextensions-apiserver v0.19.2 h1:oG84UwiDsVDu7dlsGQs5GySmQHCzMhknfhFExJMz9tA= +k8s.io/apiextensions-apiserver v0.19.2/go.mod h1:EYNjpqIAvNZe+svXVx9j4uBaVhTB4C94HkY3w058qcg= k8s.io/apimachinery v0.0.0-20191028221656-72ed19daf4bb/go.mod h1:llRdnznGEAqC3DcNm6yEj472xaFVfLM7hnYofMb12tQ= k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= @@ -716,15 +944,25 @@ k8s.io/apimachinery v0.18.2/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftc k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= k8s.io/apimachinery v0.18.4 h1:ST2beySjhqwJoIFk6p7Hp5v5O0hYY6Gngq/gUYXTPIA= k8s.io/apimachinery v0.18.4/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= +k8s.io/apimachinery v0.18.6 h1:RtFHnfGNfd1N0LeSrKCUznz5xtUP1elRGvHJbL3Ntag= +k8s.io/apimachinery v0.18.6/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= +k8s.io/apimachinery v0.19.2 h1:5Gy9vQpAGTKHPVOh5c4plE274X8D/6cuEiTO2zve7tc= +k8s.io/apimachinery v0.19.2/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= k8s.io/apiserver v0.17.2/go.mod h1:lBmw/TtQdtxvrTk0e2cgtOxHizXI+d0mmGQURIHQZlo= k8s.io/apiserver v0.17.6/go.mod h1:sAYqm8hUDNA9aj/TzqwsJoExWrxprKv0tqs/z88qym0= k8s.io/apiserver v0.18.2/go.mod h1:Xbh066NqrZO8cbsoenCwyDJ1OSi8Ag8I2lezeHxzwzw= k8s.io/apiserver v0.18.4/go.mod h1:q+zoFct5ABNnYkGIaGQ3bcbUNdmPyOCoEBcg51LChY8= +k8s.io/apiserver v0.18.6/go.mod h1:Zt2XvTHuaZjBz6EFYzpp+X4hTmgWGy8AthNVnTdm3Wg= +k8s.io/apiserver v0.19.2/go.mod h1:FreAq0bJ2vtZFj9Ago/X0oNGC51GfubKK/ViOKfVAOA= k8s.io/cli-runtime v0.17.3 h1:0ZlDdJgJBKsu77trRUynNiWsRuAvAVPBNaQfnt/1qtc= k8s.io/cli-runtime v0.17.3/go.mod h1:X7idckYphH4SZflgNpOOViSxetiMj6xI0viMAjM81TA= k8s.io/cli-runtime v0.18.4 h1:IUx7quIOb4gbQ4M+B1ksF/PTBovQuL5tXWzplX3t+FM= k8s.io/cli-runtime v0.18.4/go.mod h1:9/hS/Cuf7NVzWR5F/5tyS6xsnclxoPLVtwhnkJG1Y4g= +k8s.io/cli-runtime v0.18.6 h1:I8BkH5NyqMQ4zqUBmpXJ1LxIqpCH88H/1edPkPVWzjQ= +k8s.io/cli-runtime v0.18.6/go.mod h1:+G/WTNqHgUv636e5y7rhOQ7epUbRXnwmPnhOhD6t9uM= +k8s.io/cli-runtime v0.19.2 h1:d4uOtKhy3ImdaKqZJ8yQgLrdtUwsJLfP4Dw7L/kVPOo= +k8s.io/cli-runtime v0.19.2/go.mod h1:CMynmJM4Yf02TlkbhKxoSzi4Zf518PukJ5xep/NaNeY= k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= k8s.io/client-go v0.17.2/go.mod h1:QAzRgsa0C2xl4/eVpeVAZMvikCn8Nm81yqVx3Kk9XYI= k8s.io/client-go v0.17.3/go.mod h1:cLXlTMtWHkuK4tD360KpWz2gG2KtdWEr/OT02i3emRQ= @@ -734,6 +972,10 @@ k8s.io/client-go v0.17.6/go.mod h1:tX5eAbQR/Kbqv+5R93rzHQoyRnPjjW2mm9i0lXnW218= k8s.io/client-go v0.18.2/go.mod h1:Xcm5wVGXX9HAA2JJ2sSBUn3tCJ+4SVlCbl2MNNv+CIU= k8s.io/client-go v0.18.4 h1:un55V1Q/B3JO3A76eS0kUSywgGK/WR3BQ8fHQjNa6Zc= k8s.io/client-go v0.18.4/go.mod h1:f5sXwL4yAZRkAtzOxRWUhA/N8XzGCb+nPZI8PfobZ9g= +k8s.io/client-go v0.18.6 h1:I+oWqJbibLSGsZj8Xs8F0aWVXJVIoUHWaaJV3kUN/Zw= +k8s.io/client-go v0.18.6/go.mod h1:/fwtGLjYMS1MaM5oi+eXhKwG+1UHidUEXRh6cNsdO0Q= +k8s.io/client-go v0.19.2 h1:gMJuU3xJZs86L1oQ99R4EViAADUPMHHtS9jFshasHSc= +k8s.io/client-go v0.19.2/go.mod h1:S5wPhCqyDNAlzM9CnEdgTGV4OqhsW3jGO1UM1epwfJA= k8s.io/client-go v11.0.0+incompatible h1:LBbX2+lOwY9flffWlJM7f1Ct8V2SRNiMRDFeiwnJo9o= k8s.io/client-go v11.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= k8s.io/code-generator v0.17.0/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= @@ -742,6 +984,8 @@ k8s.io/code-generator v0.17.3/go.mod h1:l8BLVwASXQZTo2xamW5mQNFCe1XPiAesVq7Y1t7P k8s.io/code-generator v0.17.6/go.mod h1:iiHz51+oTx+Z9D0vB3CH3O4HDDPWrvZyUgUYaIE9h9M= k8s.io/code-generator v0.18.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= k8s.io/code-generator v0.18.4/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= +k8s.io/code-generator v0.18.6/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= +k8s.io/code-generator v0.19.2/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= k8s.io/component-base v0.17.2/go.mod h1:zMPW3g5aH7cHJpKYQ/ZsGMcgbsA/VyhEugF3QT1awLs= k8s.io/component-base v0.17.3/go.mod h1:GeQf4BrgelWm64PXkIXiPh/XS0hnO42d9gx9BtbZRp8= @@ -749,9 +993,15 @@ k8s.io/component-base v0.17.6/go.mod h1:jgRLWl0B0rOzFNtxQ9E4BphPmDqoMafujdau6AdG k8s.io/component-base v0.18.2/go.mod h1:kqLlMuhJNHQ9lz8Z7V5bxUUtjFZnrypArGl58gmDfUM= k8s.io/component-base v0.18.4 h1:Kr53Fp1iCGNsl9Uv4VcRvLy7YyIqi9oaJOQ7SXtKI98= k8s.io/component-base v0.18.4/go.mod h1:7jr/Ef5PGmKwQhyAz/pjByxJbC58mhKAhiaDu0vXfPk= +k8s.io/component-base v0.18.6 h1:Wd6cHGwJN2qpufnirVOB3oMhyhbioGsKEi5HeDBsV+s= +k8s.io/component-base v0.18.6/go.mod h1:knSVsibPR5K6EW2XOjEHik6sdU5nCvKMrzMt2D4In14= +k8s.io/component-base v0.19.2 h1:jW5Y9RcZTb79liEhW3XDVTW7MuvEGP0tQZnfSX6/+gs= +k8s.io/component-base v0.19.2/go.mod h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= @@ -759,6 +1009,8 @@ k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0 h1:Foj74zO6RbjjP4hBEKjnYtjjAhGg4jNynUdYF6fJrok= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a h1:UcxjrRMyNx/i/y8G7kPvLyy7rfbeuf1PYyBf973pgyU= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= @@ -767,29 +1019,48 @@ k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6 h1:Oh3Mzx5pJ+yIumsAD0MOEC k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29 h1:NeQXVJ2XFSkRoPzRo8AId01ZER+j8oV4SZADT4iBOXQ= k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6 h1:+WnxoVtG8TMiudHBSEtrVL1egv36TkkJm+bA8AxicmQ= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kubectl v0.17.3 h1:9HHYj07kuFkM+sMJMOyQX29CKWq4lvKAG1UIPxNPMQ4= k8s.io/kubectl v0.17.3/go.mod h1:NUn4IBY7f7yCMwSop2HCXlw/MVYP4HJBiUmOR3n9w28= k8s.io/kubectl v0.18.4 h1:l9DUYPTEMs1+qNtoqPpTyaJOosvj7l7tQqphCO1K52s= k8s.io/kubectl v0.18.4/go.mod h1:EzB+nfeUWk6fm6giXQ8P4Fayw3dsN+M7Wjy23mTRtB0= +k8s.io/kubectl v0.18.6 h1:IFPNuLPkZ59vSGQzynXY8XGz9yuOSRpkJupnobdYvO4= +k8s.io/kubectl v0.18.6/go.mod h1:3TLzFOrF9h4mlRPAvdNkDbs5NWspN4e0EnPnEB41CGo= +k8s.io/kubectl v0.19.2 h1:/Dxz9u7S0GnchLA6Avqi5k1qhZH4Fusgecj8dHsSnbk= +k8s.io/kubectl v0.19.2/go.mod h1:4ib3oj5ma6gF95QukTvC7ZBMxp60+UEAhDPjLuBIrV4= k8s.io/metrics v0.17.3/go.mod h1:HEJGy1fhHOjHggW9rMDBJBD3YuGroH3Y1pnIRw9FFaI= k8s.io/metrics v0.18.4/go.mod h1:luze4fyI9JG4eLDZy0kFdYEebqNfi0QrG4xNEbPkHOs= +k8s.io/metrics v0.18.6/go.mod h1:iAwGeabusQNO3duHDM7BBExTUB8L+iq8PM7N9EtQw6g= +k8s.io/metrics v0.19.2/go.mod h1:IlLaAGXN0q7yrtB+SV0q3JIraf6VtlDr+iuTcX21fCU= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f h1:GiPwtSzdP43eI1hpPCbROQCCIgCuiMMNF8YUVLF3vJo= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200520001619-278ece378a50 h1:ZtTUW5+ZWaoqjR3zOpRa7oFJ5d4aA22l4me/xArfOIc= k8s.io/utils v0.0.0-20200520001619-278ece378a50/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20200603063816-c1c6865ac451 h1:v8ud2Up6QK1lNOKFgiIVrZdMg7MpmSnvtrOieolJKoE= +k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20200729134348-d5654de09c73 h1:uJmqzgNWG7XyClnU/mLPBWwfKKF1K8Hf8whTseBgJcg= +k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0= sigs.k8s.io/controller-runtime v0.5.1 h1:TNidCfVoU/cs2i+9xoTcL/l7yhl0bDhYXU0NCG6wmiE= sigs.k8s.io/controller-runtime v0.5.1/go.mod h1:Uojny7gvg55YLQnEGnPzRE3dC4ik2tRlZJgOUCWXAV4= sigs.k8s.io/controller-runtime v0.6.0 h1:Fzna3DY7c4BIP6KwfSlrfnj20DJ+SeMBK8HSFvOk9NM= sigs.k8s.io/controller-runtime v0.6.0/go.mod h1:CpYf5pdNY/B352A1TFLAS2JVSlnGQ5O2cftPHndTroo= +sigs.k8s.io/controller-runtime v0.6.1 h1:LcK2+nk0kmaOnKGN+vBcWHqY5WDJNJNB/c5pW+sU8fc= +sigs.k8s.io/controller-runtime v0.6.1/go.mod h1:XRYBPdbf5XJu9kpS84VJiZ7h/u1hF3gEORz0efEja7A= +sigs.k8s.io/controller-runtime v0.6.3 h1:SBbr+inLPEKhvlJtrvDcwIpm+uhDvp63Bl72xYJtoOE= +sigs.k8s.io/controller-runtime v0.6.3/go.mod h1:WlZNXcM0++oyaQt4B7C2lEE5JYRs8vJUzRP4N4JpdAY= sigs.k8s.io/controller-tools v0.2.6/go.mod h1:9VKHPszmf2DHz/QmHkcfZoewO6BL7pPs9uAiBVsaJSE= sigs.k8s.io/controller-tools v0.3.0/go.mod h1:enhtKGfxZD1GFEoMgP8Fdbu+uKQ/cq1/WGJhdVChfvI= +sigs.k8s.io/controller-tools v0.4.0/go.mod h1:G9rHdZMVlBDocIxGkK3jHLWqcTMNvveypYJwrvYKjWU= sigs.k8s.io/kind v0.6.1 h1:13zGO85bX34eyJFQWilTWyuqncRAhCaHoffF9vPuYbg= sigs.k8s.io/kind v0.6.1/go.mod h1:dhW5h0O4PRVq8B6eExphIa9mBnrlBzxEz3R/P1YcYj0= sigs.k8s.io/kind v0.8.1/go.mod h1:oNKTxUVPYkV9lWzY6CVMNluVq8cBsyq+UgPJdvA3uu4= @@ -802,6 +1073,8 @@ sigs.k8s.io/structured-merge-diff/v2 v2.0.1/go.mod h1:Wb7vfKAodbKgf6tn1Kl0VvGj7m sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E= sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1 h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= diff --git a/tests/suites/sanity/sanity_test.go b/tests/suites/sanity/sanity_test.go index ecbf06fa..1ce4ee43 100644 --- a/tests/suites/sanity/sanity_test.go +++ b/tests/suites/sanity/sanity_test.go @@ -12,6 +12,7 @@ import ( "time" "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1" + log "github.com/sirupsen/logrus" "github.com/kudobuilder/test-tools/pkg/client" "github.com/kudobuilder/test-tools/pkg/debug" @@ -185,7 +186,7 @@ var _ = Describe(TestName, func() { By("Configuring Cassandra JVM options through custom options") parameter = "-XX:CMSWaitDuration" - initialValue = "10000" + initialValue = "" desiredValue = "11000" desiredEncodedProperties = base64.StdEncoding.EncodeToString( []byte(parameter + "=" + desiredValue), @@ -193,6 +194,8 @@ var _ = Describe(TestName, func() { configuration, err = cassandra.NodeJVMOptions(Client, Operator.Instance) + log.Infof("JVMOptions: %v", configuration) + Expect(err).To(BeNil()) Expect(configuration[parameter]).To(Equal(initialValue)) diff --git a/tools/generate_parameters_markdown.py b/tools/generate_parameters_markdown.py index 06430bd8..1089ca2f 100755 --- a/tools/generate_parameters_markdown.py +++ b/tools/generate_parameters_markdown.py @@ -25,29 +25,41 @@ def generate_markdown_table(input_params_yaml, output_markdown_file_path): try: with open(input_params_yaml, "r") as input: - parameters = yaml.safe_load(input)["parameters"] - parameter_fields = ["name", "description", "default"] + yamlData = yaml.safe_load(input) - writer = MarkdownTableWriter() - writer.table_name = "Parameters" - writer.styles = [ - Style(align="left", font_weight="bold"), + groups = yamlData["groups"] + parameters = yamlData["parameters"] + + groupTable = MarkdownTableWriter() + groupTable.table_name = "Groups" + groupTable.styles = [ Style(align="left"), Style(align="left"), ] - writer.headers = [field.capitalize() for field in parameter_fields] - writer.margin = 1 - - writer.value_matrix = [ - list([parameter.get(field) for field in parameter_fields]) - for parameter in parameters + groupTable.headers = [ "Group", "Description" ] #"[field.capitalize() for field in group_fields] + groupTable.margin = 1 + groupTable.value_matrix = [ + # list([group.get(field) for field in group_fields]) + gen_group_header(group) for group in groups ] + emptyGroup = { + 'name': '', + 'displayName': 'Ungrouped Parameters', + 'description': 'All parameters that are not assigned to a specific group.' + } + if output_markdown_file_path: try: with open(output_markdown_file_path, "w") as output: - writer.stream = output - writer.write_table() + groupTable.stream = output + groupTable.write_table() + + for group in groups: + gen_group(group, parameters, output) + + gen_group(emptyGroup, parameters, output) + except Exception as e: logging.error( f"Failed to output Markdown to {output_markdown_file_path}", @@ -55,7 +67,9 @@ def generate_markdown_table(input_params_yaml, output_markdown_file_path): ) return 1 else: - print(writer.dumps()) + logging.error( + f"Required markdown output" + ) return 0 except Exception as e: @@ -65,10 +79,48 @@ def generate_markdown_table(input_params_yaml, output_markdown_file_path): return 1 +def gen_group_header(group): + display_name = group.get("displayName", group.get("name")) + + return [f'[{display_name}](#{group.get("name")})', group.get("description")] + +def gen_group(group, parameters, output): + parameter_fields = ["name", "description", "default"] + + display_name = group.get("displayName", group.get("name")) + + output.write(f'## {display_name} \n') + if "description" in group: + output.write(f'{group.get("description")}\n') + + output.write('\n\n') + + paramTable = MarkdownTableWriter() + + # paramTable.table_name = group["displayName"] + paramTable.styles = [ + Style(align="left", font_weight="bold"), + Style(align="left"), + Style(align="left"), + ] + paramTable.headers = [field.capitalize() for field in parameter_fields] + paramTable.margin = 1 + + paramTable.value_matrix = [ + list([parameter.get(field) for field in parameter_fields]) + for parameter in parameters if parameter.get("group", "") == group.get("name") + ] + + paramTable.stream = output + paramTable.write_table() + + return 0 + + def main() -> int: parser = argparse.ArgumentParser( description="Generate a markdown table of all parameters in a KUDO " - + "Operator params.yaml file" + + "Operator params.yaml file" ) parser.add_argument(