Last active
June 3, 2020 14:05
-
-
Save smiklosovic/8ff922f30bd5f3a1163e3b3d6495f9f6 to your computer and use it in GitHub Desktop.
Instaclustr Cassandra Sidecar spec
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
openapi: "3.0.3" | |
info: | |
description: "REST API for Cassandra Sidecar from Instaclustr" | |
version: "1.1.0" | |
title: "Instaclustr Cassandra Sidecar" | |
termsOfService: "https://github.com/instaclustr/cassandra-sidecar" | |
contact: | |
email: "[email protected]" | |
license: | |
name: "Apache 2.0" | |
url: "http://www.apache.org/licenses/LICENSE-2.0.html" | |
servers: | |
- url: "localhost:4567" | |
description: "Default URL a Sidecar is bound to when run alongside with Cassandra node" | |
externalDocs: | |
description: "Find out more about Cassandra Sidecar" | |
url: "https://github.com/instaclustr/cassandra-sidecar" | |
tags: | |
- name: "operations" | |
description: "Operations against Cassandra node" | |
- name: "config" | |
description: "Configuration of Cassandra as in cassandra.yaml" | |
- name: "status" | |
description: "Status of Cassandra node" | |
- name: "version" | |
description: "Endpoints for various versions" | |
paths: | |
/operations: | |
get: | |
tags: | |
- "operations" | |
summary: "All operations of Sidecar" | |
parameters: | |
- name: "type" | |
in: "query" | |
description: "type of operations to filter on" | |
required: false | |
schema: | |
type: array | |
items: | |
type: string | |
enum: | |
- "cleanup" | |
- "decommission" | |
- "drain" | |
- "flush" | |
- "rebuild" | |
- "refresh" | |
- "scrub" | |
- "upgradesstables" | |
- "import" | |
- "truncate" | |
- "backup" | |
- "restore" | |
- name: status | |
in: "query" | |
description: "status of operations to filter on" | |
required: false | |
schema: | |
type: array | |
items: | |
type: string | |
enum: | |
- "PENDING" | |
- "RUNNING" | |
- "COMPLETED" | |
- "CANCELLED" | |
- "FAILED" | |
responses: | |
"200": | |
description: "Gets all operations submitted to this Sidecar, irrelevant of their state" | |
post: | |
tags: | |
- "operations" | |
summary: "Submits an operation to this Sidecar" | |
requestBody: | |
content: | |
application/json: | |
schema: | |
oneOf: | |
- $ref: '#/components/schemas/CleanupOperationRequest' | |
- $ref: '#/components/schemas/DecommissionOperationRequest' | |
- $ref: '#/components/schemas/DrainOperationRequest' | |
- $ref: '#/components/schemas/FlushOperationRequest' | |
- $ref: '#/components/schemas/RebuildOperationRequest' | |
- $ref: '#/components/schemas/RefreshOperationRequest' | |
- $ref: '#/components/schemas/RestartOperationRequest' | |
- $ref: '#/components/schemas/ScrubOperationRequest' | |
- $ref: '#/components/schemas/UpgradeSSTablesOperationRequest' | |
- $ref: '#/components/schemas/ImportOperationRequest' | |
- $ref: '#/components/schemas/TruncateOperationRequest' | |
- $ref: '#/components/schemas/BackupOperationRequest' | |
- $ref: '#/components/schemas/RestoreOperationRequest' | |
discriminator: | |
propertyName: type | |
mapping: | |
cleanup: '#/components/schemas/CleanupOperationRequest' | |
decommission: '#/components/schemas/DecommissionOperationRequest' | |
drain: '#/components/schemas/DrainOperationRequest' | |
flush: '#/components/schemas/FlushOperationRequest' | |
rebuild: '#/components/schemas/RebuildOperationRequest' | |
refresh: '#/components/schemas/RefreshOperationRequest' | |
restart: '#/components/schemas/RestartOperationRequest' | |
scrub: '#/components/schemas/ScrubOperationRequest' | |
upgradesstables: '#/components/schemas/UpgradeSSTablesOperationRequest' | |
import: '#/components/schemas/ImportOperationRequest' | |
truncate: '#/components/schemas/TruncateOperationRequest' | |
backup: '#/components/schemas/BackupOperationRequest' | |
restore: '#/components/schemas/RestoreOperationRequest' | |
responses: | |
"200": | |
description: "By calling this endpoint an operation is submitted for its execution" | |
content: | |
application/json: | |
schema: | |
oneOf: | |
- $ref: '#/components/schemas/CleanupOperationResponse' | |
- $ref: '#/components/schemas/DecommissionOperationResponse' | |
- $ref: '#/components/schemas/DrainOperationResponse' | |
- $ref: '#/components/schemas/FlushOperationResponse' | |
- $ref: '#/components/schemas/RebuildOperationResponse' | |
- $ref: '#/components/schemas/RefreshOperationResponse' | |
- $ref: '#/components/schemas/RestartOperationResponse' | |
- $ref: '#/components/schemas/ScrubOperationResponse' | |
- $ref: '#/components/schemas/UpgradeSSTablesOperationResponse' | |
- $ref: '#/components/schemas/ImportOperationResponse' | |
- $ref: '#/components/schemas/TruncateOperationResponse' | |
- $ref: '#/components/schemas/BackupOperationResponse' | |
- $ref: '#/components/schemas/RestoreOperationResponse' | |
/operations/{operationId}: | |
get: | |
tags: | |
- "operations" | |
summary: "abc" | |
parameters: | |
- name: "operationId" | |
in: "path" | |
description: "ID of operation to return" | |
required: true | |
schema: | |
type: "string" | |
format: "uuid" | |
responses: | |
"200": | |
description: "Returns a submitted operation" | |
"404": | |
description: "Return code in case there is not any operation under such operationId" | |
/version: | |
get: | |
tags: | |
- "version" | |
summary: "returns version of Cassandra Sidecar itself" | |
responses: | |
"200": | |
description: "Cassandra Sidecar version response object" | |
content: | |
application/json: | |
schema: | |
$ref: "#/components/schemas/SidecarVersion" | |
/version/sidecar: | |
get: | |
tags: | |
- "version" | |
summary: "alias for /version endpoint, returns version of Cassandra Sidecar itself" | |
responses: | |
"200": | |
description: "Cassandra Sidecar version response object" | |
content: | |
application/json: | |
schema: | |
$ref: "#/components/schemas/SidecarVersion" | |
/version/cassandra: | |
get: | |
tags: | |
- "version" | |
summary: "returns version of Cassandra node" | |
responses: | |
"200": | |
description: "Cassandra version response object" | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CassandraVersion' | |
/version/schema: | |
get: | |
tags: | |
- "version" | |
summary: "returns schema version this Cassandra node is on, same as calling StorageServiceMBean#getSchemaVersion" | |
responses: | |
"200": | |
description: "Version of Cassandra schema" | |
content: | |
application/json: | |
schema: | |
$ref: "#/components/schemas/CassandraSchemaVersion" | |
"500": | |
description: "response with exception causing this server error" | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CassandraSchemaVersionException' | |
/config: | |
get: | |
tags: | |
- "config" | |
summary: "returns configuration of a Cassandra node as in its cassandra.yaml file" | |
responses: | |
"200": | |
description: "Configuration of Cassandra node as in /var/lib/cassandra" | |
"404": | |
description: "cassandra.yaml file was not found in /var/lib/cassandra" | |
"500": | |
description: "Unable to read cassandra.yaml file" | |
/status: | |
get: | |
tags: | |
- "status" | |
summary: "returns a state of a Cassandra node" | |
responses: | |
"200": | |
description: "returns a state of a Cassandra node" | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CassandraStatus' | |
"500": | |
description: "returns exception causing this server error" | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/CassandraStatusException' | |
components: | |
schemas: | |
CleanupOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/CleanupOperationRequest' | |
DecommissionOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/DecommissionOperationRequest' | |
DrainOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/DrainOperationRequest' | |
FlushOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/FlushOperationRequest' | |
RebuildOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/RebuildOperationRequest' | |
RefreshOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/RefreshOperationRequest' | |
RestartOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/RestartOperationRequest' | |
ScrubOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/ScrubOperationRequest' | |
UpgradeSSTablesOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/UpgradeSSTablesOperationRequest' | |
ImportOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/ImportOperationRequest' | |
TruncateOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/TruncateOperationRequest' | |
BackupOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/BackupOperationRequest' | |
RestoreOperationResponse: | |
type: "object" | |
allOf: | |
- $ref: '#/components/schemas/BaseOperation' | |
- $ref: '#/components/schemas/RestoreOperationRequest' | |
BaseOperation: | |
type: object | |
readOnly: true | |
required: | |
- type | |
- id | |
- state | |
- progress | |
- creationTime | |
properties: | |
type: | |
type: string | |
description: > | |
type of operation, each operation has to have its type - based on this type, | |
type of operation reflects type of request submitted, these types are always same. | |
id: | |
type: string | |
description: > | |
unique identifier of an operation, a random id is assigned to each operation after | |
a request is submitted, from caller's perspective, an id is sent back as a response | |
to his request so he can further query state of that operation, referencing id, | |
by operations/{id} endpoint | |
state: | |
type: string | |
description: > | |
state of an operation, operation might be in various states, PENDING - this | |
operation is pending for being submitted. RUNNING - this operation is actively | |
doing its job, COMPLETED - this operation has finished successfully, CANCELLED - | |
this operation was interrupted while being run, FAILED - this operation has | |
finished errorneously | |
enum: | |
- "PENDING" | |
- "RUNNING" | |
- "COMPLETED" | |
- "CANCELLED" | |
- "FAILED" | |
progress: | |
type: string | |
format: float | |
description: > | |
float from 0.0 to 1.0, 1.0 telling that operation is completed, | |
either successfully or with errors. | |
creationTime: | |
type: string | |
format: date-time | |
description: > | |
timestamp telling when this operation was created on Sidecar's side | |
startTime: | |
type: string | |
format: date-time | |
description: > | |
timestamp telling when this operation was started by Sidecar, if an operation | |
is created, it does not necessarily mean that it will be started right away, | |
in most cases it is the case but if e.g. ExecutorService is full on its working thread, | |
an execution of an operation is postponed and start time is updated only after that | |
completionTime: | |
type: string | |
format: date-time | |
description: > | |
timestamp telling when an operation has finished, irrelevant of its result, an | |
operation can be failed and it would still have this field populated. | |
failureCause: | |
type: object | |
description: > | |
This field contains serialized java.lang.Throwable in case this operation has failed | |
BackupOperationRequest: | |
type: "object" | |
required: | |
- type | |
- storageLocation | |
example: > | |
{ | |
"type": "backup", | |
"storageLocation": gcp://bucket/cluster/dc/node, | |
"snapshotTag": "hello", | |
"entities": "abc.def" | |
} | |
properties: | |
type: | |
type: string | |
description: > | |
type of operation, one has to set it to 'backup' in case he wants this | |
request to be considered as a backup one | |
storageLocation: | |
type: string | |
description: > | |
location where SSTables will be uploaded. A value of the storageLocation property | |
has to have exact format which is 'protocol://bucket/clusterName/dcName/nodeName'. | |
protocol is either 'gcp', 's3', 'azure' or 'file:/'. For global requests, dcName and | |
nodeName are changed automatically as these values are read from Cassandra and | |
storageLocation is updated automatically for every node a specific backup request | |
will be submitted to so the value of dcName and nodeName is irrelevant for global requests | |
as they will be modified every time, a bucket does not need to exist, it will be created | |
automatically if it does not, clusterName has to be specified. There might be automatic | |
resolution of clusterName in the future however for now, one has to supply this | |
property on his own. | |
example: > | |
gcp://myBucket/dev-cluster/dc1/node1 | |
cassandraDirectory: | |
type: string | |
description: > | |
directory of Cassandra, by default it is /var/lib/cassandra, | |
in this path, one expects there is 'data' directory | |
example: /var/lib/cassandra | |
duration: | |
type: string | |
description: > | |
Based on this field, there will be throughtput per second computed based on what size | |
data we want to upload we have. The formula is "size / duration". The lower the duration is, | |
the higher throughput per second we will need and vice versa. This will influence e.g. responsiveness | |
of a node to its business requests so one can control how much bandwidth is used for backup | |
purposes in case a cluster is fully operational. The format of this field is "amount unit". | |
'unit' is just a (case-insensitive) java.util.concurrent.TimeUnit enum value. If not used, | |
there will not be any restrictions as how fast an upload can be. | |
example: > | |
1 hour | |
bandwidth: | |
$ref: '#/components/schemas/DataRate' | |
concurrentConnections: | |
type: integer | |
description: > | |
number of threads used for upload, there might be at most so many uploading threads at any given time, | |
when not set, it defaults to 10 | |
lockFile: | |
type: string | |
description: > | |
path to file which will be used for locking the critical logic dealing with backups, this locking is done | |
by locking a file on a file system so other execution will not proceed until the former one has finished. By | |
default, this path is System.getProperty("java.io.tmpdir") + "/global-transfer-lock". | |
snapshotTag: | |
type: string | |
description: > | |
name of snapshot to make so this snapshot will be uploaded to storage location. If not specified, the | |
name of snapshot will be automatically generated and it will have name 'autosnap-milliseconds-since-epoch' | |
example: "mySnapshot" | |
dc: | |
type: string | |
description: > | |
name of datacenter to backup, nodes in the other datacenter(s) will not be involved | |
example: | |
dc1 | |
entities: | |
type: string | |
description: | |
database entities to backup, it might be either only keyspaces or only tables (from different keyspaces if needed), | |
e.g. 'k1,k2' if one wants to backup whole keyspaces and 'ks1.t1,ks2,t2' if one wants to backup tables. These formats | |
can not be used together so 'k1,k2.t2' is invalid. If this field is empty, all keyspaces are backed up. | |
example: | |
ks1,ks2 | |
k8sNamespace: | |
type: string | |
description: > | |
name of Kubernetes namespace to fetch Kubernetes secret for backups from, when not specified, it defaults to 'default' | |
k8sBackupSecretName: | |
type: string | |
description: > | |
name of Kubernetes secret from which credentials used for the communication to cloud | |
storage providers are read, if not specified, secret name to be read will be automatically | |
derived in form 'cassandra-backup-restore-secret-cluster-{name-of-cluster}'. These secrets are used only in case | |
protocol in storageLocation is gcp, azure or s3. | |
globalRequest: | |
type: boolean | |
description: > | |
flag saying if this request is meant to be global or not, once a global backup request is submitted to Sidecar, | |
it will coordinate backup for all other nodes in a cluster (including itself) so from a point of view of a caller, | |
one might just backup whole cluster by one request and repeatedly query its status based on returned operation id. | |
RestoreOperationRequest: | |
type: "object" | |
required: | |
- type | |
- snapshotTag | |
- storageLocation | |
example: | |
{ | |
"type": "restore", | |
"cassandraDirectory": "/var/lib/cassandra", | |
"cassandraConfigDirectory": "/var/lib/cassandra", | |
"storageLocation": "gcp://bucket/cluster/dc/node", | |
"snapshotTag": "hello", | |
"entities": "abc.def", | |
"restorationStrategyType": "hardlinks", | |
"restorationPhase": "download", | |
"import": { | |
"type": "import", | |
"sourceDir": "/var/lib/cassandra/data/downloadedsstables" | |
}, | |
"globalRequest": "true" | |
} | |
properties: | |
type: | |
type: string | |
description: > | |
type of operation, one has to set it to 'restore' in case he wants this request to be considered as a backup one | |
storageLocation: | |
type: string | |
description: > | |
similar to field in backup request but used for telling from where files should be downloaded, not uploaded, | |
in case globalRequest field is set to true, it does not matter what dc and node id is used, these components | |
in storageLocation path will be automatically changed. | |
concurrentConnections: | |
type: integer | |
description: > | |
similar to field in backup request but used for downloading files, not uploading them | |
lockFile: | |
type: string | |
description: > | |
similar to field in backup request | |
cassandraDirectory: | |
type: string | |
description: > | |
similar to field in backup request | |
cassandraConfigDirectory: | |
type: string | |
description: > | |
directory where one expects to find 'conf/cassandra.yaml' file in case we need to update it with initial tokens | |
in case restoration strategy is IN_PLACE. | |
restoreSystemKeyspace: | |
type: boolean | |
description: > | |
a flag saying if we should restore system keyspaces as well, relevant only for IN_PLACE restoration | |
snapshotTag: | |
type: string | |
description: > | |
name of snapshot to restore | |
entities: | |
type: string | |
description: > | |
similar to field in backup request, when empty, all entities in given snapshot will be restored | |
updateCassandraYaml: | |
type: boolean | |
description: > | |
flag telling if cassandra.yaml should be updated with initial_tokens, relevant only in case of IN_PLACE strategy | |
restorationStrategyType: | |
type: string | |
description: > | |
strategy telling how we should go about restoration, please refer to details in backup and sidecar documentation | |
enum: | |
- IN_PLACE | |
- HARDLINKS | |
- IMPORT | |
restorationPhase: | |
description: > | |
phase telling what should we do, this field has to be set just once as DOWNLOAD if globalRequest if true and | |
coordinator of that request will take care of all other phases automatically on its own | |
type: string | |
enum: | |
- DOWNLOAD | |
- TRUNCATE | |
- IMPORT | |
- CLEANUP | |
noDeleteTruncates: | |
type: boolean | |
description: > | |
flag saying if we should not delete truncated SSTables after they are imported, as part of CLEANUP phase, defaults to false | |
noDeleteDownloads: | |
type: boolean | |
description: > | |
flag saying if we should not delete downloaded SSTables from remote location, as part of CLEANUP phase, defaults to false | |
noDownloadData: | |
type: boolean | |
description: > | |
flag saying if we should not download data from remote location as we expect them to be there already, defaults to false, | |
setting this to true has sense only in case noDeleteDownloads was set to true in previous restoration requests | |
schemaVersion: | |
type: string | |
description: > | |
version of schema we want to restore from, upon backup, a schema version is automatically appended to snapshot name and | |
its manifest is uploaded under that name. In case we have two snapshots having same name, we might distinguish between them | |
by this schema version. If schema version is not specified, we expect that there will be one and only one backup taken with | |
respective snapshot name. This schema version has to match the version of a Cassandra node we are doing restore for (hence, | |
by proxy, when global request mode is used, all nodes have to be on exact same schema version). | |
exactSchemaVersion: | |
type: boolean | |
description: > | |
flag saying if we indeed want a schema version of a running node match with schema version a snapshot is taken on. | |
there might be cases when we want to restore a table for which its CQL schema has not changed but it has changed for | |
other table / keyspace but a schema for that node has changed by doing that. | |
import: | |
allOf: | |
- $ref: '#/components/schemas/ImportOperationRequest' | |
globalRequest: | |
type: boolean | |
description: > | |
flag saying that this request is a global one, meaning that a Sidecar this request is sent to will act as a restoration | |
coordinator sending all other requests to each node in a cluster, for each phase. | |
ImportOperationRequest: | |
type: "object" | |
description: > | |
object used upon restoration, keyspace and table fields do not need to be set when restoration strategy type is | |
IMPORT or HARDLINKS as this object will be initialised for each entities entry with right keyspace and table. | |
'sourceDir' property is used for pointing to a directory where we expect to find downloaded SSTables. This in turn means that | |
all SSTables and other meta files will be downloaded into this directory (from which they will be fed to CFSMB). | |
All other fields are taken from ColumnFamilyStoreMBean#importNewSSTables. | |
required: | |
- type | |
- sourceDir | |
properties: | |
type: | |
type: string | |
description: > | |
has to be set to 'import' | |
keyspace: | |
type: string | |
table: | |
type: string | |
sourceDir: | |
type: string | |
keepLevel: | |
type: boolean | |
keepRepaired: | |
type: boolean | |
noVerify: | |
type: boolean | |
noVerifyTokens: | |
type: boolean | |
noInvalidateCaches: | |
type: boolean | |
quick: | |
type: boolean | |
description: > | |
defaults to false, if true, noVerifyTokens, noInvalidateCaches and noVerify will be set to true automatically | |
extendedVerify: | |
type: boolean | |
CleanupOperationRequest: | |
type: "object" | |
required: | |
- type | |
- keyspace | |
description: > | |
triggers the immediate cleanup of keys no longer belonging to a node. By default, clean all keyspaces. | |
properties: | |
type: | |
type: string | |
keyspace: | |
type: string | |
description: > | |
keyspace to cleanup | |
tables: | |
type: array | |
items: | |
type: string | |
description: > | |
tables to cleanup, when not specified, all tables in a keyspace will be cleaned up | |
jobs: | |
type: integer | |
description: > | |
number of jobs to use, never uses more that concurrent_compactor threads | |
DecommissionOperationRequest: | |
type: "object" | |
required: | |
- type | |
description: > | |
decommissions a Cassandra node | |
properties: | |
type: | |
type: string | |
force: | |
type: boolean | |
description: > | |
forcibly decommission a node, even if by doing so there will not be | |
enough replicas for responding to requests, this option is relevant only for Cassandra 4.x | |
and it is not in use for lower versions, defaults to false. | |
DrainOperationRequest: | |
type: "object" | |
required: | |
- type | |
description: > | |
drain a node, this operation will be successful only in case a node is in state NORMAL, | |
when a node was already drained or it is in the middle of draining, this operation returns immediately. | |
properties: | |
type: | |
type: string | |
FlushOperationRequest: | |
type: "object" | |
required: | |
- type | |
- keyspace | |
description: > | |
flushes tables of a keyspace or all tables of a keyspace when tables are not specified | |
properties: | |
type: | |
type: string | |
keyspace: | |
type: string | |
description: > | |
keyspace to flush | |
tables: | |
type: array | |
items: | |
type: string | |
description: > | |
tables to flush, if not provided or empty, flush all tables in a keyspace | |
RebuildOperationRequest: | |
type: "object" | |
required: | |
- type | |
description: > | |
rebuilds data by streaming from other nodes, | |
properties: | |
type: | |
type: string | |
keyspace: | |
type: string | |
description: > | |
specific keyspace to rebuild, if not specified, all keyspaces are rebuilt | |
sourceDC: | |
type: string | |
description: > | |
name of DC from which to select sources for streaming, by default, pick any DC | |
specificTokens: | |
type: array | |
items: | |
$ref: '#/components/schemas/TokenRange' | |
description: > | |
rebuild specific token ranges | |
specificSources: | |
type: array | |
items: | |
type: string | |
description: > | |
specify hosts that this node should stream from when specificTokens are used | |
DataRate: | |
type: object | |
required: | |
- unit | |
description: > | |
bandwidth used during uploads | |
properties: | |
value: | |
type: integer | |
description: > | |
quantified value of bandwidth, an integer | |
unit: | |
type: string | |
description: > | |
unit of 'data bandwidth' | |
enum: | |
- "BPS" | |
- "KBPS" | |
- "MBPS" | |
- "GBPS" | |
TokenRange: | |
type: object | |
required: | |
- start | |
- end | |
properties: | |
start: | |
type: string | |
description: > | |
starting token of a range | |
end: | |
type: string | |
description: > | |
ending token of a range | |
RefreshOperationRequest: | |
type: "object" | |
required: | |
- type | |
- keyspace | |
- table | |
description: > | |
refreshes a table, this is done by calling StorageServiceMBean#loadNewSSTables | |
properties: | |
type: | |
type: string | |
keyspace: | |
type: string | |
description: > | |
keyspace to refresh | |
table: | |
type: string | |
description: > | |
table to refresh | |
RestartOperationRequest: | |
type: "object" | |
required: | |
- type | |
description: > | |
restarts a Cassandra node this Sidecar talks to. This operation will be successfully | |
carried out only in case both Cassandra node as well as this Sidecar are running in Kubernetes. | |
There is an assumption that Cassandra node and Sidecar are running in separate Docker containers as part | |
of the same Kubernetes Pod. The restart is done by executing "/bin/kill 1" of Cassandra container where | |
pid 1 stands for Cassandra process. The logic behind restart is that Kubernetes detects that container has | |
finished and it will start it again on its own. Before Cassandra node is stopped, it is drained first so | |
there are not any requests comming to this node whatsover hence restart is safe. | |
properties: | |
type: | |
type: string | |
ScrubOperationRequest: | |
type: "object" | |
required: | |
- type | |
- keyspace | |
properties: | |
type: | |
type: string | |
keyspace: | |
type: string | |
description: > | |
keyspace to scrub | |
tables: | |
type: array | |
items: | |
type: string | |
description: > | |
tables to scrub, empty or not provided will scrub all tables in respective keyspace | |
jobs: | |
type: integer | |
description: > | |
number of sstables to scrub simultanously, set to 0 to use all available compaction threads | |
disableSnapshot: | |
type: boolean | |
description: > | |
scrubbed CFs will be snapshotted first, defaults to false | |
skipCorrupted: | |
type: boolean | |
description: > | |
skip corrupted partitions even when scrubbing counter tables, defaults to false | |
noValidate: | |
type: boolean | |
description: > | |
do not validate columns using column validator, defaults to false | |
reinsertOverflowedTTL: | |
type: boolean | |
description: > | |
Rewrites rows with overflowed expiration date affected by | |
CASSANDRA-14092 with the maximum supported expiration date of | |
2038-01-19T03:14:06+00:00. The rows are rewritten with the original | |
timestamp incremented by one millisecond to override/supersede any | |
potential tombstone that may have been generated during compaction | |
of the affected rows. | |
UpgradeSSTablesOperationRequest: | |
type: object | |
required: | |
- type | |
- keyspace | |
properties: | |
type: | |
type: string | |
keyspace: | |
type: string | |
description: > | |
keyspace to upgrade SSTables of | |
tables: | |
type: array | |
items: | |
type: string | |
description: > | |
an array of tables to upgrade SSTables of, empty or not provided array will default to upgrading of | |
SSTables of all tables in respective keyspace | |
jobs: | |
type: integer | |
description: > | |
the number of threads to use - 0 means use all available, | |
it never uses more than concurrent_compactor threads | |
includeAllSStables: | |
type: boolean | |
description: "include all sstables, even those already on the current version, defaults to false" | |
TruncateOperationRequest: | |
type: object | |
required: | |
- type | |
- keyspace | |
- table | |
properties: | |
type: | |
type: string | |
keyspace: | |
type: string | |
description: "keyspace to truncate" | |
table: | |
type: string | |
description: "table to truncate" | |
CassandraVersion: | |
type: "object" | |
properties: | |
major: | |
type: integer | |
example: 3 | |
minor: | |
type: integer | |
example: 11 | |
patch: | |
type: integer | |
example: 7 | |
dsePatch: | |
type: integer | |
example: -1 | |
preReleaseLabels: | |
type: array | |
description: "Labels for Cassandra version, e.g. SNAPSHOT" | |
example: ["SNAPSHOT"] | |
items: | |
type: string | |
SidecarVersion: | |
type: "object" | |
properties: | |
version: | |
type: "string" | |
description: "textual representation of Sidecar version" | |
example: "cassandra-sidecar 1.1.0" | |
buildTime: | |
type: "string" | |
format: "date-time" | |
description: "timestamp this Sidecar was built" | |
example: "2020-05-28T22:26:50+0200" | |
gitCommit: | |
type: "string" | |
description: "git commit hash this Sidecar was built from" | |
example: "8e59dd8d9032429c4f8defd4024ee791d9e06de8" | |
CassandraSchemaVersion: | |
type: "object" | |
properties: | |
schemaVersion: | |
type: "string" | |
description: "UUID representing a version of Cassandra node as reported by its StorageServiceMBean#getSchemaVersion" | |
example: "329319a5-cc1b-3db3-8001-c179b4063d04" | |
CassandraSchemaVersionException: | |
type: "object" | |
properties: | |
exception: | |
type: object | |
CassandraStatus: | |
type: "object" | |
properties: | |
nodeState: | |
type: string | |
description: "State of a Cassandra node as reported from StorageServiceMBean#getOperationMode" | |
enum: | |
- "STARTING" | |
- "NORMAL" | |
- "JOINING" | |
- "LEAVING" | |
- "DECOMMISSIONED" | |
- "MOVING" | |
- "DRAINING" | |
- "DRAINED" | |
CassandraStatusException: | |
type: "object" | |
properties: | |
exception: | |
type: object |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment