1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- # pylint: skip-file
- # flake8: noqa
- # pylint: disable=too-many-public-methods
- class ClusterRole(Yedit):
- ''' Class to model an openshift ClusterRole'''
- rules_path = "rules"
- def __init__(self, name=None, content=None):
- ''' Constructor for clusterrole '''
- if content is None:
- content = ClusterRole.builder(name).yaml_dict
- super(ClusterRole, self).__init__(content=content)
- self.__rules = Rule.parse_rules(self.get(ClusterRole.rules_path)) or []
- @property
- def rules(self):
- return self.__rules
- @rules.setter
- def rules(self, data):
- self.__rules = data
- self.put(ClusterRole.rules_path, self.__rules)
- def rule_exists(self, inc_rule):
- '''attempt to find the inc_rule in the rules list'''
- for rule in self.rules:
- if rule == inc_rule:
- return True
- return False
- def compare(self, other, verbose=False):
- '''compare function for clusterrole'''
- for rule in other.rules:
- if rule not in self.rules:
- if verbose:
- print('Rule in other not found in self. [{}]'.format(rule))
- return False
- for rule in self.rules:
- if rule not in other.rules:
- if verbose:
- print('Rule in self not found in other. [{}]'.format(rule))
- return False
- return True
- @staticmethod
- def builder(name='default_clusterrole', rules=None):
- '''return a clusterrole with name and/or rules'''
- if rules is None:
- rules = [{'apiGroups': [""],
- 'attributeRestrictions': None,
- 'verbs': [],
- 'resources': []}]
- content = {
- 'apiVersion': 'v1',
- 'kind': 'ClusterRole',
- 'metadata': {'name': '{}'.format(name)},
- 'rules': rules,
- }
- return ClusterRole(content=content)
|