X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwprojectmano%2Fplugins%2Frwprojectmano%2Frift%2Ftasklets%2Frwprojectmano%2Frolesmano.py;h=0083c060fffd4c36f85f30cd4f42b5253c85099a;hb=cd455eba9834532e57a661e41cd5864afc90ddec;hp=ea3674a47499225e7816a9c9bda32858d2b5e1db;hpb=9ad945aab0b5a992e1df860bede8ecc9b143470e;p=osm%2FSO.git diff --git a/rwprojectmano/plugins/rwprojectmano/rift/tasklets/rwprojectmano/rolesmano.py b/rwprojectmano/plugins/rwprojectmano/rift/tasklets/rwprojectmano/rolesmano.py index ea3674a4..0083c060 100644 --- a/rwprojectmano/plugins/rwprojectmano/rift/tasklets/rwprojectmano/rolesmano.py +++ b/rwprojectmano/plugins/rwprojectmano/rift/tasklets/rwprojectmano/rolesmano.py @@ -34,7 +34,6 @@ from gi.repository import ( ) import rift.tasklets -#TODO: Fix once merged to latest platform from rift.tasklets.rwproject.project import ( StateMachine, User, @@ -48,10 +47,7 @@ from rift.mano.utils.project import ( ) -MANO_PROJECT_ROLES = [ - 'rw-project-mano:mano-oper', - 'rw-project-mano:mano-admin', -] +from .projectmano import MANO_PROJECT_ROLES class ProjectConfigSubscriber(object): @@ -80,6 +76,8 @@ class ProjectConfigSubscriber(object): def delete_user(self, cfg): user = User().pb(cfg) + self._log.error("Delete user {} for project {}". + format(user.key, self.project_name)) if user.key in self.users: roles = self.users[user.key] for role_key in list(roles): @@ -88,6 +86,8 @@ class ProjectConfigSubscriber(object): def update_user(self, cfg): user = User().pb(cfg) + self._log.debug("Update user {} for project {}". + format(user.key, self.project_name)) cfg_roles = {} for cfg_role in cfg.mano_role: r = self.role_inst(cfg_role) @@ -106,6 +106,8 @@ class ProjectConfigSubscriber(object): self.update_role(user, cfg_roles[role_key]) def delete_role(self, user, role_key): + self._log.error("Delete role {} for user {}". + format(role_key, user.key)) user_key = user.key try: @@ -119,6 +121,8 @@ class ProjectConfigSubscriber(object): self.pub.delete_role(role_key, user_key) def update_role(self, user, role): + self._log.debug("Update role {} for user {}". + format(role.role, user.key)) user_key = user.key try: @@ -237,6 +241,7 @@ class ProjectConfigSubscriber(object): def deregister(self): self._log.debug("De-registering DTS handler for project {}". format(self.project_name)) + if self._reg: self._reg.deregister() self._reg = None @@ -251,7 +256,7 @@ class RoleConfigPublisher(rift.tasklets.DtsConfigPublisher): self.project_name = project.name self.rbac_int = RwRbacInternalYang.YangData_RwRbacInternal_RwRbacInternal() self.roles = {} - self.proj_roles = MANO_PROJECT_ROLES + self.proj_roles = [role['mano-role'] for role in MANO_PROJECT_ROLES] self.proj_roles_published = False def get_xpath(self): @@ -276,10 +281,25 @@ class RoleConfigPublisher(rift.tasklets.DtsConfigPublisher): self.create_project_role(role) def create_project_role(self, role): + self.log.error("Create project role for {}: {}". + format(self.project_name, role.role)) xpath = self.role_xpath(role.key) pb_role = self.pb_role(role) self._regh.update_element(xpath, pb_role) + def delete_project_roles(self): + for name in self.proj_roles: + role = RoleKeys() + role.role = name + role.keys = self.project_name + self.delete_project_role(role) + + def delete_project_role(self, role): + self.log.error("Delete project role for {}: {}". + format(self.project_name, role.role)) + xpath = self.role_xpath(role.key) + self._regh.delete_element(xpath) + def create_role(self, role_key, user_key): return RoleKeysUsers(role_key, user_key) @@ -288,6 +308,7 @@ class RoleConfigPublisher(rift.tasklets.DtsConfigPublisher): pbRole = self.rbac_int.create_role() pbRole.role = role.role pbRole.keys = role.keys + pbRole.state_machine.state = role.state.name return pbRole @@ -322,12 +343,16 @@ class RoleConfigPublisher(rift.tasklets.DtsConfigPublisher): role.add_user(user) update = False - user.state = StateMachine.new + if update: + user.state = StateMachine.new + else: + user.state = StateMachine.new xpath = self.role_xpath(role_key) + self.log.debug("update role: {} user: {} ".format(role_key, user_key)) + pb_role_user = self.pb_role_user(role, user) - self.log.debug("add_update_role: xpath:{} pb_role:{}".format(xpath, pb_role_user)) self._regh.update_element(xpath, pb_role_user) @@ -340,13 +365,13 @@ class RoleConfigPublisher(rift.tasklets.DtsConfigPublisher): user.state = StateMachine.delete xpath = self.role_xpath(role_key) - self.log.debug("deleting role: {} user: {} ".format(role_key, user_key)) + self.log.error("deleting role: {} user: {} ".format(role_key, user_key)) pb_role = self.pb_role_user(role, user) self._regh.update_element(xpath, pb_role) def do_prepare(self, xact_info, action, ks_path, msg): - """Handle on_prepare. To be overridden by Concreate Publisher Handler + """Handle on_prepare. """ self.log.debug("do_prepare: action: {}, path: {} ks_path, msg: {}".format(action, ks_path, msg)) @@ -371,5 +396,6 @@ class RoleConfigPublisher(rift.tasklets.DtsConfigPublisher): def deregister(self): if self._regh: + self.delete_project_roles() self._regh.deregister() self._regh = None