couchbase 3.1.1-universal-darwin-20 → 3.2.0-universal-darwin-20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/ext/CMakeLists.txt +3 -1
- data/ext/build_version.hxx.in +1 -1
- data/ext/cmake/Testing.cmake +1 -0
- data/ext/cmake/ThirdPartyDependencies.cmake +6 -0
- data/ext/cmake/VersionInfo.cmake +3 -0
- data/ext/couchbase/bucket.hxx +47 -28
- data/ext/couchbase/cbsasl/client.h +1 -1
- data/ext/couchbase/cbsasl/context.cc +1 -1
- data/ext/couchbase/cbsasl/context.h +3 -3
- data/ext/couchbase/cbsasl/mechanism.cc +5 -8
- data/ext/couchbase/cbsasl/mechanism.h +1 -4
- data/ext/couchbase/cbsasl/plain/plain.cc +1 -1
- data/ext/couchbase/cbsasl/scram-sha/scram-sha.cc +30 -36
- data/ext/couchbase/cluster.hxx +40 -22
- data/ext/couchbase/cluster_options.hxx +7 -1
- data/ext/couchbase/configuration.hxx +37 -16
- data/ext/couchbase/couchbase.cxx +1145 -291
- data/ext/couchbase/error_map.hxx +1 -1
- data/ext/couchbase/errors.hxx +25 -17
- data/ext/couchbase/io/dns_client.hxx +3 -3
- data/ext/couchbase/io/dns_codec.hxx +4 -5
- data/ext/couchbase/io/dns_config.hxx +5 -6
- data/ext/couchbase/io/dns_message.hxx +3 -3
- data/ext/couchbase/io/http_command.hxx +70 -35
- data/ext/couchbase/io/http_session.hxx +4 -3
- data/ext/couchbase/io/http_session_manager.hxx +28 -19
- data/ext/couchbase/io/mcbp_command.hxx +51 -19
- data/ext/couchbase/io/mcbp_context.hxx +1 -1
- data/ext/couchbase/io/mcbp_parser.hxx +4 -4
- data/ext/couchbase/io/mcbp_session.hxx +91 -101
- data/ext/couchbase/io/query_cache.hxx +2 -2
- data/ext/couchbase/io/retry_orchestrator.hxx +2 -4
- data/ext/couchbase/io/retry_reason.hxx +2 -2
- data/ext/couchbase/io/retry_strategy.hxx +1 -6
- data/ext/couchbase/io/streams.hxx +7 -7
- data/ext/couchbase/metrics/logging_meter.hxx +228 -0
- data/ext/couchbase/metrics/logging_meter_options.hxx +28 -0
- data/ext/couchbase/metrics/meter.hxx +49 -0
- data/ext/couchbase/metrics/noop_meter.hxx +43 -0
- data/ext/couchbase/operations.hxx +4 -0
- data/ext/couchbase/operations/analytics_dataset_create.hxx +16 -12
- data/ext/couchbase/operations/analytics_dataset_drop.hxx +11 -11
- data/ext/couchbase/operations/analytics_dataset_get_all.hxx +6 -6
- data/ext/couchbase/operations/analytics_dataverse_create.hxx +10 -11
- data/ext/couchbase/operations/analytics_dataverse_drop.hxx +10 -11
- data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +9 -11
- data/ext/couchbase/operations/analytics_index_create.hxx +14 -13
- data/ext/couchbase/operations/analytics_index_drop.hxx +18 -12
- data/ext/couchbase/operations/analytics_index_get_all.hxx +8 -6
- data/ext/couchbase/operations/analytics_link.hxx +39 -0
- data/ext/couchbase/operations/analytics_link_azure_blob_external.hxx +145 -0
- data/ext/couchbase/operations/analytics_link_connect.hxx +14 -12
- data/ext/couchbase/operations/analytics_link_couchbase_remote.hxx +220 -0
- data/ext/couchbase/operations/analytics_link_create.hxx +128 -0
- data/ext/couchbase/operations/analytics_link_disconnect.hxx +11 -12
- data/ext/couchbase/operations/analytics_link_drop.hxx +130 -0
- data/ext/couchbase/operations/analytics_link_get_all.hxx +160 -0
- data/ext/couchbase/operations/analytics_link_replace.hxx +128 -0
- data/ext/couchbase/operations/analytics_link_s3_external.hxx +122 -0
- data/ext/couchbase/operations/bucket_create.hxx +8 -8
- data/ext/couchbase/operations/bucket_drop.hxx +5 -5
- data/ext/couchbase/operations/bucket_flush.hxx +5 -5
- data/ext/couchbase/operations/bucket_get.hxx +7 -7
- data/ext/couchbase/operations/bucket_get_all.hxx +7 -5
- data/ext/couchbase/operations/bucket_settings.hxx +40 -49
- data/ext/couchbase/operations/bucket_update.hxx +8 -8
- data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +7 -7
- data/ext/couchbase/operations/collection_create.hxx +11 -11
- data/ext/couchbase/operations/collection_drop.hxx +12 -10
- data/ext/couchbase/operations/collections_manifest_get.hxx +3 -3
- data/ext/couchbase/operations/design_document.hxx +2 -2
- data/ext/couchbase/operations/document_analytics.hxx +29 -36
- data/ext/couchbase/operations/document_append.hxx +3 -3
- data/ext/couchbase/operations/document_decrement.hxx +3 -3
- data/ext/couchbase/operations/document_exists.hxx +2 -2
- data/ext/couchbase/operations/document_get.hxx +3 -3
- data/ext/couchbase/operations/document_get_and_lock.hxx +5 -3
- data/ext/couchbase/operations/document_get_and_touch.hxx +5 -3
- data/ext/couchbase/operations/document_get_projected.hxx +10 -11
- data/ext/couchbase/operations/document_increment.hxx +3 -3
- data/ext/couchbase/operations/document_insert.hxx +3 -3
- data/ext/couchbase/operations/document_lookup_in.hxx +12 -18
- data/ext/couchbase/operations/document_mutate_in.hxx +13 -18
- data/ext/couchbase/operations/document_prepend.hxx +3 -3
- data/ext/couchbase/operations/document_query.hxx +39 -41
- data/ext/couchbase/operations/document_remove.hxx +3 -3
- data/ext/couchbase/operations/document_replace.hxx +3 -3
- data/ext/couchbase/operations/document_search.hxx +56 -61
- data/ext/couchbase/operations/document_touch.hxx +3 -3
- data/ext/couchbase/operations/document_unlock.hxx +3 -3
- data/ext/couchbase/operations/document_upsert.hxx +3 -3
- data/ext/couchbase/operations/document_view.hxx +23 -23
- data/ext/couchbase/operations/group_drop.hxx +5 -5
- data/ext/couchbase/operations/group_get.hxx +7 -7
- data/ext/couchbase/operations/group_get_all.hxx +6 -6
- data/ext/couchbase/operations/group_upsert.hxx +11 -11
- data/ext/couchbase/operations/http_noop.hxx +6 -6
- data/ext/couchbase/operations/mcbp_noop.hxx +3 -3
- data/ext/couchbase/operations/query_index_build_deferred.hxx +6 -6
- data/ext/couchbase/operations/query_index_create.hxx +10 -8
- data/ext/couchbase/operations/query_index_drop.hxx +8 -8
- data/ext/couchbase/operations/query_index_get_all.hxx +43 -39
- data/ext/couchbase/operations/rbac.hxx +40 -63
- data/ext/couchbase/operations/role_get_all.hxx +6 -6
- data/ext/couchbase/operations/scope_create.hxx +10 -10
- data/ext/couchbase/operations/scope_drop.hxx +9 -9
- data/ext/couchbase/operations/scope_get_all.hxx +8 -8
- data/ext/couchbase/operations/search_get_stats.hxx +5 -3
- data/ext/couchbase/operations/search_index.hxx +6 -15
- data/ext/couchbase/operations/search_index_analyze_document.hxx +11 -11
- data/ext/couchbase/operations/search_index_control_ingest.hxx +9 -9
- data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +9 -9
- data/ext/couchbase/operations/search_index_control_query.hxx +9 -9
- data/ext/couchbase/operations/search_index_drop.hxx +11 -9
- data/ext/couchbase/operations/search_index_get.hxx +11 -9
- data/ext/couchbase/operations/search_index_get_all.hxx +11 -11
- data/ext/couchbase/operations/search_index_get_documents_count.hxx +10 -10
- data/ext/couchbase/operations/search_index_get_stats.hxx +10 -8
- data/ext/couchbase/operations/search_index_upsert.hxx +12 -10
- data/ext/couchbase/operations/user_drop.hxx +5 -5
- data/ext/couchbase/operations/user_get.hxx +7 -7
- data/ext/couchbase/operations/user_get_all.hxx +6 -6
- data/ext/couchbase/operations/user_upsert.hxx +9 -9
- data/ext/couchbase/operations/view_index_drop.hxx +10 -10
- data/ext/couchbase/operations/view_index_get.hxx +13 -15
- data/ext/couchbase/operations/view_index_get_all.hxx +17 -20
- data/ext/couchbase/operations/view_index_upsert.hxx +9 -7
- data/ext/couchbase/origin.hxx +14 -10
- data/ext/couchbase/platform/backtrace.c +1 -1
- data/ext/couchbase/platform/base64.cc +5 -5
- data/ext/couchbase/platform/base64.h +2 -5
- data/ext/couchbase/protocol/client_opcode.hxx +7 -4
- data/ext/couchbase/protocol/client_request.hxx +2 -2
- data/ext/couchbase/protocol/client_response.hxx +41 -16
- data/ext/couchbase/protocol/cmd_append.hxx +17 -16
- data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +4 -4
- data/ext/couchbase/protocol/cmd_decrement.hxx +10 -11
- data/ext/couchbase/protocol/cmd_exists.hxx +12 -15
- data/ext/couchbase/protocol/cmd_get.hxx +11 -14
- data/ext/couchbase/protocol/cmd_get_and_lock.hxx +10 -12
- data/ext/couchbase/protocol/cmd_get_and_touch.hxx +10 -12
- data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +13 -18
- data/ext/couchbase/protocol/cmd_get_collection_id.hxx +12 -15
- data/ext/couchbase/protocol/cmd_get_collections_manifest.hxx +12 -16
- data/ext/couchbase/protocol/cmd_get_error_map.hxx +14 -17
- data/ext/couchbase/protocol/cmd_hello.hxx +8 -10
- data/ext/couchbase/protocol/cmd_increment.hxx +9 -10
- data/ext/couchbase/protocol/cmd_insert.hxx +9 -9
- data/ext/couchbase/protocol/cmd_lookup_in.hxx +12 -13
- data/ext/couchbase/protocol/cmd_mutate_in.hxx +11 -11
- data/ext/couchbase/protocol/cmd_noop.hxx +16 -20
- data/ext/couchbase/protocol/cmd_prepend.hxx +9 -10
- data/ext/couchbase/protocol/cmd_remove.hxx +10 -13
- data/ext/couchbase/protocol/cmd_replace.hxx +7 -7
- data/ext/couchbase/protocol/cmd_sasl_auth.hxx +8 -10
- data/ext/couchbase/protocol/cmd_sasl_list_mechs.hxx +10 -15
- data/ext/couchbase/protocol/cmd_sasl_step.hxx +10 -12
- data/ext/couchbase/protocol/cmd_select_bucket.hxx +14 -18
- data/ext/couchbase/protocol/cmd_touch.hxx +8 -11
- data/ext/couchbase/protocol/cmd_unlock.hxx +10 -14
- data/ext/couchbase/protocol/cmd_upsert.hxx +8 -8
- data/ext/couchbase/protocol/datatype.hxx +3 -3
- data/ext/couchbase/protocol/durability_level.hxx +2 -2
- data/ext/couchbase/protocol/frame_info_id.hxx +4 -4
- data/ext/couchbase/protocol/hello_feature.hxx +2 -2
- data/ext/couchbase/protocol/magic.hxx +2 -2
- data/ext/couchbase/protocol/server_opcode.hxx +2 -2
- data/ext/couchbase/protocol/server_request.hxx +1 -1
- data/ext/couchbase/protocol/status.hxx +4 -7
- data/ext/couchbase/protocol/unsigned_leb128.h +5 -20
- data/ext/couchbase/service_type.hxx +4 -4
- data/ext/couchbase/tracing/constants.hxx +261 -0
- data/ext/couchbase/tracing/noop_tracer.hxx +50 -0
- data/ext/couchbase/tracing/request_tracer.hxx +77 -0
- data/ext/couchbase/tracing/threshold_logging_options.hxx +64 -0
- data/ext/couchbase/tracing/threshold_logging_tracer.hxx +366 -0
- data/ext/couchbase/utils/byteswap.hxx +1 -1
- data/ext/couchbase/utils/connection_string.hxx +21 -1
- data/ext/couchbase/utils/name_codec.hxx +41 -0
- data/ext/couchbase/utils/url_codec.hxx +236 -0
- data/ext/couchbase/version.hxx +1 -1
- data/ext/test/CMakeLists.txt +1 -0
- data/ext/test/test_native_trivial_query.cxx +60 -0
- data/ext/third_party/hdr_histogram_c/CMakeLists.txt +84 -0
- data/ext/third_party/hdr_histogram_c/COPYING.txt +121 -0
- data/ext/third_party/hdr_histogram_c/LICENSE.txt +41 -0
- data/ext/third_party/hdr_histogram_c/config.cmake.in +6 -0
- data/ext/third_party/hdr_histogram_c/src/CMakeLists.txt +83 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_atomic.h +146 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_encoding.c +322 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_encoding.h +79 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_endian.h +116 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_histogram.c +1196 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_histogram.h +516 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_histogram_log.c +1290 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_histogram_log.h +236 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_histogram_log_no_op.c +171 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_interval_recorder.c +227 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_interval_recorder.h +109 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_malloc.h +19 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_tests.h +22 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_thread.c +108 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_thread.h +55 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_time.c +98 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_time.h +49 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_writer_reader_phaser.c +143 -0
- data/ext/third_party/hdr_histogram_c/src/hdr_writer_reader_phaser.h +51 -0
- data/lib/couchbase/cluster.rb +1 -0
- data/lib/couchbase/errors.rb +3 -0
- data/lib/couchbase/libcouchbase.bundle +0 -0
- data/lib/couchbase/management/analytics_index_manager.rb +920 -226
- data/lib/couchbase/management/bucket_manager.rb +207 -69
- data/lib/couchbase/management/collection_manager.rb +173 -61
- data/lib/couchbase/management/query_index_manager.rb +357 -169
- data/lib/couchbase/options.rb +75 -3
- data/lib/couchbase/scope.rb +102 -0
- data/lib/couchbase/utils/time.rb +4 -0
- data/lib/couchbase/version.rb +6 -6
- metadata +48 -5
@@ -0,0 +1,143 @@
|
|
1
|
+
/**
|
2
|
+
* hdr_writer_reader_phaser.h
|
3
|
+
* Written by Michael Barker and released to the public domain,
|
4
|
+
* as explained at http://creativecommons.org/publicdomain/zero/1.0/
|
5
|
+
*/
|
6
|
+
|
7
|
+
#include <stdint.h>
|
8
|
+
#include <stdbool.h>
|
9
|
+
#include <errno.h>
|
10
|
+
|
11
|
+
#include "hdr_atomic.h"
|
12
|
+
#include "hdr_thread.h"
|
13
|
+
|
14
|
+
#include "hdr_writer_reader_phaser.h"
|
15
|
+
|
16
|
+
#ifndef HDR_MALLOC_INCLUDE
|
17
|
+
#define HDR_MALLOC_INCLUDE "hdr_malloc.h"
|
18
|
+
#endif
|
19
|
+
|
20
|
+
#include HDR_MALLOC_INCLUDE
|
21
|
+
|
22
|
+
static int64_t _hdr_phaser_get_epoch(int64_t* field)
|
23
|
+
{
|
24
|
+
return hdr_atomic_load_64(field);
|
25
|
+
}
|
26
|
+
|
27
|
+
static void _hdr_phaser_set_epoch(int64_t* field, int64_t val)
|
28
|
+
{
|
29
|
+
hdr_atomic_store_64(field, val);
|
30
|
+
}
|
31
|
+
|
32
|
+
static int64_t _hdr_phaser_reset_epoch(int64_t* field, int64_t initial_value)
|
33
|
+
{
|
34
|
+
return hdr_atomic_exchange_64(field, initial_value);
|
35
|
+
}
|
36
|
+
|
37
|
+
int hdr_writer_reader_phaser_init(struct hdr_writer_reader_phaser* p)
|
38
|
+
{
|
39
|
+
int rc;
|
40
|
+
if (NULL == p)
|
41
|
+
{
|
42
|
+
return EINVAL;
|
43
|
+
}
|
44
|
+
|
45
|
+
p->start_epoch = 0;
|
46
|
+
p->even_end_epoch = 0;
|
47
|
+
p->odd_end_epoch = INT64_MIN;
|
48
|
+
p->reader_mutex = hdr_mutex_alloc();
|
49
|
+
|
50
|
+
if (!p->reader_mutex)
|
51
|
+
{
|
52
|
+
return ENOMEM;
|
53
|
+
}
|
54
|
+
|
55
|
+
rc = hdr_mutex_init(p->reader_mutex);
|
56
|
+
if (0 != rc)
|
57
|
+
{
|
58
|
+
return rc;
|
59
|
+
}
|
60
|
+
|
61
|
+
/* TODO: Should I fence here. */
|
62
|
+
|
63
|
+
return 0;
|
64
|
+
}
|
65
|
+
|
66
|
+
void hdr_writer_reader_phaser_destroy(struct hdr_writer_reader_phaser* p)
|
67
|
+
{
|
68
|
+
hdr_mutex_destroy(p->reader_mutex);
|
69
|
+
hdr_mutex_free(p->reader_mutex);
|
70
|
+
}
|
71
|
+
|
72
|
+
int64_t hdr_phaser_writer_enter(struct hdr_writer_reader_phaser* p)
|
73
|
+
{
|
74
|
+
return hdr_atomic_add_fetch_64(&p->start_epoch, 1);
|
75
|
+
}
|
76
|
+
|
77
|
+
void hdr_phaser_writer_exit(
|
78
|
+
struct hdr_writer_reader_phaser* p, int64_t critical_value_at_enter)
|
79
|
+
{
|
80
|
+
int64_t* end_epoch =
|
81
|
+
(critical_value_at_enter < 0) ? &p->odd_end_epoch : &p->even_end_epoch;
|
82
|
+
hdr_atomic_add_fetch_64(end_epoch, 1);
|
83
|
+
}
|
84
|
+
|
85
|
+
void hdr_phaser_reader_lock(struct hdr_writer_reader_phaser* p)
|
86
|
+
{
|
87
|
+
hdr_mutex_lock(p->reader_mutex);
|
88
|
+
}
|
89
|
+
|
90
|
+
void hdr_phaser_reader_unlock(struct hdr_writer_reader_phaser* p)
|
91
|
+
{
|
92
|
+
hdr_mutex_unlock(p->reader_mutex);
|
93
|
+
}
|
94
|
+
|
95
|
+
void hdr_phaser_flip_phase(
|
96
|
+
struct hdr_writer_reader_phaser* p, int64_t sleep_time_ns)
|
97
|
+
{
|
98
|
+
bool caught_up;
|
99
|
+
int64_t start_value_at_flip;
|
100
|
+
/* TODO: is_held_by_current_thread */
|
101
|
+
unsigned int sleep_time_us = sleep_time_ns < 1000000000 ? (unsigned int) (sleep_time_ns / 1000) : 1000000;
|
102
|
+
|
103
|
+
int64_t start_epoch = _hdr_phaser_get_epoch(&p->start_epoch);
|
104
|
+
|
105
|
+
bool next_phase_is_even = (start_epoch < 0);
|
106
|
+
|
107
|
+
/* Clear currently used phase end epoch.*/
|
108
|
+
int64_t initial_start_value;
|
109
|
+
if (next_phase_is_even)
|
110
|
+
{
|
111
|
+
initial_start_value = 0;
|
112
|
+
_hdr_phaser_set_epoch(&p->even_end_epoch, initial_start_value);
|
113
|
+
}
|
114
|
+
else
|
115
|
+
{
|
116
|
+
initial_start_value = INT64_MIN;
|
117
|
+
_hdr_phaser_set_epoch(&p->odd_end_epoch, initial_start_value);
|
118
|
+
}
|
119
|
+
|
120
|
+
/* Reset start value, indicating new phase.*/
|
121
|
+
start_value_at_flip = _hdr_phaser_reset_epoch(&p->start_epoch, initial_start_value);
|
122
|
+
|
123
|
+
do
|
124
|
+
{
|
125
|
+
int64_t* end_epoch =
|
126
|
+
next_phase_is_even ? &p->odd_end_epoch : &p->even_end_epoch;
|
127
|
+
|
128
|
+
caught_up = _hdr_phaser_get_epoch(end_epoch) == start_value_at_flip;
|
129
|
+
|
130
|
+
if (!caught_up)
|
131
|
+
{
|
132
|
+
if (sleep_time_us <= 0)
|
133
|
+
{
|
134
|
+
hdr_yield();
|
135
|
+
}
|
136
|
+
else
|
137
|
+
{
|
138
|
+
hdr_usleep(sleep_time_us);
|
139
|
+
}
|
140
|
+
}
|
141
|
+
}
|
142
|
+
while (!caught_up);
|
143
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
/**
|
2
|
+
* hdr_writer_reader_phaser.h
|
3
|
+
* Written by Michael Barker and released to the public domain,
|
4
|
+
* as explained at http://creativecommons.org/publicdomain/zero/1.0/
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef HDR_WRITER_READER_PHASER_H
|
8
|
+
#define HDR_WRITER_READER_PHASER_H 1
|
9
|
+
|
10
|
+
#include <stdlib.h>
|
11
|
+
#include <stdbool.h>
|
12
|
+
#include <stdlib.h>
|
13
|
+
#include <errno.h>
|
14
|
+
|
15
|
+
#include "hdr_thread.h"
|
16
|
+
|
17
|
+
HDR_ALIGN_PREFIX(8)
|
18
|
+
struct hdr_writer_reader_phaser
|
19
|
+
{
|
20
|
+
int64_t start_epoch;
|
21
|
+
int64_t even_end_epoch;
|
22
|
+
int64_t odd_end_epoch;
|
23
|
+
hdr_mutex* reader_mutex;
|
24
|
+
}
|
25
|
+
HDR_ALIGN_SUFFIX(8);
|
26
|
+
|
27
|
+
#ifdef __cplusplus
|
28
|
+
extern "C" {
|
29
|
+
#endif
|
30
|
+
|
31
|
+
int hdr_writer_reader_phaser_init(struct hdr_writer_reader_phaser* p);
|
32
|
+
|
33
|
+
void hdr_writer_reader_phaser_destroy(struct hdr_writer_reader_phaser* p);
|
34
|
+
|
35
|
+
int64_t hdr_phaser_writer_enter(struct hdr_writer_reader_phaser* p);
|
36
|
+
|
37
|
+
void hdr_phaser_writer_exit(
|
38
|
+
struct hdr_writer_reader_phaser* p, int64_t critical_value_at_enter);
|
39
|
+
|
40
|
+
void hdr_phaser_reader_lock(struct hdr_writer_reader_phaser* p);
|
41
|
+
|
42
|
+
void hdr_phaser_reader_unlock(struct hdr_writer_reader_phaser* p);
|
43
|
+
|
44
|
+
void hdr_phaser_flip_phase(
|
45
|
+
struct hdr_writer_reader_phaser* p, int64_t sleep_time_ns);
|
46
|
+
|
47
|
+
#ifdef __cplusplus
|
48
|
+
}
|
49
|
+
#endif
|
50
|
+
|
51
|
+
#endif
|
data/lib/couchbase/cluster.rb
CHANGED
@@ -387,6 +387,7 @@ module Couchbase
|
|
387
387
|
|
388
388
|
open_options[:allowed_sasl_mechanisms] = PasswordAuthenticator::DEFAULT_SASL_MECHANISMS
|
389
389
|
when Options::Cluster
|
390
|
+
open_options = options&.to_backend || {}
|
390
391
|
authenticator = options&.authenticator
|
391
392
|
case authenticator
|
392
393
|
when PasswordAuthenticator
|
data/lib/couchbase/errors.rb
CHANGED
Binary file
|
@@ -13,9 +13,616 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
require "couchbase/errors"
|
16
|
+
require "couchbase/options"
|
16
17
|
|
17
18
|
module Couchbase
|
18
19
|
module Management
|
20
|
+
module Options
|
21
|
+
module Analytics
|
22
|
+
# Options for {AnalyticsIndexManager#create_dataverse}
|
23
|
+
class CreateDataverse < ::Couchbase::Options::Base
|
24
|
+
attr_accessor :ignore_if_exists # @return [Boolean]
|
25
|
+
|
26
|
+
# Creates an instance of options for {AnalyticsIndexManager#create_dataverse}
|
27
|
+
#
|
28
|
+
# @param [Boolean] ignore_if_exists if +true+, the exception {Error::DataverseExists} will not be raised if the
|
29
|
+
# dataverse with the specified name already exists.
|
30
|
+
#
|
31
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
32
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
33
|
+
# @param [Hash, nil] client_context the client context data, if set
|
34
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
35
|
+
#
|
36
|
+
# @yieldparam [CreateDataverse] self
|
37
|
+
def initialize(ignore_if_exists: false,
|
38
|
+
timeout: nil,
|
39
|
+
retry_strategy: nil,
|
40
|
+
client_context: nil,
|
41
|
+
parent_span: nil)
|
42
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
43
|
+
@ignore_if_exists = ignore_if_exists
|
44
|
+
yield self if block_given?
|
45
|
+
end
|
46
|
+
|
47
|
+
# @api private
|
48
|
+
def to_backend
|
49
|
+
{
|
50
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
51
|
+
ignore_if_exists: @ignore_if_exists,
|
52
|
+
}
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Options for {AnalyticsIndexManager#drop_dataverse}
|
57
|
+
class DropDataverse < ::Couchbase::Options::Base
|
58
|
+
attr_accessor :ignore_if_does_not_exist # @return [Boolean]
|
59
|
+
|
60
|
+
# Creates an instance of options for {AnalyticsIndexManager#create_dataverse}
|
61
|
+
#
|
62
|
+
# @param [Boolean] ignore_if_does_not_exist if +true+, the exception {Error::DataverseNotFound} will not be raised
|
63
|
+
# if the dataverse with the specified name does not exist.
|
64
|
+
#
|
65
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
66
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
67
|
+
# @param [Hash, nil] client_context the client context data, if set
|
68
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
69
|
+
#
|
70
|
+
# @yieldparam [DropDataverse] self
|
71
|
+
def initialize(ignore_if_does_not_exist: false,
|
72
|
+
timeout: nil,
|
73
|
+
retry_strategy: nil,
|
74
|
+
client_context: nil,
|
75
|
+
parent_span: nil)
|
76
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
77
|
+
@ignore_if_does_not_exist = ignore_if_does_not_exist
|
78
|
+
yield self if block_given?
|
79
|
+
end
|
80
|
+
|
81
|
+
# @api private
|
82
|
+
def to_backend
|
83
|
+
{
|
84
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
85
|
+
ignore_if_does_not_exist: @ignore_if_does_not_exist,
|
86
|
+
}
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# Options for {AnalyticsIndexManager#create_dataset}
|
91
|
+
class CreateDataset < ::Couchbase::Options::Base
|
92
|
+
attr_accessor :ignore_if_exists # @return [Boolean]
|
93
|
+
attr_accessor :condition # @return [String]
|
94
|
+
attr_accessor :dataverse_name # @return [String]
|
95
|
+
|
96
|
+
# Creates an instance of options for {AnalyticsIndexManager#create_dataset}
|
97
|
+
#
|
98
|
+
# @param [Boolean] ignore_if_exists if +true+, the exception {Error::DatasetExists} will not be raised
|
99
|
+
# if the dataset with the specified name already exists.
|
100
|
+
# @param [String] condition WHERE clause to use for creating dataset
|
101
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
102
|
+
#
|
103
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
104
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
105
|
+
# @param [Hash, nil] client_context the client context data, if set
|
106
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
107
|
+
#
|
108
|
+
# @yieldparam [CreateDataset] self
|
109
|
+
def initialize(ignore_if_exists: false,
|
110
|
+
condition: nil,
|
111
|
+
dataverse_name: nil,
|
112
|
+
timeout: nil,
|
113
|
+
retry_strategy: nil,
|
114
|
+
client_context: nil,
|
115
|
+
parent_span: nil)
|
116
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
117
|
+
@ignore_if_exists = ignore_if_exists
|
118
|
+
@condition = condition
|
119
|
+
@dataverse_name = dataverse_name
|
120
|
+
yield self if block_given?
|
121
|
+
end
|
122
|
+
|
123
|
+
# @api private
|
124
|
+
def to_backend
|
125
|
+
{
|
126
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
127
|
+
condition: @condition,
|
128
|
+
dataverse_name: @dataverse_name,
|
129
|
+
ignore_if_exists: @ignore_if_exists,
|
130
|
+
}
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
# Options for {AnalyticsIndexManager#drop_dataset}
|
135
|
+
class DropDataset < ::Couchbase::Options::Base
|
136
|
+
attr_accessor :ignore_if_does_not_exist # @return [Boolean]
|
137
|
+
attr_accessor :dataverse_name # @return [String]
|
138
|
+
|
139
|
+
# Creates an instance of options for {AnalyticsIndexManager#drop_dataset}
|
140
|
+
#
|
141
|
+
# @param [Boolean] ignore_if_does_not_exist if +true+, the exception {Error::DatasetNotFound} will not be raised
|
142
|
+
# if the dataset with the specified name does not exist.
|
143
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
144
|
+
#
|
145
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
146
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
147
|
+
# @param [Hash, nil] client_context the client context data, if set
|
148
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
149
|
+
#
|
150
|
+
# @yieldparam [DropDataset] self
|
151
|
+
def initialize(ignore_if_does_not_exist: false,
|
152
|
+
dataverse_name: nil,
|
153
|
+
timeout: nil,
|
154
|
+
retry_strategy: nil,
|
155
|
+
client_context: nil,
|
156
|
+
parent_span: nil)
|
157
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
158
|
+
@ignore_if_does_not_exist = ignore_if_does_not_exist
|
159
|
+
@dataverse_name = dataverse_name
|
160
|
+
yield self if block_given?
|
161
|
+
end
|
162
|
+
|
163
|
+
# @api private
|
164
|
+
def to_backend
|
165
|
+
{
|
166
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
167
|
+
dataverse_name: @dataverse_name,
|
168
|
+
ignore_if_does_not_exist: @ignore_if_does_not_exist,
|
169
|
+
}
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
# Options for {AnalyticsIndexManager#get_all_datasets}
|
174
|
+
class GetAllDatasets < ::Couchbase::Options::Base
|
175
|
+
# Creates an instance of options for {AnalyticsIndexManager#get_all_datasets}
|
176
|
+
#
|
177
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
178
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
179
|
+
# @param [Hash, nil] client_context the client context data, if set
|
180
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
181
|
+
#
|
182
|
+
# @yieldparam [GetAllDatasets] self
|
183
|
+
def initialize(timeout: nil,
|
184
|
+
retry_strategy: nil,
|
185
|
+
client_context: nil,
|
186
|
+
parent_span: nil)
|
187
|
+
super
|
188
|
+
yield self if block_given?
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
# Options for {AnalyticsIndexManager#create_index}
|
193
|
+
class CreateIndex < ::Couchbase::Options::Base
|
194
|
+
attr_accessor :ignore_if_exists # @return [Boolean]
|
195
|
+
attr_accessor :dataverse_name # @return [String]
|
196
|
+
|
197
|
+
# Creates an instance of options for {AnalyticsIndexManager#create_index}
|
198
|
+
#
|
199
|
+
# @param [Boolean] ignore_if_exists if +true+, the exception {Error::DatasetExists} will not be raised
|
200
|
+
# if the dataset with the specified name already exists.
|
201
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
202
|
+
#
|
203
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
204
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
205
|
+
# @param [Hash, nil] client_context the client context data, if set
|
206
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
207
|
+
#
|
208
|
+
# @yieldparam [CreateIndex] self
|
209
|
+
def initialize(ignore_if_exists: false,
|
210
|
+
dataverse_name: nil,
|
211
|
+
timeout: nil,
|
212
|
+
retry_strategy: nil,
|
213
|
+
client_context: nil,
|
214
|
+
parent_span: nil)
|
215
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
216
|
+
@ignore_if_exists = ignore_if_exists
|
217
|
+
@dataverse_name = dataverse_name
|
218
|
+
yield self if block_given?
|
219
|
+
end
|
220
|
+
|
221
|
+
# @api private
|
222
|
+
def to_backend
|
223
|
+
{
|
224
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
225
|
+
dataverse_name: @dataverse_name,
|
226
|
+
ignore_if_exists: @ignore_if_exists,
|
227
|
+
}
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
# Options for {AnalyticsIndexManager#drop_index}
|
232
|
+
class DropIndex < ::Couchbase::Options::Base
|
233
|
+
attr_accessor :ignore_if_does_not_exist # @return [Boolean]
|
234
|
+
attr_accessor :dataverse_name # @return [String]
|
235
|
+
|
236
|
+
# Creates an instance of options for {AnalyticsIndexManager#drop_index}
|
237
|
+
#
|
238
|
+
# @param [Boolean] ignore_if_does_not_exist if +true+, the exception {Error::DatasetNotFound} will not be raised
|
239
|
+
# if the dataset with the specified name does not exist.
|
240
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
241
|
+
#
|
242
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
243
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
244
|
+
# @param [Hash, nil] client_context the client context data, if set
|
245
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
246
|
+
#
|
247
|
+
# @yieldparam [DropIndex] self
|
248
|
+
def initialize(ignore_if_does_not_exist: false,
|
249
|
+
dataverse_name: nil,
|
250
|
+
timeout: nil,
|
251
|
+
retry_strategy: nil,
|
252
|
+
client_context: nil,
|
253
|
+
parent_span: nil)
|
254
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
255
|
+
@ignore_if_does_not_exist = ignore_if_does_not_exist
|
256
|
+
@dataverse_name = dataverse_name
|
257
|
+
yield self if block_given?
|
258
|
+
end
|
259
|
+
|
260
|
+
# @api private
|
261
|
+
def to_backend
|
262
|
+
{
|
263
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
264
|
+
dataverse_name: @dataverse_name,
|
265
|
+
ignore_if_does_not_exist: @ignore_if_does_not_exist,
|
266
|
+
}
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
# Options for {AnalyticsIndexManager#get_all_indexes}
|
271
|
+
class GetAllIndexes < ::Couchbase::Options::Base
|
272
|
+
# Creates an instance of options for {AnalyticsIndexManager#get_all_indexes}
|
273
|
+
#
|
274
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
275
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
276
|
+
# @param [Hash, nil] client_context the client context data, if set
|
277
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
278
|
+
#
|
279
|
+
# @yieldparam [GetAllIndexes] self
|
280
|
+
def initialize(timeout: nil,
|
281
|
+
retry_strategy: nil,
|
282
|
+
client_context: nil,
|
283
|
+
parent_span: nil)
|
284
|
+
super
|
285
|
+
yield self if block_given?
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
# Options for {AnalyticsIndexManager#connect_link}
|
290
|
+
class ConnectLink < ::Couchbase::Options::Base
|
291
|
+
attr_accessor :link_name # @return [String]
|
292
|
+
attr_accessor :force # @return [Boolean]
|
293
|
+
attr_accessor :dataverse_name # @return [String]
|
294
|
+
|
295
|
+
# Creates an instance of options for {AnalyticsIndexManager#connect_link}
|
296
|
+
#
|
297
|
+
# @param [String] link_name the name of the link
|
298
|
+
# @param [Boolean] force if +true+, link creation will be forced even if the bucket UUID changed, for example
|
299
|
+
# due to the bucket being deleted and recreated
|
300
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
301
|
+
#
|
302
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
303
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
304
|
+
# @param [Hash, nil] client_context the client context data, if set
|
305
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
306
|
+
#
|
307
|
+
# @yieldparam [ConnectLink] self
|
308
|
+
def initialize(link_name: "Local",
|
309
|
+
force: false,
|
310
|
+
dataverse_name: nil,
|
311
|
+
timeout: nil,
|
312
|
+
retry_strategy: nil,
|
313
|
+
client_context: nil,
|
314
|
+
parent_span: nil)
|
315
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
316
|
+
@link_name = link_name
|
317
|
+
@force = force
|
318
|
+
@dataverse_name = dataverse_name
|
319
|
+
yield self if block_given?
|
320
|
+
end
|
321
|
+
|
322
|
+
# @api private
|
323
|
+
def to_backend
|
324
|
+
{
|
325
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
326
|
+
link_name: @link_name,
|
327
|
+
force: @force,
|
328
|
+
dataverse_name: @dataverse_name,
|
329
|
+
}
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
# Options for {AnalyticsIndexManager#connect_link}
|
334
|
+
class DisconnectLink < ::Couchbase::Options::Base
|
335
|
+
attr_accessor :link_name # @return [String]
|
336
|
+
attr_accessor :dataverse_name # @return [String]
|
337
|
+
|
338
|
+
# Creates an instance of options for {AnalyticsIndexManager#disconnect_link}
|
339
|
+
#
|
340
|
+
# @param [String] link_name the name of the link
|
341
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
342
|
+
#
|
343
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
344
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
345
|
+
# @param [Hash, nil] client_context the client context data, if set
|
346
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
347
|
+
#
|
348
|
+
# @yieldparam [DisconnectLink] self
|
349
|
+
def initialize(link_name: "Local",
|
350
|
+
dataverse_name: nil,
|
351
|
+
timeout: nil,
|
352
|
+
retry_strategy: nil,
|
353
|
+
client_context: nil,
|
354
|
+
parent_span: nil)
|
355
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
356
|
+
@link_name = link_name
|
357
|
+
@dataverse_name = dataverse_name
|
358
|
+
yield self if block_given?
|
359
|
+
end
|
360
|
+
|
361
|
+
# @api private
|
362
|
+
def to_backend
|
363
|
+
{
|
364
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
365
|
+
link_name: @link_name,
|
366
|
+
dataverse_name: @dataverse_name,
|
367
|
+
}
|
368
|
+
end
|
369
|
+
end
|
370
|
+
|
371
|
+
# Options for {AnalyticsIndexManager#get_pending_mutations}
|
372
|
+
class GetPendingMutations < ::Couchbase::Options::Base
|
373
|
+
# Creates an instance of options for {AnalyticsIndexManager#get_pending_mutations}
|
374
|
+
#
|
375
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
376
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
377
|
+
# @param [Hash, nil] client_context the client context data, if set
|
378
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
379
|
+
#
|
380
|
+
# @yieldparam [GetPendingMutations] self
|
381
|
+
def initialize(timeout: nil,
|
382
|
+
retry_strategy: nil,
|
383
|
+
client_context: nil,
|
384
|
+
parent_span: nil)
|
385
|
+
super
|
386
|
+
yield self if block_given?
|
387
|
+
end
|
388
|
+
end
|
389
|
+
|
390
|
+
# Options for {AnalyticsIndexManager#create_link}
|
391
|
+
class CreateLink < ::Couchbase::Options::Base
|
392
|
+
# Creates an instance of options for {AnalyticsIndexManager#create_link}
|
393
|
+
#
|
394
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
395
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
396
|
+
# @param [Hash, nil] client_context the client context data, if set
|
397
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
398
|
+
#
|
399
|
+
# @yieldparam [CreateLink] self
|
400
|
+
def initialize(timeout: nil,
|
401
|
+
retry_strategy: nil,
|
402
|
+
client_context: nil,
|
403
|
+
parent_span: nil)
|
404
|
+
super
|
405
|
+
yield self if block_given?
|
406
|
+
end
|
407
|
+
|
408
|
+
# @api private
|
409
|
+
def to_backend
|
410
|
+
{
|
411
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
412
|
+
}
|
413
|
+
end
|
414
|
+
end
|
415
|
+
|
416
|
+
# Options for {AnalyticsIndexManager#replace_link}
|
417
|
+
class ReplaceLink < ::Couchbase::Options::Base
|
418
|
+
# Creates an instance of options for {AnalyticsIndexManager#replace_link}
|
419
|
+
#
|
420
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
421
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
422
|
+
# @param [Hash, nil] client_context the client context data, if set
|
423
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
424
|
+
#
|
425
|
+
# @yieldparam [ReplaceLink] self
|
426
|
+
def initialize(timeout: nil,
|
427
|
+
retry_strategy: nil,
|
428
|
+
client_context: nil,
|
429
|
+
parent_span: nil)
|
430
|
+
super
|
431
|
+
yield self if block_given?
|
432
|
+
end
|
433
|
+
|
434
|
+
# @api private
|
435
|
+
def to_backend
|
436
|
+
{
|
437
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
438
|
+
}
|
439
|
+
end
|
440
|
+
end
|
441
|
+
|
442
|
+
# Options for {AnalyticsIndexManager#drop_link}
|
443
|
+
class DropLink < ::Couchbase::Options::Base
|
444
|
+
# Creates an instance of options for {AnalyticsIndexManager#drop_link}
|
445
|
+
#
|
446
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
447
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
448
|
+
# @param [Hash, nil] client_context the client context data, if set
|
449
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
450
|
+
#
|
451
|
+
# @yieldparam [DropLink] self
|
452
|
+
def initialize(timeout: nil,
|
453
|
+
retry_strategy: nil,
|
454
|
+
client_context: nil,
|
455
|
+
parent_span: nil)
|
456
|
+
super
|
457
|
+
yield self if block_given?
|
458
|
+
end
|
459
|
+
|
460
|
+
# @api private
|
461
|
+
def to_backend
|
462
|
+
{
|
463
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
464
|
+
}
|
465
|
+
end
|
466
|
+
end
|
467
|
+
|
468
|
+
# Options for {AnalyticsIndexManager#get_links}
|
469
|
+
class GetLinks < ::Couchbase::Options::Base
|
470
|
+
attr_accessor :dataverse # @return [String, nil]
|
471
|
+
attr_accessor :link_type # @return [Symbol, nil]
|
472
|
+
attr_accessor :name # @return [String, nil]
|
473
|
+
|
474
|
+
# Creates an instance of options for {AnalyticsIndexManager#get_links}
|
475
|
+
#
|
476
|
+
# @param [:s3, :azureblob, :couchbase, nil] link_type restricts the results to the given link type.
|
477
|
+
# @param [String, nil] dataverse restricts the results to a given dataverse, can be given in the form of
|
478
|
+
# "namepart" or "namepart1/namepart2".
|
479
|
+
# @param [String, nil] name restricts the results to the link with the specified name. If set then dataverse
|
480
|
+
# must also be set.
|
481
|
+
#
|
482
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to
|
483
|
+
# complete
|
484
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
485
|
+
# @param [Hash, nil] client_context the client context data, if set
|
486
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
487
|
+
#
|
488
|
+
# @yieldparam [GetLinks] self
|
489
|
+
def initialize(link_type: nil,
|
490
|
+
dataverse: nil,
|
491
|
+
name: nil,
|
492
|
+
timeout: nil,
|
493
|
+
retry_strategy: nil,
|
494
|
+
client_context: nil,
|
495
|
+
parent_span: nil)
|
496
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
497
|
+
@link_type = link_type
|
498
|
+
@dataverse = dataverse
|
499
|
+
@name = name
|
500
|
+
yield self if block_given?
|
501
|
+
end
|
502
|
+
|
503
|
+
# @api private
|
504
|
+
def to_backend
|
505
|
+
{
|
506
|
+
timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
|
507
|
+
link_type: @link_type.to_s,
|
508
|
+
dataverse: @dataverse,
|
509
|
+
name: @name,
|
510
|
+
}
|
511
|
+
end
|
512
|
+
end
|
513
|
+
|
514
|
+
# rubocop:disable Naming/MethodName constructor shortcuts
|
515
|
+
module_function
|
516
|
+
|
517
|
+
# Construct {CreateDataverse} options for {AnalyticsIndexManager#create_dataverse}
|
518
|
+
#
|
519
|
+
# @return [CreateDataverse]
|
520
|
+
def CreateDataverse(**args)
|
521
|
+
CreateDataverse.new(**args)
|
522
|
+
end
|
523
|
+
|
524
|
+
# Construct {DropDataverse} options for {AnalyticsIndexManager#drop_dataverse}
|
525
|
+
#
|
526
|
+
# @return [DropDataverse]
|
527
|
+
def DropDataverse(**args)
|
528
|
+
DropDataverse.new(**args)
|
529
|
+
end
|
530
|
+
|
531
|
+
# Construct {CreateDataset} options for {AnalyticsIndexManager#create_dataset}
|
532
|
+
#
|
533
|
+
# @return [CreateDataset]
|
534
|
+
def CreateDataset(**args)
|
535
|
+
CreateDataset.new(**args)
|
536
|
+
end
|
537
|
+
|
538
|
+
# Construct {DropDataset} options for {AnalyticsIndexManager#drop_dataset}
|
539
|
+
#
|
540
|
+
# @return [DropDataset]
|
541
|
+
def DropDataset(**args)
|
542
|
+
DropDataset.new(**args)
|
543
|
+
end
|
544
|
+
|
545
|
+
# Construct {GetAllDatasets} options for {AnalyticsIndexManager#get_all_datasets}
|
546
|
+
#
|
547
|
+
# @return [GetAllDatasets]
|
548
|
+
def GetAllDatasets(**args)
|
549
|
+
GetAllDatasets.new(**args)
|
550
|
+
end
|
551
|
+
|
552
|
+
# Construct {CreateIndex} options for {AnalyticsIndexManager#create_index}
|
553
|
+
#
|
554
|
+
# @return [CreateIndex]
|
555
|
+
def CreateIndex(**args)
|
556
|
+
CreateIndex.new(**args)
|
557
|
+
end
|
558
|
+
|
559
|
+
# Construct {DropIndex} options for {AnalyticsIndexManager#drop_index}
|
560
|
+
#
|
561
|
+
# @return [DropIndex]
|
562
|
+
def DropIndex(**args)
|
563
|
+
DropIndex.new(**args)
|
564
|
+
end
|
565
|
+
|
566
|
+
# Construct {GetAllIndexes} options for {AnalyticsIndexManager#get_all_indexes}
|
567
|
+
#
|
568
|
+
# @return [GetAllIndexes]
|
569
|
+
def GetAllIndexes(**args)
|
570
|
+
GetAllIndexes.new(**args)
|
571
|
+
end
|
572
|
+
|
573
|
+
# Construct {ConnectLink} options for {AnalyticsIndexManager#connect_link}
|
574
|
+
#
|
575
|
+
# @return [ConnectLink]
|
576
|
+
def ConnectLink(**args)
|
577
|
+
ConnectLink.new(**args)
|
578
|
+
end
|
579
|
+
|
580
|
+
# Construct {DisconnectLink} options for {AnalyticsIndexManager#disconnect_link}
|
581
|
+
#
|
582
|
+
# @return [DisconnectLink]
|
583
|
+
def DisconnectLink(**args)
|
584
|
+
DisconnectLink.new(**args)
|
585
|
+
end
|
586
|
+
|
587
|
+
# Construct {GetPendingMutations} options for {AnalyticsIndexManager#get_pending_mutations}
|
588
|
+
#
|
589
|
+
# @return [GetPendingMutations]
|
590
|
+
def GetPendingMutations(**args)
|
591
|
+
GetPendingMutations.new(**args)
|
592
|
+
end
|
593
|
+
|
594
|
+
# Construct {CreateLink} options for {AnalyticsIndexManager#create_link}
|
595
|
+
#
|
596
|
+
# @return [CreateLink]
|
597
|
+
def CreateLink(**args)
|
598
|
+
CreateLink.new(**args)
|
599
|
+
end
|
600
|
+
|
601
|
+
# Construct {ReplaceLink} options for {AnalyticsIndexManager#replace_link}
|
602
|
+
#
|
603
|
+
# @return [ReplaceLink]
|
604
|
+
def ReplaceLink(**args)
|
605
|
+
ReplaceLink.new(**args)
|
606
|
+
end
|
607
|
+
|
608
|
+
# Construct {DropLink} options for {AnalyticsIndexManager#drop_link}
|
609
|
+
#
|
610
|
+
# @return [DropLink]
|
611
|
+
def DropLink(**args)
|
612
|
+
DropLink.new(**args)
|
613
|
+
end
|
614
|
+
|
615
|
+
# Construct {GetLinks} options for {AnalyticsIndexManager#get_links}
|
616
|
+
#
|
617
|
+
# @return [GetLinks]
|
618
|
+
def GetLinks(**args)
|
619
|
+
GetLinks.new(**args)
|
620
|
+
end
|
621
|
+
|
622
|
+
# rubocop:enable Naming/MethodName
|
623
|
+
end
|
624
|
+
end
|
625
|
+
|
19
626
|
class AnalyticsIndexManager
|
20
627
|
alias inspect to_s
|
21
628
|
|
@@ -27,84 +634,64 @@ module Couchbase
|
|
27
634
|
# Creates a new dataverse
|
28
635
|
#
|
29
636
|
# @param [String] dataverse_name
|
30
|
-
# @param [
|
637
|
+
# @param [Options::Analytics::CreateDataverse] options
|
31
638
|
#
|
32
639
|
# @return [void]
|
33
640
|
#
|
34
641
|
# @raise [ArgumentError]
|
35
642
|
# @raise [Error::DataverseExists]
|
36
|
-
def create_dataverse(dataverse_name, options =
|
37
|
-
@backend.analytics_dataverse_create(
|
38
|
-
dataverse_name,
|
39
|
-
options.ignore_if_exists,
|
40
|
-
options.timeout
|
41
|
-
)
|
643
|
+
def create_dataverse(dataverse_name, options = Options::Analytics::CreateDataverse.new)
|
644
|
+
@backend.analytics_dataverse_create(dataverse_name, options.to_backend)
|
42
645
|
end
|
43
646
|
|
44
647
|
# Drops a dataverse
|
45
648
|
#
|
46
649
|
# @param [String] dataverse_name name of the dataverse
|
47
|
-
# @param [
|
650
|
+
# @param [Options::Analytics::DropDataverse] options
|
48
651
|
#
|
49
652
|
# @return [void]
|
50
653
|
#
|
51
654
|
# @raise [ArgumentError]
|
52
655
|
# @raise [Error::DataverseNotFound]
|
53
|
-
def drop_dataverse(dataverse_name, options =
|
54
|
-
@backend.analytics_dataverse_drop(
|
55
|
-
dataverse_name,
|
56
|
-
options.ignore_if_does_not_exist,
|
57
|
-
options.timeout
|
58
|
-
)
|
656
|
+
def drop_dataverse(dataverse_name, options = Options::Analytics::DropDataverse.new)
|
657
|
+
@backend.analytics_dataverse_drop(dataverse_name, options.to_backend)
|
59
658
|
end
|
60
659
|
|
61
660
|
# Creates a new dataset
|
62
661
|
#
|
63
662
|
# @param [String] dataset_name name of dataset
|
64
663
|
# @param [String] bucket_name name of the bucket
|
65
|
-
# @param [
|
664
|
+
# @param [Options::Analytics::CreateDataset] options
|
66
665
|
#
|
67
666
|
# @return [void]
|
68
667
|
#
|
69
668
|
# @raise [ArgumentError]
|
70
669
|
# @raise [Error::DatasetExists]
|
71
670
|
# @raise [Error::LinkNotFound]
|
72
|
-
def create_dataset(dataset_name, bucket_name, options =
|
73
|
-
@backend.analytics_dataset_create(
|
74
|
-
dataset_name,
|
75
|
-
bucket_name,
|
76
|
-
options.condition,
|
77
|
-
options.dataverse_name,
|
78
|
-
options.ignore_if_exists,
|
79
|
-
options.timeout
|
80
|
-
)
|
671
|
+
def create_dataset(dataset_name, bucket_name, options = Options::Analytics::CreateDataset.new)
|
672
|
+
@backend.analytics_dataset_create(dataset_name, bucket_name, options.to_backend)
|
81
673
|
end
|
82
674
|
|
83
675
|
# Drops a dataset
|
84
676
|
#
|
85
677
|
# @param [String] dataset_name name of the dataset
|
86
|
-
# @param [
|
678
|
+
# @param [Options::Analytics::DropDataset] options
|
87
679
|
#
|
88
680
|
# @return [void]
|
89
681
|
#
|
90
682
|
# @raise [ArgumentError]
|
91
683
|
# @raise [Error::DatasetNotFound]
|
92
|
-
def drop_dataset(dataset_name, options =
|
93
|
-
@backend.analytics_dataset_drop(
|
94
|
-
dataset_name,
|
95
|
-
options.dataverse_name,
|
96
|
-
options.ignore_if_does_not_exist,
|
97
|
-
options.timeout
|
98
|
-
)
|
684
|
+
def drop_dataset(dataset_name, options = Options::Analytics::DropDataset.new)
|
685
|
+
@backend.analytics_dataset_drop(dataset_name, options.to_backend)
|
99
686
|
end
|
100
687
|
|
101
688
|
# Gets all datasets
|
102
689
|
#
|
103
|
-
# @param [
|
690
|
+
# @param [Options::Analytics::GetAllDatasets] options
|
104
691
|
#
|
105
692
|
# @return [Array<AnalyticsDataset>]
|
106
|
-
def get_all_datasets(options =
|
107
|
-
resp = @backend.analytics_dataset_get_all(options.
|
693
|
+
def get_all_datasets(options = Options::Analytics::GetAllDatasets.new)
|
694
|
+
resp = @backend.analytics_dataset_get_all(options.to_backend)
|
108
695
|
resp.map do |entry|
|
109
696
|
AnalyticsDataset.new do |dataset|
|
110
697
|
dataset.name = entry[:name]
|
@@ -120,50 +707,37 @@ module Couchbase
|
|
120
707
|
# @param [String] index_name name of the index
|
121
708
|
# @param [String] dataset_name name of the dataset
|
122
709
|
# @param [Hash<String => String>] fields mapping of the field name to field type
|
123
|
-
# @param [
|
710
|
+
# @param [Options::Analytics::CreateIndex] options
|
124
711
|
#
|
125
712
|
# @return [void]
|
126
713
|
#
|
127
714
|
# @raise [ArgumentError]
|
128
715
|
# @raise [Error::IndexExists]
|
129
|
-
def create_index(index_name, dataset_name, fields, options =
|
130
|
-
@backend.analytics_index_create(
|
131
|
-
index_name,
|
132
|
-
dataset_name,
|
133
|
-
fields.entries,
|
134
|
-
options.dataverse_name,
|
135
|
-
options.ignore_if_exists,
|
136
|
-
options.timeout
|
137
|
-
)
|
716
|
+
def create_index(index_name, dataset_name, fields, options = Options::Analytics::CreateIndex.new)
|
717
|
+
@backend.analytics_index_create(index_name, dataset_name, fields.entries, options.to_backend)
|
138
718
|
end
|
139
719
|
|
140
720
|
# Drops an index
|
141
721
|
#
|
142
722
|
# @param [String] index_name name of the index
|
143
723
|
# @param [String] dataset_name name of the dataset
|
144
|
-
# @param [
|
724
|
+
# @param [Options::Analytics::DropIndex] options
|
145
725
|
#
|
146
726
|
# @return [void]
|
147
727
|
#
|
148
728
|
# @raise [ArgumentError]
|
149
729
|
# @raise [Error::IndexNotFound]
|
150
|
-
def drop_index(index_name, dataset_name, options =
|
151
|
-
@backend.analytics_index_drop(
|
152
|
-
index_name,
|
153
|
-
dataset_name,
|
154
|
-
options.dataverse_name,
|
155
|
-
options.ignore_if_does_not_exist,
|
156
|
-
options.timeout
|
157
|
-
)
|
730
|
+
def drop_index(index_name, dataset_name, options = Options::Analytics::DropIndex.new)
|
731
|
+
@backend.analytics_index_drop(index_name, dataset_name, options.to_backend)
|
158
732
|
end
|
159
733
|
|
160
734
|
# Gets all indexes
|
161
735
|
#
|
162
|
-
# @param [
|
736
|
+
# @param [Options::Analytics::GetAllIndexes] options
|
163
737
|
#
|
164
738
|
# @return [Array<AnalyticsIndex>]
|
165
|
-
def get_all_indexes(options =
|
166
|
-
resp = @backend.analytics_index_get_all(options.
|
739
|
+
def get_all_indexes(options = Options::Analytics::GetAllIndexes.new)
|
740
|
+
resp = @backend.analytics_index_get_all(options.to_backend)
|
167
741
|
resp.map do |entry|
|
168
742
|
AnalyticsIndex.new do |dataset|
|
169
743
|
dataset.name = entry[:name]
|
@@ -176,35 +750,26 @@ module Couchbase
|
|
176
750
|
|
177
751
|
# Connects a link
|
178
752
|
#
|
179
|
-
# @param [
|
753
|
+
# @param [Options::Analytics::ConnectLink] options
|
180
754
|
#
|
181
755
|
# @return [void]
|
182
756
|
#
|
183
757
|
# @raise [ArgumentError]
|
184
758
|
# @raise [Error::LinkNotFound]
|
185
|
-
def connect_link(options =
|
186
|
-
@backend.analytics_link_connect(
|
187
|
-
options.link_name,
|
188
|
-
options.force,
|
189
|
-
options.dataverse_name,
|
190
|
-
options.timeout
|
191
|
-
)
|
759
|
+
def connect_link(options = Options::Analytics::ConnectLink.new)
|
760
|
+
@backend.analytics_link_connect(options.to_backend)
|
192
761
|
end
|
193
762
|
|
194
763
|
# Disconnects a link,
|
195
764
|
#
|
196
|
-
# @param [
|
765
|
+
# @param [Options::Analytics::DisconnectLink] options
|
197
766
|
#
|
198
767
|
# @return [void]
|
199
768
|
#
|
200
769
|
# @raise [ArgumentError]
|
201
770
|
# @raise [Error::LinkNotFound]
|
202
|
-
def disconnect_link(options =
|
203
|
-
@backend.analytics_link_disconnect(
|
204
|
-
options.link_name,
|
205
|
-
options.dataverse_name,
|
206
|
-
options.timeout
|
207
|
-
)
|
771
|
+
def disconnect_link(options = Options::Analytics::DisconnectLink.new)
|
772
|
+
@backend.analytics_link_disconnect(options.to_backend)
|
208
773
|
end
|
209
774
|
|
210
775
|
# Gets the pending mutations for all datasets.
|
@@ -212,183 +777,138 @@ module Couchbase
|
|
212
777
|
# @note If a link is disconnected then it will return no results. If all links are disconnected, then
|
213
778
|
# an empty object is returned.
|
214
779
|
#
|
215
|
-
# @param [
|
780
|
+
# @param [Options::Analytics::GetPendingMutations] options
|
216
781
|
#
|
217
782
|
# @return [Hash<String => Integer>] dictionary, where keys are dataset coordinates encoded as +"dataverse.dataset"+
|
218
783
|
# and values are number of mutations for given dataset.
|
219
|
-
def get_pending_mutations(options =
|
220
|
-
@backend.analytics_get_pending_mutations(
|
221
|
-
options.timeout
|
222
|
-
)
|
223
|
-
end
|
224
|
-
|
225
|
-
class CreateDataverseOptions
|
226
|
-
# @return [Boolean] ignore if the dataverse already exists
|
227
|
-
attr_accessor :ignore_if_exists
|
228
|
-
|
229
|
-
# @return [Integer] the time in milliseconds allowed for the operation to complete
|
230
|
-
attr_accessor :timeout
|
231
|
-
|
232
|
-
# @yieldparam [CreateDataverseOptions]
|
233
|
-
def initialize
|
234
|
-
@ignore_if_exists = false
|
235
|
-
yield self if block_given?
|
236
|
-
end
|
237
|
-
end
|
238
|
-
|
239
|
-
class DropDataverseOptions
|
240
|
-
# @return [Boolean] ignore if the dataverse does not exists
|
241
|
-
attr_accessor :ignore_if_does_not_exist
|
242
|
-
|
243
|
-
# @return [Integer] the time in milliseconds allowed for the operation to complete
|
244
|
-
attr_accessor :timeout
|
245
|
-
|
246
|
-
# @yieldparam [DropDataverseOptions]
|
247
|
-
def initialize
|
248
|
-
@ignore_if_exists = false
|
249
|
-
yield self if block_given?
|
250
|
-
end
|
251
|
-
end
|
252
|
-
|
253
|
-
class CreateDatasetOptions
|
254
|
-
# @return [Boolean] ignore if the dataset already exists
|
255
|
-
attr_accessor :ignore_if_exists
|
256
|
-
|
257
|
-
# @return [String] WHERE clause to use for creating dataset
|
258
|
-
attr_accessor :condition
|
259
|
-
|
260
|
-
# @return [String] The name of the dataverse to use (defaults to +nil+)
|
261
|
-
attr_accessor :dataverse_name
|
262
|
-
|
263
|
-
# @return [Integer] the time in milliseconds allowed for the operation to complete
|
264
|
-
attr_accessor :timeout
|
265
|
-
|
266
|
-
# @yieldparam [CreateDatasetOptions]
|
267
|
-
def initialize
|
268
|
-
@ignore_if_exists = false
|
269
|
-
yield self if block_given?
|
270
|
-
end
|
271
|
-
end
|
272
|
-
|
273
|
-
class DropDatasetOptions
|
274
|
-
# @return [Boolean] ignore if the dataset does not exists
|
275
|
-
attr_accessor :ignore_if_does_not_exist
|
276
|
-
|
277
|
-
# @return [String] The name of the dataverse to use (defaults to +nil+)
|
278
|
-
attr_accessor :dataverse_name
|
279
|
-
|
280
|
-
# @return [Integer] the time in milliseconds allowed for the operation to complete
|
281
|
-
attr_accessor :timeout
|
282
|
-
|
283
|
-
# @yieldparam [DropDatasetOptions]
|
284
|
-
def initialize
|
285
|
-
@ignore_if_does_not_exist = false
|
286
|
-
yield self if block_given?
|
287
|
-
end
|
784
|
+
def get_pending_mutations(options = Options::Analytics::GetPendingMutations.new)
|
785
|
+
@backend.analytics_get_pending_mutations(options.to_backend)
|
288
786
|
end
|
289
787
|
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
788
|
+
# Creates a link
|
789
|
+
#
|
790
|
+
# @param [CouchbaseRemoteAnalyticsLink, AzureBlobExternalAnalyticsLink, S3ExternalAnalyticsLink] link
|
791
|
+
# @param [Options::Analytics::CreateLink] options
|
792
|
+
#
|
793
|
+
# @return [void]
|
794
|
+
#
|
795
|
+
# @raise [ArgumentError]
|
796
|
+
# @raise [Error::LinkExists]
|
797
|
+
def create_link(link, options = Options::Analytics::CreateLink.new)
|
798
|
+
@backend.analytics_link_create(link.to_backend, options.to_backend)
|
298
799
|
end
|
299
800
|
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
def initialize
|
312
|
-
@ignore_if_exists = false
|
313
|
-
yield self if block_given?
|
314
|
-
end
|
801
|
+
# Replaces the link
|
802
|
+
#
|
803
|
+
# @param [CouchbaseRemoteAnalyticsLink, AzureBlobExternalAnalyticsLink, S3ExternalAnalyticsLink] link
|
804
|
+
# @param [Options::Analytics::ReplaceLink] options
|
805
|
+
#
|
806
|
+
# @return [void]
|
807
|
+
#
|
808
|
+
# @raise [ArgumentError]
|
809
|
+
# @raise [Error::LinkNotFound]
|
810
|
+
def replace_link(link, options = Options::Analytics::ReplaceLink.new)
|
811
|
+
@backend.analytics_link_replace(link.to_backend, options.to_backend)
|
315
812
|
end
|
316
813
|
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
@ignore_if_does_not_exist = false
|
330
|
-
yield self if block_given?
|
331
|
-
end
|
814
|
+
# Drops the link
|
815
|
+
#
|
816
|
+
# @param [String] link_name name of the link
|
817
|
+
# @param [String] dataverse_name dataverse where the link belongs
|
818
|
+
# @param [Options::Analytics::DropLink] options
|
819
|
+
#
|
820
|
+
# @return [void]
|
821
|
+
#
|
822
|
+
# @raise [ArgumentError]
|
823
|
+
# @raise [Error::LinkNotFound]
|
824
|
+
def drop_link(link_name, dataverse_name, options = Options::Analytics::DropLink.new)
|
825
|
+
@backend.analytics_link_drop(link_name, dataverse_name, options.to_backend)
|
332
826
|
end
|
333
827
|
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
828
|
+
# Retrieves the links
|
829
|
+
#
|
830
|
+
# @param [Options::Analytics::GetLinks] options
|
831
|
+
#
|
832
|
+
# @return [void]
|
833
|
+
#
|
834
|
+
# @raise [ArgumentError]
|
835
|
+
# @raise [Error::LinkNotFound]
|
836
|
+
def get_links(options = Options::Analytics::GetLinks.new)
|
837
|
+
resp = @backend.analytics_link_get_all(options.to_backend)
|
838
|
+
resp.map do |entry|
|
839
|
+
case entry[:type]
|
840
|
+
when :s3
|
841
|
+
S3ExternalAnalyticsLink.new(
|
842
|
+
entry[:link_name],
|
843
|
+
entry[:dataverse],
|
844
|
+
entry[:access_key_id],
|
845
|
+
nil,
|
846
|
+
entry[:region],
|
847
|
+
service_endpoint: entry[:service_endpoint]
|
848
|
+
)
|
849
|
+
when :couchbase
|
850
|
+
CouchbaseRemoteAnalyticsLink.new(
|
851
|
+
entry[:link_name],
|
852
|
+
entry[:dataverse],
|
853
|
+
entry[:hostname],
|
854
|
+
username: entry[:username],
|
855
|
+
encryption: EncryptionSettings.new(
|
856
|
+
level: entry[:encryption_level],
|
857
|
+
certificate: entry[:certificate],
|
858
|
+
client_certificate: entry[:client_certificate]
|
859
|
+
)
|
860
|
+
)
|
861
|
+
when :azureblob
|
862
|
+
AzureBlobExternalAnalyticsLink.new(
|
863
|
+
entry[:link_name],
|
864
|
+
entry[:dataverse],
|
865
|
+
account_name: entry[:account_name],
|
866
|
+
blob_endpoint: entry[:blob_endpoint],
|
867
|
+
endpoint_suffix: entry[:endpoint_suffix]
|
868
|
+
)
|
869
|
+
end
|
341
870
|
end
|
342
871
|
end
|
343
872
|
|
344
|
-
|
345
|
-
|
346
|
-
|
873
|
+
# @api private
|
874
|
+
# TODO: deprecate after 3.2
|
875
|
+
CreateDataverseOptions = ::Couchbase::Management::Options::Analytics::CreateDataverse
|
347
876
|
|
348
|
-
|
349
|
-
|
350
|
-
|
877
|
+
# @api private
|
878
|
+
# TODO: deprecate after 3.2
|
879
|
+
DropDataverseOptions = ::Couchbase::Management::Options::Analytics::DropDataverse
|
351
880
|
|
352
|
-
|
353
|
-
|
881
|
+
# @api private
|
882
|
+
# TODO: deprecate after 3.2
|
883
|
+
CreateDatasetOptions = ::Couchbase::Management::Options::Analytics::CreateDataset
|
354
884
|
|
355
|
-
|
356
|
-
|
885
|
+
# @api private
|
886
|
+
# TODO: deprecate after 3.2
|
887
|
+
DropDatasetOptions = ::Couchbase::Management::Options::Analytics::DropDataset
|
357
888
|
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
@force = false
|
362
|
-
yield self if block_given?
|
363
|
-
end
|
364
|
-
end
|
889
|
+
# @api private
|
890
|
+
# TODO: deprecate after 3.2
|
891
|
+
GetAllDatasetsOptions = ::Couchbase::Management::Options::Analytics::GetAllDatasets
|
365
892
|
|
366
|
-
|
367
|
-
|
368
|
-
|
893
|
+
# @api private
|
894
|
+
# TODO: deprecate after 3.2
|
895
|
+
CreateIndexOptions = ::Couchbase::Management::Options::Analytics::CreateIndex
|
369
896
|
|
370
|
-
|
371
|
-
|
897
|
+
# @api private
|
898
|
+
# TODO: deprecate after 3.2
|
899
|
+
DropIndexOptions = ::Couchbase::Management::Options::Analytics::DropIndex
|
372
900
|
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
# @yieldparam [DisconnectLinkOptions]
|
377
|
-
def initialize
|
378
|
-
@link_name = "Local"
|
379
|
-
yield self if block_given?
|
380
|
-
end
|
381
|
-
end
|
901
|
+
# @api private
|
902
|
+
# TODO: deprecate after 3.2
|
903
|
+
GetAllIndexesOptions = ::Couchbase::Management::Options::Analytics::GetAllIndexes
|
382
904
|
|
383
|
-
|
384
|
-
|
385
|
-
|
905
|
+
# @api private
|
906
|
+
# TODO: deprecate after 3.2
|
907
|
+
ConnectLinkOptions = ::Couchbase::Management::Options::Analytics::ConnectLink
|
386
908
|
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
end
|
391
|
-
end
|
909
|
+
# @api private
|
910
|
+
# TODO: deprecate after 3.2
|
911
|
+
GetPendingMutationsOptions = ::Couchbase::Management::Options::Analytics::GetPendingMutations
|
392
912
|
end
|
393
913
|
|
394
914
|
class AnalyticsDataset
|
@@ -429,5 +949,179 @@ module Couchbase
|
|
429
949
|
yield self if block_given?
|
430
950
|
end
|
431
951
|
end
|
952
|
+
|
953
|
+
class EncryptionSettings
|
954
|
+
attr_accessor :level # @return [Symbol]
|
955
|
+
attr_accessor :certificate # @return [String, nil]
|
956
|
+
attr_accessor :client_certificate # @return [String, nil]
|
957
|
+
attr_accessor :client_key # @return [String, nil]
|
958
|
+
|
959
|
+
# @param [:none, :half, :full] level Specifies what level of encryption should be used.
|
960
|
+
# @param [String, nil] certificate
|
961
|
+
# @param [String, nil] client_certificate
|
962
|
+
# @param [String, nil] client_key
|
963
|
+
#
|
964
|
+
# @yieldparam [EncryptionSettings] self
|
965
|
+
def initialize(level: :none,
|
966
|
+
certificate: nil,
|
967
|
+
client_certificate: nil,
|
968
|
+
client_key: nil)
|
969
|
+
@level = level
|
970
|
+
@certificate = certificate
|
971
|
+
@client_certificate = client_certificate
|
972
|
+
@client_key = client_key
|
973
|
+
yield self if block_given?
|
974
|
+
end
|
975
|
+
end
|
976
|
+
|
977
|
+
class CouchbaseRemoteAnalyticsLink
|
978
|
+
attr_accessor :name # @return [String]
|
979
|
+
attr_accessor :dataverse # @return [String]
|
980
|
+
attr_accessor :hostname # @return [String]
|
981
|
+
attr_accessor :username # @return [String, nil]
|
982
|
+
attr_accessor :password # @return [String, nil]
|
983
|
+
attr_accessor :encryption # @return [EncryptionSettings]
|
984
|
+
|
985
|
+
# @param [String] name the name of this link
|
986
|
+
# @param [String] dataverse the dataverse this link belongs to
|
987
|
+
# @param [String] hostname the hostname of the target Couchbase cluster
|
988
|
+
# @param [String, nil] username the username to use for authentication with the remote cluster. Optional if
|
989
|
+
# client-certificate authentication is being used.
|
990
|
+
# @param [String, nil] password the password to use for authentication with the remote cluster. Optional if
|
991
|
+
# client-certificate authentication is being used.
|
992
|
+
# @param [EncryptionSettings] encryption settings for connection encryption
|
993
|
+
#
|
994
|
+
# @yieldparam [CouchbaseRemoteLink] self
|
995
|
+
def initialize(name, dataverse, hostname,
|
996
|
+
username: nil,
|
997
|
+
password: nil,
|
998
|
+
encryption: EncryptionSettings.new)
|
999
|
+
@name = name
|
1000
|
+
@dataverse = dataverse
|
1001
|
+
@hostname = hostname
|
1002
|
+
@username = username
|
1003
|
+
@password = password
|
1004
|
+
@encryption = encryption
|
1005
|
+
yield self if block_given?
|
1006
|
+
end
|
1007
|
+
|
1008
|
+
# @api private
|
1009
|
+
def to_backend
|
1010
|
+
{
|
1011
|
+
type: :couchbase,
|
1012
|
+
link_name: @name,
|
1013
|
+
dataverse: @dataverse,
|
1014
|
+
hostname: @hostname,
|
1015
|
+
username: @username,
|
1016
|
+
password: @password,
|
1017
|
+
encryption_level: @encryption.level,
|
1018
|
+
certificate: @encryption.certificate,
|
1019
|
+
client_certificate: @encryption.client_certificate,
|
1020
|
+
client_key: @encryption.client_key,
|
1021
|
+
}
|
1022
|
+
end
|
1023
|
+
end
|
1024
|
+
|
1025
|
+
class AzureBlobExternalAnalyticsLink
|
1026
|
+
attr_accessor :name # @return [String]
|
1027
|
+
attr_accessor :dataverse # @return [String]
|
1028
|
+
attr_accessor :connection_string # @return [String, nil]
|
1029
|
+
attr_accessor :account_name # @return [String, nil]
|
1030
|
+
attr_accessor :account_key # @return [String, nil]
|
1031
|
+
attr_accessor :shared_access_signature # @return [String, nil]
|
1032
|
+
attr_accessor :blob_endpoint # @return [String, nil]
|
1033
|
+
attr_accessor :endpoint_suffix # @return [String, nil]
|
1034
|
+
|
1035
|
+
# @param [String] name the name of this link
|
1036
|
+
# @param [String] dataverse the dataverse this link belongs to
|
1037
|
+
# @param [String, nil] connection_string the connection string can be used as an authentication method,
|
1038
|
+
# +connection_string+ contains other authentication methods embedded inside the string. Only a single
|
1039
|
+
# authentication method can be used. (e.g. "AccountName=myAccountName;AccountKey=myAccountKey").
|
1040
|
+
# @param [String, nil] account_name Azure blob storage account name
|
1041
|
+
# @param [String, nil] account_key Azure blob storage account key
|
1042
|
+
# @param [String, nil] shared_access_signature token that can be used for authentication
|
1043
|
+
# @param [String, nil] blob_endpoint Azure blob storage endpoint
|
1044
|
+
# @param [String, nil] endpoint_suffix Azure blob endpoint suffix
|
1045
|
+
#
|
1046
|
+
# @yieldparam [AzureBlobExternalAnalyticsLink] self
|
1047
|
+
def initialize(name, dataverse,
|
1048
|
+
connection_string: nil,
|
1049
|
+
account_name: nil,
|
1050
|
+
account_key: nil,
|
1051
|
+
shared_access_signature: nil,
|
1052
|
+
blob_endpoint: nil,
|
1053
|
+
endpoint_suffix: nil)
|
1054
|
+
@name = name
|
1055
|
+
@dataverse = dataverse
|
1056
|
+
@connection_string = connection_string
|
1057
|
+
@account_name = account_name
|
1058
|
+
@account_key = account_key
|
1059
|
+
@shared_access_signature = shared_access_signature
|
1060
|
+
@blob_endpoint = blob_endpoint
|
1061
|
+
@endpoint_suffix = endpoint_suffix
|
1062
|
+
yield self if block_given?
|
1063
|
+
end
|
1064
|
+
|
1065
|
+
# @api private
|
1066
|
+
def to_backend
|
1067
|
+
{
|
1068
|
+
type: :azureblob,
|
1069
|
+
link_name: @name,
|
1070
|
+
dataverse: @dataverse,
|
1071
|
+
connection_string: @connection_string,
|
1072
|
+
account_name: @account_name,
|
1073
|
+
account_key: @account_key,
|
1074
|
+
shared_access_signature: @shared_access_signature,
|
1075
|
+
blob_endpoint: @blob_endpoint,
|
1076
|
+
endpoint_suffix: @endpoint_suffix,
|
1077
|
+
}
|
1078
|
+
end
|
1079
|
+
end
|
1080
|
+
|
1081
|
+
class S3ExternalAnalyticsLink
|
1082
|
+
attr_accessor :name # @return [String]
|
1083
|
+
attr_accessor :dataverse # @return [String]
|
1084
|
+
attr_accessor :access_key_id # @return [String]
|
1085
|
+
attr_accessor :secret_access_key # @return [String]
|
1086
|
+
attr_accessor :session_token # @return [String, nil]
|
1087
|
+
attr_accessor :region # @return [String]
|
1088
|
+
attr_accessor :service_endpoint # @return [String, nil]
|
1089
|
+
|
1090
|
+
# @param [String] name the name of this link
|
1091
|
+
# @param [String] dataverse the dataverse this link belongs to
|
1092
|
+
# @param [String] access_key_id AWS S3 access key ID
|
1093
|
+
# @param [String] secret_access_key AWS S3 secret key
|
1094
|
+
# @param [String] region AWS S3 region
|
1095
|
+
# @param [String, nil] session_token AWS S3 token if temporary credentials are provided. Only available in 7.0+
|
1096
|
+
# @param [String, nil] service_endpoint AWS S3 service endpoint
|
1097
|
+
#
|
1098
|
+
# @yieldparam [S3ExternalAnalyticsLink] self
|
1099
|
+
def initialize(name, dataverse, access_key_id, secret_access_key, region,
|
1100
|
+
session_token: nil,
|
1101
|
+
service_endpoint: nil)
|
1102
|
+
@name = name
|
1103
|
+
@dataverse = dataverse
|
1104
|
+
@access_key_id = access_key_id
|
1105
|
+
@secret_access_key = secret_access_key
|
1106
|
+
@session_token = session_token
|
1107
|
+
@region = region
|
1108
|
+
@service_endpoint = service_endpoint
|
1109
|
+
yield self if block_given?
|
1110
|
+
end
|
1111
|
+
|
1112
|
+
# @api private
|
1113
|
+
def to_backend
|
1114
|
+
{
|
1115
|
+
type: :s3,
|
1116
|
+
link_name: @name,
|
1117
|
+
dataverse: @dataverse,
|
1118
|
+
access_key_id: @access_key_id,
|
1119
|
+
secret_access_key: @secret_access_key,
|
1120
|
+
session_token: @session_token,
|
1121
|
+
region: @region,
|
1122
|
+
service_endpoint: @service_endpoint,
|
1123
|
+
}
|
1124
|
+
end
|
1125
|
+
end
|
432
1126
|
end
|
433
1127
|
end
|