| /* |
| * 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. |
| */ |
| |
| /* |
| * Compatibility. |
| * |
| * Its possible that over time that this IDL may change in ways that breaks |
| * client code. However newer versions of the proxy server will use thrift |
| * mechanisms to maintain compatibility with older versions of the proxy IDL. |
| * So proxy clients using 1.4.x or 1.5.x IDL can use a 1.6.x proxy server. |
| * Therefore if changes to this IDL break your client code, then using an older |
| * version of the IDL with a new version of the proxy server is an option. |
| */ |
| |
| namespace cpp accumulo |
| namespace java org.apache.accumulo.proxy.thrift |
| namespace rb Accumulo |
| namespace py accumulo |
| |
| struct Key { |
| 1:binary row; |
| 2:binary colFamily; |
| 3:binary colQualifier; |
| 4:binary colVisibility; |
| 5:optional i64 timestamp = 0x7FFFFFFFFFFFFFFF |
| } |
| |
| enum PartialKey { |
| ROW, |
| ROW_COLFAM, |
| ROW_COLFAM_COLQUAL, |
| ROW_COLFAM_COLQUAL_COLVIS, |
| ROW_COLFAM_COLQUAL_COLVIS_TIME, |
| ROW_COLFAM_COLQUAL_COLVIS_TIME_DEL |
| } |
| |
| struct ColumnUpdate { |
| 1:binary colFamily, |
| 2:binary colQualifier, |
| 3:optional binary colVisibility, |
| 4:optional i64 timestamp, |
| 5:optional binary value, |
| 6:optional bool deleteCell |
| } |
| |
| //since 1.6.0 |
| struct DiskUsage { |
| 1:list<string> tables, |
| 2:i64 usage |
| } |
| |
| struct KeyValue { |
| 1:Key key, |
| 2:binary value |
| } |
| |
| struct ScanResult { |
| 1:list<KeyValue> results, |
| 2:bool more |
| } |
| |
| struct Range { |
| 1:Key start, |
| 2:bool startInclusive |
| 3:Key stop, |
| 4:bool stopInclusive |
| } |
| |
| struct ScanColumn { |
| 1:binary colFamily, |
| 2:optional binary colQualifier |
| } |
| |
| struct IteratorSetting { |
| 1: i32 priority, |
| 2: string name, |
| 3: string iteratorClass, |
| 4: map<string,string> properties |
| } |
| |
| struct ScanOptions { |
| 1:optional set<binary> authorizations; |
| 2:optional Range range, |
| 3:optional list<ScanColumn> columns; |
| 4:optional list<IteratorSetting> iterators; |
| 5:optional i32 bufferSize; |
| } |
| |
| struct BatchScanOptions { |
| 1:optional set<binary> authorizations; |
| 2:optional list<Range> ranges; |
| 3:optional list<ScanColumn> columns; |
| 4:optional list<IteratorSetting> iterators; |
| 5:optional i32 threads; |
| } |
| |
| struct KeyValueAndPeek { |
| 1:KeyValue keyValue, |
| 2:bool hasNext |
| } |
| |
| enum TablePermission { |
| READ = 2, |
| WRITE = 3, |
| BULK_IMPORT = 4, |
| ALTER_TABLE = 5, |
| GRANT = 6, |
| DROP_TABLE = 7, |
| } |
| |
| enum SystemPermission { |
| GRANT = 0, |
| CREATE_TABLE = 1, |
| DROP_TABLE = 2, |
| ALTER_TABLE = 3, |
| CREATE_USER = 4, |
| DROP_USER = 5, |
| ALTER_USER = 6, |
| SYSTEM = 7, |
| CREATE_NAMESPACE = 8, |
| DROP_NAMESPACE = 9, |
| ALTER_NAMESPACE = 10, |
| OBTAIN_DELEGATION_TOKEN = 11, |
| } |
| |
| enum ScanType { |
| SINGLE, |
| BATCH |
| } |
| |
| enum ScanState { |
| IDLE, |
| RUNNING, |
| QUEUED |
| } |
| |
| struct KeyExtent { |
| 1:string tableId, |
| 2:binary endRow, |
| 3:binary prevEndRow |
| } |
| |
| struct Column { |
| 1:binary colFamily; |
| 2:binary colQualifier; |
| 3:binary colVisibility; |
| } |
| |
| //since 1.6.0 |
| struct Condition { |
| 1:Column column; |
| 2:optional i64 timestamp; |
| 3:optional binary value; |
| 4:optional list<IteratorSetting> iterators; |
| } |
| |
| //since 1.6.0 |
| struct ConditionalUpdates { |
| 2:list<Condition> conditions |
| 3:list<ColumnUpdate> updates |
| } |
| |
| //since 1.6.0 |
| enum ConditionalStatus { |
| ACCEPTED, |
| REJECTED, |
| VIOLATED, |
| UNKNOWN, |
| INVISIBLE_VISIBILITY |
| } |
| |
| //since 1.7.0 |
| enum Durability { |
| DEFAULT, |
| NONE, |
| LOG, |
| FLUSH, |
| SYNC |
| } |
| |
| //since 1.6.0 |
| struct ConditionalWriterOptions { |
| 1:optional i64 maxMemory |
| 2:optional i64 timeoutMs |
| 3:optional i32 threads |
| 4:optional set<binary> authorizations; |
| //since 1.7.0 |
| 5:optional Durability durability; |
| } |
| |
| struct ActiveScan { |
| 1:string client |
| 2:string user |
| 3:string table |
| 4:i64 age |
| 5:i64 idleTime |
| 6:ScanType type |
| 7:ScanState state |
| 8:KeyExtent extent |
| 9:list<Column> columns |
| 10:list<IteratorSetting> iterators |
| 11:list<binary> authorizations |
| } |
| |
| enum CompactionType { |
| MINOR, |
| MERGE, |
| MAJOR, |
| FULL |
| } |
| |
| enum CompactionReason { |
| USER, |
| SYSTEM, |
| CHOP, |
| IDLE, |
| CLOSE |
| } |
| |
| struct ActiveCompaction { |
| 1:KeyExtent extent |
| 2:i64 age |
| 3:list<string> inputFiles |
| 4:string outputFile |
| 5:CompactionType type |
| 6:CompactionReason reason |
| 7:string localityGroup |
| 8:i64 entriesRead |
| 9:i64 entriesWritten |
| 10:list<IteratorSetting> iterators; |
| } |
| |
| struct WriterOptions { |
| 1:i64 maxMemory |
| 2:i64 latencyMs |
| 3:i64 timeoutMs |
| 4:i32 threads |
| //since 1.7.0 |
| 5:optional Durability durability |
| } |
| |
| struct CompactionStrategyConfig { |
| 1:string className |
| 2:map<string,string> options |
| } |
| |
| enum IteratorScope { |
| MINC, |
| MAJC, |
| SCAN |
| } |
| |
| enum TimeType { |
| LOGICAL, |
| MILLIS |
| } |
| |
| exception UnknownScanner { |
| 1:string msg |
| } |
| |
| exception UnknownWriter { |
| 1:string msg |
| } |
| |
| exception NoMoreEntriesException { |
| 1:string msg |
| } |
| |
| exception AccumuloException { |
| 1:string msg |
| } |
| |
| exception AccumuloSecurityException { |
| 1:string msg |
| } |
| |
| exception TableNotFoundException { |
| 1:string msg |
| } |
| |
| exception TableExistsException { |
| 1:string msg |
| } |
| |
| exception MutationsRejectedException { |
| 1:string msg |
| } |
| |
| service AccumuloProxy |
| { |
| // get an authentication token |
| binary login(1:string principal, 2:map<string, string> loginProperties) throws (1:AccumuloSecurityException ouch2); |
| |
| // table operations |
| i32 addConstraint (1:binary login, 2:string tableName, 3:string constraintClassName) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void addSplits (1:binary login, 2:string tableName, 3:set<binary> splits) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void attachIterator (1:binary login, 2:string tableName, 3:IteratorSetting setting, |
| 4:set<IteratorScope> scopes) |
| throws (1:AccumuloSecurityException ouch1, 2:AccumuloException ouch2, 3:TableNotFoundException ouch3); |
| void checkIteratorConflicts (1:binary login, 2:string tableName, 3:IteratorSetting setting, |
| 4:set<IteratorScope> scopes) |
| throws (1:AccumuloSecurityException ouch1, 2:AccumuloException ouch2, 3:TableNotFoundException ouch3); |
| void clearLocatorCache (1:binary login, 2:string tableName) throws (1:TableNotFoundException ouch1); |
| void cloneTable (1:binary login, 2:string tableName, 3:string newTableName, 4:bool flush, |
| 5:map<string,string> propertiesToSet, 6:set<string> propertiesToExclude) |
| throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3, 4:TableExistsException ouch4); |
| //changed in 1.7.0, see comment at top about compatibility |
| void compactTable (1:binary login, 2:string tableName, 3:binary startRow, 4:binary endRow, |
| 5:list<IteratorSetting> iterators, 6:bool flush, 7:bool wait, |
| 8:CompactionStrategyConfig compactionStrategy) throws (1:AccumuloSecurityException ouch1, 2:TableNotFoundException ouch2, 3:AccumuloException ouch3); |
| void cancelCompaction(1:binary login, 2:string tableName) throws (1:AccumuloSecurityException ouch1, 2:TableNotFoundException ouch2, 3:AccumuloException ouch3); |
| |
| void createTable (1:binary login, 2:string tableName, 3:bool versioningIter, 4:TimeType type) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableExistsException ouch3); |
| void deleteTable (1:binary login, 2:string tableName) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void deleteRows (1:binary login, 2:string tableName, 3:binary startRow, 4:binary endRow) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void exportTable (1:binary login, 2:string tableName, 3:string exportDir) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void flushTable (1:binary login, 2:string tableName, 3:binary startRow, 4:binary endRow, |
| 5:bool wait) |
| throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| //since 1.6.0 |
| list<DiskUsage> getDiskUsage(1:binary login, 2:set<string> tables) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| map<string,set<string>> getLocalityGroups (1:binary login, 2:string tableName) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| IteratorSetting getIteratorSetting (1:binary login, 2:string tableName, |
| 3:string iteratorName, 4:IteratorScope scope) |
| throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| binary getMaxRow (1:binary login, 2:string tableName, 3:set<binary> auths, 4:binary startRow, |
| 5:bool startInclusive, 6:binary endRow, 7:bool endInclusive) |
| throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| map<string,string> getTableProperties (1:binary login, 2:string tableName) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void importDirectory (1:binary login, 2:string tableName, 3:string importDir, |
| 4:string failureDir, 5:bool setTime) |
| throws (1:TableNotFoundException ouch1, 2:AccumuloException ouch3, 3:AccumuloSecurityException ouch4); |
| void importTable (1:binary login, 2:string tableName, 3:string importDir) throws (1:TableExistsException ouch1, 2:AccumuloException ouch2, 3:AccumuloSecurityException ouch3); |
| list<binary> listSplits (1:binary login, 2:string tableName, 3:i32 maxSplits) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| set<string> listTables (1:binary login); |
| map<string,set<IteratorScope>> listIterators (1:binary login, 2:string tableName) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| map<string,i32> listConstraints (1:binary login, 2:string tableName) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void mergeTablets (1:binary login, 2:string tableName, 3:binary startRow, 4:binary endRow) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| //changed in 1.6.0, see comment at top about compatibility |
| void offlineTable (1:binary login, 2:string tableName, 3:bool wait=false) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| //changed in 1.6.0, see comment at top about compatibility |
| void onlineTable (1:binary login, 2:string tableName, 3:bool wait=false) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void removeConstraint (1:binary login, 2:string tableName, 3:i32 constraint) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void removeIterator (1:binary login, 2:string tableName, 3:string iterName, |
| 4:set<IteratorScope> scopes) |
| throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void removeTableProperty (1:binary login, 2:string tableName, 3:string property) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void renameTable (1:binary login, 2:string oldTableName, 3:string newTableName) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3, 4:TableExistsException ouch4); |
| void setLocalityGroups (1:binary login, 2:string tableName, 3:map<string,set<string>> groups) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void setTableProperty (1:binary login, 2:string tableName, 3:string property, 4:string value) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| set<Range> splitRangeByTablets (1:binary login, 2:string tableName, 3:Range range, 4:i32 maxSplits) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| bool tableExists (1:binary login, 2:string tableName); |
| map<string,string> tableIdMap (1:binary login); |
| bool testTableClassLoad (1:binary login, 2:string tableName, 3:string className |
| , 4:string asTypeName) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| |
| // instance operations |
| void pingTabletServer(1:binary login, 2:string tserver) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| list<ActiveScan> getActiveScans (1:binary login, 2:string tserver) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| list<ActiveCompaction> getActiveCompactions(1:binary login, 2:string tserver) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| map<string,string> getSiteConfiguration (1:binary login) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| map<string,string> getSystemConfiguration (1:binary login) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| list<string> getTabletServers (1:binary login); |
| void removeProperty (1:binary login, 2:string property) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| void setProperty (1:binary login, 2:string property, 3:string value) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| bool testClassLoad (1:binary login, 2:string className, 3:string asTypeName) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| |
| // security operations |
| bool authenticateUser (1:binary login, 2:string user, 3:map<string, string> properties) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| void changeUserAuthorizations (1:binary login, 2:string user, 3:set<binary> authorizations) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| void changeLocalUserPassword (1:binary login, 2:string user, 3:binary password) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| void createLocalUser (1:binary login, 2:string user, 3:binary password) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| void dropLocalUser (1:binary login, 2:string user) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| list<binary> getUserAuthorizations (1:binary login, 2:string user) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| void grantSystemPermission (1:binary login, 2:string user, 3:SystemPermission perm) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| void grantTablePermission (1:binary login, 2:string user, 3:string table, 4:TablePermission perm) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| bool hasSystemPermission (1:binary login, 2:string user, 3:SystemPermission perm) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| bool hasTablePermission (1:binary login, 2:string user, 3:string table, 4:TablePermission perm) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| set<string> listLocalUsers (1:binary login) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| void revokeSystemPermission (1:binary login, 2:string user, 3:SystemPermission perm) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2); |
| void revokeTablePermission (1:binary login, 2:string user, 3:string table, 4:TablePermission perm) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| |
| // scanning |
| string createBatchScanner(1:binary login, 2:string tableName, 3:BatchScanOptions options) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| string createScanner(1:binary login, 2:string tableName, 3:ScanOptions options) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| |
| // use the scanner |
| bool hasNext(1:string scanner) throws(1:UnknownScanner ouch1); |
| KeyValueAndPeek nextEntry(1:string scanner) throws(1:NoMoreEntriesException ouch1, 2:UnknownScanner ouch2, 3:AccumuloSecurityException ouch3); |
| ScanResult nextK(1:string scanner, 2:i32 k) throws(1:NoMoreEntriesException ouch1, 2:UnknownScanner ouch2, 3:AccumuloSecurityException ouch3); |
| void closeScanner(1:string scanner) throws(1:UnknownScanner ouch1); |
| |
| // writing |
| void updateAndFlush(1:binary login, 2:string tableName, 3:map<binary, list<ColumnUpdate>> cells) throws(1:AccumuloException outch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3, 4:MutationsRejectedException ouch4); |
| string createWriter(1:binary login, 2:string tableName, 3:WriterOptions opts) throws(1:AccumuloException outch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| |
| // use the writer |
| oneway void update(1:string writer, 2:map<binary, list<ColumnUpdate>> cells); |
| void flush(1:string writer) throws (1:UnknownWriter ouch1, 2:MutationsRejectedException ouch2); |
| void closeWriter(1:string writer) throws (1:UnknownWriter ouch1, 2:MutationsRejectedException ouch2); |
| |
| //api for a single conditional update |
| ConditionalStatus updateRowConditionally(1:binary login, 2:string tableName, 3:binary row, |
| 4:ConditionalUpdates updates) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| |
| //api for batch conditional updates |
| //since 1.6.0 |
| string createConditionalWriter(1:binary login, 2:string tableName, |
| 3:ConditionalWriterOptions options) throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3); |
| //since 1.6.0 |
| map<binary, ConditionalStatus> updateRowsConditionally(1:string conditionalWriter, |
| 2:map<binary, ConditionalUpdates> updates) throws (1:UnknownWriter ouch1, 2:AccumuloException ouch2, 3:AccumuloSecurityException ouch3); |
| //since 1.6.0 |
| void closeConditionalWriter(1:string conditionalWriter); |
| |
| // utilities |
| Range getRowRange(1:binary row); |
| Key getFollowing(1:Key key, 2:PartialKey part); |
| } |