atlas-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Madhan Neethiraj <mad...@apache.org>
Subject Re: Review Request 62039: ATLAS-2100: UserProfile & SavedSearch Implementation
Date Sat, 16 Sep 2017 01:55:32 GMT

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62039/#review185511
-----------------------------------------------------------




repository/src/main/java/org/apache/atlas/repository/userprofile/UserProfileService.java
Lines 67 (patched)
<https://reviews.apache.org/r/62039/#comment261828>

    Validate that no other search exists with the same name as the new one.



repository/src/main/java/org/apache/atlas/repository/userprofile/UserProfileService.java
Lines 77 (patched)
<https://reviews.apache.org/r/62039/#comment261829>

    Add validation for the following:
     - ownerName hasn't been updated
     - if name was updated, ensure that another search with the new name doesn't exist



webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
Line 75 (original), 87 (patched)
<https://reviews.apache.org/r/62039/#comment261827>

    Please avoid white spaces such as these.



webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
Lines 347 (patched)
<https://reviews.apache.org/r/62039/#comment261826>

    "save" ==> "saved"



webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
Lines 362 (patched)
<https://reviews.apache.org/r/62039/#comment261825>

    "save" ==> "saved"


- Madhan Neethiraj


On Sept. 15, 2017, 10:33 p.m., Ashutosh Mestry wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/62039/
> -----------------------------------------------------------
> 
> (Updated Sept. 15, 2017, 10:33 p.m.)
> 
> 
> Review request for atlas, Apoorv Naik, keval bhatt, Madhan Neethiraj, Nixon Rodrigues,
and Sarath Subramanian.
> 
> 
> Bugs: ATLAS-2100
>     https://issues.apache.org/jira/browse/ATLAS-2100
> 
> 
> Repository: atlas
> 
> 
> Description
> -------
> 
> **Background**
> - The new search implementation allows for creation of complex queries.
> - This sub-feature allows for logged in user to persist search definitions created during
a session.
> - These search definition once saved are available to the user on subsequent login.
> 
> **Implementation**
> Following implementation approaches were attempted:
> - New types defined in the models json.
> - _Data Access Layer_: This is semi-generic approach that needs some code per implementation.
> - _AtlasEntity_ adapters: This implementation leverages existing type system to create
new types. The model is a facade over _AtlasEntity_. 
> - Added REST-layer filtering for internal types.
> - Modified _SearchFilter_ more capable. 
> 
> **_New Entities_**
> - _AtlasUserProfile_
> - _AtlasSavedSearch_
> 
> **_UserProfileService_**
> - Interacts with the new entities and adds operations that are exposed by REST APIs.
> 
> **_DiscoveryService_**
> - New methods added.
> 
> **Retrieve list of all Saved Searches**
> ```
> curl -g -X GET -u admin:admin -H "Content-Type: application/json" -H "Cache-Control:
no-cache"  "http://localhost:21000/api/atlas/v2/search/saved"
> ```
> 
> **Save Search**
> Save this to _savedSearch.json_:
> ```javascript
> {
>     "name": "my_search1",
>     "owerUserName": "admin",
>     "guid": "61613c37-cab8-4ee9-b3e7-590d0694f6e8",
>     "searchParameters": {
>         "typeName": "hive_table",
>         "excludeDeletedEntities": false,
>         "limit": 25,
>         "offset": 0,
>         "entityFilters": {
>             "condition": "AND",
>             "criterion": [
>                 {
>                     "attributeName": "retention",
>                     "operator": "=",
>                     "attributeValue": "10"
>                 },
>                 {
>                     "condition": "OR",
>                     "criterion": [
>                         {
>                             "attributeName": "createTime",
>                             "operator": ">",
>                             "attributeValue": "1111111111"
>                         },
>                         {
>                             "attributeName": "lastAccessTime",
>                             "operator": "<=",
>                             "attributeValue": "2222222222"
>                         }
>                     ]
>                 }
>             ]
>         }
>     }
> }
> ```
> 
> ```javascript
> curl -g -X POST -u admin:admin -H "Content-Type: application/json" -H "Cache-Control:
no-cache"  "http://localhost:21000/api/atlas/v2/search/save" -d @../docs/savedSearch.json
> ```
> 
> **Update Saved Search**
> This will work on existing saved search. Ensure that the parmeter has _guid_ property
set.
> 
> ```javascript
> curl -g -X PUT -u admin:admin -H "Content-Type: application/json" -H "Cache-Control:
no-cache"  "http://localhost:21000/api/atlas/v2/search/save" -d @../docs/savedSearch.json
> ```
> 
> **Retrieve Saved Search**
> All searches for the logged in user:
> ```javascript
> curl -g -X GET -u admin:admin -H "Content-Type: application/json" -H "Cache-Control:
no-cache"  "http://localhost:21000/api/atlas/v2/search/saved"
> ```
> 
> Specific search for logged in user:
> ```javascript
> curl -g -X GET -u admin:admin -H "Content-Type: application/json" -H "Cache-Control:
no-cache"  "http://localhost:21000/api/atlas/v2/search/saved/my_search2"
> ```
> 
> Specific search for a specific user:
> ```javascript
> curl -g -X GET -u admin:admin -H "Content-Type: application/json" -H "Cache-Control:
no-cache"  "http://localhost:21000/api/atlas/v2/search/saved/my_search2?user=admin"
> ```
> 
> **Delete Saved Search**
> ```javascript
> curl -g -X DELETE -u admin:admin -H "Content-Type: application/json" -H "Cache-Control:
no-cache"  "http://localhost:21000/api/atlas/v2/search/saved/0d0f75ef-b101-466f-843e-60196b81c98e"
> ```
> 
> **REST APIs**
> Irrespective of the plumbing, REST APIs will hide the underlying implementation.
> 
> _AtlasUserProfile_
> 
> ```javascript
> {
> "username": "admin"
> "fullName" : "Admin Admin" 
> "savedSearchParameters": [
>      <array of _AtlasSavedSearch_>
>   ]
> }
> ```
> 
> _AtlasSavedSearch_
> 
> ```javascript
> {
>    "name": "my_search1",
>    "ownerUserName": "admin",
>    "searchParameters": <SearchParameter JSON here> 
> }
> ```
> 
> 
> Diffs
> -----
> 
>   addons/models/0010-base_model.json 9ab4c44f 
>   common/src/main/java/org/apache/atlas/repository/Constants.java 62d74f8f 
>   intg/src/main/java/org/apache/atlas/AtlasErrorCode.java b20f5865 
>   intg/src/main/java/org/apache/atlas/model/AtlasBaseModelObject.java PRE-CREATION 
>   intg/src/main/java/org/apache/atlas/model/SearchFilter.java 7dccf5ef 
>   intg/src/main/java/org/apache/atlas/model/discovery/SearchParameters.java c79b5b90

