cassandra 0.7.6 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/cassandra.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'thrift_client'
3
- require 'json'
3
+ require 'json' unless defined?(JSON)
4
4
  require 'simple_uuid'
5
5
  include SimpleUUID
6
6
  here = File.expand_path(File.dirname(__FILE__))
@@ -69,19 +69,9 @@ class Cassandra
69
69
  @servers = Array(servers)
70
70
  end
71
71
 
72
- def client
73
- return @client if defined?(@client)
74
- client!
75
- end
76
-
77
- def client!
78
- @client = raw_client
79
- unless (keyspaces = client.get_string_list_property("keyspaces")).include?(@keyspace)
80
- raise AccessError, "Keyspace #{@keyspace.inspect} not found. Available: #{keyspaces.inspect}"
81
- end
82
- @servers = all_nodes
72
+ def disconnect!
83
73
  @client.disconnect!
84
- @client = raw_client
74
+ @client = nil
85
75
  end
86
76
 
87
77
  def keyspaces
@@ -103,12 +93,24 @@ class Cassandra
103
93
  column_family, _, _, options = extract_and_validate_params(column_family, key, [options], WRITE_DEFAULTS)
104
94
 
105
95
  timestamp = options[:timestamp] || Time.stamp
106
- cfmap = hash_to_cfmap(column_family, hash, timestamp)
107
- mutation = [:insert, [key, cfmap, options[:consistency]]]
96
+ mutation_map = if is_super(column_family)
97
+ {
98
+ key => {
99
+ column_family => hash.collect{|k,v| _super_insert_mutation(column_family, k, v, timestamp) }
100
+ }
101
+ }
102
+ else
103
+ {
104
+ key => {
105
+ column_family => hash.collect{|k,v| _standard_insert_mutation(column_family, k, v, timestamp)}
106
+ }
107
+ }
108
+ end
108
109
 
109
- @batch ? @batch << mutation : _insert(*mutation[1])
110
+ @batch ? @batch << [mutation_map, options[:consistency]] : _mutate(mutation_map, options[:consistency])
110
111
  end
111
112
 
113
+
112
114
  ## Delete
113
115
 
114
116
  # _mutate the element at the column_family:key:[column]:[sub_column]
@@ -131,8 +133,8 @@ class Cassandra
131
133
  # FIXME May not currently delete all records without multiple calls. Waiting
132
134
  # for ranged remove support in Cassandra.
133
135
  def clear_column_family!(column_family, options = {})
134
- while (keys = get_range(column_family, :count => 100)).length > 0
135
- keys.each { |key| remove(column_family, key, options) }
136
+ each_key(column_family) do |key|
137
+ remove(column_family, key, options)
136
138
  end
137
139
  end
138
140
 
@@ -220,14 +222,7 @@ class Cassandra
220
222
  # to be partitioned with OrderPreservingHash. Supports the <tt>:start</tt>,
221
223
  # <tt>:finish</tt>, and <tt>:consistency</tt> options.
222
224
  def count_range(column_family, options = {})
223
- count = 0
224
- l = []
225
- start_key = options[:start]
226
- while (l = get_range(column_family, options.merge(:count => 1000, :start => start_key))).size > 0
227
- count += l.size
228
- start_key = l.last.succ
229
- end
230
- count
225
+ get_range(column_family, options).select{|r| r.columns.length > 0}.compact.length
231
226
  end
232
227
 
233
228
  # Open a batch operation and yield. Inserts and deletes will be queued until
@@ -244,20 +239,20 @@ class Cassandra
244
239
 
245
240
  @batch.each do |mutation|
246
241
  case mutation.first
247
- when :insert
248
- _insert(*mutation[1])
249
242
  when :remove
250
243
  _remove(*mutation[1])
244
+ else
245
+ _mutate(*mutation)
251
246
  end
252
247
  end
253
248
  ensure
254
249
  @batch = nil
255
250
  end
256
251
 
257
- private
252
+ protected
258
253
 
259
254
  def calling_method
260
- "#{self.class}##{caller[0].split('`').last[0..-3]}"
255
+ "#{self.class}##{caller[0].split('`').last[0..-3]}"
261
256
  end
262
257
 
263
258
  # Roll up queued mutations, to improve atomicity.
@@ -273,13 +268,31 @@ class Cassandra
273
268
  end
274
269
  end
275
270
 
276
- def raw_client
271
+ def client
272
+ reconnect! if @client.nil?
273
+ @client
274
+ end
275
+
276
+ def reconnect!
277
+ @servers = all_nodes
278
+ @client = new_client
279
+ check_keyspace
280
+ end
281
+
282
+ def check_keyspace
283
+ unless (keyspaces = client.get_string_list_property("keyspaces")).include?(@keyspace)
284
+ raise AccessError, "Keyspace #{@keyspace.inspect} not found. Available: #{keyspaces.inspect}"
285
+ end
286
+ end
287
+
288
+ def new_client
277
289
  ThriftClient.new(CassandraThrift::Cassandra::Client, @servers, @thrift_client_options)
278
290
  end
279
291
 
280
292
  def all_nodes
281
- ips = ::JSON.parse(@client.get_string_property('token map')).values
293
+ ips = ::JSON.parse(new_client.get_string_property('token map')).values
282
294
  port = @servers.first.split(':').last
283
295
  ips.map{|ip| "#{ip}:#{port}" }
284
296
  end
297
+
285
298
  end
@@ -71,38 +71,36 @@ class Cassandra
71
71
  c.value
72
72
  end
73
73
  end
74
- hash
74
+ hash
75
75
  end
76
76
 
