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

RHN_CONFIG

DDL script

Package source

Legend: comment string keyword reserved word operator
     1: package
     2: rhn_config
     3: is
     4: 	procedure prune_org_configs (
     5: 		org_id_in in number,
     6: 		total_in in number
     7: 	);
     8: 	function insert_revision (
     9: 		revision_in in number,
    10: 		config_file_id_in in number,
    11: 		config_content_id_in in number,
    12: 		config_info_id_in in number,
    13: 		delim_start_in in varchar2 := '{@',
    14: 		delim_end_in in varchar2 := '@}',
    15:       config_file_type_id_in number := 1
    16: 	) return number;
    17: 	procedure delete_revision (
    18: 		config_revision_id_in in number,
    19: 		org_id_in in number := -1
    20: 	);
    21: 	function get_latest_revision (
    22: 		config_file_id_in in number
    23: 	) return number;
    24: 	function insert_file (
    25: 		config_channel_id_in in number,
    26: 		name_in in varchar2
    27: 	) return number;
    28: 	procedure delete_file (
    29: 		config_file_id_in in number
    30: 	);
    31: 	function insert_channel (
    32: 		org_id_in in number,
    33: 		type_in in varchar2,
    34: 		name_in in varchar2,
    35: 		label_in in varchar2,
    36: 		description_in in varchar2
    37: 	) return number;
    38: 	procedure delete_channel (
    39: 		config_channel_id_in in number
    40: 	);
    41: end rhn_config;

Package body source