>   intg/src/main/java/org/apache/atlas/model/profile/AtlasUserProfile.java PRE-CREATION

>   intg/src/main/java/org/apache/atlas/model/profile/AtlasUserSavedSearch.java PRE-CREATION

>   repository/src/main/java/org/apache/atlas/discovery/AtlasDiscoveryService.java 8196a674

>   repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java 1e688350

>   repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java ca7fad06

>   repository/src/main/java/org/apache/atlas/repository/orm/AbstractDataTransferObject.java
PRE-CREATION 
>   repository/src/main/java/org/apache/atlas/repository/orm/AtlasSavedSearchDTO.java PRE-CREATION

>   repository/src/main/java/org/apache/atlas/repository/orm/AtlasUserProfileDTO.java PRE-CREATION

>   repository/src/main/java/org/apache/atlas/repository/orm/DTORegistry.java PRE-CREATION

>   repository/src/main/java/org/apache/atlas/repository/orm/DataAccess.java PRE-CREATION

>   repository/src/main/java/org/apache/atlas/repository/orm/DataTransferObject.java PRE-CREATION

>   repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasAbstractDefStoreV1.java
2bf53a1d 
>   repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityChangeNotifier.java
6423aeab 
>   repository/src/main/java/org/apache/atlas/repository/userprofile/UserProfileService.java
PRE-CREATION 
>   repository/src/main/java/org/apache/atlas/repository/util/FilterUtil.java 54d6b405

>   repository/src/test/java/org/apache/atlas/TestModules.java af3189b9 
>   repository/src/test/java/org/apache/atlas/repository/store/graph/AtlasTypeDefGraphStoreTest.java
728d4180 
>   repository/src/test/java/org/apache/atlas/repository/userprofile/UserProfileServiceTest.java
PRE-CREATION 
>   webapp/src/main/java/org/apache/atlas/notification/NotificationEntityChangeListener.java
6eadc967 
>   webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java 52258e3c 
>   webapp/src/main/java/org/apache/atlas/web/rest/TypesREST.java c32f36ea 
>   webapp/src/main/java/org/apache/atlas/web/util/Servlets.java 4a92763a 
> 
> 
> Diff: https://reviews.apache.org/r/62039/diff/6/
> 
> 
> Testing
> -------
> 
> **Deployment**
> - Copy _0010-base_model.json_ & _0011-user-profile_model.json_ to server location:
_/usr/hdp/current/atlas-server/models_
> - Deploy _atlas.war_
> 
> **Unit tests**
> Added unit tests for:
> - _UserProfileService_.
> 
> **Functional testing**
> - Verification using CURL calls.
> - Verification via UI to ensure that internal entities do not show up.
> 
> 
> File Attachments
> ----------------
> 
> Patch for Master
>   https://reviews.apache.org/media/uploaded/files/2017/09/15/ba9b07c2-5868-4f79-ad51-7d7c9ee39c44__ATLAS-2100-Master-DataAccess.patch
> 
> 
> Thanks,
> 
> Ashutosh Mestry
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message