77
- def hash_to_cfmap(column_family, hash, timestamp)
78
- h = Hash.new
79
- if is_super(column_family)
80
- h[column_family] = hash.collect do |super_column_name, sub_columns|
81
- CassandraThrift::ColumnOrSuperColumn.new(
82
- :super_column => CassandraThrift::SuperColumn.new(
83
- :name => column_name_class(column_family).new(super_column_name).to_s,
84
- :columns => sub_columns.collect { |sub_column_name, sub_column_value|
85
- CassandraThrift::Column.new(
86
- :name => sub_column_name_class(column_family).new(sub_column_name).to_s,
87
- :value => sub_column_value.to_s,
88
- :timestamp => timestamp
89
- )
90
- }
91
- )
77
+ def _standard_insert_mutation(column_family, column_name, value, timestamp)
78
+ CassandraThrift::Mutation.new(
79
+ :column_or_supercolumn => CassandraThrift::ColumnOrSuperColumn.new(
80
+ :column => CassandraThrift::Column.new(
81
+ :name => column_name_class(column_family).new(column_name).to_s,
82
+ :value => value,
83
+ :timestamp => timestamp
92
84
  )
93
- end
94
- else
95
- h[column_family] = hash.collect do |column_name, value|
96
- CassandraThrift::ColumnOrSuperColumn.new(
97
- :column => CassandraThrift::Column.new(
98
- :name => column_name_class(column_family).new(column_name).to_s,
99
- :value => value,
100
- :timestamp => timestamp
101
- )
85
+ )
86
+ )
87
+ end
88
+
89
+ def _super_insert_mutation(column_family, super_column_name, sub_columns, timestamp)
90
+ CassandraThrift::Mutation.new(:column_or_supercolumn =>
91
+ CassandraThrift::ColumnOrSuperColumn.new(
92
+ :super_column => CassandraThrift::SuperColumn.new(
93
+ :name => column_name_class(column_family).new(super_column_name).to_s,
94
+ :columns => sub_columns.collect { |sub_column_name, sub_column_value|
95
+ CassandraThrift::Column.new(
96
+ :name => sub_column_name_class(column_family).new(sub_column_name).to_s,
97
+ :value => sub_column_value.to_s,
98
+ :timestamp => timestamp
99
+ )
100
+ }
102
101
  )
103
- end
104
- end
105
- h
102
+ )
103
+ )
106
104
  end
107
105
  end
108
106
  end
@@ -19,8 +19,10 @@ class Cassandra
19
19
  column, sub_column = args[0], args[1]
20
20
  klass, sub_klass = column_name_class(column_family), sub_column_name_class(column_family)
21
21
  range_class = column ? sub_klass : klass
22
- options[:start] = options[:start] ? range_class.new(options[:start]).to_s : ""
23
- options[:finish] = options[:finish] ? range_class.new(options[:finish]).to_s : ""
22
+
23
+ [:start, :finish].each do |opt|
24
+ options[opt] = options[opt] ? range_class.new(options[opt]).to_s : ''
25
+ end
24
26
 
25
27
  [column_family, s_map(column, klass), s_map(sub_column, sub_klass), options]
26
28
  end
@@ -35,4 +37,4 @@ class Cassandra
35
37
  end
36
38
  end
37
39
  end
38
- end
40
+ end
@@ -23,6 +23,9 @@ class Cassandra
23
23
  clear_keyspace!
24
24
  end
25
25
 
26
+ def disconnect!
27
+ end
28
+
26
29
  def clear_keyspace!
27
30
  @data = {}
28
31
  end
@@ -4,16 +4,16 @@ class Cassandra
4
4
  module Protocol #:nodoc:
5
5
  private
6
6
 
7
- def _insert(key, cfmap, consistency_level)
8
- @client.batch_insert(@keyspace, key, cfmap, consistency_level)
7
+ def _mutate(mutation_map, consistency_level)
8
+ client.batch_mutate(@keyspace, mutation_map, consistency_level)
9
9
  end
10
10
 
11
11
  def _remove(key, column_path, timestamp, consistency_level)
12
- @client.remove(@keyspace, key, column_path, timestamp, consistency_level)
12
+ client.remove(@keyspace, key, column_path, timestamp, consistency_level)
13
13
  end
14
14
 
15
15
  def _count_columns(column_family, key, super_column, consistency)
16
- @client.get_count(@keyspace, key,
16
+ client.get_count(@keyspace, key,
17
17
  CassandraThrift::ColumnParent.new(:column_family => column_family, :super_column => super_column),
18
18
  consistency
19
19
  )
@@ -22,18 +22,18 @@ class Cassandra
22
22
  def _get_columns(column_family, key, columns, sub_columns, consistency)
23
23
  result = if is_super(column_family)
24
24
  if sub_columns
25
- columns_to_hash(column_family, @client.get_slice(@keyspace, key,
25
+ columns_to_hash(column_family, client.get_slice(@keyspace, key,
26
26
  CassandraThrift::ColumnParent.new(:column_family => column_family, :super_column => columns),
27
27
  CassandraThrift::SlicePredicate.new(:column_names => sub_columns),
28
28
  consistency))
29
29
  else
30
- columns_to_hash(column_family, @client.get_slice(@keyspace, key,
30
+ columns_to_hash(column_family, client.get_slice(@keyspace, key,
31
31
  CassandraThrift::ColumnParent.new(:column_family => column_family),
32
32
  CassandraThrift::SlicePredicate.new(:column_names => columns),
33
33
  consistency))
34
34
  end
35
35
  else
36
- columns_to_hash(column_family, @client.get_slice(@keyspace, key,
36
+ columns_to_hash(column_family, client.get_slice(@keyspace, key,
37
37
  CassandraThrift::ColumnParent.new(:column_family => column_family),
38
38
  CassandraThrift::SlicePredicate.new(:column_names => columns),
39
39
  consistency))
@@ -47,10 +47,10 @@ class Cassandra
47
47
  # Single values; count and range parameters have no effect
48
48
  if is_super(column_family) and sub_column
49
49
  column_path = CassandraThrift::ColumnPath.new(:column_family => column_family, :super_column => column, :column => sub_column)
50
- multi_column_to_hash!(@client.multiget(@keyspace, keys, column_path, consistency))
50
+ multi_column_to_hash!(client.multiget(@keyspace, keys, column_path, consistency))
51
51
  elsif !is_super(column_family) and column
52
52
  column_path = CassandraThrift::ColumnPath.new(:column_family => column_family, :column => column)
53
- multi_column_to_hash!(@client.multiget(@keyspace, keys, column_path, consistency))
53
+ multi_column_to_hash!(client.multiget(@keyspace, keys, column_path, consistency))
54
54
 
55
55
  # Slices
56
56
  else
@@ -63,16 +63,30 @@ class Cassandra
63
63
 
64
64
  if is_super(column_family) and column
65
65
  column_parent = CassandraThrift::ColumnParent.new(:column_family => column_family, :super_column => column)
66
- multi_sub_columns_to_hash!(column_family, @client.multiget_slice(@keyspace, keys, column_parent, predicate, consistency))
66
+ multi_sub_columns_to_hash!(column_family, client.multiget_slice(@keyspace, keys, column_parent, predicate, consistency))
67
67
  else
68
68
  column_parent = CassandraThrift::ColumnParent.new(:column_family => column_family)
69
- multi_columns_to_hash!(column_family, @client.multiget_slice(@keyspace, keys, column_parent, predicate, consistency))
69
+ multi_columns_to_hash!(column_family, client.multiget_slice(@keyspace, keys, column_parent, predicate, consistency))
70
70
  end
71
71
  end
72
72
  end
73
73
 
74
74
  def _get_range(column_family, start, finish, count, consistency)
75
- @client.get_key_range(@keyspace, column_family, start, finish, count, consistency)
75
+ column_parent = CassandraThrift::ColumnParent.new(:column_family => column_family)
76
+ predicate = CassandraThrift::SlicePredicate.new(:slice_range => CassandraThrift::SliceRange.new(:start => '', :finish => ''))
77
+ range = CassandraThrift::KeyRange.new(:start_key => start, :end_key => finish)
78
+ client.get_range_slices(@keyspace, column_parent, predicate, range, 1)
79
+ end
80
+
81
+ def _get_range_keys(column_family, start, finish, count, consistency)
82
+ _get_range(column_family, start, finish, count, consistency).collect{|i| i.key }
83
+ end
84
+
85
+ def each_key(column_family)
86
+ column_parent = CassandraThrift::ColumnParent.new(:column_family => column_family.to_s)
87
+ predicate = CassandraThrift::SlicePredicate.new(:column_names => [])
88
+ range = CassandraThrift::KeyRange.new(:start_key => '', :end_key => '')
89
+ client.get_range_slices(@keyspace, column_parent, predicate, range, 1).each{|i| yield i.key }
76
90
  end
77
91
  end
78
92
  end
@@ -0,0 +1,20 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper')
2
+
3
+ class CassandraClientTest < Test::Unit::TestCase
4
+ include Cassandra::Constants
5
+
6
+ def setup
7
+ @twitter = Cassandra.new('Twitter', "127.0.0.1:9160", :retries => 2, :exception_classes => [])
8
+ end
9
+
10
+ def test_client_method_is_called
11
+ assert_nil @twitter.instance_variable_get(:@client)
12
+ @twitter.insert(:Statuses, key, {'1' => 'v', '2' => 'v', '3' => 'v'})
13
+ assert_not_nil @twitter.instance_variable_get(:@client)
14
+ end
15
+
16
+ def key
17
+ caller.first[/`(.*?)'/, 1]
18
+ end
19
+
20
+ end
@@ -152,14 +152,16 @@ class CassandraTest < Test::Unit::TestCase
152
152
  assert_nil @twitter.get(:StatusRelationships, 'bogus', 'user_timelines', columns.keys.first)
153
153
  end
154
154
 
155
- def test_get_range
156
- @twitter.insert(:Statuses, '2', {'body' => '1'})
157
- @twitter.insert(:Statuses, '3', {'body' => '1'})
158
- @twitter.insert(:Statuses, '4', {'body' => '1'})
159
- @twitter.insert(:Statuses, '5', {'body' => '1'})
160
- @twitter.insert(:Statuses, '6', {'body' => '1'})
161
- assert_equal(['3', '4', '5'], @twitter.get_range(:Statuses, :start => '3', :finish => '5'))
162
- end
155
+
156
+ #TODO: add a OPP keyspace for this
157
+ # def test_get_range
158
+ # @twitter.insert(:Statuses, '2', {'body' => '1'})
159
+ # @twitter.insert(:Statuses, '3', {'body' => '1'})
160
+ # @twitter.insert(:Statuses, '4', {'body' => '1'})
161
+ # @twitter.insert(:Statuses, '5', {'body' => '1'})
162
+ # @twitter.insert(:Statuses, '6', {'body' => '1'})
163
+ # assert_equal(['3', '4', '5'], @twitter.get_range(:Statuses, :start => '3', :finish => '5'))
164
+ # end
163
165
 
164
166
  def test_multi_get
165
167
  @twitter.insert(:Users, key + '1', {'body' => 'v1', 'user' => 'v1'})
@@ -182,7 +184,6 @@ class CassandraTest < Test::Unit::TestCase
182
184
 
183
185
  @twitter.remove(:Statuses, key)
184
186
  assert_equal({}, @twitter.get(:Statuses, key))
185
- assert_equal 0, @twitter.count_range(:Statuses)
186
187
  end
187
188
 
188
189
  def test_remove_value
@@ -342,6 +343,11 @@ class CassandraTest < Test::Unit::TestCase
342
343
  @twitter.insert(:Index, 'asdf', {"thing" => {'jkl' => nil} })
343
344
  end
344
345
 
346
+ def test_disconnect!
347
+ @twitter.disconnect!
348
+ assert_nil @twitter.instance_variable_get(:@client)
349
+ end
350
+
345
351
  private
346
352
 
347
353
  def key
@@ -12,6 +12,22 @@ require 'cassandra_types'
12
12
  class Client
13
13
  include ::Thrift::Client
14
14
 
15
+ def login(keyspace, auth_request)
16
+ send_login(keyspace, auth_request)
17
+ recv_login()
18
+ end
19
+
20
+ def send_login(keyspace, auth_request)
21
+ send_message('login', Login_args, :keyspace => keyspace, :auth_request => auth_request)
22
+ end
23
+
24
+ def recv_login()
25
+ result = receive_message(Login_result)
26
+ raise result.authnx unless result.authnx.nil?
27
+ raise result.authzx unless result.authzx.nil?
28
+ return
29
+ end
30
+
15
31
  def get(keyspace, key, column_path, consistency_level)
16
32
  send_get(keyspace, key, column_path, consistency_level)
17
33
  return recv_get()
@@ -103,40 +119,40 @@ require 'cassandra_types'
103
119
  raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_count failed: unknown result')
104
120
  end
105
121
 
106
- def get_key_range(keyspace, column_family, start, finish, count, consistency_level)
107
- send_get_key_range(keyspace, column_family, start, finish, count, consistency_level)
108
- return recv_get_key_range()
122
+ def get_range_slice(keyspace, column_parent, predicate, start_key, finish_key, row_count, consistency_level)
123
+ send_get_range_slice(keyspace, column_parent, predicate, start_key, finish_key, row_count, consistency_level)
124
+ return recv_get_range_slice()
109
125
  end
110
126
 
111
- def send_get_key_range(keyspace, column_family, start, finish, count, consistency_level)
112
- send_message('get_key_range', Get_key_range_args, :keyspace => keyspace, :column_family => column_family, :start => start, :finish => finish, :count => count, :consistency_level => consistency_level)
127
+ def send_get_range_slice(keyspace, column_parent, predicate, start_key, finish_key, row_count, consistency_level)
128
+ send_message('get_range_slice', Get_range_slice_args, :keyspace => keyspace, :column_parent => column_parent, :predicate => predicate, :start_key => start_key, :finish_key => finish_key, :row_count => row_count, :consistency_level => consistency_level)
113
129
  end
114
130
 
115
- def recv_get_key_range()
116
- result = receive_message(Get_key_range_result)
131
+ def recv_get_range_slice()
132
+ result = receive_message(Get_range_slice_result)
117
133
  return result.success unless result.success.nil?
118
134
  raise result.ire unless result.ire.nil?
119
135
  raise result.ue unless result.ue.nil?
120
136
  raise result.te unless result.te.nil?
121
- raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_key_range failed: unknown result')
137
+ raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_range_slice failed: unknown result')
122
138
  end
123
139
 
124
- def get_range_slice(keyspace, column_parent, predicate, start_key, finish_key, row_count, consistency_level)
125
- send_get_range_slice(keyspace, column_parent, predicate, start_key, finish_key, row_count, consistency_level)
126
- return recv_get_range_slice()
140
+ def get_range_slices(keyspace, column_parent, predicate, range, consistency_level)
141
+ send_get_range_slices(keyspace, column_parent, predicate, range, consistency_level)
142
+ return recv_get_range_slices()
127
143
  end
128
144
 
129
- def send_get_range_slice(keyspace, column_parent, predicate, start_key, finish_key, row_count, consistency_level)
130
- send_message('get_range_slice', Get_range_slice_args, :keyspace => keyspace, :column_parent => column_parent, :predicate => predicate, :start_key => start_key, :finish_key => finish_key, :row_count => row_count, :consistency_level => consistency_level)
145
+ def send_get_range_slices(keyspace, column_parent, predicate, range, consistency_level)
146
+ send_message('get_range_slices', Get_range_slices_args, :keyspace => keyspace, :column_parent => column_parent, :predicate => predicate, :range => range, :consistency_level => consistency_level)
131
147
  end
132
148
 
133
- def recv_get_range_slice()
134
- result = receive_message(Get_range_slice_result)
149
+ def recv_get_range_slices()
150
+ result = receive_message(Get_range_slices_result)
135
151
  return result.success unless result.success.nil?
136
152
  raise result.ire unless result.ire.nil?
137
153
  raise result.ue unless result.ue.nil?
138
154
  raise result.te unless result.te.nil?
139
- raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_range_slice failed: unknown result')
155
+ raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_range_slices failed: unknown result')
140
156
  end
141
157
 
142
158
  def insert(keyspace, key, column_path, value, timestamp, consistency_level)
@@ -190,6 +206,23 @@ require 'cassandra_types'
190
206
  return
191
207
  end
192
208
 
209
+ def batch_mutate(keyspace, mutation_map, consistency_level)
210
+ send_batch_mutate(keyspace, mutation_map, consistency_level)
211
+ recv_batch_mutate()
212
+ end
213
+
214
+ def send_batch_mutate(keyspace, mutation_map, consistency_level)
215
+ send_message('batch_mutate', Batch_mutate_args, :keyspace => keyspace, :mutation_map => mutation_map, :consistency_level => consistency_level)
216
+ end
217
+
218
+ def recv_batch_mutate()
219
+ result = receive_message(Batch_mutate_result)
220
+ raise result.ire unless result.ire.nil?
221
+ raise result.ue unless result.ue.nil?
222
+ raise result.te unless result.te.nil?
223
+ return
224
+ end
225
+
193
226
  def get_string_property(property)
194
227
  send_get_string_property(property)
195
228
  return recv_get_string_property()
@@ -220,6 +253,66 @@ require 'cassandra_types'
220
253
  raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_string_list_property failed: unknown result')
221
254
  end
222
255
 
256
+ def describe_keyspaces()
257
+ send_describe_keyspaces()
258
+ return recv_describe_keyspaces()
259
+ end
260
+
261
+ def send_describe_keyspaces()
262
+ send_message('describe_keyspaces', Describe_keyspaces_args)
263
+ end
264
+
265
+ def recv_describe_keyspaces()
266
+ result = receive_message(Describe_keyspaces_result)
267
+ return result.success unless result.success.nil?
268
+ raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'describe_keyspaces failed: unknown result')
269
+ end
270
+
271
+ def describe_cluster_name()
272
+ send_describe_cluster_name()
273
+ return recv_describe_cluster_name()
274
+ end
275
+
276
+ def send_describe_cluster_name()
277
+ send_message('describe_cluster_name', Describe_cluster_name_args)
278
+ end
279
+
280
+ def recv_describe_cluster_name()
281
+ result = receive_message(Describe_cluster_name_result)
282
+ return result.success unless result.success.nil?
283
+ raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'describe_cluster_name failed: unknown result')
284
+ end
285
+
286
+ def describe_version()
287
+ send_describe_version()
288
+ return recv_describe_version()
289
+ end
290
+
291
+ def send_describe_version()
292
+ send_message('describe_version', Describe_version_args)
293
+ end
294
+
295
+ def recv_describe_version()
296
+ result = receive_message(Describe_version_result)
297
+ return result.success unless result.success.nil?
298
+ raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'describe_version failed: unknown result')
299
+ end
300
+
301
+ def describe_ring(keyspace)
302
+ send_describe_ring(keyspace)
303
+ return recv_describe_ring()
304
+ end
305
+
306
+ def send_describe_ring(keyspace)
307
+ send_message('describe_ring', Describe_ring_args, :keyspace => keyspace)
308
+ end
309
+
310
+ def recv_describe_ring()
311
+ result = receive_message(Describe_ring_result)
312
+ return result.success unless result.success.nil?
313
+ raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'describe_ring failed: unknown result')
314
+ end
315
+
223
316
  def describe_keyspace(keyspace)
224
317
  send_describe_keyspace(keyspace)
225
318
  return recv_describe_keyspace()
@@ -236,11 +329,39 @@ require 'cassandra_types'
236
329
  raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'describe_keyspace failed: unknown result')
237
330
  end
238
331
 
332
+ def describe_splits(start_token, end_token, keys_per_split)
333
+ send_describe_splits(start_token, end_token, keys_per_split)
334
+ return recv_describe_splits()
335
+ end
336
+
337
+ def send_describe_splits(start_token, end_token, keys_per_split)
338
+ send_message('describe_splits', Describe_splits_args, :start_token => start_token, :end_token => end_token, :keys_per_split => keys_per_split)
339
+ end
340
+
341
+ def recv_describe_splits()
342
+ result = receive_message(Describe_splits_result)
343
+ return result.success unless result.success.nil?
344
+ raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'describe_splits failed: unknown result')
345
+ end
346
+
239
347
  end
240
348
 
241
349
  class Processor
242
350
  include ::Thrift::Processor
243
351
 
352
+ def process_login(seqid, iprot, oprot)
353
+ args = read_args(iprot, Login_args)
354
+ result = Login_result.new()
355
+ begin
356
+ @handler.login(args.keyspace, args.auth_request)
357
+ rescue CassandraThrift::AuthenticationException => authnx
358
+ result.authnx = authnx
359
+ rescue CassandraThrift::AuthorizationException => authzx
360
+ result.authzx = authzx
361
+ end
362
+ write_result(result, oprot, 'login', seqid)
363
+ end
364
+
244
365
  def process_get(seqid, iprot, oprot)
245
366
  args = read_args(iprot, Get_args)
246
367
  result = Get_result.new()
@@ -318,11 +439,11 @@ require 'cassandra_types'
318
439
  write_result(result, oprot, 'get_count', seqid)
319
440
  end
320
441
 
321
- def process_get_key_range(seqid, iprot, oprot)
322
- args = read_args(iprot, Get_key_range_args)
323
- result = Get_key_range_result.new()
442
+ def process_get_range_slice(seqid, iprot, oprot)
443
+ args = read_args(iprot, Get_range_slice_args)
444
+ result = Get_range_slice_result.new()
324
445
  begin
325
- result.success = @handler.get_key_range(args.keyspace, args.column_family, args.start, args.finish, args.count, args.consistency_level)
446
+ result.success = @handler.get_range_slice(args.keyspace, args.column_parent, args.predicate, args.start_key, args.finish_key, args.row_count, args.consistency_level)
326
447
  rescue CassandraThrift::InvalidRequestException => ire
327
448
  result.ire = ire
328
449
  rescue CassandraThrift::UnavailableException => ue
@@ -330,14 +451,14 @@ require 'cassandra_types'
330
451
  rescue CassandraThrift::TimedOutException => te
331
452
  result.te = te
332
453
  end
333
- write_result(result, oprot, 'get_key_range', seqid)
454
+ write_result(result, oprot, 'get_range_slice', seqid)
334
455
  end
335
456
 
336
- def process_get_range_slice(seqid, iprot, oprot)
337
- args = read_args(iprot, Get_range_slice_args)
338
- result = Get_range_slice_result.new()
457
+ def process_get_range_slices(seqid, iprot, oprot)
458
+ args = read_args(iprot, Get_range_slices_args)
459
+ result = Get_range_slices_result.new()
339
460
  begin
340
- result.success = @handler.get_range_slice(args.keyspace, args.column_parent, args.predicate, args.start_key, args.finish_key, args.row_count, args.consistency_level)
461
+ result.success = @handler.get_range_slices(args.keyspace, args.column_parent, args.predicate, args.range, args.consistency_level)
341
462
  rescue CassandraThrift::InvalidRequestException => ire
342
463
  result.ire = ire
343
464
  rescue CassandraThrift::UnavailableException => ue
@@ -345,7 +466,7 @@ require 'cassandra_types'
345
466
  rescue CassandraThrift::TimedOutException => te
346
467
  result.te = te
347
468
  end
348
- write_result(result, oprot, 'get_range_slice', seqid)
469
+ write_result(result, oprot, 'get_range_slices', seqid)
349
470
  end
350
471
 
351
472
  def process_insert(seqid, iprot, oprot)
@@ -393,6 +514,21 @@ require 'cassandra_types'
393
514
  write_result(result, oprot, 'remove', seqid)
394
515
  end
395
516
 
517
+ def process_batch_mutate(seqid, iprot, oprot)
518
+ args = read_args(iprot, Batch_mutate_args)
519
+ result = Batch_mutate_result.new()
520
+ begin
521
+ @handler.batch_mutate(args.keyspace, args.mutation_map, args.consistency_level)
522
+ rescue CassandraThrift::InvalidRequestException => ire
523
+ result.ire = ire
524
+ rescue CassandraThrift::UnavailableException => ue
525
+ result.ue = ue
526
+ rescue CassandraThrift::TimedOutException => te
527
+ result.te = te
528
+ end
529
+ write_result(result, oprot, 'batch_mutate', seqid)
530
+ end
531
+
396
532
  def process_get_string_property(seqid, iprot, oprot)
397
533
  args = read_args(iprot, Get_string_property_args)
398
534
  result = Get_string_property_result.new()
@@ -407,6 +543,34 @@ require 'cassandra_types'
407
543
  write_result(result, oprot, 'get_string_list_property', seqid)
408
544
  end
409
545
 
546
+ def process_describe_keyspaces(seqid, iprot, oprot)
547
+ args = read_args(iprot, Describe_keyspaces_args)
548
+ result = Describe_keyspaces_result.new()
549
+ result.success = @handler.describe_keyspaces()
550
+ write_result(result, oprot, 'describe_keyspaces', seqid)
551
+ end
552
+
553
+ def process_describe_cluster_name(seqid, iprot, oprot)
554
+ args = read_args(iprot, Describe_cluster_name_args)
555
+ result = Describe_cluster_name_result.new()
556
+ result.success = @handler.describe_cluster_name()
557
+ write_result(result, oprot, 'describe_cluster_name', seqid)
558
+ end
559
+
560
+ def process_describe_version(seqid, iprot, oprot)
561
+ args = read_args(iprot, Describe_version_args)
562
+ result = Describe_version_result.new()
563
+ result.success = @handler.describe_version()
564
+ write_result(result, oprot, 'describe_version', seqid)
565
+ end
566
+
567
+ def process_describe_ring(seqid, iprot, oprot)
568
+ args = read_args(iprot, Describe_ring_args)
569
+ result = Describe_ring_result.new()
570
+ result.success = @handler.describe_ring(args.keyspace)
571
+ write_result(result, oprot, 'describe_ring', seqid)
572
+ end
573
+
410
574
  def process_describe_keyspace(seqid, iprot, oprot)
411
575
  args = read_args(iprot, Describe_keyspace_args)
412
576
  result = Describe_keyspace_result.new()
@@ -418,10 +582,55 @@ require 'cassandra_types'
418
582
  write_result(result, oprot, 'describe_keyspace', seqid)
419
583
  end
420
584
 
585
+ def process_describe_splits(seqid, iprot, oprot)
586
+ args = read_args(iprot, Describe_splits_args)
587
+ result = Describe_splits_result.new()
588
+ result.success = @handler.describe_splits(args.start_token, args.end_token, args.keys_per_split)
589
+ write_result(result, oprot, 'describe_splits', seqid)
590
+ end
591
+
421
592
  end
422
593
 
423
594
  # HELPER FUNCTIONS AND STRUCTURES
424
595
 
596
+ class Login_args
597
+ include ::Thrift::Struct
598
+ KEYSPACE = 1
599
+ AUTH_REQUEST = 2
600
+
601
+ ::Thrift::Struct.field_accessor self, :keyspace, :auth_request
602
+ FIELDS = {
603
+ KEYSPACE => {:type => ::Thrift::Types::STRING, :name => 'keyspace'},
604
+ AUTH_REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'auth_request', :class => CassandraThrift::AuthenticationRequest}
605
+ }
606
+
607
+ def struct_fields; FIELDS; end
608
+
609
+ def validate
610
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
611
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field auth_request is unset!') unless @auth_request
612
+ end
613
+
614
+ end
615
+
616
+ class Login_result
617
+ include ::Thrift::Struct
618
+ AUTHNX = 1
619
+ AUTHZX = 2
620
+
621
+ ::Thrift::Struct.field_accessor self, :authnx, :authzx
622
+ FIELDS = {
623
+ AUTHNX => {:type => ::Thrift::Types::STRUCT, :name => 'authnx', :class => CassandraThrift::AuthenticationException},
624
+ AUTHZX => {:type => ::Thrift::Types::STRUCT, :name => 'authzx', :class => CassandraThrift::AuthorizationException}
625
+ }
626
+
627
+ def struct_fields; FIELDS; end
628
+
629
+ def validate
630
+ end
631
+
632
+ end
633
+
425
634
  class Get_args
426
635
  include ::Thrift::Struct
427
636
  KEYSPACE = 1
@@ -440,6 +649,10 @@ require 'cassandra_types'
440
649
  def struct_fields; FIELDS; end
441
650
 
442
651
  def validate
652
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
653
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field key is unset!') unless @key
654
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field column_path is unset!') unless @column_path
655
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field consistency_level is unset!') unless @consistency_level
443
656
  unless @consistency_level.nil? || CassandraThrift::ConsistencyLevel::VALID_VALUES.include?(@consistency_level)
444
657
  raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field consistency_level!')
445
658
  end
@@ -491,6 +704,11 @@ require 'cassandra_types'
491
704
  def struct_fields; FIELDS; end
492
705
 
493
706
  def validate
707
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
708
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field key is unset!') unless @key
709
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field column_parent is unset!') unless @column_parent
710
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field predicate is unset!') unless @predicate
711
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field consistency_level is unset!') unless @consistency_level
494
712
  unless @consistency_level.nil? || CassandraThrift::ConsistencyLevel::VALID_VALUES.include?(@consistency_level)
495
713
  raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field consistency_level!')
496
714
  end
@@ -538,6 +756,10 @@ require 'cassandra_types'
538
756
  def struct_fields; FIELDS; end
539
757
 
540
758
  def validate
759
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
760
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keys is unset!') unless @keys
761
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field column_path is unset!') unless @column_path
762
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field consistency_level is unset!') unless @consistency_level
541
763
  unless @consistency_level.nil? || CassandraThrift::ConsistencyLevel::VALID_VALUES.include?(@consistency_level)
542
764
  raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field consistency_level!')
543
765
  end
@@ -587,6 +809,11 @@ require 'cassandra_types'
587
809
  def struct_fields; FIELDS; end
588
810
 
589
811
  def validate
812
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
813
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keys is unset!') unless @keys
814
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field column_parent is unset!') unless @column_parent
815
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field predicate is unset!') unless @predicate
816
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field consistency_level is unset!') unless @consistency_level
590
817
  unless @consistency_level.nil? || CassandraThrift::ConsistencyLevel::VALID_VALUES.include?(@consistency_level)
591
818
  raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field consistency_level!')
592
819
  end
@@ -634,6 +861,10 @@ require 'cassandra_types'
634
861
  def struct_fields; FIELDS; end
635
862
 
636
863
  def validate
864
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
865
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field key is unset!') unless @key
866
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field column_parent is unset!') unless @column_parent
867
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field consistency_level is unset!') unless @consistency_level
637
868
  unless @consistency_level.nil? || CassandraThrift::ConsistencyLevel::VALID_VALUES.include?(@consistency_level)
638
869
  raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field consistency_level!')
639
870
  end
@@ -663,28 +894,37 @@ require 'cassandra_types'
663
894
 
664
895
  end
665
896
 
666
- class Get_key_range_args
897
+ class Get_range_slice_args
667
898
  include ::Thrift::Struct
668
899
  KEYSPACE = 1
669
- COLUMN_FAMILY = 2
670
- START = 3
671
- FINISH = 4
672
- COUNT = 5
673
- CONSISTENCY_LEVEL = 6
900
+ COLUMN_PARENT = 2
901
+ PREDICATE = 3
902
+ START_KEY = 4
903
+ FINISH_KEY = 5
904
+ ROW_COUNT = 6
905
+ CONSISTENCY_LEVEL = 7
674
906
 
675
- ::Thrift::Struct.field_accessor self, :keyspace, :column_family, :start, :finish, :count, :consistency_level
907
+ ::Thrift::Struct.field_accessor self, :keyspace, :column_parent, :predicate, :start_key, :finish_key, :row_count, :consistency_level
676
908
  FIELDS = {
677
909
  KEYSPACE => {:type => ::Thrift::Types::STRING, :name => 'keyspace'},
678
- COLUMN_FAMILY => {:type => ::Thrift::Types::STRING, :name => 'column_family'},
679
- START => {:type => ::Thrift::Types::STRING, :name => 'start', :default => %q""},
680
- FINISH => {:type => ::Thrift::Types::STRING, :name => 'finish', :default => %q""},
681
- COUNT => {:type => ::Thrift::Types::I32, :name => 'count', :default => 100},
910
+ COLUMN_PARENT => {:type => ::Thrift::Types::STRUCT, :name => 'column_parent', :class => CassandraThrift::ColumnParent},
911
+ PREDICATE => {:type => ::Thrift::Types::STRUCT, :name => 'predicate', :class => CassandraThrift::SlicePredicate},
912
+ START_KEY => {:type => ::Thrift::Types::STRING, :name => 'start_key', :default => %q""},
913
+ FINISH_KEY => {:type => ::Thrift::Types::STRING, :name => 'finish_key', :default => %q""},
914
+ ROW_COUNT => {:type => ::Thrift::Types::I32, :name => 'row_count', :default => 100},
682
915
  CONSISTENCY_LEVEL => {:type => ::Thrift::Types::I32, :name => 'consistency_level', :default => 1, :enum_class => CassandraThrift::ConsistencyLevel}
683
916
  }
684
917
 
685
918
  def struct_fields; FIELDS; end
686
919
 
687
920
  def validate
921
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
922
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field column_parent is unset!') unless @column_parent
923
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field predicate is unset!') unless @predicate
924
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field start_key is unset!') unless @start_key
925
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field finish_key is unset!') unless @finish_key
926
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field row_count is unset!') unless @row_count
927
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field consistency_level is unset!') unless @consistency_level
688
928
  unless @consistency_level.nil? || CassandraThrift::ConsistencyLevel::VALID_VALUES.include?(@consistency_level)
689
929
  raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field consistency_level!')
690
930
  end
@@ -692,7 +932,7 @@ require 'cassandra_types'
692
932
 
693
933
  end
694
934
 
695
- class Get_key_range_result
935
+ class Get_range_slice_result
696
936
  include ::Thrift::Struct
697
937
  SUCCESS = 0
698
938
  IRE = 1
@@ -701,7 +941,7 @@ require 'cassandra_types'
701
941
 
702
942
  ::Thrift::Struct.field_accessor self, :success, :ire, :ue, :te
703
943
  FIELDS = {
704
- SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
944
+ SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => CassandraThrift::KeySlice}},
705
945
  IRE => {:type => ::Thrift::Types::STRUCT, :name => 'ire', :class => CassandraThrift::InvalidRequestException},
706
946
  UE => {:type => ::Thrift::Types::STRUCT, :name => 'ue', :class => CassandraThrift::UnavailableException},
707
947
  TE => {:type => ::Thrift::Types::STRUCT, :name => 'te', :class => CassandraThrift::TimedOutException}
@@ -714,30 +954,31 @@ require 'cassandra_types'
714
954
 
715
955
  end
716
956
 
717
- class Get_range_slice_args
957
+ class Get_range_slices_args
718
958
  include ::Thrift::Struct
719
959
  KEYSPACE = 1
720
960
  COLUMN_PARENT = 2
721
961
  PREDICATE = 3
722
- START_KEY = 4
723
- FINISH_KEY = 5
724
- ROW_COUNT = 6
725
- CONSISTENCY_LEVEL = 7
962
+ RANGE = 4
963
+ CONSISTENCY_LEVEL = 5
726
964
 
727
- ::Thrift::Struct.field_accessor self, :keyspace, :column_parent, :predicate, :start_key, :finish_key, :row_count, :consistency_level
965
+ ::Thrift::Struct.field_accessor self, :keyspace, :column_parent, :predicate, :range, :consistency_level
728
966
  FIELDS = {
729
967
  KEYSPACE => {:type => ::Thrift::Types::STRING, :name => 'keyspace'},
730
968
  COLUMN_PARENT => {:type => ::Thrift::Types::STRUCT, :name => 'column_parent', :class => CassandraThrift::ColumnParent},
731
969
  PREDICATE => {:type => ::Thrift::Types::STRUCT, :name => 'predicate', :class => CassandraThrift::SlicePredicate},
732
- START_KEY => {:type => ::Thrift::Types::STRING, :name => 'start_key', :default => %q""},
733
- FINISH_KEY => {:type => ::Thrift::Types::STRING, :name => 'finish_key', :default => %q""},
734
- ROW_COUNT => {:type => ::Thrift::Types::I32, :name => 'row_count', :default => 100},
970
+ RANGE => {:type => ::Thrift::Types::STRUCT, :name => 'range', :class => CassandraThrift::KeyRange},
735
971
  CONSISTENCY_LEVEL => {:type => ::Thrift::Types::I32, :name => 'consistency_level', :default => 1, :enum_class => CassandraThrift::ConsistencyLevel}
736
972
  }
737
973
 
738
974
  def struct_fields; FIELDS; end
739
975
 
740
976
  def validate
977
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
978
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field column_parent is unset!') unless @column_parent
979
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field predicate is unset!') unless @predicate
980
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field range is unset!') unless @range
981
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field consistency_level is unset!') unless @consistency_level
741
982
  unless @consistency_level.nil? || CassandraThrift::ConsistencyLevel::VALID_VALUES.include?(@consistency_level)
742
983
  raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field consistency_level!')
743
984
  end
@@ -745,7 +986,7 @@ require 'cassandra_types'
745
986
 
746
987
  end
747
988
 
748
- class Get_range_slice_result
989
+ class Get_range_slices_result
749
990
  include ::Thrift::Struct
750
991
  SUCCESS = 0
751
992
  IRE = 1
@@ -789,6 +1030,12 @@ require 'cassandra_types'
789
1030
  def struct_fields; FIELDS; end
790
1031
 
791
1032
  def validate
1033
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
1034
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field key is unset!') unless @key
1035
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field column_path is unset!') unless @column_path
1036
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field value is unset!') unless @value
1037
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field timestamp is unset!') unless @timestamp
1038
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field consistency_level is unset!') unless @consistency_level
792
1039
  unless @consistency_level.nil? || CassandraThrift::ConsistencyLevel::VALID_VALUES.include?(@consistency_level)
793
1040
  raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field consistency_level!')
794
1041
  end
@@ -834,6 +1081,10 @@ require 'cassandra_types'
834
1081
  def struct_fields; FIELDS; end
835
1082
 
836
1083
  def validate
1084
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
1085
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field key is unset!') unless @key
1086
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field cfmap is unset!') unless @cfmap
1087
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field consistency_level is unset!') unless @consistency_level
837
1088
  unless @consistency_level.nil? || CassandraThrift::ConsistencyLevel::VALID_VALUES.include?(@consistency_level)
838
1089
  raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field consistency_level!')
839
1090
  end
@@ -881,6 +1132,10 @@ require 'cassandra_types'
881
1132
  def struct_fields; FIELDS; end
882
1133
 
883
1134
  def validate
1135
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
1136
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field key is unset!') unless @key
1137
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field column_path is unset!') unless @column_path
1138
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field timestamp is unset!') unless @timestamp
884
1139
  unless @consistency_level.nil? || CassandraThrift::ConsistencyLevel::VALID_VALUES.include?(@consistency_level)
885
1140
  raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field consistency_level!')
886
1141
  end
@@ -908,6 +1163,52 @@ require 'cassandra_types'
908
1163
 
909
1164
  end
910
1165
 
1166
+ class Batch_mutate_args
1167
+ include ::Thrift::Struct
1168
+ KEYSPACE = 1
1169
+ MUTATION_MAP = 2
1170
+ CONSISTENCY_LEVEL = 3
1171
+
1172
+ ::Thrift::Struct.field_accessor self, :keyspace, :mutation_map, :consistency_level
1173
+ FIELDS = {
1174
+ KEYSPACE => {:type => ::Thrift::Types::STRING, :name => 'keyspace'},
1175
+ MUTATION_MAP => {:type => ::Thrift::Types::MAP, :name => 'mutation_map', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::MAP, :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRUCT, :class => CassandraThrift::Mutation}}}},
1176
+ CONSISTENCY_LEVEL => {:type => ::Thrift::Types::I32, :name => 'consistency_level', :default => 0, :enum_class => CassandraThrift::ConsistencyLevel}
1177
+ }
1178
+
1179
+ def struct_fields; FIELDS; end
1180
+
1181
+ def validate
1182
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
1183
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field mutation_map is unset!') unless @mutation_map
1184
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field consistency_level is unset!') unless @consistency_level
1185
+ unless @consistency_level.nil? || CassandraThrift::ConsistencyLevel::VALID_VALUES.include?(@consistency_level)
1186
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field consistency_level!')
1187
+ end
1188
+ end
1189
+
1190
+ end
1191
+
1192
+ class Batch_mutate_result
1193
+ include ::Thrift::Struct
1194
+ IRE = 1
1195
+ UE = 2
1196
+ TE = 3
1197
+
1198
+ ::Thrift::Struct.field_accessor self, :ire, :ue, :te
1199
+ FIELDS = {
1200
+ IRE => {:type => ::Thrift::Types::STRUCT, :name => 'ire', :class => CassandraThrift::InvalidRequestException},
1201
+ UE => {:type => ::Thrift::Types::STRUCT, :name => 'ue', :class => CassandraThrift::UnavailableException},
1202
+ TE => {:type => ::Thrift::Types::STRUCT, :name => 'te', :class => CassandraThrift::TimedOutException}
1203
+ }
1204
+
1205
+ def struct_fields; FIELDS; end
1206
+
1207
+ def validate
1208
+ end
1209
+
1210
+ end
1211
+
911
1212
  class Get_string_property_args
912
1213
  include ::Thrift::Struct
913
1214
  PROPERTY = 1
@@ -920,6 +1221,7 @@ require 'cassandra_types'
920
1221
  def struct_fields; FIELDS; end
921
1222
 
922
1223
  def validate
1224
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field property is unset!') unless @property
923
1225
  end
924
1226
 
925
1227
  end
@@ -952,6 +1254,7 @@ require 'cassandra_types'
952
1254
  def struct_fields; FIELDS; end
953
1255
 
954
1256
  def validate
1257
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field property is unset!') unless @property
955
1258
  end
956
1259
 
957
1260
  end
@@ -972,6 +1275,129 @@ require 'cassandra_types'
972
1275
 
973
1276
  end
974
1277
 
1278
+ class Describe_keyspaces_args
1279
+ include ::Thrift::Struct
1280
+
1281
+ FIELDS = {
1282
+
1283
+ }
1284
+
1285
+ def struct_fields; FIELDS; end
1286
+
1287
+ def validate
1288
+ end
1289
+
1290
+ end
1291
+
1292
+ class Describe_keyspaces_result
1293
+ include ::Thrift::Struct
1294
+ SUCCESS = 0
1295
+
1296
+ ::Thrift::Struct.field_accessor self, :success
1297
+ FIELDS = {
1298
+ SUCCESS => {:type => ::Thrift::Types::SET, :name => 'success', :element => {:type => ::Thrift::Types::STRING}}
1299
+ }
1300
+
1301
+ def struct_fields; FIELDS; end
1302
+
1303
+ def validate
1304
+ end
1305
+
1306
+ end
1307
+
1308
+ class Describe_cluster_name_args
1309
+ include ::Thrift::Struct
1310
+
1311
+ FIELDS = {
1312
+
1313
+ }
1314
+
1315
+ def struct_fields; FIELDS; end
1316
+
1317
+ def validate
1318
+ end
1319
+
1320
+ end
1321
+
1322
+ class Describe_cluster_name_result
1323
+ include ::Thrift::Struct
1324
+ SUCCESS = 0
1325
+
1326
+ ::Thrift::Struct.field_accessor self, :success
1327
+ FIELDS = {
1328
+ SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'}
1329
+ }
1330
+
1331
+ def struct_fields; FIELDS; end
1332
+
1333
+ def validate
1334
+ end
1335
+
1336
+ end
1337
+
1338
+ class Describe_version_args
1339
+ include ::Thrift::Struct
1340
+
1341
+ FIELDS = {
1342
+
1343
+ }
1344
+
1345
+ def struct_fields; FIELDS; end
1346
+
1347
+ def validate
1348
+ end
1349
+
1350
+ end
1351
+
1352
+ class Describe_version_result
1353
+ include ::Thrift::Struct
1354
+ SUCCESS = 0
1355
+
1356
+ ::Thrift::Struct.field_accessor self, :success
1357
+ FIELDS = {
1358
+ SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'}
1359
+ }
1360
+
1361
+ def struct_fields; FIELDS; end
1362
+
1363
+ def validate
1364
+ end
1365
+
1366
+ end
1367
+
1368
+ class Describe_ring_args
1369
+ include ::Thrift::Struct
1370
+ KEYSPACE = 1
1371
+
1372
+ ::Thrift::Struct.field_accessor self, :keyspace
1373
+ FIELDS = {
1374
+ KEYSPACE => {:type => ::Thrift::Types::STRING, :name => 'keyspace'}
1375
+ }
1376
+
1377
+ def struct_fields; FIELDS; end
1378
+
1379
+ def validate
1380
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
1381
+ end
1382
+
1383
+ end
1384
+
1385
+ class Describe_ring_result
1386
+ include ::Thrift::Struct
1387
+ SUCCESS = 0
1388
+
1389
+ ::Thrift::Struct.field_accessor self, :success
1390
+ FIELDS = {
1391
+ SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => CassandraThrift::TokenRange}}
1392
+ }
1393
+
1394
+ def struct_fields; FIELDS; end
1395
+
1396
+ def validate
1397
+ end
1398
+
1399
+ end
1400
+
975
1401
  class Describe_keyspace_args
976
1402
  include ::Thrift::Struct
977
1403
  KEYSPACE = 1
@@ -984,6 +1410,7 @@ require 'cassandra_types'
984
1410
  def struct_fields; FIELDS; end
985
1411
 
986
1412
  def validate
1413
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keyspace is unset!') unless @keyspace
987
1414
  end
988
1415
 
989
1416
  end
@@ -1006,6 +1433,45 @@ require 'cassandra_types'
1006
1433
 
1007
1434
  end
1008
1435
 
1436
+ class Describe_splits_args
1437
+ include ::Thrift::Struct
1438
+ START_TOKEN = 1
1439
+ END_TOKEN = 2
1440
+ KEYS_PER_SPLIT = 3
1441
+
1442
+ ::Thrift::Struct.field_accessor self, :start_token, :end_token, :keys_per_split
1443
+ FIELDS = {
1444
+ START_TOKEN => {:type => ::Thrift::Types::STRING, :name => 'start_token'},
1445
+ END_TOKEN => {:type => ::Thrift::Types::STRING, :name => 'end_token'},
1446
+ KEYS_PER_SPLIT => {:type => ::Thrift::Types::I32, :name => 'keys_per_split'}
1447
+ }
1448
+
1449
+ def struct_fields; FIELDS; end
1450
+
1451
+ def validate
1452
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field start_token is unset!') unless @start_token
1453
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field end_token is unset!') unless @end_token
1454
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field keys_per_split is unset!') unless @keys_per_split
1455
+ end
1456
+
1457
+ end
1458
+
1459
+ class Describe_splits_result
1460
+ include ::Thrift::Struct
1461
+ SUCCESS = 0
1462
+
1463
+ ::Thrift::Struct.field_accessor self, :success
1464
+ FIELDS = {
1465
+ SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}}
1466
+ }
1467
+
1468
+ def struct_fields; FIELDS; end
1469
+
1470
+ def validate
1471
+ end
1472
+
1473
+ end
1474
+
1009
1475
  end
1010
1476
 
1011
1477
  end