blob: 707d5bbe45342256b6b56aa588a5463908b34fff [file] [log] [blame]
#!/usr/bin/env/python
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from apache_atlas.model.enums import EntityStatus
from apache_atlas.model.glossary import AtlasTermAssignmentHeader
from apache_atlas.model.misc import AtlasBase
from apache_atlas.model.misc import next_id
from apache_atlas.model.misc import Plist
from apache_atlas.model.misc import TimeBoundary
from apache_atlas.utils import non_null
from apache_atlas.utils import type_coerce
from apache_atlas.utils import type_coerce_dict
from apache_atlas.utils import type_coerce_dict_list
from apache_atlas.utils import type_coerce_list
class AtlasStruct(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.typeName = attrs.get('typeName')
self.attributes = attrs.get('attributes')
def get_attribute(self, name):
return self.attributes[name] if self.attributes is not None and name in self.attributes else None
def set_attribute(self, name, value):
if self.attributes is None:
self.attributes = {}
self.attributes[name] = value
def remove_attribute(self, name):
if name and self.attributes is not None and name in self.attributes:
del self.attributes[name]
class AtlasEntity(AtlasStruct):
def __init__(self, attrs={}):
AtlasStruct.__init__(self, attrs)
self.guid = attrs.get('guid')
self.relationshipAttributes = attrs.get('relationshipAttributes')
self.classifications = attrs.get('classifications')
self.meanings = attrs.get('meanings')
self.customAttributes = attrs.get('customAttributes')
self.businessAttributes = attrs.get('businessAttributes')
self.labels = attrs.get('labels')
if self.guid is None:
self.guid = next_id()
def type_coerce_attrs(self):
super(AtlasEntity, self).type_coerce_attrs()
self.classifications = type_coerce_list(self.classifications, AtlasClassification)
self.meanings = type_coerce_list(self.meanings, AtlasTermAssignmentHeader)
def get_relationship_attribute(self, name):
return self.relationshipAttributes[
name] if self.relationshipAttributes is not None and name in self.relationshipAttributes else None
def set_relationship_attribute(self, name, value):
if self.relationshipAttributes is None:
self.relationshipAttributes = {}
self.relationshipAttributes[name] = value
def remove_relationship_attribute(self, name):
if name and self.relationshipAttributes is not None and name in self.relationshipAttributes:
del self.relationshipAttributes[name]
class AtlasEntityExtInfo(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.referredEntities = attrs.get('referredEntities')
def type_coerce_attrs(self):
super(AtlasEntityExtInfo, self).type_coerce_attrs()
self.referredEntities = type_coerce_dict(self.referredEntities, AtlasEntity)
def get_referenced_entity(self, guid):
return self.referredEntities[
guid] if self.referredEntities is not None and guid in self.referredEntities else None
def add_referenced_entity(self, entity):
if self.referredEntities is None:
self.referredEntities = {}
self.referredEntities[entity.guid] = entity
class AtlasEntityWithExtInfo(AtlasEntityExtInfo):
def __init__(self, attrs={}):
AtlasEntityExtInfo.__init__(self, attrs)
self.entity = attrs.get('entity')
def type_coerce_attrs(self):
super(AtlasEntityWithExtInfo, self).type_coerce_attrs()
self.entity = type_coerce(self.entity, AtlasEntity)
class AtlasEntitiesWithExtInfo(AtlasEntityExtInfo):
def __init__(self, attrs={}):
AtlasEntityExtInfo.__init__(self, attrs)
self.entities = attrs.get('entities')
def type_coerce_attrs(self):
super(AtlasEntitiesWithExtInfo, self).type_coerce_attrs()
self.entities = type_coerce_list(self.entity, AtlasEntity)
def add_entity(self, entity):
if self.entities is None:
self.entities = []
self.entities.append(entity)
class AtlasEntityHeader(AtlasStruct):
def __init__(self, attrs={}):
AtlasStruct.__init__(self, attrs)
self.guid = attrs.get('guid')
self.status = non_null(attrs.get('status'), EntityStatus.ACTIVE.name)
self.displayText = attrs.get('displayText')
self.classificationNames = attrs.get('classificationNames')
self.classifications = attrs.get('classifications')
self.meaningNames = attrs.get('meaningNames')
self.meanings = attrs.get('.meanings')
self.isIncomplete = non_null(attrs.get('isIncomplete'), False)
self.labels = attrs.get('labels')
if self.guid is None:
self.guid = next_id()
def type_coerce_attrs(self):
super(AtlasEntityHeader, self).type_coerce_attrs()
self.classifications = type_coerce_list(self.classifications, AtlasClassification)
self.meanings = type_coerce_list(self.meanings, AtlasTermAssignmentHeader)
class AtlasClassification(AtlasStruct):
def __init__(self, attrs={}):
AtlasStruct.__init__(self, attrs)
self.entityGuid = attrs.get('entityGuid')
self.entityStatus = non_null(attrs.get('entityStatus'), EntityStatus.ACTIVE.name)
self.propagate = attrs.get('propagate')
self.validityPeriods = attrs.get('validityPeriods')
self.removePropagationsOnEntityDelete = attrs.get('removePropagationsOnEntityDelete')
def type_coerce_attrs(self):
super(AtlasClassification, self).type_coerce_attrs()
self.validityPeriods = type_coerce_list(self.validityPeriods, TimeBoundary)
class AtlasObjectId(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.guid = attrs.get('guid')
self.typeName = attrs.get('typeName')
self.uniqueAttributes = attrs.get('uniqueAttributes')
class AtlasRelatedObjectId(AtlasObjectId):
def __init__(self, attrs={}):
AtlasObjectId.__init__(self, attrs)
self.entityStatus = attrs.get('entityStatus')
self.displayText = attrs.get('displayText')
self.relationshipType = attrs.get('relationshipType')
self.relationshipGuid = attrs.get('relationshipGuid')
self.relationshipStatus = attrs.get('relationshipStatus')
self.relationshipAttributes = attrs.get('relationshipAttributes')
def type_coerce_attrs(self):
super(AtlasRelatedObjectId, self).type_coerce_attrs()
self.relationshipAttributes = type_coerce(self.relationshipAttributes, AtlasStruct)
class AtlasClassifications(Plist):
def __init__(self, attrs={}):
Plist.__init__(self, attrs)
def type_coerce_attrs(self):
super(AtlasClassifications, self).type_coerce_attrs()
Plist.list = type_coerce_list(Plist.list, AtlasClassification)
class AtlasEntityHeaders(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.guidHeaderMap = attrs.get('guidHeaderMap')
def type_coerce_attrs(self):
super(AtlasEntityHeaders, self).type_coerce_attrs()
self.guidHeaderMap = type_coerce_dict(self.guidHeaderMap, AtlasEntityHeader)
class EntityMutationResponse(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.mutatedEntities = attrs.get('mutatedEntities')
self.guidAssignments = attrs.get('guidAssignments')
def type_coerce_attrs(self):
super(EntityMutationResponse, self).type_coerce_attrs()
self.mutatedEntities = type_coerce_dict_list(self.mutatedEntities, AtlasEntityHeader)
def get_assigned_guid(self, guid):
return self.guidAssignments.get(guid) if self.guidAssignments else None
class EntityMutations(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.entity_mutations = attrs.get('entity_mutations')
def type_coerce_attrs(self):
super(EntityMutations, self).type_coerce_attrs()
self.entity_mutations = type_coerce_list(self.entity_mutations, EntityMutation)
class EntityMutation(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.op = attrs.get('op')
self.entity = attrs.get('entity')
def type_coerce_attrs(self):
super(EntityMutation, self).type_coerce_attrs()
self.entity = type_coerce(self.entity, AtlasEntity)
class AtlasCheckStateRequest(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.entityGuids = attrs.get('entityGuids')
self.entityTypes = attrs.get('entityTypes')
self.fixIssues = attrs.get('fixIssues')
class AtlasCheckStateResult(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.entitiesScanned = attrs.get('entitiesScanned')
self.entitiesOk = attrs.get('entitiesOk')
self.entitiesFixed = attrs.get('entitiesFixed')
self.entitiesPartiallyFixed = attrs.get('entitiesPartiallyFixed')
self.entitiesNotFixed = attrs.get('entitiesNotFixed')
self.state = attrs.get('state')
self.entities = attrs.get('entities')
def type_coerce_attrs(self):
super(AtlasCheckStateResult, self).type_coerce_attrs()
self.entities = type_coerce(self.entities, AtlasEntityState)
class AtlasEntityState(AtlasBase):
def __init__(self, attrs={}):
AtlasBase.__init__(self, attrs)
self.guid = attrs.get('guid')
self.typeName = attrs.get('typeName')
self.name = attrs.get('name')
self.status = attrs.get('status')
self.state = attrs.get('state')
self.issues = attrs.get('issues')