diff options
author | Scott Dodson <sdodson@redhat.com> | 2017-03-30 16:27:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-30 16:27:24 -0400 |
commit | 929d0b74b88b98d9ab339185807292b7f102f6f6 (patch) | |
tree | 894e0360866ebe74ed979542affae74f9245ecf2 /roles/lib_openshift/src/lib/clusterrole.py | |
parent | 7e3141ae9193a39a55827ad2326bc8ac19e7e3ba (diff) | |
parent | 44b5ab73728d569b9d77f5cc179a5b36f9d2485f (diff) | |
download | openshift-929d0b74b88b98d9ab339185807292b7f102f6f6.tar.gz openshift-929d0b74b88b98d9ab339185807292b7f102f6f6.tar.bz2 openshift-929d0b74b88b98d9ab339185807292b7f102f6f6.tar.xz openshift-929d0b74b88b98d9ab339185807292b7f102f6f6.zip |
Merge pull request #3786 from kwoodson/oc_clusterrole
Add oc_clusterrole to lib_openshift.
Diffstat (limited to 'roles/lib_openshift/src/lib/clusterrole.py')
-rw-r--r-- | roles/lib_openshift/src/lib/clusterrole.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/roles/lib_openshift/src/lib/clusterrole.py b/roles/lib_openshift/src/lib/clusterrole.py new file mode 100644 index 000000000..93ffababf --- /dev/null +++ b/roles/lib_openshift/src/lib/clusterrole.py @@ -0,0 +1,68 @@ +# 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) + |