123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- # pylint: skip-file
- # flake8: noqa
- # pylint: disable=too-many-instance-attributes
- class RoleBindingConfig(object):
- ''' Handle rolebinding config '''
- # pylint: disable=too-many-arguments
- def __init__(self,
- name,
- namespace,
- kubeconfig,
- group_names=None,
- role_ref=None,
- subjects=None,
- usernames=None):
- ''' constructor for handling rolebinding options '''
- self.kubeconfig = kubeconfig
- self.name = name
- self.namespace = namespace
- self.group_names = group_names
- self.role_ref = role_ref
- self.subjects = subjects
- self.usernames = usernames
- self.data = {}
- self.create_dict()
- def create_dict(self):
- ''' create a default rolebinding as a dict '''
- self.data['apiVersion'] = 'v1'
- self.data['kind'] = 'RoleBinding'
- self.data['groupNames'] = self.group_names
- self.data['metadata']['name'] = self.name
- self.data['metadata']['namespace'] = self.namespace
- self.data['roleRef'] = self.role_ref
- self.data['subjects'] = self.subjects
- self.data['userNames'] = self.usernames
- # pylint: disable=too-many-instance-attributes,too-many-public-methods
- class RoleBinding(Yedit):
- ''' Class to model a rolebinding openshift object'''
- group_names_path = "groupNames"
- role_ref_path = "roleRef"
- subjects_path = "subjects"
- user_names_path = "userNames"
- kind = 'RoleBinding'
- def __init__(self, content):
- '''RoleBinding constructor'''
- super(RoleBinding, self).__init__(content=content)
- self._subjects = None
- self._role_ref = None
- self._group_names = None
- self._user_names = None
- @property
- def subjects(self):
- ''' subjects property '''
- if self._subjects is None:
- self._subjects = self.get_subjects()
- return self._subjects
- @subjects.setter
- def subjects(self, data):
- ''' subjects property setter'''
- self._subjects = data
- @property
- def role_ref(self):
- ''' role_ref property '''
- if self._role_ref is None:
- self._role_ref = self.get_role_ref()
- return self._role_ref
- @role_ref.setter
- def role_ref(self, data):
- ''' role_ref property setter'''
- self._role_ref = data
- @property
- def group_names(self):
- ''' group_names property '''
- if self._group_names is None:
- self._group_names = self.get_group_names()
- return self._group_names
- @group_names.setter
- def group_names(self, data):
- ''' group_names property setter'''
- self._group_names = data
- @property
- def user_names(self):
- ''' user_names property '''
- if self._user_names is None:
- self._user_names = self.get_user_names()
- return self._user_names
- @user_names.setter
- def user_names(self, data):
- ''' user_names property setter'''
- self._user_names = data
- def get_group_names(self):
- ''' return groupNames '''
- return self.get(RoleBinding.group_names_path) or []
- def get_user_names(self):
- ''' return usernames '''
- return self.get(RoleBinding.user_names_path) or []
- def get_role_ref(self):
- ''' return role_ref '''
- return self.get(RoleBinding.role_ref_path) or {}
- def get_subjects(self):
- ''' return subjects '''
- return self.get(RoleBinding.subjects_path) or []
- #### ADD #####
- def add_subject(self, inc_subject):
- ''' add a subject '''
- if self.subjects:
- # pylint: disable=no-member
- self.subjects.append(inc_subject)
- else:
- self.put(RoleBinding.subjects_path, [inc_subject])
- return True
- def add_role_ref(self, inc_role_ref):
- ''' add a role_ref '''
- if not self.role_ref:
- self.put(RoleBinding.role_ref_path, {"name": inc_role_ref})
- return True
- return False
- def add_group_names(self, inc_group_names):
- ''' add a group_names '''
- if self.group_names:
- # pylint: disable=no-member
- self.group_names.append(inc_group_names)
- else:
- self.put(RoleBinding.group_names_path, [inc_group_names])
- return True
- def add_user_name(self, inc_user_name):
- ''' add a username '''
- if self.user_names:
- # pylint: disable=no-member
- self.user_names.append(inc_user_name)
- else:
- self.put(RoleBinding.user_names_path, [inc_user_name])
- return True
- #### /ADD #####
- #### Remove #####
- def remove_subject(self, inc_subject):
- ''' remove a subject '''
- try:
- # pylint: disable=no-member
- self.subjects.remove(inc_subject)
- except ValueError as _:
- return False
- return True
- def remove_role_ref(self, inc_role_ref):
- ''' remove a role_ref '''
- if self.role_ref and self.role_ref['name'] == inc_role_ref:
- del self.role_ref['name']
- return True
- return False
- def remove_group_name(self, inc_group_name):
- ''' remove a groupname '''
- try:
- # pylint: disable=no-member
- self.group_names.remove(inc_group_name)
- except ValueError as _:
- return False
- return True
- def remove_user_name(self, inc_user_name):
- ''' remove a username '''
- try:
- # pylint: disable=no-member
- self.user_names.remove(inc_user_name)
- except ValueError as _:
- return False
- return True
- #### /REMOVE #####
- #### UPDATE #####
- def update_subject(self, inc_subject):
- ''' update a subject '''
- try:
- # pylint: disable=no-member
- index = self.subjects.index(inc_subject)
- except ValueError as _:
- return self.add_subject(inc_subject)
- self.subjects[index] = inc_subject
- return True
- def update_group_name(self, inc_group_name):
- ''' update a groupname '''
- try:
- # pylint: disable=no-member
- index = self.group_names.index(inc_group_name)
- except ValueError as _:
- return self.add_group_names(inc_group_name)
- self.group_names[index] = inc_group_name
- return True
- def update_user_name(self, inc_user_name):
- ''' update a username '''
- try:
- # pylint: disable=no-member
- index = self.user_names.index(inc_user_name)
- except ValueError as _:
- return self.add_user_name(inc_user_name)
- self.user_names[index] = inc_user_name
- return True
- def update_role_ref(self, inc_role_ref):
- ''' update a role_ref '''
- self.role_ref['name'] = inc_role_ref
- return True
- #### /UPDATE #####
- #### FIND ####
- def find_subject(self, inc_subject):
- ''' find a subject '''
- index = None
- try:
- # pylint: disable=no-member
- index = self.subjects.index(inc_subject)
- except ValueError as _:
- return index
- return index
- def find_group_name(self, inc_group_name):
- ''' find a group_name '''
- index = None
- try:
- # pylint: disable=no-member
- index = self.group_names.index(inc_group_name)
- except ValueError as _:
- return index
- return index
- def find_user_name(self, inc_user_name):
- ''' find a user_name '''
- index = None
- try:
- # pylint: disable=no-member
- index = self.user_names.index(inc_user_name)
- except ValueError as _:
- return index
- return index
- def find_role_ref(self, inc_role_ref):
- ''' find a user_name '''
- if self.role_ref and self.role_ref['name'] == inc_role_ref['name']:
- return self.role_ref
- return None
|