-----------------------------------------------------------
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

Reply via email to