blob: 3a8340c1bfb55905d0b88722631a074f1d229101 [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_ranger.model.ranger_base import *
from apache_ranger.utils import *
class RangerPolicy(RangerBaseModelObject):
POLICY_TYPE_ACCESS = 0
POLICY_TYPE_DATAMASK = 1
POLICY_TYPE_ROWFILTER = 2
def __init__(self, attrs=None):
if attrs is None:
attrs = {}
RangerBaseModelObject.__init__(self, attrs)
self.service = attrs.get('service')
self.name = attrs.get('name')
self.policyType = attrs.get('policyType')
self.policyPriority = attrs.get('policyPriority')
self.description = attrs.get('description')
self.resourceSignature = attrs.get('resourceSignature')
self.isAuditEnabled = attrs.get('isAuditEnabled')
self.resources = attrs.get('resources')
self.additionalResources = attrs.get('additionalResources')
self.policyItems = attrs.get('policyItems')
self.denyPolicyItems = attrs.get('denyPolicyItems')
self.allowExceptions = attrs.get('allowExceptions')
self.denyExceptions = attrs.get('denyExceptions')
self.dataMaskPolicyItems = attrs.get('dataMaskPolicyItems')
self.rowFilterPolicyItems = attrs.get('rowFilterPolicyItems')
self.serviceType = attrs.get('serviceType')
self.options = attrs.get('options')
self.validitySchedules = attrs.get('validitySchedules')
self.policyLabels = attrs.get('policyLabels')
self.zoneName = attrs.get('zoneName')
self.conditions = attrs.get('conditions')
self.isDenyAllElse = non_null(attrs.get('isDenyAllElse'), False)
def type_coerce_attrs(self):
super(RangerPolicy, self).type_coerce_attrs()
self.resources = type_coerce_dict(self.resources, RangerPolicyResource)
self.additionalResources = type_coerce_list_dict(self.additionalResources, RangerPolicyResource)
self.policyItems = type_coerce_list(self.policyItems, RangerPolicyItem)
self.denyPolicyItems = type_coerce_list(self.denyPolicyItems, RangerPolicyItem)
self.allowExceptions = type_coerce_list(self.allowExceptions, RangerPolicyItem)
self.denyExceptions = type_coerce_list(self.denyExceptions, RangerPolicyItem)
self.dataMaskPolicyItems = type_coerce_list(self.dataMaskPolicyItems, RangerDataMaskPolicyItem)
self.rowFilterPolicyItems = type_coerce_list(self.rowFilterPolicyItems, RangerRowFilterPolicyItem)
self.validitySchedules = type_coerce_list(self.validitySchedules, RangerValiditySchedule)
self.conditions = type_coerce_list(self.conditions, RangerPolicyItemCondition)
def add_resource(self, resource):
if resource is not None:
if self.resources is None:
self.resources = resource
else:
if self.additionalResources is None:
self.additionalResources = []
self.additionalResources.append(resource)
class RangerPolicyResource(RangerBase):
def __init__(self, attrs=None):
if attrs is None:
attrs = {}
RangerBase.__init__(self, attrs)
self.values = attrs.get('values')
self.isExcludes = non_null(attrs.get('isExcludes'), False)
self.isRecursive = non_null(attrs.get('isRecursive'), False)
class RangerPolicyItemCondition(RangerBase):
def __init__(self, attrs=None):
if attrs is None:
attrs = {}
RangerBase.__init__(self, attrs)
self.type = attrs.get('type')
self.values = attrs.get('values')
class RangerPolicyItem(RangerBase):
def __init__(self, attrs=None):
if attrs is None:
attrs = {}
RangerBase.__init__(self, attrs)
self.accesses = attrs.get('accesses')
self.users = attrs.get('users')
self.groups = attrs.get('groups')
self.roles = attrs.get('roles')
self.conditions = attrs.get('conditions')
self.delegateAdmin = non_null(attrs.get('delegateAdmin'), False)
def type_coerce_attrs(self):
super(RangerPolicyItem, self).type_coerce_attrs()
self.accesses = type_coerce_list(self.accesses, RangerPolicyItemAccess)
self.conditions = type_coerce_list(self.conditions, RangerPolicyItemCondition)
class RangerDataMaskPolicyItem(RangerPolicyItem):
def __init__(self, attrs=None):
if attrs is None:
attrs = {}
RangerPolicyItem.__init__(self, attrs)
self.dataMaskInfo = attrs.get('dataMaskInfo')
def type_coerce_attrs(self):
super(RangerDataMaskPolicyItem, self).type_coerce_attrs()
self.dataMaskInfo = type_coerce(self.dataMaskInfo, RangerPolicyItemDataMaskInfo)
class RangerRowFilterPolicyItem(RangerPolicyItem):
def __init__(self, attrs=None):
if attrs is None:
attrs = {}
RangerPolicyItem.__init__(self, attrs)
self.rowFilterInfo = attrs.get('rowFilterInfo')
def type_coerce_attrs(self):
super(RangerRowFilterPolicyItem, self).type_coerce_attrs()
self.rowFilterInfo = type_coerce(self.rowFilterInfo, RangerPolicyItemRowFilterInfo)
class RangerValiditySchedule(RangerBase):
def __init__(self, attrs=None):
if attrs is None:
attrs = {}
RangerBase.__init__(self, attrs)
self.startTime = attrs.get('startTime')
self.endTime = attrs.get('endTime')
self.timeZone = attrs.get('timeZone')
class RangerPolicyItemAccess(RangerBase):
def __init__(self, attrs=None):
if attrs is None:
attrs = {}
RangerBase.__init__(self, attrs)
self.type = attrs.get('type')
self.isAllowed = non_null(attrs.get('isAllowed'), True)
class RangerPolicyItemDataMaskInfo(RangerBase):
def __init__(self, attrs=None):
if attrs is None:
attrs = {}
RangerBase.__init__(self, attrs)
self.dataMaskType = attrs.get('dataMaskType')
self.conditionExpr = attrs.get('conditionExpr')
self.valueExpr = attrs.get('valueExpr')
class RangerPolicyItemRowFilterInfo(RangerBase):
def __init__(self, attrs=None):
if attrs is None:
attrs = {}
RangerBase.__init__(self, attrs)
self.filterExpr = attrs.get('filterExpr')