diff options
author | OpenShift Bot <dmcphers+openshiftbot@redhat.com> | 2017-03-09 16:07:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-09 16:07:40 -0500 |
commit | 28127183106236c332e15d81fce3c6d76768a619 (patch) | |
tree | 8e744512d0151cb09915f953ea2503958346f78d /roles/lib_openshift/library/oc_adm_policy_group.py | |
parent | 573e91d03d7dccd79a03774c6889c2c2753836b1 (diff) | |
parent | 3155ee3f727d93132bcbd765cb9d1c843ae13b2a (diff) | |
download | openshift-28127183106236c332e15d81fce3c6d76768a619.tar.gz openshift-28127183106236c332e15d81fce3c6d76768a619.tar.bz2 openshift-28127183106236c332e15d81fce3c6d76768a619.tar.xz openshift-28127183106236c332e15d81fce3c6d76768a619.zip |
Merge pull request #3605 from kwoodson/oc_adm_policy_user_fix
Merged by openshift-bot
Diffstat (limited to 'roles/lib_openshift/library/oc_adm_policy_group.py')
-rw-r--r-- | roles/lib_openshift/library/oc_adm_policy_group.py | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/roles/lib_openshift/library/oc_adm_policy_group.py b/roles/lib_openshift/library/oc_adm_policy_group.py index 28df1cf94..49ff22584 100644 --- a/roles/lib_openshift/library/oc_adm_policy_group.py +++ b/roles/lib_openshift/library/oc_adm_policy_group.py @@ -1908,6 +1908,28 @@ class PolicyGroup(OpenShiftCLI): self.verbose = verbose self._rolebinding = None self._scc = None + self._cluster_policy_bindings = None + self._policy_bindings = None + + @property + def policybindings(self): + if self._policy_bindings is None: + results = self._get('clusterpolicybindings', None) + if results['returncode'] != 0: + raise OpenShiftCLIError('Could not retrieve policybindings') + self._policy_bindings = results['results'][0]['items'][0] + + return self._policy_bindings + + @property + def clusterpolicybindings(self): + if self._cluster_policy_bindings is None: + results = self._get('clusterpolicybindings', None) + if results['returncode'] != 0: + raise OpenShiftCLIError('Could not retrieve clusterpolicybindings') + self._cluster_policy_bindings = results['results'][0]['items'][0] + + return self._cluster_policy_bindings @property def role_binding(self): @@ -1948,18 +1970,24 @@ class PolicyGroup(OpenShiftCLI): def exists_role_binding(self): ''' return whether role_binding exists ''' - results = self.get() - if results['returncode'] == 0: - self.role_binding = RoleBinding(results['results'][0]) - if self.role_binding.find_group_name(self.config.config_options['group']['value']) != None: - return True + bindings = None + if self.config.config_options['resource_kind']['value'] == 'cluster-role': + bindings = self.clusterpolicybindings + else: + bindings = self.policybindings + if bindings is None: return False - elif self.config.config_options['name']['value'] in results['stderr'] and '" not found' in results['stderr']: - return False + for binding in bindings['roleBindings']: + _rb = binding['roleBinding'] + if _rb['roleRef']['name'] == self.config.config_options['name']['value'] and \ + _rb['groupNames'] is not None and \ + self.config.config_options['group']['value'] in _rb['groupNames']: + self.role_binding = binding + return True - return results + return False def exists_scc(self): ''' return whether scc exists ''' |