diff options
author | Kenny Woodson <kwoodson@redhat.com> | 2017-03-28 13:56:00 -0400 |
---|---|---|
committer | Kenny Woodson <kwoodson@redhat.com> | 2017-03-28 17:05:49 -0400 |
commit | 611e9864e8716ca92a77745403c847c30f2f0d87 (patch) | |
tree | b9a9248d32e6024e3e58d897636b63dfce01ac60 /roles/lib_openshift/src/lib/clusterrole.py | |
parent | d77a9a685c3add9ef9c4d659ee47ebf35e145fe4 (diff) | |
download | openshift-611e9864e8716ca92a77745403c847c30f2f0d87.tar.gz openshift-611e9864e8716ca92a77745403c847c30f2f0d87.tar.bz2 openshift-611e9864e8716ca92a77745403c847c30f2f0d87.tar.xz openshift-611e9864e8716ca92a77745403c847c30f2f0d87.zip |
Adding clusterrole to the toolbox.
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..8207fbc38 --- /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 DeploymentConfig''' + 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) + |