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_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: 
     9: 	function insert_revision (
    10: 		revision_in in number,
    11: 		config_file_id_in in number,
    12: 		config_content_id_in in number,
    13: 		config_info_id_in in number,
    14:       config_file_type_id_in number := 1
    15: 	) return number;
    16: 
    17: 	procedure delete_revision (
    18: 		config_revision_id_in in number,
    19: 		org_id_in in number := -1
    20: 	);
    21: 
    22: 	function get_latest_revision (
    23: 		config_file_id_in in number
    24: 	) return number;
    25: 
    26: 	function insert_file (
    27: 		config_channel_id_in in number,
    28: 		name_in in varchar2
    29: 	) return number;
    30: 
    31: 	procedure delete_file (
    32: 		config_file_id_in in number
    33: 	);
    34: 
    35: 	function insert_channel (
    36: 		org_id_in in number,
    37: 		type_in in varchar2,
    38: 		name_in in varchar2,
    39: 		label_in in varchar2,
    40: 		description_in in varchar2
    41: 	) return number;
    42: 
    43: 	procedure delete_channel (
    44: 		config_channel_id_in in number
    45: 	);
    46: end rhn_config;

Package body source

Legend: comment string keyword reserved word operator
     1: package body
     2: rhn_config
     3: is
     4: 	-- just a stub for now
     5: 	procedure prune_org_configs (
     6: 		org_id_in in number,
     7: 		total_in in number
     8: 	) is
     9: 	begin
    10: 		null;
    11: 	end prune_org_configs;
    12: 
    13: 	function insert_revision (
    14: 		revision_in in number,
    15: 		config_file_id_in in number,
    16: 		config_content_id_in in number,
    17: 		config_info_id_in in number,
    18:       config_file_type_id_in in number := 1
    19: 	) return number is
    20: 		retval number;
    21: 
    22: 	begin
    23: 
    24: 		insert into rhnConfigRevision(id, revision, config_file_id,
    25: 				config_content_id, config_info_id, config_file_type_id
    26: 			) values (
    27: 				rhn_confrevision_id_seq.nextval, revision_in, config_file_id_in,
    28: 				config_content_id_in, config_info_id_in, config_file_type_id_in
    29: 			)
    30: 			returning id into retval;
    31: 
    32: 		return retval;
    33: 	end insert_revision;
    34: 
    35: 	procedure delete_revision (
    36: 		config_revision_id_in in number,
    37: 		org_id_in in number := -1
    38: 	) is
    39: 		cfid number;
    40: 		ccid number;
    41: 		latest_crid number;
    42: 		others number := 0;
    43: 	begin
    44: 		select	cr.config_content_id
    45: 		into	ccid
    46: 		from	rhnConfigRevision cr
    47: 		where	cr.id = config_revision_id_in;
    48: 
    49: 		-- right now this will set rhnActionConfigFileName.config_revision_id
    50: 		-- to null, and will remove an entry from rhnActionConfigRevision.
    51: 		-- might we want to prune and/or kill the action in some way?  maybe
    52: 		-- mark it failed or something?
    53:                 -- this delete also triggers rhn_confrevision_del_trig() which
    54:                 -- a) updates rhnSnapshot.invalid to 'cr_removed'
    55:                 -- and b) deletes snapshots from rhnSnapshotConfigRevision
    56: 		delete from rhnConfigRevision where id = config_revision_id_in;
    57: 
    58: 		-- now prune away content if there aren't any other revisions pointing
    59: 		-- at it
    60:                 select count(*)
    61:                   into others
    62:                   from rhnConfigRevision
    63:                  where config_content_id = ccid;
    64: 		if others = 0 then
    65: 			delete from rhnConfigContent where id = ccid;
    66: 		end if;
    67: 
    68: 		-- now make sure rhnConfigFile points at a valid revision;
    69: 		-- if there isn't one, we're deleting it, _unless_ org_id_in is
    70: 		-- >= 0, in which case we're in the delete trigger anyway
    71: 		if org_id_in < 0 then
    72: 			select	cf.latest_config_revision_id,
    73: 					cf.id
    74: 			into	latest_crid,
    75: 					cfid
    76: 			from	rhnConfigFile cf,
    77: 					rhnConfigRevision cr
    78: 			where	cr.id = config_revision_id_in
    79: 				and cr.config_file_id = cf.id;
    80: 
    81: 			if latest_crid = config_revision_id_in then
    82: 				latest_crid := rhn_config.get_latest_revision(cfid);
    83: 				if latest_crid is not null then
    84: 					update rhnConfigFile set latest_config_revision_id = latest_crid
    85: 						where id = cfid;
    86: 				else
    87: 					delete from rhnConfigFile where id = cfid;
    88: 				end if;
    89: 			end if;
    90: 
    91: 		end if;
    92: 	end delete_revision;
    93: 
    94: 	function get_latest_revision (
    95: 		config_file_id_in in number
    96: 	) return number is
    97: 		cursor revisions is
    98: 			select	cr.id
    99: 			from	rhnConfigRevision cr
   100: 			where	cr.config_file_id = config_file_id_in
   101: 			order by revision desc;
   102: 	begin
   103: 		for revision in revisions loop
   104: 			return revision.id;
   105: 		end loop;
   106: 		return null;
   107: 	end get_latest_revision;
   108: 
   109: 	function insert_file (
   110: 		config_channel_id_in in number,
   111: 		name_in in varchar2
   112: 	) return number is
   113: 		retval number;
   114: 	begin
   115: 		select	rhn_conffile_id_seq.nextval
   116: 		into	retval
   117: 		from	dual;
   118: 
   119: 		insert into rhnConfigFile(id, config_channel_id, config_file_name_id,
   120: 				state_id
   121: 			) (
   122: 				select	retval,
   123: 						config_channel_id_in,
   124: 						lookup_config_filename(name_in),
   125: 						id
   126: 				from	rhnConfigFileState
   127: 				where	label = 'alive'
   128: 			);
   129: 
   130: 		return retval;
   131: 	end insert_file;
   132: 
   133: 	procedure delete_file (
   134: 		config_file_id_in in number
   135: 	) is
   136: 		cursor revisions is
   137: 			select	cr.id, cc.org_id
   138: 			from	rhnConfigChannel cc,
   139: 					rhnConfigRevision cr,
   140: 					rhnConfigFile cf
   141: 			where	cf.id = config_file_id_in
   142: 				and cf.config_channel_id = cc.id
   143: 				and cr.config_file_id = cf.id;
   144: 	begin
   145: 		for revision in revisions loop
   146: 			rhn_config.delete_revision(revision.id, revision.org_id);
   147: 		end loop;
   148: 		delete from rhnConfigFile where id = config_file_id_in;
   149: 	end delete_file;
   150: 
   151: 	function insert_channel (
   152: 		org_id_in in number,
   153: 		type_in in varchar2,
   154: 		name_in in varchar2,
   155: 		label_in in varchar2,
   156: 		description_in in varchar2
   157: 	) return number is
   158: 		retval number;
   159: 	begin
   160: 		select	rhn_confchan_id_seq.nextval
   161: 		into	retval
   162: 		from	dual;
   163: 
   164: 		insert into rhnConfigChannel(id, org_id, confchan_type_id,
   165: 				name, label, description
   166: 			) (
   167: 				select	retval,
   168: 						org_id_in,
   169: 						cct.id,
   170: 						name_in,
   171: 						label_in,
   172: 						description_in
   173: 				from	rhnConfigChannelType cct
   174: 				where	label = type_in
   175: 			);
   176: 		return retval;
   177: 	end insert_channel;
   178: 
   179: 	procedure delete_channel (
   180: 		config_channel_id_in in number
   181: 	) is
   182: 		cursor config_files is
   183: 			select	id
   184: 			from	rhnConfigFile
   185: 			where	config_channel_id = config_channel_id_in;
   186: 	begin
   187: 		for config_file in config_files loop
   188: 			rhn_config.delete_file(config_file.id);
   189: 		end loop;
   190: 		delete from rhnConfigChannel where id = config_channel_id_in;
   191: 	end delete_channel;
   192: end rhn_config;