incubator-blur-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amccu...@apache.org
Subject [20/50] [abbrv] Initial Blur Console commit.
Date Fri, 17 May 2013 03:24:47 GMT
http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/b5b86c7e/src/contrib/blur-console/blur-admin/lib/hdfs_thrift_client.rb
----------------------------------------------------------------------
diff --git a/src/contrib/blur-console/blur-admin/lib/hdfs_thrift_client.rb b/src/contrib/blur-console/blur-admin/lib/hdfs_thrift_client.rb
new file mode 100644
index 0000000..73e88e8
--- /dev/null
+++ b/src/contrib/blur-console/blur-admin/lib/hdfs_thrift_client.rb
@@ -0,0 +1,78 @@
+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/b5b86c7e/src/contrib/blur-console/blur-admin/lib/pounder/pounder.rb
----------------------------------------------------------------------
diff --git a/src/contrib/blur-console/blur-admin/lib/pounder/pounder.rb b/src/contrib/blur-console/blur-admin/lib/pounder/pounder.rb
new file mode 100644
index 0000000..88f03d5
--- /dev/null
+++ b/src/contrib/blur-console/blur-admin/lib/pounder/pounder.rb
@@ -0,0 +1,61 @@
+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/b5b86c7e/src/contrib/blur-console/blur-admin/lib/tasks/.gitkeep
----------------------------------------------------------------------
diff --git a/src/contrib/blur-console/blur-admin/lib/tasks/.gitkeep b/src/contrib/blur-console/blur-admin/lib/tasks/.gitkeep
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/b5b86c7e/src/contrib/blur-console/blur-admin/lib/tasks/coverage.rake
----------------------------------------------------------------------
diff --git a/src/contrib/blur-console/blur-admin/lib/tasks/coverage.rake b/src/contrib/blur-console/blur-admin/lib/tasks/coverage.rake
new file mode 100644
index 0000000..7cc3a36
--- /dev/null
+++ b/src/contrib/blur-console/blur-admin/lib/tasks/coverage.rake
@@ -0,0 +1,16 @@
+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/b5b86c7e/src/contrib/blur-console/blur-admin/lib/tasks/pounder.rake
----------------------------------------------------------------------
diff --git a/src/contrib/blur-console/blur-admin/lib/tasks/pounder.rake b/src/contrib/blur-console/blur-admin/lib/tasks/pounder.rake
new file mode 100644
index 0000000..a892df5
--- /dev/null
+++ b/src/contrib/blur-console/blur-admin/lib/tasks/pounder.rake
@@ -0,0 +1,13 @@
+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/b5b86c7e/src/contrib/blur-console/blur-admin/lib/thrift/blur.rb
----------------------------------------------------------------------
diff --git a/src/contrib/blur-console/blur-admin/lib/thrift/blur.rb b/src/contrib/blur-console/blur-admin/lib/thrift/blur.rb
new file mode 100644
index 0000000..78bfbd3
--- /dev/null
+++ b/src/contrib/blur-console/blur-admin/lib/thrift/blur.rb
@@ -0,0 +1,1244 @@
+#
+# Autogenerated by Thrift Compiler (0.7.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 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 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 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 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 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 currentQueries(table)
+            send_currentQueries(table)
+            return recv_currentQueries()
+          end
+
+          def send_currentQueries(table)
+            send_message('currentQueries', CurrentQueries_args, :table => table)
+          end
+
+          def recv_currentQueries()
+            result = receive_message(CurrentQueries_result)
+            return result.success unless result.success.nil?
+            raise result.ex unless result.ex.nil?
+            raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'currentQueries 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 getTableStats(table)
+            send_getTableStats(table)
+            return recv_getTableStats()
+          end
+
+          def send_getTableStats(table)
+            send_message('getTableStats', GetTableStats_args, :table => table)
+          end
+
+          def recv_getTableStats()
+            result = receive_message(GetTableStats_result)
+            return result.success unless result.success.nil?
+            raise result.ex unless result.ex.nil?
+            raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'getTableStats 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 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 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
+
+        end
+
+        class Processor
+          include ::Thrift::Processor
+
+          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_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_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_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_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_currentQueries(seqid, iprot, oprot)
+            args = read_args(iprot, CurrentQueries_args)
+            result = CurrentQueries_result.new()
+            begin
+              result.success = @handler.currentQueries(args.table)
+            rescue ::Blur::BlurException => ex
+              result.ex = ex
+            end
+            write_result(result, oprot, 'currentQueries', 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_getTableStats(seqid, iprot, oprot)
+            args = read_args(iprot, GetTableStats_args)
+            result = GetTableStats_result.new()
+            begin
+              result.success = @handler.getTableStats(args.table)
+            rescue ::Blur::BlurException => ex
+              result.ex = ex
+            end
+            write_result(result, oprot, 'getTableStats', 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_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_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
+
+        end
+
+        # HELPER FUNCTIONS AND STRUCTURES
+
+        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 = {
+            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 = {
+            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 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 Describe_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 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 Query_args
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          TABLE = 1
+          BLURQUERY = 2
+
+          FIELDS = {
+            TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+            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 CancelQuery_args
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          TABLE = 1
+          UUID = 2
+
+          FIELDS = {
+            TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+            UUID => {:type => ::Thrift::Types::I64, :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 CurrentQueries_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 CurrentQueries_result
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          SUCCESS = 0
+          EX = 1
+
+          FIELDS = {
+            SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :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 Schema_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 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 GetTableStats_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 GetTableStats_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 Terms_args
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          TABLE = 1
+          COLUMNFAMILY = 2
+          COLUMNNAME = 3
+          STARTWITH = 4
+          SIZE = 5
+
+          FIELDS = {
+            TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+            COLUMNFAMILY => {:type => ::Thrift::Types::STRING, :name => 'columnFamily'},
+            COLUMNNAME => {:type => ::Thrift::Types::STRING, :name => 'columnName'},
+            STARTWITH => {:type => ::Thrift::Types::STRING, :name => 'startWith'},
+            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 = {
+            TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+            COLUMNFAMILY => {:type => ::Thrift::Types::STRING, :name => 'columnFamily'},
+            COLUMNNAME => {:type => ::Thrift::Types::STRING, :name => 'columnName'},
+            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 FetchRow_args
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          TABLE = 1
+          SELECTOR = 2
+
+          FIELDS = {
+            TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+            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 = {
+            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 = {
+            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 CreateTable_args
+          include ::Thrift::Struct, ::Thrift::Struct_Union
+          TABLEDESCRIPTOR = 1
+
+          FIELDS = {
+            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 = {
+            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 = {
+            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 = {
+            TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+            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
+
+      end
+
+    end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/b5b86c7e/src/contrib/blur-console/blur-admin/lib/thrift/blur_constants.rb
----------------------------------------------------------------------
diff --git a/src/contrib/blur-console/blur-admin/lib/thrift/blur_constants.rb b/src/contrib/blur-console/blur-admin/lib/thrift/blur_constants.rb
new file mode 100644
index 0000000..fe44d59
--- /dev/null
+++ b/src/contrib/blur-console/blur-admin/lib/thrift/blur_constants.rb
@@ -0,0 +1,10 @@
+#
+# Autogenerated by Thrift Compiler (0.7.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+
+require 'blur_types'
+
+  module Blur
+end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/b5b86c7e/src/contrib/blur-console/blur-admin/lib/thrift/blur_types.rb
----------------------------------------------------------------------
diff --git a/src/contrib/blur-console/blur-admin/lib/thrift/blur_types.rb b/src/contrib/blur-console/blur-admin/lib/thrift/blur_types.rb
new file mode 100644
index 0000000..f03cabd
--- /dev/null
+++ b/src/contrib/blur-console/blur-admin/lib/thrift/blur_types.rb
@@ -0,0 +1,641 @@
+#
+# Autogenerated by Thrift Compiler (0.7.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+
+
+module Blur
+    module ScoreType
+      # During a multi Record match, a calculation of the best match
+      # Record plus how often it occurs within the match Row produces
+      # the score that is used in the scoring of the SuperQuery.
+      SUPER = 0
+      # During a multi Record match, the aggregate score of all the
+      # Records within a ColumnFamily is used in the scoring of the
+      # SuperQuery.
+      AGGREGATE = 1
+      # During a multi Record match, the best score of all the
+      # Records within a ColumnFamily is used in the scoring of the
+      # SuperQuery.
+      BEST = 2
+      # A constant score of 1 is used in the scoring of the SuperQuery.
+      CONSTANT = 3
+      VALUE_MAP = {0 => "SUPER", 1 => "AGGREGATE", 2 => "BEST", 3 => "CONSTANT"}
+      VALID_VALUES = Set.new([SUPER, AGGREGATE, BEST, CONSTANT]).freeze
+    end
+
+    module QueryState
+      # Query is running.
+      RUNNING = 0
+      # Query has been interrupted.
+      INTERRUPTED = 1
+      # Query is complete.
+      COMPLETE = 2
+      VALUE_MAP = {0 => "RUNNING", 1 => "INTERRUPTED", 2 => "COMPLETE"}
+      VALID_VALUES = Set.new([RUNNING, INTERRUPTED, COMPLETE]).freeze
+    end
+
+    module RowMutationType
+      # Indicates that the entire Row is to be deleted.
+      DELETE_ROW = 0
+      # Indicates that the entire Row is to be deleted, and then a new
+      # Row with the same id is to be added.
+      REPLACE_ROW = 1
+      # Indicates that mutations of the underlying Records will be
+      # processed individually.
+      UPDATE_ROW = 2
+      VALUE_MAP = {0 => "DELETE_ROW", 1 => "REPLACE_ROW", 2 => "UPDATE_ROW"}
+      VALID_VALUES = Set.new([DELETE_ROW, REPLACE_ROW, UPDATE_ROW]).freeze
+    end
+
+    module RecordMutationType
+      # Indicates the Record with the given recordId in the given Row
+      # is to be deleted.
+      DELETE_ENTIRE_RECORD = 0
+      # Indicates the Record with the given recordId in the given Row
+      # is to be deleted, and a new Record with the same id is to be added.
+      REPLACE_ENTIRE_RECORD = 1
+      # Replace the columns that are specified in the Record mutation.
+      REPLACE_COLUMNS = 2
+      # Append the columns in the Record mutation to the Record that
+      # could already exist.
+      APPEND_COLUMN_VALUES = 3
+      VALUE_MAP = {0 => "DELETE_ENTIRE_RECORD", 1 => "REPLACE_ENTIRE_RECORD", 2 => "REPLACE_COLUMNS", 3 => "APPEND_COLUMN_VALUES"}
+      VALID_VALUES = Set.new([DELETE_ENTIRE_RECORD, REPLACE_ENTIRE_RECORD, REPLACE_COLUMNS, APPEND_COLUMN_VALUES]).freeze
+    end
+
+    # BlurException that carries a message plus the original stack
+    # trace (if any).
+    class BlurException < ::Thrift::Exception
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      MESSAGE = 1
+      STACKTRACESTR = 2
+
+      FIELDS = {
+        # The message in the exception.
+        MESSAGE => {:type => ::Thrift::Types::STRING, :name => 'message'},
+        # The original stack trace (if any).
+        STACKTRACESTR => {:type => ::Thrift::Types::STRING, :name => 'stackTraceStr'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    # Column is the lowest storage element in Blur, it stores a single name and value pair.
+    class Column
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      NAME = 1
+      VALUE = 2
+
+      FIELDS = {
+        # The name of the column.
+        NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
+        # The value to be indexed and stored.
+        VALUE => {:type => ::Thrift::Types::STRING, :name => 'value'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    # Records contain a list of columns, multiple columns with the same name are allowed.
+    class Record
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      RECORDID = 1
+      FAMILY = 2
+      COLUMNS = 3
+
+      FIELDS = {
+        # Record id uniquely identifies a record within a single row.
+        RECORDID => {:type => ::Thrift::Types::STRING, :name => 'recordId'},
+        # The family in which this record resides.
+        FAMILY => {:type => ::Thrift::Types::STRING, :name => 'family'},
+        # A list of columns, multiple columns with the same name are allowed.
+        COLUMNS => {:type => ::Thrift::Types::LIST, :name => 'columns', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Column}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    # Rows contain a list of records.
+    class Row
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      ID = 1
+      RECORDS = 2
+      RECORDCOUNT = 3
+
+      FIELDS = {
+        # The row id.
+        ID => {:type => ::Thrift::Types::STRING, :name => 'id'},
+        # The list records within the row.  If paging is used this list will only
+        # reflect the paged records from the selector.
+        RECORDS => {:type => ::Thrift::Types::LIST, :name => 'records', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Record}},
+        # The total record count for the row.  If paging is used in a selector to page
+        # through records of a row, this count will reflect the entire row.
+        RECORDCOUNT => {:type => ::Thrift::Types::I32, :name => 'recordCount'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Selector
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      RECORDONLY = 1
+      LOCATIONID = 2
+      ROWID = 3
+      RECORDID = 4
+      COLUMNFAMILIESTOFETCH = 5
+      COLUMNSTOFETCH = 6
+      ALLOWSTALEDATA = 7
+
+      FIELDS = {
+        RECORDONLY => {:type => ::Thrift::Types::BOOL, :name => 'recordOnly'},
+        LOCATIONID => {:type => ::Thrift::Types::STRING, :name => 'locationId'},
+        ROWID => {:type => ::Thrift::Types::STRING, :name => 'rowId'},
+        RECORDID => {:type => ::Thrift::Types::STRING, :name => 'recordId'},
+        COLUMNFAMILIESTOFETCH => {:type => ::Thrift::Types::SET, :name => 'columnFamiliesToFetch', :element => {:type => ::Thrift::Types::STRING}},
+        COLUMNSTOFETCH => {:type => ::Thrift::Types::MAP, :name => 'columnsToFetch', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::SET, :element => {:type => ::Thrift::Types::STRING}}},
+        ALLOWSTALEDATA => {:type => ::Thrift::Types::BOOL, :name => 'allowStaleData'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class FetchRowResult
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      ROW = 1
+
+      FIELDS = {
+        ROW => {:type => ::Thrift::Types::STRUCT, :name => 'row', :class => ::Blur::Row}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class FetchRecordResult
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      ROWID = 1
+      RECORD = 2
+
+      FIELDS = {
+        ROWID => {:type => ::Thrift::Types::STRING, :name => 'rowid'},
+        RECORD => {:type => ::Thrift::Types::STRUCT, :name => 'record', :class => ::Blur::Record}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class FetchResult
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      EXISTS = 1
+      DELETED = 2
+      TABLE = 3
+      ROWRESULT = 4
+      RECORDRESULT = 5
+
+      FIELDS = {
+        EXISTS => {:type => ::Thrift::Types::BOOL, :name => 'exists'},
+        DELETED => {:type => ::Thrift::Types::BOOL, :name => 'deleted'},
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        ROWRESULT => {:type => ::Thrift::Types::STRUCT, :name => 'rowResult', :class => ::Blur::FetchRowResult},
+        RECORDRESULT => {:type => ::Thrift::Types::STRUCT, :name => 'recordResult', :class => ::Blur::FetchRecordResult}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class SimpleQuery
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      QUERYSTR = 1
+      SUPERQUERYON = 2
+      TYPE = 3
+      POSTSUPERFILTER = 4
+      PRESUPERFILTER = 5
+
+      FIELDS = {
+        QUERYSTR => {:type => ::Thrift::Types::STRING, :name => 'queryStr'},
+        SUPERQUERYON => {:type => ::Thrift::Types::BOOL, :name => 'superQueryOn', :default => true},
+        TYPE => {:type => ::Thrift::Types::I32, :name => 'type', :default =>         0, :enum_class => ::Blur::ScoreType},
+        POSTSUPERFILTER => {:type => ::Thrift::Types::STRING, :name => 'postSuperFilter'},
+        PRESUPERFILTER => {:type => ::Thrift::Types::STRING, :name => 'preSuperFilter'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+        unless @type.nil? || ::Blur::ScoreType::VALID_VALUES.include?(@type)
+          raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field type!')
+        end
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ExpertQuery
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      QUERY = 1
+      FILTER = 2
+
+      FIELDS = {
+        QUERY => {:type => ::Thrift::Types::STRING, :name => 'query', :binary => true},
+        FILTER => {:type => ::Thrift::Types::STRING, :name => 'filter', :binary => true}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Facet
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      QUERYSTR = 1
+      MINIMUMNUMBEROFBLURRESULTS = 2
+
+      FIELDS = {
+        QUERYSTR => {:type => ::Thrift::Types::STRING, :name => 'queryStr'},
+        MINIMUMNUMBEROFBLURRESULTS => {:type => ::Thrift::Types::I64, :name => 'minimumNumberOfBlurResults', :default => 9223372036854775807}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class BlurQuery
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      SIMPLEQUERY = 1
+      EXPERTQUERY = 2
+      FACETS = 3
+      SELECTOR = 4
+      ALLOWSTALEDATA = 5
+      USECACHEIFPRESENT = 6
+      START = 7
+      FETCH = 8
+      MINIMUMNUMBEROFRESULTS = 9
+      MAXQUERYTIME = 10
+      UUID = 11
+      USERCONTEXT = 12
+      CACHERESULT = 13
+      STARTTIME = 14
+      MODIFYFILECACHES = 15
+
+      FIELDS = {
+        SIMPLEQUERY => {:type => ::Thrift::Types::STRUCT, :name => 'simpleQuery', :class => ::Blur::SimpleQuery},
+        EXPERTQUERY => {:type => ::Thrift::Types::STRUCT, :name => 'expertQuery', :class => ::Blur::ExpertQuery},
+        FACETS => {:type => ::Thrift::Types::LIST, :name => 'facets', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::Facet}},
+        SELECTOR => {:type => ::Thrift::Types::STRUCT, :name => 'selector', :class => ::Blur::Selector},
+        ALLOWSTALEDATA => {:type => ::Thrift::Types::BOOL, :name => 'allowStaleData', :default => false},
+        USECACHEIFPRESENT => {:type => ::Thrift::Types::BOOL, :name => 'useCacheIfPresent', :default => true},
+        START => {:type => ::Thrift::Types::I64, :name => 'start', :default => 0},
+        FETCH => {:type => ::Thrift::Types::I32, :name => 'fetch', :default => 10},
+        MINIMUMNUMBEROFRESULTS => {:type => ::Thrift::Types::I64, :name => 'minimumNumberOfResults', :default => 9223372036854775807},
+        MAXQUERYTIME => {:type => ::Thrift::Types::I64, :name => 'maxQueryTime', :default => 9223372036854775807},
+        UUID => {:type => ::Thrift::Types::I64, :name => 'uuid'},
+        USERCONTEXT => {:type => ::Thrift::Types::STRING, :name => 'userContext'},
+        CACHERESULT => {:type => ::Thrift::Types::BOOL, :name => 'cacheResult', :default => true},
+        STARTTIME => {:type => ::Thrift::Types::I64, :name => 'startTime', :default => 0},
+        MODIFYFILECACHES => {:type => ::Thrift::Types::BOOL, :name => 'modifyFileCaches', :default => true}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class BlurResult
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      LOCATIONID = 1
+      SCORE = 2
+      FETCHRESULT = 3
+
+      FIELDS = {
+        LOCATIONID => {:type => ::Thrift::Types::STRING, :name => 'locationId'},
+        SCORE => {:type => ::Thrift::Types::DOUBLE, :name => 'score'},
+        FETCHRESULT => {:type => ::Thrift::Types::STRUCT, :name => 'fetchResult', :class => ::Blur::FetchResult}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class BlurResults
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TOTALRESULTS = 1
+      SHARDINFO = 2
+      RESULTS = 3
+      FACETCOUNTS = 4
+      EXCEPTIONS = 5
+      QUERY = 6
+
+      FIELDS = {
+        TOTALRESULTS => {:type => ::Thrift::Types::I64, :name => 'totalResults', :default => 0},
+        SHARDINFO => {:type => ::Thrift::Types::MAP, :name => 'shardInfo', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::I64}},
+        RESULTS => {:type => ::Thrift::Types::LIST, :name => 'results', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::BlurResult}},
+        FACETCOUNTS => {:type => ::Thrift::Types::LIST, :name => 'facetCounts', :element => {:type => ::Thrift::Types::I64}},
+        EXCEPTIONS => {:type => ::Thrift::Types::LIST, :name => 'exceptions', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::BlurException}},
+        QUERY => {:type => ::Thrift::Types::STRUCT, :name => 'query', :class => ::Blur::BlurQuery}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RecordMutation
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      RECORDMUTATIONTYPE = 1
+      RECORD = 2
+
+      FIELDS = {
+        RECORDMUTATIONTYPE => {:type => ::Thrift::Types::I32, :name => 'recordMutationType', :enum_class => ::Blur::RecordMutationType},
+        RECORD => {:type => ::Thrift::Types::STRUCT, :name => 'record', :class => ::Blur::Record}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+        unless @recordMutationType.nil? || ::Blur::RecordMutationType::VALID_VALUES.include?(@recordMutationType)
+          raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field recordMutationType!')
+        end
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class RowMutation
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      ROWID = 2
+      WAL = 3
+      ROWMUTATIONTYPE = 4
+      RECORDMUTATIONS = 5
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        ROWID => {:type => ::Thrift::Types::STRING, :name => 'rowId'},
+        WAL => {:type => ::Thrift::Types::BOOL, :name => 'wal', :default => true},
+        ROWMUTATIONTYPE => {:type => ::Thrift::Types::I32, :name => 'rowMutationType', :enum_class => ::Blur::RowMutationType},
+        RECORDMUTATIONS => {:type => ::Thrift::Types::LIST, :name => 'recordMutations', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::RecordMutation}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+        unless @rowMutationType.nil? || ::Blur::RowMutationType::VALID_VALUES.include?(@rowMutationType)
+          raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field rowMutationType!')
+        end
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class CpuTime
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      CPUTIME = 1
+      REALTIME = 2
+
+      FIELDS = {
+        CPUTIME => {:type => ::Thrift::Types::I64, :name => 'cpuTime'},
+        REALTIME => {:type => ::Thrift::Types::I64, :name => 'realTime'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class BlurQueryStatus
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      QUERY = 1
+      CPUTIMES = 2
+      COMPLETESHARDS = 3
+      TOTALSHARDS = 4
+      STATE = 5
+      UUID = 6
+
+      FIELDS = {
+        QUERY => {:type => ::Thrift::Types::STRUCT, :name => 'query', :class => ::Blur::BlurQuery},
+        CPUTIMES => {:type => ::Thrift::Types::MAP, :name => 'cpuTimes', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::CpuTime}},
+        COMPLETESHARDS => {:type => ::Thrift::Types::I32, :name => 'completeShards'},
+        TOTALSHARDS => {:type => ::Thrift::Types::I32, :name => 'totalShards'},
+        STATE => {:type => ::Thrift::Types::I32, :name => 'state', :enum_class => ::Blur::QueryState},
+        UUID => {:type => ::Thrift::Types::I64, :name => 'uuid'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+        unless @state.nil? || ::Blur::QueryState::VALID_VALUES.include?(@state)
+          raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field state!')
+        end
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableStats
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLENAME = 1
+      BYTES = 2
+      RECORDCOUNT = 3
+      ROWCOUNT = 4
+      QUERIES = 5
+
+      FIELDS = {
+        TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tableName'},
+        BYTES => {:type => ::Thrift::Types::I64, :name => 'bytes'},
+        RECORDCOUNT => {:type => ::Thrift::Types::I64, :name => 'recordCount'},
+        ROWCOUNT => {:type => ::Thrift::Types::I64, :name => 'rowCount'},
+        QUERIES => {:type => ::Thrift::Types::I64, :name => 'queries'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class Schema
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      TABLE = 1
+      COLUMNFAMILIES = 2
+
+      FIELDS = {
+        TABLE => {:type => ::Thrift::Types::STRING, :name => 'table'},
+        COLUMNFAMILIES => {:type => ::Thrift::Types::MAP, :name => 'columnFamilies', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::SET, :element => {:type => ::Thrift::Types::STRING}}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class AlternateColumnDefinition
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      ANALYZERCLASSNAME = 1
+
+      FIELDS = {
+        ANALYZERCLASSNAME => {:type => ::Thrift::Types::STRING, :name => 'analyzerClassName'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ColumnDefinition
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      ANALYZERCLASSNAME = 1
+      FULLTEXTINDEX = 2
+      ALTERNATECOLUMNDEFINITIONS = 3
+
+      FIELDS = {
+        ANALYZERCLASSNAME => {:type => ::Thrift::Types::STRING, :name => 'analyzerClassName'},
+        FULLTEXTINDEX => {:type => ::Thrift::Types::BOOL, :name => 'fullTextIndex'},
+        ALTERNATECOLUMNDEFINITIONS => {:type => ::Thrift::Types::MAP, :name => 'alternateColumnDefinitions', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::AlternateColumnDefinition}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class ColumnFamilyDefinition
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      DEFAULTDEFINITION = 1
+      COLUMNDEFINITIONS = 2
+
+      FIELDS = {
+        DEFAULTDEFINITION => {:type => ::Thrift::Types::STRUCT, :name => 'defaultDefinition', :class => ::Blur::ColumnDefinition},
+        COLUMNDEFINITIONS => {:type => ::Thrift::Types::MAP, :name => 'columnDefinitions', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::ColumnDefinition}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class AnalyzerDefinition
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      DEFAULTDEFINITION = 1
+      FULLTEXTANALYZERCLASSNAME = 2
+      COLUMNFAMILYDEFINITIONS = 3
+
+      FIELDS = {
+        DEFAULTDEFINITION => {:type => ::Thrift::Types::STRUCT, :name => 'defaultDefinition', :class => ::Blur::ColumnDefinition},
+        FULLTEXTANALYZERCLASSNAME => {:type => ::Thrift::Types::STRING, :name => 'fullTextAnalyzerClassName'},
+        COLUMNFAMILYDEFINITIONS => {:type => ::Thrift::Types::MAP, :name => 'columnFamilyDefinitions', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRUCT, :class => ::Blur::ColumnFamilyDefinition}}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+    class TableDescriptor
+      include ::Thrift::Struct, ::Thrift::Struct_Union
+      ISENABLED = 1
+      ANALYZERDEFINITION = 2
+      SHARDCOUNT = 3
+      TABLEURI = 4
+      COMPRESSIONCLASS = 5
+      COMPRESSIONBLOCKSIZE = 6
+      CLUSTER = 7
+      NAME = 8
+
+      FIELDS = {
+        ISENABLED => {:type => ::Thrift::Types::BOOL, :name => 'isEnabled', :default => true},
+        ANALYZERDEFINITION => {:type => ::Thrift::Types::STRUCT, :name => 'analyzerDefinition', :class => ::Blur::AnalyzerDefinition},
+        SHARDCOUNT => {:type => ::Thrift::Types::I32, :name => 'shardCount', :default => 1},
+        TABLEURI => {:type => ::Thrift::Types::STRING, :name => 'tableUri'},
+        COMPRESSIONCLASS => {:type => ::Thrift::Types::STRING, :name => 'compressionClass', :default => %q"org.apache.hadoop.io.compress.DefaultCodec"},
+        COMPRESSIONBLOCKSIZE => {:type => ::Thrift::Types::I32, :name => 'compressionBlockSize', :default => 32768},
+        CLUSTER => {:type => ::Thrift::Types::STRING, :name => 'cluster'},
+        NAME => {:type => ::Thrift::Types::STRING, :name => 'name'}
+      }
+
+      def struct_fields; FIELDS; end
+
+      def validate
+      end
+
+      ::Thrift::Struct.generate_accessors self
+    end
+
+  end

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/b5b86c7e/src/contrib/blur-console/blur-admin/lib/thrift/hadoopfs_constants.rb
----------------------------------------------------------------------
diff --git a/src/contrib/blur-console/blur-admin/lib/thrift/hadoopfs_constants.rb b/src/contrib/blur-console/blur-admin/lib/thrift/hadoopfs_constants.rb
new file mode 100644
index 0000000..cc2d423
--- /dev/null
+++ b/src/contrib/blur-console/blur-admin/lib/thrift/hadoopfs_constants.rb
@@ -0,0 +1,8 @@
+#
+# Autogenerated by Thrift
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+
+require 'hadoopfs_types'
+

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/b5b86c7e/src/contrib/blur-console/blur-admin/lib/thrift/hadoopfs_types.rb
----------------------------------------------------------------------
diff --git a/src/contrib/blur-console/blur-admin/lib/thrift/hadoopfs_types.rb b/src/contrib/blur-console/blur-admin/lib/thrift/hadoopfs_types.rb
new file mode 100644
index 0000000..cad7811
--- /dev/null
+++ b/src/contrib/blur-console/blur-admin/lib/thrift/hadoopfs_types.rb
@@ -0,0 +1,137 @@
+#
+# Autogenerated by Thrift
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+
+module ThriftHadoopFileSystem
+
+class ThriftHandle
+  include ::Thrift::Struct, ::Thrift::Struct_Union
+  ID = -1
+
+  FIELDS = {
+    ID => {:type => ::Thrift::Types::I64, :name => 'id'}
+  }
+
+  def struct_fields; FIELDS; end
+
+  def validate
+  end
+
+  ::Thrift::Struct.generate_accessors self
+end
+
+class Pathname
+  include ::Thrift::Struct, ::Thrift::Struct_Union
+  PATHNAME = -1
+
+  FIELDS = {
+    PATHNAME => {:type => ::Thrift::Types::STRING, :name => 'pathname'}
+  }
+
+  def struct_fields; FIELDS; end
+
+  def validate
+  end
+
+  ::Thrift::Struct.generate_accessors self
+end
+
+class FileStatus
+  include ::Thrift::Struct, ::Thrift::Struct_Union
+  PATH = 1
+  LENGTH = 2
+  ISDIR = 3
+  BLOCK_REPLICATION = 4
+  BLOCKSIZE = 5
+  MODIFICATION_TIME = 6
+  PERMISSION = 7
+  OWNER = 8
+  GROUP = 9
+
+  FIELDS = {
+    PATH => {:type => ::Thrift::Types::STRING, :name => 'path'},
+    LENGTH => {:type => ::Thrift::Types::I64, :name => 'length'},
+    ISDIR => {:type => ::Thrift::Types::BOOL, :name => 'isdir'},
+    BLOCK_REPLICATION => {:type => ::Thrift::Types::I16, :name => 'block_replication'},
+    BLOCKSIZE => {:type => ::Thrift::Types::I64, :name => 'blocksize'},
+    MODIFICATION_TIME => {:type => ::Thrift::Types::I64, :name => 'modification_time'},
+    PERMISSION => {:type => ::Thrift::Types::STRING, :name => 'permission'},
+    OWNER => {:type => ::Thrift::Types::STRING, :name => 'owner'},
+    GROUP => {:type => ::Thrift::Types::STRING, :name => 'group'}
+  }
+
+  def struct_fields; FIELDS; end
+
+  def validate
+  end
+
+  ::Thrift::Struct.generate_accessors self
+end
+
+class BlockLocation
+  include ::Thrift::Struct, ::Thrift::Struct_Union
+  HOSTS = 1
+  NAMES = 2
+  OFFSET = 3
+  LENGTH = 4
+
+  FIELDS = {
+    HOSTS => {:type => ::Thrift::Types::LIST, :name => 'hosts', :element => {:type => ::Thrift::Types::STRING}},
+    NAMES => {:type => ::Thrift::Types::LIST, :name => 'names', :element => {:type => ::Thrift::Types::STRING}},
+    OFFSET => {:type => ::Thrift::Types::I64, :name => 'offset'},
+    LENGTH => {:type => ::Thrift::Types::I64, :name => 'length'}
+  }
+
+  def struct_fields; FIELDS; end
+
+  def validate
+  end
+
+  ::Thrift::Struct.generate_accessors self
+end
+
+class MalformedInputException < ::Thrift::Exception
+  include ::Thrift::Struct, ::Thrift::Struct_Union
+  def initialize(message=nil)
+    super()
+    self.message = message
+  end
+
+  MESSAGE = -1
+
+  FIELDS = {
+    MESSAGE => {:type => ::Thrift::Types::STRING, :name => 'message'}
+  }
+
+  def struct_fields; FIELDS; end
+
+  def validate
+  end
+
+  ::Thrift::Struct.generate_accessors self
+end
+
+class ThriftIOException < ::Thrift::Exception
+  include ::Thrift::Struct, ::Thrift::Struct_Union
+  def initialize(message=nil)
+    super()
+    self.message = message
+  end
+
+  MESSAGE = -1
+
+  FIELDS = {
+    MESSAGE => {:type => ::Thrift::Types::STRING, :name => 'message'}
+  }
+
+  def struct_fields; FIELDS; end
+
+  def validate
+  end
+
+  ::Thrift::Struct.generate_accessors self
+end
+
+end


Mime
View raw message