mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-02 13:06:57 +00:00
Description of storage options is important for S3, as one
needs to know if underlying storage is either local or
remote, and if the latter, details about it.
This relies on server-side desc statement.
$ ./bin/cqlsh.py -e "describe keyspace1;"
CREATE KEYSPACE keyspace1 WITH replication = { ... } AND
storage = {'type': 'S3', 'bucket': 'sstables',
'endpoint': '127.0.0.1:9000'} AND
durable_writes = true;
Fixes #13507.
Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com>
Closes #13510
43 lines
929 B
C++
43 lines
929 B
C++
/*
|
|
* Copyright (C) 2021-present ScyllaDB
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <string>
|
|
#include <map>
|
|
#include <seastar/core/sstring.hh>
|
|
#include "seastarx.hh"
|
|
|
|
namespace data_dictionary {
|
|
|
|
struct storage_options {
|
|
struct local {
|
|
friend auto operator<=>(const local&, const local&) = default;
|
|
};
|
|
struct s3 {
|
|
sstring bucket;
|
|
sstring endpoint;
|
|
|
|
friend auto operator<=>(const s3&, const s3&) = default;
|
|
};
|
|
using value_type = std::variant<local, s3>;
|
|
value_type value = local{};
|
|
|
|
storage_options() = default;
|
|
|
|
bool is_local_type() const noexcept;
|
|
std::string_view type_string() const;
|
|
std::map<sstring, sstring> to_map() const;
|
|
|
|
bool can_update_to(const storage_options& new_options);
|
|
|
|
static value_type from_map(std::string_view type, std::map<sstring, sstring> values);
|
|
};
|
|
|
|
} // namespace data_dictionary
|