----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/72046/ -----------------------------------------------------------
(Updated Jan. 29, 2020, 3:25 p.m.) Review request for atlas, Ashutosh Mestry, Madhan Neethiraj, Nixon Rodrigues, and Sarath Subramanian. Changes ------- Added separate REST endpoint to update namespace attributes. Added check to check whether namespace attribute is already exists or not in both CREATE and UPDATE namespace attributes endpoints. (This can be used with the User Authorization check) Still working on refactoring of setNamespaceAttribute method to use entityType.getNamespaceAttributes() and AtlasNamespaceAttribute to save/update/delete namespace attributes in vertex. Bugs: ATLAS-3534 https://issues.apache.org/jira/browse/ATLAS-3534 Repository: atlas Description ------- Created separate endpoints to associate Namespace attributes to entity Diffs (updated) ----- common/src/main/java/org/apache/atlas/repository/Constants.java 0b28243 intg/src/main/java/org/apache/atlas/AtlasErrorCode.java 2054513 intg/src/main/java/org/apache/atlas/model/instance/AtlasEntity.java 1b033b9 intg/src/main/java/org/apache/atlas/type/AtlasNamespaceType.java a141d4a repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasEntityStore.java 928c70d repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasEntityStoreV2.java 25284e9 repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java e427a59 repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java dc4c399 webapp/src/main/java/org/apache/atlas/web/rest/EntityREST.java 6845121 Diff: https://reviews.apache.org/r/72046/diff/6/ Changes: https://reviews.apache.org/r/72046/diff/5-6/ Testing ------- Basic testing is done. Create NamespaceDef sports: curl --location --request POST 'http://localhost:21000/api/atlas/v2/types/typedefs' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic YWRtaW46YWRtaW4=' \ --data-raw '{ "namespaceDefs": [ { "name": "sports", "description": "Sample sports", "serviceType": "NAMESPACES", "typeVersion": "1.0", "attributeDefs": [ { "name": "sports_name", "typeName": "string", "options": { "applicableEntityTypes": "[\"hdfs_path\", \"hive_table\"]", "maxStrLength": "50" }, "cardinality": "SINGLE", "isIndexable": true, "isOptional": true, "includeInNotification": true, "isUnique": false }, { "name": "no_of_players", "typeName": "int", "options": { "applicableEntityTypes": "[\"hdfs_path\", \"hive_column\"]" }, "cardinality": "SINGLE", "isIndexable": true, "isOptional": true, "includeInNotification": true, "isUnique": false } ] } ] }' Create NamespaceDef vehicle: curl --location --request POST 'http://localhost:21000/api/atlas/v2/types/typedefs' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic YWRtaW46YWRtaW4=' \ --data-raw '{ "namespaceDefs": [ { "name": "vehicle", "description": "Sample vehicle", "serviceType": "NAMESPACES", "typeVersion": "1.0", "attributeDefs": [ { "name": "vehicle_name", "typeName": "string", "options": { "applicableEntityTypes": "[\"hdfs_path\", \"hive_table\"]", "maxStrLength": "50" }, "cardinality": "SINGLE", "isIndexable": true, "isOptional": true, "includeInNotification": true, "isUnique": false }, { "name": "no_of_wheels", "typeName": "int", "options": { "applicableEntityTypes": "[\"hdfs_path\", \"hive_column\"]" }, "cardinality": "SINGLE", "isIndexable": true, "isOptional": true, "includeInNotification": true, "isUnique": false } ] } ] }' Create hdfs_path entity: curl --location --request POST 'http://localhost:21000/api/atlas/v2/entity' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic YWRtaW46YWRtaW4=' \ --data-raw '{ "entity": { "guid": "-1", "typeName": "hdfs_path", "attributes": { "clusterName": "cm", "description": "desc", "location": "localhost", "name": "hdfs_path_entity1", "owner": "admin", "ownerType": "USER", "qualifiedName": "hdfs_path_entity1@cm", "path": "local_path" } } }' Associate namespace attributes with the created entity curl --location --request POST 'http://localhost:21000/api/atlas/v2/entity/guid/ea633224-ccfe-4573-9060-43190cd9531a/namespaces' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic YWRtaW46YWRtaW4=' \ --data-raw '{ "sports":{ "sports_name":"cricket", "no_of_players":11 }, "vehicle":{ "vehicle_name": "Car" } }' Add one more namespace attribute in the entity curl --location --request POST 'http://localhost:21000/api/atlas/v2/entity/guid/ea633224-ccfe-4573-9060-43190cd9531a/namespaces' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic YWRtaW46YWRtaW4=' \ --data-raw '{ "vehicle":{ "no_of_wheels": 4 } }' Update sports_name attribute with new value as Hockey curl --location --request POST 'http://localhost:21000/api/atlas/v2/entity/guid/ea633224-ccfe-4573-9060-43190cd9531a/namespaces' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic YWRtaW46YWRtaW4=' \ --data-raw '{ "sports":{ "sports_name": "Hockey" } }' Delete vehicle.vehicle_name namespace attribute curl --location --request DELETE 'http://localhost:21000/api/atlas/v2/entity/guid/ea633224-ccfe-4573-9060-43190cd9531a/namespaces' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic YWRtaW46YWRtaW4=' \ --data-raw '{ "vehicle":{ "vehicle_name": "Car" } }' Thanks, Mandar Ambawane