Vyom Mani Tiwari created RANGER-5851:
----------------------------------------

             Summary: Admin: persist constraintDefs of service definitions
                 Key: RANGER-5851
                 URL: https://issues.apache.org/jira/browse/RANGER-5851
             Project: Ranger
          Issue Type: New Feature
          Components: admin
            Reporter: Vyom Mani Tiwari
            Assignee: Vyom Mani Tiwari


RANGER-5838 added {{constraintDefs}} to {{{}RangerServiceDef{}}}. Ranger Admin 
doesn’t store them yet, so they’re dropped when a service def is created or 
updated. This sub-task adds that storage.

_Scope_
 * Store {{constraintDefs}} on service def create and update, and return them 
on get, through REST and {{ServiceDBStore}} / 
{{{}RangerServiceDefServiceBase{}}}.
 * Validate constraintDefs in {{{}RangerServiceDefValidator{}}}:
 ** names and itemIds are unique and not empty;
 ** {{resources}} and {{accessTypes}} refer to resources and access types that 
exist in the service def;
 ** each {{resources}} list forms a valid chain that includes its ancestors;
 ** parameter names are unique, and parameter {{type}} values are supported.
 * Include constraintDefs in service-def export/import and in the service def 
sent to plugins.
 * Updates: decide what happens to constraint policies that reference a 
constraintDef that is removed or renamed. Proposal: reject the update while 
policies reference it, as is done for access types in use.

_Storage (decision needed)_

Today each service-def section has its own tables: {{{}x_access_type_def{}}}, 
{{{}x_resource_def{}}}, {{{}x_datamask_type_def{}}}, …. Options:
 # A new table, {{x_constraint_def}} (name, label, description, resources, 
accessTypes, parameters as JSON, rb keys, item_id, def_id), with DB patches for 
MySQL, Postgres, Oracle and SQL Server. This is consistent with the other 
sections.
 # A JSON column on {{x_service_def}} holding the whole {{constraintDefs}} 
list. This needs a smaller schema change.

Proposal: option 1 for the table, with {{parameters}} stored as JSON inside it, 
to avoid a second child table.

_Testing:_ unit tests for validation; service-store tests for create, update, 
get and delete round-trips; and an upgrade-patch test on each DB flavor.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to