Legend: comment string keyword reserved word operator
     1: package body
     2: rhn_config
     3: is
     4: 	procedure prune_org_configs (
     5: 		org_id_in in number,
     6: 		total_in in number
     7: 	) is
     8: 	begin
     9: 		null;
    10: 	end prune_org_configs;
    11: 	function insert_revision (
    12: 		revision_in in number,
    13: 		config_file_id_in in number,
    14: 		config_content_id_in in number,
    15: 		config_info_id_in in number,
    16: 		delim_start_in in varchar2 := '{@',
    17: 		delim_end_in in varchar2 := '@}',
    18:       config_file_type_id_in in number := 1
    19: 	) return number is
    20: 		retval number;
    21: 		cursor affected_orgs is
    22: 			select	cc.org_id id
    23: 			from	rhnConfigChannel cc,
    24: 					rhnConfigFile cf
    25: 			where	cf.id = config_file_id_in
    26: 				and cf.config_channel_id = cc.id;
    27: 	begin
    28: 		insert into rhnConfigRevision(id, revision, config_file_id,
    29: 				config_content_id, config_info_id, delim_start, delim_end,
    30:             config_file_type_id
    31: 			) values (
    32: 				rhn_confrevision_id_seq.nextval, revision_in, config_file_id_in,
    33: 				config_content_id_in, config_info_id_in, delim_start_in,
    34: 				delim_end_in, config_file_type_id_in
    35: 			)
    36: 			returning id into retval;
    37: 		for org in affected_orgs loop
    38: 			rhn_quota.update_org_quota(org.id);
    39: 		end loop;
    40: 		return retval;
    41: 	end insert_revision;
    42: 	procedure delete_revision (
    43: 		config_revision_id_in in number,
    44: 		org_id_in in number := -1
    45: 	) is
    46: 		cfid number;
    47: 		ccid number;
    48: 		oid number;
    49: 		latest_crid number;
    50: 		others number := 0;
    51: 		cursor snapshots is
    52: 			select	scr.snapshot_id id
    53: 			from	rhnSnapshot s,
    54: 					rhnSnapshotConfigRevision scr
    55: 			where	scr.config_revision_id = config_revision_id_in
    56: 					and scr.snapshot_id = s.id
    57: 					and s.invalid is null;
    58: 		cursor other_revisions(config_content_id_in in number) is
    59: 			select	1
    60: 			from	rhnConfigRevision
    61: 			where	config_content_id = config_content_id_in;
    62: 	begin
    63: 		for snapshot in snapshots loop
    64: 			update		rhnSnapshot s
    65: 				set		s.invalid =
    66: 							lookup_snapshot_invalid_reason('cr_removed')
    67: 				where	s.id = snapshot.id;
    68: 		end loop;
    69: 		if org_id_in < 0 then
    70: 			select	cr.config_content_id, cc.org_id
    71: 			into	ccid, oid
    72: 			from	rhnConfigChannel cc,
    73: 					rhnConfigFile cf,
    74: 					rhnConfigRevision cr
    75: 			where	cr.id = config_revision_id_in
    76: 				and cr.config_file_id = cf.id
    77: 				and cf.config_channel_id = cc.id;
    78: 		else
    79: 			select	cr.config_content_id, org_id_in
    80: 			into	ccid, oid
    81: 			from	rhnConfigRevision cr
    82: 			where	cr.id = config_revision_id_in;
    83: 		end if;
    84: 		delete from rhnConfigRevision where id = config_revision_id_in;
    85: 		for other_revision in other_revisions(ccid) loop
    86: 			others := 1;
    87: 			exit;
    88: 		end loop;
    89: 		if others = 0 then
    90: 			delete from rhnConfigContent where id = ccid;
    91: 		end if;
    92: 		if org_id_in < 0 then
    93: 			select	cf.latest_config_revision_id,
    94: 					cf.id
    95: 			into	latest_crid,
    96: 					cfid
    97: 			from	rhnConfigFile cf,
    98: 					rhnConfigRevision cr
    99: 			where	cr.id = config_revision_id_in
   100: 				and cr.config_file_id = cf.id;
   101: 			if latest_crid = config_revision_id_in then
   102: 				latest_crid := rhn_config.get_latest_revision(cfid);
   103: 				if latest_crid is not null then
   104: 					update rhnConfigFile set latest_config_revision_id = latest_crid
   105: 						where id = cfid;
   106: 				else
   107: 					delete from rhnConfigFile where id = cfid;
   108: 				end if;
   109: 			end if;
   110: 		end if;
   111: 		rhn_quota.update_org_quota(oid);
   112: 	end delete_revision;
   113: 	function get_latest_revision (
   114: 		config_file_id_in in number
   115: 	) return number is
   116: 		cursor revisions is
   117: 			select	cr.id
   118: 			from	rhnConfigRevision cr
   119: 			where	cr.config_file_id = config_file_id_in
   120: 			order by revision desc;
   121: 	begin
   122: 		for revision in revisions loop
   123: 			return revision.id;
   124: 		end loop;
   125: 		return null;
   126: 	end get_latest_revision;
   127: 	function insert_file (
   128: 		config_channel_id_in in number,
   129: 		name_in in varchar2
   130: 	) return number is
   131: 		retval number;
   132: 	begin
   133: 		select	rhn_conffile_id_seq.nextval
   134: 		into	retval
   135: 		from	dual;
   136: 		insert into rhnConfigFile(id, config_channel_id, config_file_name_id,
   137: 				state_id
   138: 			) (
   139: 				select	retval,
   140: 						config_channel_id_in,
   141: 						lookup_config_filename(name_in),
   142: 						id
   143: 				from	rhnConfigFileState
   144: 				where	label = 'alive'
   145: 			);
   146: 		return retval;
   147: 	end insert_file;
   148: 	procedure delete_file (
   149: 		config_file_id_in in number
   150: 	) is
   151: 		cursor revisions is
   152: 			select	cr.id, cc.org_id
   153: 			from	rhnConfigChannel cc,
   154: 					rhnConfigRevision cr,
   155: 					rhnConfigFile cf
   156: 			where	cf.id = config_file_id_in
   157: 				and cf.config_channel_id = cc.id
   158: 				and cr.config_file_id = cf.id;
   159: 		org_id number;
   160: 	begin
   161: 		for revision in revisions loop
   162: 			rhn_config.delete_revision(revision.id, revision.org_id);
   163: 			org_id := revision.org_id;
   164: 		end loop;
   165: 		rhn_quota.update_org_quota(org_id);
   166: 		delete from rhnConfigFile where id = config_file_id_in;
   167: 	end delete_file;
   168: 	function insert_channel (
   169: 		org_id_in in number,
   170: 		type_in in varchar2,
   171: 		name_in in varchar2,
   172: 		label_in in varchar2,
   173: 		description_in in varchar2
   174: 	) return number is
   175: 		retval number;
   176: 	begin
   177: 		select	rhn_confchan_id_seq.nextval
   178: 		into	retval
   179: 		from	dual;
   180: 		insert into rhnConfigChannel(id, org_id, confchan_type_id,
   181: 				name, label, description
   182: 			) (
   183: 				select	retval,
   184: 						org_id_in,
   185: 						cct.id,
   186: 						name_in,
   187: 						label_in,
   188: 						description_in
   189: 				from	rhnConfigChannelType cct
   190: 				where	label = type_in
   191: 			);
   192: 		return retval;
   193: 	end insert_channel;
   194: 	procedure delete_channel (
   195: 		config_channel_id_in in number
   196: 	) is
   197: 		cursor config_files is
   198: 			select	id
   199: 			from	rhnConfigFile
   200: 			where	config_channel_id = config_channel_id_in;
   201: 	begin
   202: 		for config_file in config_files loop
   203: 			rhn_config.delete_file(config_file.id);
   204: 		end loop;
   205: 		delete from rhnConfigChannel where id = config_channel_id_in;
   206: 	end delete_channel;
   207: end rhn_config;