15 package com.cloudera.impala.analysis;
20 import com.cloudera.impala.thrift.TPrivilege;
21 import com.cloudera.impala.thrift.TPrivilegeLevel;
22 import com.cloudera.impala.thrift.TPrivilegeScope;
23 import com.google.common.base.Preconditions;
24 import com.google.common.base.Strings;
30 private final TPrivilegeScope
scope_;
39 private PrivilegeSpec(TPrivilegeLevel privilegeLevel, TPrivilegeScope scope,
41 Preconditions.checkNotNull(scope);
42 Preconditions.checkNotNull(privilegeLevel);
51 return new PrivilegeSpec(privilegeLevel, TPrivilegeScope.SERVER, null, null, null);
56 Preconditions.checkNotNull(dbName);
57 return new PrivilegeSpec(privilegeLevel, TPrivilegeScope.DATABASE, dbName, null,
63 Preconditions.checkNotNull(tableName);
64 return new PrivilegeSpec(privilegeLevel, TPrivilegeScope.TABLE, null, tableName,
70 Preconditions.checkNotNull(uri);
71 return new PrivilegeSpec(privilegeLevel, TPrivilegeScope.URI, null, null, uri);
75 TPrivilege privilege =
new TPrivilege();
76 privilege.setScope(
scope_);
81 if (
tableName_ != null) privilege.setTable_name(tableName_.getTbl());
82 if (
uri_ != null) privilege.setUri(uri_.toString());
83 privilege.setPrivilege_name(
84 RolePrivilege.buildRolePrivilegeName(privilege));
85 privilege.setCreate_time_ms(-1);
93 sb.append(scope_.toString());
94 if (
scope_ == TPrivilegeScope.DATABASE) {
96 }
else if (
scope_ == TPrivilegeScope.TABLE) {
97 sb.append(
" " + tableName_.toString());
98 }
else if (
scope_ == TPrivilegeScope.URI) {
99 sb.append(
" '" + uri_.getLocation() +
"'");
101 return sb.toString();
106 serverName_ = analyzer.getAuthzConfig().getServerName();
107 Preconditions.checkState(!Strings.isNullOrEmpty(
serverName_));
114 "SERVER scope in privilege spec.");
118 if (Strings.isNullOrEmpty(
dbName_)) {
126 "URI scope in privilege spec.");
136 Preconditions.checkNotNull(
dbName_);
139 throw new IllegalStateException(
"Unknown TPrivilegeScope in privilege spec: " +
final TPrivilegeScope scope_
void analyze(Analyzer analyzer)
PrivilegeSpec(TPrivilegeLevel privilegeLevel, TPrivilegeScope scope, String dbName, TableName tableName, HdfsUri uri)
static PrivilegeSpec createTableScopedPriv(TPrivilegeLevel privilegeLevel, TableName tableName)
static PrivilegeSpec createDbScopedPriv(TPrivilegeLevel privilegeLevel, String dbName)
final TPrivilegeLevel privilegeLevel_
final TableName tableName_
static PrivilegeSpec createServerScopedPriv(TPrivilegeLevel privilegeLevel)
static PrivilegeSpec createUriScopedPriv(TPrivilegeLevel privilegeLevel, HdfsUri uri)