incubator-blur-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cr...@apache.org
Subject [43/53] [partial] Initial commit of console v2. Sorry for the large commit
Date Mon, 17 Feb 2014 16:07:19 GMT
http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/db/migrate/20121220193623_add_admin_conifgurations_table.rb
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/db/migrate/20121220193623_add_admin_conifgurations_table.rb b/contrib/blur-console-v1/blur-admin/db/migrate/20121220193623_add_admin_conifgurations_table.rb
new file mode 100644
index 0000000..c88062e
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/db/migrate/20121220193623_add_admin_conifgurations_table.rb
@@ -0,0 +1,26 @@
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#  
+#  http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+
+class AddAdminConifgurationsTable < ActiveRecord::Migration
+  def change
+    create_table :admin_settings do |table|
+      table.column :setting, :string, :null => false
+      table.column :value, :string
+      table.timestamps
+    end
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/db/migrate/20130106191159_rename_status_columns.rb
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/db/migrate/20130106191159_rename_status_columns.rb b/contrib/blur-console-v1/blur-admin/db/migrate/20130106191159_rename_status_columns.rb
new file mode 100644
index 0000000..673a73a
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/db/migrate/20130106191159_rename_status_columns.rb
@@ -0,0 +1,32 @@
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#  
+#  http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+
+class RenameStatusColumns < ActiveRecord::Migration
+  def up
+    rename_column :blur_controllers, :status, :controller_status
+    rename_column :blur_shards, :status, :shard_status
+    rename_column :blur_tables, :status, :table_status
+    rename_column :zookeepers, :status, :zookeeper_status
+  end
+
+  def down
+    rename_column :blur_controllers, :controller_status, :status
+    rename_column :blur_shards, :shard_status, :status
+    rename_column :blur_tables, :table_status, :status
+    rename_column :zookeepers, :status, :zookeeper_status
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/db/migrate/20130505151503_drop_licenses_table.rb
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/db/migrate/20130505151503_drop_licenses_table.rb b/contrib/blur-console-v1/blur-admin/db/migrate/20130505151503_drop_licenses_table.rb
new file mode 100644
index 0000000..2409c6c
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/db/migrate/20130505151503_drop_licenses_table.rb
@@ -0,0 +1,33 @@
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#  
+#  http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+
+class DropLicensesTable < ActiveRecord::Migration
+  def up
+    drop_table :licenses
+  end
+
+  def down
+    create_table "licenses", :id => false, :force => true do |t|
+      t.string  "org"
+      t.date    "issued_date"
+      t.date    "expires_date"
+      t.integer "node_overage"
+      t.integer "grace_period_days_remain"
+      t.integer "cluster_overage"
+    end
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/db/migrate/20130829031155_change_blur_queries_uuid_to_string.rb
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/db/migrate/20130829031155_change_blur_queries_uuid_to_string.rb b/contrib/blur-console-v1/blur-admin/db/migrate/20130829031155_change_blur_queries_uuid_to_string.rb
new file mode 100644
index 0000000..458f5a0
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/db/migrate/20130829031155_change_blur_queries_uuid_to_string.rb
@@ -0,0 +1,25 @@
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#  
+#  http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+class ChangeBlurQueriesUuidToString < ActiveRecord::Migration
+  def up
+    change_column :blur_queries, :uuid, :string
+  end
+
+  def down
+    change_column :blur_queries, :uuid, :limit => 8
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/db/migrate/20130904130250_increase_size_of_query_times_json.rb
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/db/migrate/20130904130250_increase_size_of_query_times_json.rb b/contrib/blur-console-v1/blur-admin/db/migrate/20130904130250_increase_size_of_query_times_json.rb
new file mode 100644
index 0000000..ba9a21e
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/db/migrate/20130904130250_increase_size_of_query_times_json.rb
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with this
+# work for additional information regarding copyright ownership. The ASF
+# licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+class IncreaseSizeOfQueryTimesJson < ActiveRecord::Migration
+  def up
+    change_column :blur_queries, :times, :text
+  end
+
+  def down
+    change_column :blur_queries, :times, :string
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/db/schema.rb
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/db/schema.rb b/contrib/blur-console-v1/blur-admin/db/schema.rb
new file mode 100644
index 0000000..88a4b9c
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/db/schema.rb
@@ -0,0 +1,199 @@
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#  
+#  http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+
+# encoding: UTF-8
+# This file is auto-generated from the current state of the database. Instead
+# of editing this file, please use the migrations feature of Active Record to
+# incrementally modify your database, and then regenerate this schema definition.
+#
+# Note that this schema.rb definition is the authoritative source for your
+# database schema. If you need to create the application database on another
+# system, you should be using db:schema:load, not running all the migrations
+# from scratch. The latter is a flawed and unsustainable approach (the more migrations
+# you'll amass, the slower it'll run and the greater likelihood for issues).
+#
+# It's strongly recommended to check this file into your version control system.
+
+ActiveRecord::Schema.define(:version => 20130904130250) do
+
+  create_table "admin_settings", :force => true do |t|
+    t.string   "setting",    :null => false
+    t.string   "value"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+  end
+
+  create_table "audits", :force => true do |t|
+    t.integer  "user_id"
+    t.string   "mutation"
+    t.string   "model_affected"
+    t.string   "action"
+    t.datetime "created_at",         :null => false
+    t.datetime "updated_at",         :null => false
+    t.string   "zookeeper_affected"
+  end
+
+  create_table "blur_controllers", :force => true do |t|
+    t.integer  "controller_status"
+    t.string   "blur_version"
+    t.string   "node_name"
+    t.integer  "zookeeper_id"
+    t.datetime "created_at",        :null => false
+    t.datetime "updated_at",        :null => false
+  end
+
+  add_index "blur_controllers", ["zookeeper_id"], :name => "index_controllers_on_zookeeper_id"
+
+  create_table "blur_queries", :force => true do |t|
+    t.text     "query_string",             :limit => 16777215
+    t.integer  "complete_shards"
+    t.string   "uuid"
+    t.datetime "created_at",                                   :null => false
+    t.datetime "updated_at",                                   :null => false
+    t.boolean  "super_query_on"
+    t.string   "facets"
+    t.integer  "start"
+    t.integer  "fetch_num"
+    t.text     "pre_filters",              :limit => 16777215
+    t.text     "post_filters",             :limit => 16777215
+    t.text     "selector_column_families"
+    t.text     "selector_columns"
+    t.string   "userid"
+    t.integer  "blur_table_id"
+    t.text     "times"
+    t.integer  "total_shards"
+    t.integer  "state"
+    t.boolean  "record_only"
+  end
+
+  add_index "blur_queries", ["blur_table_id"], :name => "index_blur_queries_on_blur_table_id"
+
+  create_table "blur_shards", :force => true do |t|
+    t.integer  "shard_status"
+    t.string   "blur_version"
+    t.string   "node_name"
+    t.integer  "cluster_id"
+    t.datetime "created_at",   :null => false
+    t.datetime "updated_at",   :null => false
+  end
+
+  add_index "blur_shards", ["cluster_id"], :name => "index_shards_on_cluster_id"
+
+  create_table "blur_tables", :force => true do |t|
+    t.string   "table_name"
+    t.integer  "current_size",   :limit => 8
+    t.integer  "query_usage"
+    t.datetime "updated_at"
+    t.integer  "record_count",   :limit => 8
+    t.integer  "table_status"
+    t.string   "table_uri"
+    t.text     "table_analyzer"
+    t.text     "table_schema"
+    t.text     "server"
+    t.integer  "cluster_id"
+    t.integer  "row_count",      :limit => 8
+    t.string   "comments"
+  end
+
+  add_index "blur_tables", ["cluster_id"], :name => "index_blur_tables_on_cluster_id"
+
+  create_table "clusters", :force => true do |t|
+    t.string  "name"
+    t.integer "zookeeper_id"
+    t.boolean "safe_mode"
+  end
+
+  add_index "clusters", ["zookeeper_id"], :name => "index_clusters_on_zookeeper_id"
+
+  create_table "hdfs", :force => true do |t|
+    t.string "host"
+    t.string "port"
+    t.string "name"
+  end
+
+  create_table "hdfs_stats", :force => true do |t|
+    t.integer  "config_capacity",  :limit => 8
+    t.integer  "present_capacity", :limit => 8
+    t.integer  "dfs_remaining",    :limit => 8
+    t.integer  "dfs_used_real",    :limit => 8
+    t.float    "dfs_used_percent"
+    t.integer  "under_replicated", :limit => 8
+    t.integer  "corrupt_blocks",   :limit => 8
+    t.integer  "missing_blocks",   :limit => 8
+    t.integer  "total_nodes"
+    t.integer  "dead_nodes"
+    t.datetime "created_at",                    :null => false
+    t.string   "host"
+    t.string   "port"
+    t.integer  "hdfs_id"
+    t.integer  "live_nodes"
+    t.integer  "dfs_used_logical", :limit => 8
+  end
+
+  add_index "hdfs_stats", ["hdfs_id"], :name => "index_hdfs_stats_on_hdfs_id"
+
+  create_table "preferences", :force => true do |t|
+    t.string   "name"
+    t.string   "pref_type"
+    t.text     "value"
+    t.datetime "created_at", :null => false
+    t.datetime "updated_at", :null => false
+    t.integer  "user_id"
+  end
+
+  add_index "preferences", ["user_id"], :name => "index_preferences_on_user_id"
+
+  create_table "searches", :force => true do |t|
+    t.boolean  "super_query"
+    t.text     "columns"
+    t.integer  "fetch"
+    t.integer  "offset"
+    t.string   "name"
+    t.string   "query"
+    t.integer  "blur_table_id"
+    t.integer  "user_id"
+    t.datetime "created_at",                       :null => false
+    t.datetime "updated_at",                       :null => false
+    t.boolean  "record_only",   :default => false
+    t.text     "pre_filter"
+    t.text     "post_filter"
+  end
+
+  add_index "searches", ["blur_table_id"], :name => "index_searches_on_blur_table_id"
+  add_index "searches", ["user_id"], :name => "index_searches_on_user_id"
+
+  create_table "users", :force => true do |t|
+    t.string   "username"
+    t.string   "email"
+    t.string   "crypted_password"
+    t.string   "password_salt"
+    t.string   "persistence_token"
+    t.datetime "created_at",        :null => false
+    t.datetime "updated_at",        :null => false
+    t.integer  "roles_mask"
+    t.string   "name"
+  end
+
+  create_table "zookeepers", :force => true do |t|
+    t.string  "url"
+    t.string  "name"
+    t.integer "zookeeper_status"
+    t.string  "blur_urls",             :limit => 4000
+    t.string  "online_ensemble_nodes"
+  end
+
+end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/db/seeds.rb
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/db/seeds.rb b/contrib/blur-console-v1/blur-admin/db/seeds.rb
new file mode 100644
index 0000000..bcddc9d
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/db/seeds.rb
@@ -0,0 +1,30 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with this
+# work for additional information regarding copyright ownership. The ASF
+# licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# This file should contain all the record creation needed to seed the database with its default values.
+# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
+#
+# Examples:
+#
+#   cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
+#   Mayor.create(:name => 'Daley', :city => cities.first)
+
+User.create({:username => 'admin',
+            :name => 'Delete Me',
+            :password => 'password',
+            :password_confirmation =>
+            'password',
+            :email => 'admin@blurtools.io',
+            :roles_mask => 31}, :without_protection => true)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/lib/blur_thrift_client.rb
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/lib/blur_thrift_client.rb b/contrib/blur-console-v1/blur-admin/lib/blur_thrift_client.rb
new file mode 100644
index 0000000..e0aebfb
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/lib/blur_thrift_client.rb
@@ -0,0 +1,28 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with this
+# work for additional information regarding copyright ownership. The ASF
+# licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+class BlurThriftClient
+  @@connections = {}
+
+  # ["host:port","host2:port"]
+  def self.client(host_port)
+    if host_port.class == String
+      urls = host_port.split(/,/)
+    else
+      urls = Array(host_port)
+    end
+    ThriftClient.new Blur::Blur::Client, urls, :retries => 10
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/lib/hdfs_thrift_client.rb
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/lib/hdfs_thrift_client.rb b/contrib/blur-console-v1/blur-admin/lib/hdfs_thrift_client.rb
new file mode 100644
index 0000000..bed9146
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/lib/hdfs_thrift_client.rb
@@ -0,0 +1,93 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with this
+# work for additional information regarding copyright ownership. The ASF
+# licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+class HdfsThriftClient
+  @@connections = {}
+
+  def self.client(host_port)
+    socket = Thrift::Socket.new(host_port.split(":").first,host_port.split(":").last)
+    transport = Thrift::BufferedTransport.new(socket)
+    transport.open
+    protocol = Thrift::BinaryProtocol.new(transport)
+    client = ThriftHadoopFileSystem::Client.new(protocol)
+    
+    Client.new(client)
+  end
+
+  class Client
+    def initialize(client)
+      @client = client
+    end
+
+    def stat(path)
+      @client.stat(pathname(path))
+    end
+
+    def mkdirs(path)
+      @client.mkdirs(pathname(path))
+    end
+
+    def rename(from, to)
+      @client.rename(pathname(from),pathname(to))
+    end
+
+    def delete(path, recursive=false)
+      @client.rm pathname(path), recursive
+    end
+
+    def put(local, remote)
+      handle = @client.create(pathname(remote))
+      Kernel.open(local) { |source|
+        # read 1 MB at a time
+        while record = source.read(1048576)
+          @client.write(handle, record)
+        end
+        @client.close(handle)
+      }
+    end
+
+    def ls(path, recursive=false)
+      statuses = @client.listStatus(pathname(path))
+      return statuses unless recursive
+      statuses + statuses.select { |s| s.isdir }.map { |s| ls(s.path, recursive) }.flatten
+    end
+    
+    def folder_tree(path, depth)
+      if depth == 0
+       return {:name => path, :size => folder_size(path)}
+     end
+      statuses = @client.listStatus(pathname(path))
+      file_tree = {:name => path, :children =>
+        statuses.map do |status|
+          status.isdir ? folder_tree(status.path, depth - 1) : {:name => status.path, :size => status.length}
+        end
+      }
+    end
+    
+  private
+    def pathname(path)
+      ThriftHadoopFileSystem::Pathname.new(:pathname => path.to_s)
+    end
+    
+    def folder_size(path)
+      statuses = @client.listStatus(pathname(path))
+      size = 0
+      statuses.each do |status|
+        size += status.isdir ? folder_size(status.path) : status.length
+      end
+      size
+    end
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/lib/pounder/pounder.rb
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/lib/pounder/pounder.rb b/contrib/blur-console-v1/blur-admin/lib/pounder/pounder.rb
new file mode 100644
index 0000000..cc2237f
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/lib/pounder/pounder.rb
@@ -0,0 +1,76 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with this
+# work for additional information regarding copyright ownership. The ASF
+# licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+class Pounder
+  def self.run
+    # Setup object heirarchy
+    zk = Zookeeper.create!(:name => "Pounder-zk")
+    cluster = Cluster.create!(:name => "Pounder-cluster", :zookeeper => zk)
+    table = BlurTable.create!(:table_name => "Pounder-table", :table_status=> 0, :cluster => cluster)
+    
+    # Loop and add queries
+    threads = []
+    
+    # Add new queries
+    threads << Thread.new(table) { |blur_table|
+      count = 0
+      while count < 1000
+        state = rand(3)
+        completed = 20
+        if state == 0 || state == 1
+          completed = 20 - rand(20)
+        end
+        query = BlurQuery.create!(:query_string => "query_#{count}", :uuid => count, :created_at => Time.now, :updated_at => Time.now, :blur_table => blur_table, :state => state, :total_shards => 20, :complete_shards => completed, :times => '{}')
+        puts "Query #{count} created: #{query.state_str}"
+        count = count + 1
+        sleep(rand(6))
+      end
+    }
+    
+    # Update running queries
+    threads << Thread.new(table) { |blur_table|
+      count = 0
+      while count < 1000
+        query = BlurQuery.where("state = 0 and blur_table_id = '#{blur_table.id}'").order("RAND()").first
+        
+        if query
+          state = rand(3)
+          completed = 20
+          if state == 0 || state == 1
+            completed = 20 - rand(20)
+          end
+          query.update_attributes!({:state => state, :complete_shards => completed, :updated_at => Time.now})
+          puts "Query #{count} updated"
+        end
+        count = count + 1
+        sleep(rand(6))
+      end
+    }
+    
+    threads.each { |thread| thread.join }
+    
+    # Clean up objects
+    Zookeeper.destroy(zk.id)
+  end
+  
+  def self.clean
+    zk = Zookeeper.where("name = 'Pounder-zk'")
+    if !zk.empty?
+      zk.each do |z|
+        Zookeeper.destroy(z.id)
+      end
+    end
+  end
+end
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/lib/tasks/coverage.rake
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/lib/tasks/coverage.rake b/contrib/blur-console-v1/blur-admin/lib/tasks/coverage.rake
new file mode 100644
index 0000000..50bfa7a
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/lib/tasks/coverage.rake
@@ -0,0 +1,34 @@
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#  
+#  http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+
+
+tests = [:models, :controllers, :helpers]
+tests_tasks = tests.collect{ |type| "cov:#{type.to_s}" }
+
+namespace :cov do
+  tests.each do |type|
+    desc "Rspec with simplecov (#{type.to_s} only)"
+    task type do
+      ENV['COVERAGE'] = 'true'
+      ENV['PORTION'] = type.to_s
+      Rake::Task["spec:#{type}"].execute
+    end
+  end
+end
+
+desc "Rspec with simplecov"
+task :cov => tests_tasks
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/lib/tasks/pounder.rake
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/lib/tasks/pounder.rake b/contrib/blur-console-v1/blur-admin/lib/tasks/pounder.rake
new file mode 100644
index 0000000..4185537
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/lib/tasks/pounder.rake
@@ -0,0 +1,31 @@
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#  
+#  http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+
+
+require 'pounder/pounder'
+
+namespace :pounder do
+  desc "Creates a continuous random set of queries into the database"
+  task :run => :environment do
+    Pounder.run
+  end
+  
+  desc "Clean up pounder data, for use when the pounder fails unexpectedly"
+  task :clean => :environment do
+    Pounder.clean
+  end
+end
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/11a2529a/contrib/blur-console-v1/blur-admin/lib/thrift/blur.rb
----------------------------------------------------------------------
diff --git a/contrib/blur-console-v1/blur-admin/lib/thrift/blur.rb b/contrib/blur-console-v1/blur-admin/lib/thrift/blur.rb
new file mode 100644
index 0000000..5f45512
--- /dev/null
+++ b/contrib/blur-console-v1/blur-admin/lib/thrift/blur.rb
@@ -0,0 +1,2018 @@
+#
+# Autogenerated by Thrift Compiler (0.9.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+
+require 'thrift'
+require 'blur_types'
+
+module Blur
+  module Blur
+    class Client
+      include ::Thrift::Client
+
+      def createTable(tableDescriptor)
+        send_createTable(tableDescriptor)
+        recv_createTable()
+      end
+
+      def send_createTable(tableDescriptor)
+        send_message('createTable', CreateTable_args, :tableDescriptor => tableDescriptor)
+      end
+
+      def recv_createTable()
+        result = receive_message(CreateTable_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def enableTable(table)
+        send_enableTable(table)
+        recv_enableTable()
+      end
+
+      def send_enableTable(table)
+        send_message('enableTable', EnableTable_args, :table => table)
+      end
+
+      def recv_enableTable()
+        result = receive_message(EnableTable_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def disableTable(table)
+        send_disableTable(table)
+        recv_disableTable()
+      end
+
+      def send_disableTable(table)
+        send_message('disableTable', DisableTable_args, :table => table)
+      end
+
+      def recv_disableTable()
+        result = receive_message(DisableTable_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def removeTable(table, deleteIndexFiles)
+        send_removeTable(table, deleteIndexFiles)
+        recv_removeTable()
+      end
+
+      def send_removeTable(table, deleteIndexFiles)
+        send_message('removeTable', RemoveTable_args, :table => table, :deleteIndexFiles => deleteIndexFiles)
+      end
+
+      def recv_removeTable()
+        result = receive_message(RemoveTable_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def addColumnDefinition(table, columnDefinition)
+        send_addColumnDefinition(table, columnDefinition)
+        return recv_addColumnDefinition()
+      end
+
+      def send_addColumnDefinition(table, columnDefinition)
+        send_message('addColumnDefinition', AddColumnDefinition_args, :table => table, :columnDefinition => columnDefinition)
+      end
+
+      def recv_addColumnDefinition()
+        result = receive_message(AddColumnDefinition_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'addColumnDefinition failed: unknown result')
+      end
+
+      def tableList()
+        send_tableList()
+        return recv_tableList()
+      end
+
+      def send_tableList()
+        send_message('tableList', TableList_args)
+      end
+
+      def recv_tableList()
+        result = receive_message(TableList_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'tableList failed: unknown result')
+      end
+
+      def tableListByCluster(cluster)
+        send_tableListByCluster(cluster)
+        return recv_tableListByCluster()
+      end
+
+      def send_tableListByCluster(cluster)
+        send_message('tableListByCluster', TableListByCluster_args, :cluster => cluster)
+      end
+
+      def recv_tableListByCluster()
+        result = receive_message(TableListByCluster_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'tableListByCluster failed: unknown result')
+      end
+
+      def describe(table)
+        send_describe(table)
+        return recv_describe()
+      end
+
+      def send_describe(table)
+        send_message('describe', Describe_args, :table => table)
+      end
+
+      def recv_describe()
+        result = receive_message(Describe_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'describe failed: unknown result')
+      end
+
+      def schema(table)
+        send_schema(table)
+        return recv_schema()
+      end
+
+      def send_schema(table)
+        send_message('schema', Schema_args, :table => table)
+      end
+
+      def recv_schema()
+        result = receive_message(Schema_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'schema failed: unknown result')
+      end
+
+      def parseQuery(table, query)
+        send_parseQuery(table, query)
+        return recv_parseQuery()
+      end
+
+      def send_parseQuery(table, query)
+        send_message('parseQuery', ParseQuery_args, :table => table, :query => query)
+      end
+
+      def recv_parseQuery()
+        result = receive_message(ParseQuery_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'parseQuery failed: unknown result')
+      end
+
+      def tableStats(table)
+        send_tableStats(table)
+        return recv_tableStats()
+      end
+
+      def send_tableStats(table)
+        send_message('tableStats', TableStats_args, :table => table)
+      end
+
+      def recv_tableStats()
+        result = receive_message(TableStats_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'tableStats failed: unknown result')
+      end
+
+      def optimize(table, numberOfSegmentsPerShard)
+        send_optimize(table, numberOfSegmentsPerShard)
+        recv_optimize()
+      end
+
+      def send_optimize(table, numberOfSegmentsPerShard)
+        send_message('optimize', Optimize_args, :table => table, :numberOfSegmentsPerShard => numberOfSegmentsPerShard)
+      end
+
+      def recv_optimize()
+        result = receive_message(Optimize_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def createSnapshot(table, name)
+        send_createSnapshot(table, name)
+        recv_createSnapshot()
+      end
+
+      def send_createSnapshot(table, name)
+        send_message('createSnapshot', CreateSnapshot_args, :table => table, :name => name)
+      end
+
+      def recv_createSnapshot()
+        result = receive_message(CreateSnapshot_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def removeSnapshot(table, name)
+        send_removeSnapshot(table, name)
+        recv_removeSnapshot()
+      end
+
+      def send_removeSnapshot(table, name)
+        send_message('removeSnapshot', RemoveSnapshot_args, :table => table, :name => name)
+      end
+
+      def recv_removeSnapshot()
+        result = receive_message(RemoveSnapshot_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def listSnapshots(table)
+        send_listSnapshots(table)
+        return recv_listSnapshots()
+      end
+
+      def send_listSnapshots(table)
+        send_message('listSnapshots', ListSnapshots_args, :table => table)
+      end
+
+      def recv_listSnapshots()
+        result = receive_message(ListSnapshots_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'listSnapshots failed: unknown result')
+      end
+
+      def query(table, blurQuery)
+        send_query(table, blurQuery)
+        return recv_query()
+      end
+
+      def send_query(table, blurQuery)
+        send_message('query', Query_args, :table => table, :blurQuery => blurQuery)
+      end
+
+      def recv_query()
+        result = receive_message(Query_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'query failed: unknown result')
+      end
+
+      def fetchRow(table, selector)
+        send_fetchRow(table, selector)
+        return recv_fetchRow()
+      end
+
+      def send_fetchRow(table, selector)
+        send_message('fetchRow', FetchRow_args, :table => table, :selector => selector)
+      end
+
+      def recv_fetchRow()
+        result = receive_message(FetchRow_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'fetchRow failed: unknown result')
+      end
+
+      def mutate(mutation)
+        send_mutate(mutation)
+        recv_mutate()
+      end
+
+      def send_mutate(mutation)
+        send_message('mutate', Mutate_args, :mutation => mutation)
+      end
+
+      def recv_mutate()
+        result = receive_message(Mutate_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def mutateBatch(mutations)
+        send_mutateBatch(mutations)
+        recv_mutateBatch()
+      end
+
+      def send_mutateBatch(mutations)
+        send_message('mutateBatch', MutateBatch_args, :mutations => mutations)
+      end
+
+      def recv_mutateBatch()
+        result = receive_message(MutateBatch_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def cancelQuery(table, uuid)
+        send_cancelQuery(table, uuid)
+        recv_cancelQuery()
+      end
+
+      def send_cancelQuery(table, uuid)
+        send_message('cancelQuery', CancelQuery_args, :table => table, :uuid => uuid)
+      end
+
+      def recv_cancelQuery()
+        result = receive_message(CancelQuery_result)
+        raise result.ex unless result.ex.nil?
+        return
+      end
+
+      def queryStatusIdList(table)
+        send_queryStatusIdList(table)
+        return recv_queryStatusIdList()
+      end
+
+      def send_queryStatusIdList(table)
+        send_message('queryStatusIdList', QueryStatusIdList_args, :table => table)
+      end
+
+      def recv_queryStatusIdList()
+        result = receive_message(QueryStatusIdList_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'queryStatusIdList failed: unknown result')
+      end
+
+      def queryStatusById(table, uuid)
+        send_queryStatusById(table, uuid)
+        return recv_queryStatusById()
+      end
+
+      def send_queryStatusById(table, uuid)
+        send_message('queryStatusById', QueryStatusById_args, :table => table, :uuid => uuid)
+      end
+
+      def recv_queryStatusById()
+        result = receive_message(QueryStatusById_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'queryStatusById failed: unknown result')
+      end
+
+      def terms(table, columnFamily, columnName, startWith, size)
+        send_terms(table, columnFamily, columnName, startWith, size)
+        return recv_terms()
+      end
+
+      def send_terms(table, columnFamily, columnName, startWith, size)
+        send_message('terms', Terms_args, :table => table, :columnFamily => columnFamily, :columnName => columnName, :startWith => startWith, :size => size)
+      end
+
+      def recv_terms()
+        result = receive_message(Terms_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'terms failed: unknown result')
+      end
+
+      def recordFrequency(table, columnFamily, columnName, value)
+        send_recordFrequency(table, columnFamily, columnName, value)
+        return recv_recordFrequency()
+      end
+
+      def send_recordFrequency(table, columnFamily, columnName, value)
+        send_message('recordFrequency', RecordFrequency_args, :table => table, :columnFamily => columnFamily, :columnName => columnName, :value => value)
+      end
+
+      def recv_recordFrequency()
+        result = receive_message(RecordFrequency_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'recordFrequency failed: unknown result')
+      end
+
+      def shardClusterList()
+        send_shardClusterList()
+        return recv_shardClusterList()
+      end
+
+      def send_shardClusterList()
+        send_message('shardClusterList', ShardClusterList_args)
+      end
+
+      def recv_shardClusterList()
+        result = receive_message(ShardClusterList_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'shardClusterList failed: unknown result')
+      end
+
+      def shardServerList(cluster)
+        send_shardServerList(cluster)
+        return recv_shardServerList()
+      end
+
+      def send_shardServerList(cluster)
+        send_message('shardServerList', ShardServerList_args, :cluster => cluster)
+      end
+
+      def recv_shardServerList()
+        result = receive_message(ShardServerList_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'shardServerList failed: unknown result')
+      end
+
+      def controllerServerList()
+        send_controllerServerList()
+        return recv_controllerServerList()
+      end
+
+      def send_controllerServerList()
+        send_message('controllerServerList', ControllerServerList_args)
+      end
+
+      def recv_controllerServerList()
+        result = receive_message(ControllerServerList_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'controllerServerList failed: unknown result')
+      end
+
+      def shardServerLayout(table)
+        send_shardServerLayout(table)
+        return recv_shardServerLayout()
+      end
+
+      def send_shardServerLayout(table)
+        send_message('shardServerLayout', ShardServerLayout_args, :table => table)
+      end
+
+      def recv_shardServerLayout()
+        result = receive_message(ShardServerLayout_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'shardServerLayout failed: unknown result')
+      end
+
+      def shardServerLayoutState(table)
+        send_shardServerLayoutState(table)
+        return recv_shardServerLayoutState()
+      end
+
+      def send_shardServerLayoutState(table)
+        send_message('shardServerLayoutState', ShardServerLayoutState_args, :table => table)
+      end
+
+      def recv_shardServerLayoutState()
+        result = receive_message(ShardServerLayoutState_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'shardServerLayoutState failed: unknown result')
+      end
+
+      def isInSafeMode(cluster)
+        send_isInSafeMode(cluster)
+        return recv_isInSafeMode()
+      end
+
+      def send_isInSafeMode(cluster)
+        send_message('isInSafeMode', IsInSafeMode_args, :cluster => cluster)
+      end
+
+      def recv_isInSafeMode()
+        result = receive_message(IsInSafeMode_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'isInSafeMode failed: unknown result')
+      end
+
+      def configuration()
+        send_configuration()
+        return recv_configuration()
+      end
+
+      def send_configuration()
+        send_message('configuration', Configuration_args)
+      end
+
+      def recv_configuration()
+        result = receive_message(Configuration_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'configuration failed: unknown result')
+      end
+
+      def metrics(metrics)
+        send_metrics(metrics)
+        return recv_metrics()
+      end
+
+      def send_metrics(metrics)
+        send_message('metrics', Metrics_args, :metrics => metrics)
+      end
+
+      def recv_metrics()
+        result = receive_message(Metrics_result)
+        return result.success unless result.success.nil?
+        raise result.ex unless result.ex.nil?
+        raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'metrics failed: unknown result')
+      end
+
+    end
+
+    class Processor
+      include ::Thrift::Processor
+
+      def process_createTable(seqid, iprot, oprot)
+        args = read_args(iprot, CreateTable_args)
+        result = CreateTable_result.new()
+        begin
+          @handler.createTable(args.tableDescriptor)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'createTable', seqid)
+      end
+
+      def process_enableTable(seqid, iprot, oprot)
+        args = read_args(iprot, EnableTable_args)
+        result = EnableTable_result.new()
+        begin
+          @handler.enableTable(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'enableTable', seqid)
+      end
+
+      def process_disableTable(seqid, iprot, oprot)
+        args = read_args(iprot, DisableTable_args)
+        result = DisableTable_result.new()
+        begin
+          @handler.disableTable(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'disableTable', seqid)
+      end
+
+      def process_removeTable(seqid, iprot, oprot)
+        args = read_args(iprot, RemoveTable_args)
+        result = RemoveTable_result.new()
+        begin
+          @handler.removeTable(args.table, args.deleteIndexFiles)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'removeTable', seqid)
+      end
+
+      def process_addColumnDefinition(seqid, iprot, oprot)
+        args = read_args(iprot, AddColumnDefinition_args)
+        result = AddColumnDefinition_result.new()
+        begin
+          result.success = @handler.addColumnDefinition(args.table, args.columnDefinition)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'addColumnDefinition', seqid)
+      end
+
+      def process_tableList(seqid, iprot, oprot)
+        args = read_args(iprot, TableList_args)
+        result = TableList_result.new()
+        begin
+          result.success = @handler.tableList()
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'tableList', seqid)
+      end
+
+      def process_tableListByCluster(seqid, iprot, oprot)
+        args = read_args(iprot, TableListByCluster_args)
+        result = TableListByCluster_result.new()
+        begin
+          result.success = @handler.tableListByCluster(args.cluster)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'tableListByCluster', seqid)
+      end
+
+      def process_describe(seqid, iprot, oprot)
+        args = read_args(iprot, Describe_args)
+        result = Describe_result.new()
+        begin
+          result.success = @handler.describe(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'describe', seqid)
+      end
+
+      def process_schema(seqid, iprot, oprot)
+        args = read_args(iprot, Schema_args)
+        result = Schema_result.new()
+        begin
+          result.success = @handler.schema(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'schema', seqid)
+      end
+
+      def process_parseQuery(seqid, iprot, oprot)
+        args = read_args(iprot, ParseQuery_args)
+        result = ParseQuery_result.new()
+        begin
+          result.success = @handler.parseQuery(args.table, args.query)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'parseQuery', seqid)
+      end
+
+      def process_tableStats(seqid, iprot, oprot)
+        args = read_args(iprot, TableStats_args)
+        result = TableStats_result.new()
+        begin
+          result.success = @handler.tableStats(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'tableStats', seqid)
+      end
+
+      def process_optimize(seqid, iprot, oprot)
+        args = read_args(iprot, Optimize_args)
+        result = Optimize_result.new()
+        begin
+          @handler.optimize(args.table, args.numberOfSegmentsPerShard)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'optimize', seqid)
+      end
+
+      def process_createSnapshot(seqid, iprot, oprot)
+        args = read_args(iprot, CreateSnapshot_args)
+        result = CreateSnapshot_result.new()
+        begin
+          @handler.createSnapshot(args.table, args.name)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'createSnapshot', seqid)
+      end
+
+      def process_removeSnapshot(seqid, iprot, oprot)
+        args = read_args(iprot, RemoveSnapshot_args)
+        result = RemoveSnapshot_result.new()
+        begin
+          @handler.removeSnapshot(args.table, args.name)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'removeSnapshot', seqid)
+      end
+
+      def process_listSnapshots(seqid, iprot, oprot)
+        args = read_args(iprot, ListSnapshots_args)
+        result = ListSnapshots_result.new()
+        begin
+          result.success = @handler.listSnapshots(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'listSnapshots', seqid)
+      end
+
+      def process_query(seqid, iprot, oprot)
+        args = read_args(iprot, Query_args)
+        result = Query_result.new()
+        begin
+          result.success = @handler.query(args.table, args.blurQuery)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'query', seqid)
+      end
+
+      def process_fetchRow(seqid, iprot, oprot)
+        args = read_args(iprot, FetchRow_args)
+        result = FetchRow_result.new()
+        begin
+          result.success = @handler.fetchRow(args.table, args.selector)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'fetchRow', seqid)
+      end
+
+      def process_mutate(seqid, iprot, oprot)
+        args = read_args(iprot, Mutate_args)
+        result = Mutate_result.new()
+        begin
+          @handler.mutate(args.mutation)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'mutate', seqid)
+      end
+
+      def process_mutateBatch(seqid, iprot, oprot)
+        args = read_args(iprot, MutateBatch_args)
+        result = MutateBatch_result.new()
+        begin
+          @handler.mutateBatch(args.mutations)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'mutateBatch', seqid)
+      end
+
+      def process_cancelQuery(seqid, iprot, oprot)
+        args = read_args(iprot, CancelQuery_args)
+        result = CancelQuery_result.new()
+        begin
+          @handler.cancelQuery(args.table, args.uuid)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'cancelQuery', seqid)
+      end
+
+      def process_queryStatusIdList(seqid, iprot, oprot)
+        args = read_args(iprot, QueryStatusIdList_args)
+        result = QueryStatusIdList_result.new()
+        begin
+          result.success = @handler.queryStatusIdList(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'queryStatusIdList', seqid)
+      end
+
+      def process_queryStatusById(seqid, iprot, oprot)
+        args = read_args(iprot, QueryStatusById_args)
+        result = QueryStatusById_result.new()
+        begin
+          result.success = @handler.queryStatusById(args.table, args.uuid)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'queryStatusById', seqid)
+      end
+
+      def process_terms(seqid, iprot, oprot)
+        args = read_args(iprot, Terms_args)
+        result = Terms_result.new()
+        begin
+          result.success = @handler.terms(args.table, args.columnFamily, args.columnName, args.startWith, args.size)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'terms', seqid)
+      end
+
+      def process_recordFrequency(seqid, iprot, oprot)
+        args = read_args(iprot, RecordFrequency_args)
+        result = RecordFrequency_result.new()
+        begin
+          result.success = @handler.recordFrequency(args.table, args.columnFamily, args.columnName, args.value)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'recordFrequency', seqid)
+      end
+
+      def process_shardClusterList(seqid, iprot, oprot)
+        args = read_args(iprot, ShardClusterList_args)
+        result = ShardClusterList_result.new()
+        begin
+          result.success = @handler.shardClusterList()
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'shardClusterList', seqid)
+      end
+
+      def process_shardServerList(seqid, iprot, oprot)
+        args = read_args(iprot, ShardServerList_args)
+        result = ShardServerList_result.new()
+        begin
+          result.success = @handler.shardServerList(args.cluster)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'shardServerList', seqid)
+      end
+
+      def process_controllerServerList(seqid, iprot, oprot)
+        args = read_args(iprot, ControllerServerList_args)
+        result = ControllerServerList_result.new()
+        begin
+          result.success = @handler.controllerServerList()
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'controllerServerList', seqid)
+      end
+
+      def process_shardServerLayout(seqid, iprot, oprot)
+        args = read_args(iprot, ShardServerLayout_args)
+        result = ShardServerLayout_result.new()
+        begin
+          result.success = @handler.shardServerLayout(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'shardServerLayout', seqid)
+      end
+
+      def process_shardServerLayoutState(seqid, iprot, oprot)
+        args = read_args(iprot, ShardServerLayoutState_args)
+        result = ShardServerLayoutState_result.new()
+        begin
+          result.success = @handler.shardServerLayoutState(args.table)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'shardServerLayoutState', seqid)
+      end
+
+      def process_isInSafeMode(seqid, iprot, oprot)
+        args = read_args(iprot, IsInSafeMode_args)
+        result = IsInSafeMode_result.new()
+        begin
+          result.success = @handler.isInSafeMode(args.cluster)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'isInSafeMode', seqid)
+      end
+
+      def process_configuration(seqid, iprot, oprot)
+        args = read_args(iprot, Configuration_args)
+        result = Configuration_result.new()
+        begin
+          result.success = @handler.configuration()
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'configuration', seqid)
+      end
+
+      def process_metrics(seqid, iprot, oprot)
+        args = read_args(iprot, Metrics_args)
+        result = Metrics_result.new()
+        begin
+          result.success = @handler.metrics(args.metrics)
+        rescue ::Blur::BlurException => ex
+          result.ex = ex
+        end
+        write_result(result, oprot, 'metrics', seqid)
+      end
+
+    end
+
+    # HELPER FUNCTIONS AND STRUCTURES
+
+    class CreateTable_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLEDESCRIPTOR = 1
+
+      FIELDS = {
+        # the TableDescriptor.
+        TABLEDESCRIPTOR => {:type => ::Thrift::Types::STRUCT, :name => 'tableDescriptor', :class => ::Blur::TableDescriptor}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CreateTable_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class EnableTable_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class EnableTable_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DisableTable_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class DisableTable_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveTable_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      DELETEINDEXFILES = 2
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        # true to remove the index storage and false if to preserve.
+        DELETEINDEXFILES => {:type => ::Thrift::Types::BOOL, :name => 'deleteIndexFiles'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveTable_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class AddColumnDefinition_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      COLUMNDEFINITION = 2
+
+      FIELDS = {
+        # the name of the table.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        # the ColumnDefinition.
+        COLUMNDEFINITION => {:type => ::Thrift::Types::STRUCT, :name => 'columnDefinition', :class => ::Blur::ColumnDefinition}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class AddColumnDefinition_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableList_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+
+      FIELDS = {
+
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableList_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableListByCluster_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      CLUSTER = 1
+
+      FIELDS = {
+        # the cluster name.
+        CLUSTER => {:type => ::Thrift::Types::STRING, :name => 'cluster'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableListByCluster_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Describe_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Describe_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Blur::TableDescriptor},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Schema_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Schema_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Blur::Schema},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ParseQuery_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      QUERY = 2
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        # the query to parse.
+        QUERY => {:type => ::Thrift::Types::STRUCT, :name => 'query', :class => ::Blur::Query}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ParseQuery_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableStats_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableStats_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Blur::TableStats},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Optimize_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      NUMBEROFSEGMENTSPERSHARD = 2
+
+      FIELDS = {
+        # table the name of the table.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        # the maximum of segments per shard index after the operation is completed.
+        NUMBEROFSEGMENTSPERSHARD => {:type => ::Thrift::Types::I32, :name => 'numberOfSegmentsPerShard'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Optimize_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CreateSnapshot_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      NAME = 2
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        NAME => {:type => ::Thrift::Types::STRING, :name => 'name'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CreateSnapshot_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveSnapshot_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      NAME = 2
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        NAME => {:type => ::Thrift::Types::STRING, :name => 'name'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RemoveSnapshot_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ListSnapshots_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ListSnapshots_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRING}}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Query_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      BLURQUERY = 2
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        # the query to execute.
+        BLURQUERY => {:type => ::Thrift::Types::STRUCT, :name => 'blurQuery', :class => ::Blur::BlurQuery}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Query_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Blur::BlurResults},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class FetchRow_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      SELECTOR = 2
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        # the Selector to use to fetch the Row or Record.
+        SELECTOR => {:type => ::Thrift::Types::STRUCT, :name => 'selector', :class => ::Blur::Selector}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class FetchRow_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Blur::FetchResult},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Mutate_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      MUTATION = 1
+
+      FIELDS = {
+        # the RowMutation.
+        MUTATION => {:type => ::Thrift::Types::STRUCT, :name => 'mutation', :class => ::Blur::RowMutation}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Mutate_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class MutateBatch_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      MUTATIONS = 1
+
+      FIELDS = {
+        # the batch of RowMutations.
+        MUTATIONS => {:type => ::Thrift::Types::LIST, :name => 'mutations', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::RowMutation}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class MutateBatch_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CancelQuery_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      UUID = 2
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        # the uuid of the query.
+        UUID => {:type => ::Thrift::Types::STRING, :name => 'uuid'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CancelQuery_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EX = 1
+
+      FIELDS = {
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class QueryStatusIdList_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class QueryStatusIdList_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class QueryStatusById_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      UUID = 2
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        # the uuid of the query.
+        UUID => {:type => ::Thrift::Types::STRING, :name => 'uuid'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class QueryStatusById_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Blur::BlurQueryStatus},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Terms_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      COLUMNFAMILY = 2
+      COLUMNNAME = 3
+      STARTWITH = 4
+      SIZE = 5
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        # the column family. If the frequency requested is a system field like "rowid", "recordid", "family", etc then columnFamily can be null.
+        COLUMNFAMILY => {:type => ::Thrift::Types::STRING, :name => 'columnFamily'},
+        # the column name.
+        COLUMNNAME => {:type => ::Thrift::Types::STRING, :name => 'columnName'},
+        # the term to start with assuming that you are paging through the term list.
+        STARTWITH => {:type => ::Thrift::Types::STRING, :name => 'startWith'},
+        # the number to fetch at once.
+        SIZE => {:type => ::Thrift::Types::I16, :name => 'size'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Terms_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RecordFrequency_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      COLUMNFAMILY = 2
+      COLUMNNAME = 3
+      VALUE = 4
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        # the column family. If the frequency requested is a system field like "rowid", "recordid", "family", etc then columnFamily can be null.
+        COLUMNFAMILY => {:type => ::Thrift::Types::STRING, :name => 'columnFamily'},
+        # the column name.
+        COLUMNNAME => {:type => ::Thrift::Types::STRING, :name => 'columnName'},
+        # the value.
+        VALUE => {:type => ::Thrift::Types::STRING, :name => 'value'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RecordFrequency_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::I64, :name => 'success'},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ShardClusterList_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+
+      FIELDS = {
+
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ShardClusterList_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ShardServerList_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      CLUSTER = 1
+
+      FIELDS = {
+        # the cluster name.
+        CLUSTER => {:type => ::Thrift::Types::STRING, :name => 'cluster'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ShardServerList_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ControllerServerList_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+
+      FIELDS = {
+
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ControllerServerList_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ShardServerLayout_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ShardServerLayout_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ShardServerLayoutState_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+
+      FIELDS = {
+        # the table name.
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ShardServerLayoutState_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::MAP, :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::I32, :enum_class => ::Blur::ShardState}}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class IsInSafeMode_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      CLUSTER = 1
+
+      FIELDS = {
+        # the name of the cluster.
+        CLUSTER => {:type => ::Thrift::Types::STRING, :name => 'cluster'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class IsInSafeMode_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Configuration_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+
+      FIELDS = {
+
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Configuration_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Metrics_args
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      METRICS = 1
+
+      FIELDS = {
+        # the names of the metrics to return.  If null all are returned.
+        METRICS => {:type => ::Thrift::Types::SET, :name => 'metrics', :element => {:type => ::Thrift::Types::STRING}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Metrics_result
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SUCCESS = 0
+      EX = 1
+
+      FIELDS = {
+        SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Metric}},
+        EX => {:type => ::Thrift::Types::STRUCT, :name => 'ex', :class => ::Blur::BlurException}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+  end
+
+end


Mime
View raw message