def set_updated_entities(self, entity_ids): node_ids = [] up_sessions = {} (usrs, grps) = ([], []) if not entity_ids: LOGGER.error('Error: entity_ids are not found.') return None del_ent_usrs = [] for entity_id in entity_ids.split(','): usr_grps = [] ent = Entity.get_entity(entity_id) if ent and ent.type.name==constants.DOMAIN: if ent.csep_context_id: vm = DBSession.query(VM.cloud_vm_id).filter(VM.id == entity_id).first() if vm and vm[0]: cloud_vm_id = vm[0] node_ids.append(cloud_vm_id) node_ids = self.merge_lists(node_ids, Entity.get_hierarchy(cloud_vm_id)) usr_grps.extend(Entity.get_users_groups(cloud_vm_id)) hierarchy = Entity.get_hierarchy(entity_id) if not hierarchy: hierarchy = [entity_id] del_ent_usrs = self.updated_entities.keys() node_ids = self.merge_lists(node_ids, hierarchy) usr_grps.extend(Entity.get_users_groups(entity_id)) (priv_usrs, priv_groups) = ([], []) for priv_usr,priv_group in usr_grps: priv_usrs.append(priv_usr) priv_groups.append(priv_group) usrs = self.merge_lists(usrs, priv_usrs) grps = self.merge_lists(grps, priv_groups) usr_names=[u.user_name for u in usrs] grp_names=[g.group_name for g in priv_groups] if del_ent_usrs: usr_names=del_ent_usrs try: self.lock.acquire() for key in self.updated_entities.keys(): if key not in usr_names and key not in grp_names: continue else: up_sessions=self.updated_entities.get(key, {}) for session,nodes in up_sessions.iteritems(): if len(nodes) > 35: nodes=[] updated_nodes=self.merge_lists(nodes, node_ids) self.updated_entities[key][session]=updated_nodes finally: self.lock.release()
def set_updated_tasks(self, task_id, user_name, entity_id=None): user_names = [] if entity_id: usr_grps = Entity.get_users_groups(entity_id) if not usr_grps: user_names = self.updated_tasks.keys() else: priv_usrs = [] for priv_usr,priv_group in usr_grps: priv_usrs.append(priv_usr) user_names=[u.user_name for u in priv_usrs] if user_name not in user_names: user_names.append(user_name) else: user_names.append(user_name) self.lock.acquire() try: for user_name in user_names: up_sessions = self.updated_tasks.get(user_name, {}) for session,tasks in up_sessions.iteritems(): if len(tasks) > 35: tasks = [] updated_tasks = self.merge_lists(tasks, [task_id]) self.updated_tasks[user_name][session] = updated_tasks finally: self.lock.release()