Exemple #1
0
    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()
Exemple #2
0
 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()