I don't know why - I just ported this from master to sentry HA branch. I
guess we do not really support anything other then ALL on URI privileges -
there is no concept of "insert" or "select" on URI, so ALL is the only
thing that makes sense, but I don't think it is shell's business to deal
with it.

On Thu, Oct 5, 2017 at 2:06 AM, Colm O hEigeartaigh <cohei...@apache.org>
wrote:

> OK I can add a switch to call the validation code for the shell only. Do
> you know why the CommandUtil includes:
>
> tSentryPrivilege.setAction(AccessConstants.ALL);
>
> for the URI case? This looks a bit dodgy to me as it would override the
> value parsed via PRIVILEGE_ACTION_NAME.
>
> Colm.
>
> On Wed, Oct 4, 2017 at 11:37 PM, Alexander Kolbasov <ak...@cloudera.com>
> wrote:
>
> > Interesting - both were introduced by Colin Ma. I definitely agree that
> we
> > do not need two duplicates of the same similar functionality. The
> exception
> > part is interesting - the validator throws unchecked exceptions.
> >
> > The version in SentryServiceUtil is used only in import policy code path
> > where validation should be always ok.
> >
> > The second one is used by shell only.
> >
> > There is another internal version in SentryStore:
> >
> > private void convertToTSentryPrivilege(MSentryPrivilege
> mSentryPrivilege,
> >     TSentryPrivilege privilege) {
> >   privilege.setCreateTime(mSentryPrivilege.getCreateTime());
> >   privilege.setAction(fromNULLCol(mSentryPrivilege.getAction()));
> >   privilege.setPrivilegeScope(mSentryPrivilege.getPrivilegeScope());
> >   privilege.setServerName(fromNULLCol(mSentryPrivilege.
> getServerName()));
> >   privilege.setDbName(fromNULLCol(mSentryPrivilege.getDbName()));
> >   privilege.setTableName(fromNULLCol(mSentryPrivilege.getTableName()));
> >   privilege.setColumnName(fromNULLCol(mSentryPrivilege.
> getColumnName()));
> >   privilege.setURI(fromNULLCol(mSentryPrivilege.getURI()));
> >   if (mSentryPrivilege.getGrantOption() != null) {
> >     privilege.setGrantOption(TSentryGrantOption.valueOf(
> mSentryPrivilege.
> > getGrantOption().toString().toUpperCase()));
> >   } else {
> >     privilege.setGrantOption(TSentryGrantOption.UNSET);
> >   }
> > }
> >
> >
> >
> > On Mon, Oct 2, 2017 at 10:07 AM, Colm O hEigeartaigh <
> cohei...@apache.org>
> > wrote:
> >
> > > Hi all,
> > >
> > > I'm preparing a patch to consolidate some duplicate code in
> > > sentry-provider-db, and have a question:
> > >
> > > CommandUtil.convertToTSentryPrivilege:
> > >
> > > https://github.com/apache/sentry/blob/186e75543a23f286e24c56f7385909
> > > 9405b7b73a/sentry-provider/sentry-provider-db/src/main/
> > > java/org/apache/sentry/provider/db/tools/command/
> > hive/CommandUtil.java#L38
> > >
> > > is identical to SentryServiceUtil.convertToTSentryPrivilege:
> > >
> > > https://github.com/apache/sentry/blob/186e75543a23f286e24c56f7385909
> > > 9405b7b73a/sentry-provider/sentry-provider-db/src/main/
> > > java/org/apache/sentry/service/thrift/SentryServiceUtil.java#L56
> > >
> > > apart from two differences:
> > >
> > > a) The CommandUtil version sets:
> > > tSentryPrivilege.setAction(AccessConstants.ALL); for the
> > > PRIVILEGE_URI_NAME case.
> > > b) The CommandUtil version "validates" the privilege hierarchy,
> throwing
> > an
> > > exception if one of the names is not specified.
> > >
> > > Ideally I'd like to remove CommandUtil altogether and just reference
> the
> > > methods in SentryServiceUtil. Should these extra pieces also be in
> > > SentryServiceUtil? Or is there a reason that they are different?
> > >
> > > Colm.
> > >
> > >
> > > --
> > > Colm O hEigeartaigh
> > >
> > > Talend Community Coder
> > > http://coders.talend.com
> > >
> >
>
>
>
> --
> Colm O hEigeartaigh
>
> Talend Community Coder
> http://coders.talend.com
>

Reply via email to