Main Tables Views Materialized Views Indexes Constraints Triggers Procedures Functions Packages Sequences Java Sources Jobs Sanity Check Index DDL scrips
Package source Package body source

RHN_CACHE

DDL script

Package source

Legend: comment string keyword reserved word operator
     1: package
     2: rhn_cache
     3: is
     4: 	version varchar2(100) := '';
     5: 
     6: 	-- this searches out all users who get perms...
     7: 	procedure update_perms_for_server(
     8: 		server_id_in in number
     9: 	);
    10: 
    11: 	procedure update_perms_for_user(
    12: 		user_id_in in number
    13: 	);
    14: 
    15: 	procedure update_perms_for_server_group(
    16: 		server_group_id_in in number
    17: 	);
    18: end rhn_cache;

Package body source

Legend: comment string keyword reserved word operator
     1: package body
     2: rhn_cache
     3: is
     4: 	body_version varchar2(100) := '';
     5: 
     6: 	-- this searches out all users who get perms...
     7: 	procedure update_perms_for_server(
     8: 		server_id_in in number
     9: 	) is
    10: 	begin
    11:                 -- delete rows which are no more valid
    12: 		delete from rhnUserServerPerms p
    13:                       where server_id = server_id_in
    14:                         and user_id not in (select user_id
    15:                                               from rhnUserServerPermsDupes d
    16:                                              where p.server_id = d.server_id);
    17:                 -- insert newly added rows
    18: 		insert into rhnUserServerPerms(user_id, server_id) (
    19: 			select distinct user_id, server_id_in
    20: 				   from	rhnUserServerPermsDupes d
    21:                                   where server_id = server_id_in
    22:                                     and user_id not in (
    23:                                                 select user_id
    24:                                                   from rhnUserServerPerms p
    25:                                                  where p.server_id = d.server_id)
    26: 			);
    27: 	end update_perms_for_server;
    28: 
    29:         -- update rhnUserServerPerms cache from rhnUserServerPermsDupes
    30: 	procedure update_perms_for_user(
    31: 		user_id_in in number
    32: 	) is
    33: 	begin
    34:                 -- first delete rows which are not in rhnUserServerPermsDupes
    35:                 delete from rhnUserServerPerms up
    36:                  where user_id = user_id_in
    37:                    and not exists (
    38:                        select 1
    39:                          from rhnUserServerPermsDupes uspd
    40:                         where uspd.user_id = up.user_id
    41:                           and uspd.server_id = up.server_id);
    42: 
    43:                 -- then insert rest of rows from rhnUserServerPermsDupes
    44:                 insert into rhnUserServerPerms (user_id, server_id)
    45:                        select distinct user_id_in, server_id
    46:                          from rhnUserServerPermsDupes uspd
    47:                         where uspd.user_id = user_id_in
    48:                           and not exists (
    49:                               select 1
    50:                                 from rhnUserServerPerms usp
    51:                                where usp.user_id = user_id_in
    52:                                  and usp.server_id = uspd.server_id);
    53: 	end update_perms_for_user;
    54: 
    55: 	-- this means a server got added or removed, so we
    56: 	-- can't key off of a server anywhere.
    57: 	procedure update_perms_for_server_group(
    58: 		server_group_id_in in number
    59: 	) is
    60: 		cursor users is
    61: 			-- org admins aren't affected, so don't test for them
    62: 			select	usgp.user_id id
    63: 			from	rhnUserServerGroupPerms usgp
    64: 			where	usgp.server_group_id = server_group_id_in
    65: 				and not exists (
    66: 					select	1
    67: 					from	rhnUserGroup ug,
    68: 							rhnUserGroupMembers ugm,
    69: 							rhnServerGroup sg,
    70: 							rhnUserGroupType ugt
    71: 					where	ugt.label = 'org_admin'
    72:                                                 and ugt.id = ug.group_type
    73: 						and sg.id = server_group_id_in
    74: 						and ugm.user_id = usgp.user_id
    75: 						and ug.org_id = sg.org_id
    76: 						and ugm.user_group_id = ug.id
    77: 					);
    78: 	begin
    79: 		for u in users loop
    80: 			update_perms_for_user(u.id);
    81: 		end loop;
    82: 	end update_perms_for_server_group;
    83: end rhn_cache;