Hello,

On the same topic,

Now I realised that when refering to an object alredy created, is not
enough to add the qualifiedName, but it also needs to include the name
attribute since it is a required attribute. The point is that no matter
which name I put, the actual referenced entity is updated to have that name.

Is there a way to put the reference without adding the name attribute in
the values of the "referenced entity"?

Thank you very much,

Best regards,

Joan

2018-01-05 14:24 GMT+01:00 Jo MailingList <[email protected]>:

> Hello,
>
> Thank you very much,
>
> This has been of great help.
>
> Best regards,
>
> Joan
>
> 2018-01-05 9:05 GMT+01:00 Madhan Neethiraj <[email protected]>:
>
>> Joan,
>>
>>
>>
>> A slightly better approach is to provide repository entity as a separate
>> entry in “entities” and refer to the repository in database entity using
>> its temp-id, as shown below.
>>
>>
>>
>> This approach will allow an entity be referenced from multiple entities
>> using its temp-id (instead of adding the entire entity details in each such
>> reference).
>>
>>
>>
>> Madhan
>>
>>
>>
>> {
>>
>>   "message": {
>>
>>     "type": "ENTITY_FULL_UPDATE",
>>
>>     "user": "user",
>>
>>     "entities": [
>>
>>       {
>>
>>         "jsonClass": "org.apache.atlas.typesystem.j
>> son.InstanceSerialization$_Reference",
>>
>>         "id": {
>>
>>           "jsonClass": "org.apache.atlas.typesystem.j
>> son.InstanceSerialization$_Id",
>>
>>           "id":        "-14568879465268",
>>
>>           "typeName":  "database",
>>
>>           "state":     "ACTIVE",
>>
>>           "version":   0
>>
>>         },
>>
>>         "typeName": "database",
>>
>>         "values": {
>>
>>           "dbName":          "Test7",
>>
>>           "description":     "Test db7",
>>
>>           "name":            "Testdb7",
>>
>>           "origin_app":      "origin",
>>
>>           "origin_username": "externalusername",
>>
>>           "owner":           "owner",
>>
>>           "qualifiedName":   "Testdb5",
>>
>>           "repository": {
>>
>>             "jsonClass": "org.apache.atlas.typesystem.j
>> son.InstanceSerialization$_Id",
>>
>>             "id":        "-14568879465269",
>>
>>             "typeName":  "repository",
>>
>>             "state":     "ACTIVE",
>>
>>             "version":   0
>>
>>           }
>>
>>         },
>>
>>         "traitNames": [],
>>
>>         "traits": {}
>>
>>       },
>>
>>       {
>>
>>         "jsonClass": "org.apache.atlas.typesystem.j
>> son.InstanceSerialization$_Reference",
>>
>>         "id": {
>>
>>           "jsonClass": "org.apache.atlas.typesystem.j
>> son.InstanceSerialization$_Id",
>>
>>           "id":        "-14568879465269",
>>
>>           "typeName":  "repository",
>>
>>           "state":     "ACTIVE",
>>
>>           "version":   0
>>
>>         },
>>
>>         "typeName": "repository",
>>
>>         "values": {
>>
>>           "qualifiedName": "repository01"
>>
>>         },
>>
>>         "traitNames": [],
>>
>>         "traits": {}
>>
>>       }
>>
>>     ]
>>
>>   },
>>
>>   "version": {
>>
>>     "version": "1.0.0"
>>
>>   }
>>
>> }
>>
>>
>>
>> *From: *Madhan Neethiraj <[email protected]>
>> *Date: *Thursday, January 4, 2018 at 11:18 PM
>> *To: *"[email protected]" <[email protected]>
>> *Subject: *Re: Relating to an entity using uniqueAttributes
>>
>>
>>
>> Joan,
>>
>>
>>
>> To refer to another entity In Atlas hook notifications, add the referred
>> entity details as shown below. Also, I would suggest using
>> ENTITY_FULL_UPDATE as message type (instead of ENTITY_CREATE).
>>
>>
>>
>> {
>>
>>   "message": {
>>
>>     "type": "ENTITY_FULL_UPDATE",
>>
>>     "user": "user",
>>
>>     "entities": [
>>
>>       {
>>
>>         "jsonClass": "org.apache.atlas.typesystem.j
>> son.InstanceSerialization$_Reference",
>>
>>         "id": {
>>
>>           "jsonClass": "org.apache.atlas.typesystem.j
>> son.InstanceSerialization$_Id",
>>
>>           "id":        "-14568879465268",
>>
>>           "typeName":  "database",
>>
>>           "state":     "ACTIVE",
>>
>>           "version":   0
>>
>>         },
>>
>>         "typeName": "database",
>>
>>         "values": {
>>
>>           "dbName":          "Test7",
>>
>>           "description":     "Test db7",
>>
>>           "name":            "Testdb7",
>>
>>           "origin_app":      "origin",
>>
>>           "origin_username": "externalusername",
>>
>>           "owner":           "owner",
>>
>>           "qualifiedName":   "Testdb5",
>>
>>           "repository": {
>>
>>             "jsonClass": "org.apache.atlas.typesystem.j
>> son.InstanceSerialization$_Reference",
>>
>>             "id": {
>>
>>               "jsonClass": "org.apache.atlas.typesystem.j
>> son.InstanceSerialization$_Id",
>>
>>               "id":        "-14568879465269",
>>
>>               "typeName":  "repository",
>>
>>               "state":     "ACTIVE",
>>
>>               "version":   0
>>
>>             },
>>
>>             "typeName": "repository",
>>
>>             "values": {
>>
>>               "qualifiedName": "repository01"
>>
>>             },
>>
>>             "traitNames": [],
>>
>>             "traits": {}
>>
>>           }
>>
>>         },
>>
>>         "traitNames": [],
>>
>>         "traits": {}
>>
>>       }
>>
>>     ]
>>
>>   },
>>
>>   "version": {
>>
>>     "version": "1.0.0"
>>
>>   }
>>
>> }
>>
>>
>>
>> Hope this helps.
>>
>>
>>
>> Madhan
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *From: *Jo MailingList <[email protected]>
>> *Reply-To: *"[email protected]" <[email protected]>
>> *Date: *Tuesday, January 2, 2018 at 9:54 AM
>> *To: *"[email protected]" <[email protected]>
>> *Subject: *Relating to an entity using uniqueAttributes
>>
>>
>>
>> Hello everyone,
>>
>>
>>
>> I am trying to create a database that in my type model has a reference to
>> a repository. I want to create it by sending a message to the ATLAS_HOOK
>> topic to the Kafka broker as follows:
>>
>>
>>
>> {
>>
>> "version": {
>>
>> "version": "1.0.0"
>>
>> },
>>
>> "message": {
>>
>> "entities": [{
>>
>> "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Ref
>> erence",
>>
>> "id": {
>>
>> "jsonClass": "org.apache.atlas.typesystem.json.InstanceSerialization$_Id"
>> ,
>>
>> "id": "-14568879465268",
>>
>> "version": 0,
>>
>> "typeName": "database",
>>
>> "state": "ACTIVE"
>>
>> },
>>
>> "typeName": "database",
>>
>> "values": {
>>
>> "qualifiedName": "Testdb5",
>>
>> *"repository": {*
>>
>> *"jsonClass":"org.apache.atlas.typesystem.json.InstanceSerialization$_Id"*
>>
>> *"version": 0,*
>>
>> *"typeName": "repository",*
>>
>> *"uniqueAttributes": {*
>>
>> *"qualifiedName": "repository01"*
>>
>> *},*
>>
>> *"state": "ACTIVE"*
>>
>> *},*
>>
>> "owner": "owner",
>>
>> "description": "Test db7",
>>
>> "name": "Testdb7",
>>
>> "dbName": "Test7",
>>
>> "origin_app": "origin",
>>
>> "origin_username": "externalusername"
>>
>> },
>>
>> "traitNames": [],
>>
>> "traits": {}
>>
>> }],
>>
>> "type": "ENTITY_CREATE",
>>
>> "user": "user"
>>
>> }
>>
>> }
>>
>>
>>
>> The database type expects a repository attribute of the type repository
>> as a reference. It works when I give the guid of the reference directly but
>> when trying my example it fails and it seems to me that it does not process
>> the information I provide as uniqueAttributes. What I see in the
>> application.log is the following stacktrace:
>>
>>
>>
>> *org.apache.atlas.exception.AtlasBaseException: ObjectId is not valid
>> AtlasObjectId{guid='null', typeName='repository', uniqueAttributes={}}*
>>
>> *        at org.apache.atlas.repository.st
>> <http://org.apache.atlas.repository.st>ore.graph.v1.AtlasEntityGraphDiscoveryV1.visitReference(AtlasEntityGraphDiscoveryV1.java:186)*
>>
>> *        at org.apache.atlas.repository.st
>> <http://org.apache.atlas.repository.st>ore.graph.v1.AtlasEntityGraphDiscoveryV1.visitAttribute(AtlasEntityGraphDiscoveryV1.java:234)*
>>
>> *        at org.apache.atlas.repository.st
>> <http://org.apache.atlas.repository.st>ore.graph.v1.AtlasEntityGraphDiscoveryV1.visitEntity(AtlasEntityGraphDiscoveryV1.java:327)*
>>
>> *        at org.apache.atlas.repository.st
>> <http://org.apache.atlas.repository.st>ore.graph.v1.AtlasEntityGraphDiscoveryV1.walkEntityGraph(AtlasEntityGraphDiscoveryV1.java:354)*
>>
>> *        at org.apache.atlas.repository.st
>> <http://org.apache.atlas.repository.st>ore.graph.v1.AtlasEntityGraphDiscoveryV1.discover(AtlasEntityGraphDiscoveryV1.java:142)*
>>
>> *        at org.apache.atlas.repository.st
>> <http://org.apache.atlas.repository.st>ore.graph.v1.AtlasEntityGraphDiscoveryV1.discoverEntities(AtlasEntityGraphDiscoveryV1.java:69)*
>>
>> *        at org.apache.atlas.repository.st
>> <http://org.apache.atlas.repository.st>ore.graph.v1.AtlasEntityStoreV1.preCreateOrUpdate(AtlasEntityStoreV1.java:523)*
>>
>> *        at org.apache.atlas.repository.st
>> <http://org.apache.atlas.repository.st>ore.graph.v1.AtlasEntityStoreV1.createOrUpdate(AtlasEntityStoreV1.java:174)*
>>
>> *        at org.apache.atlas.repository.st
>> <http://org.apache.atlas.repository.st>ore.graph.v1.AtlasEntityStoreV1.createOrUpdate(AtlasEntityStoreV1.java:193)*
>>
>> *        at org.apache.atlas.repository.st
>> <http://org.apache.atlas.repository.st>ore.graph.v1.AtlasEntityStoreV1$$FastClassBySpringCGLIB$$80c00649.invoke(<generated>)*
>>
>>
>>
>> This message makes me suspicious that Atlas is not processing my input
>> message correctly and not reading my uniqueAttributes information.
>>
>>
>>
>> Does someone have a hint of what I am doing wrong or if this is a
>> currrent issue inside Atlas or it is not a supported feature right now?
>>
>>
>>
>> Thank you very much,
>>
>>
>>
>> Best regards,
>>
>>
>>
>> Joan
>>
>>
>>
>>
>>
>
>

Reply via email to