RHN_CONFIG
DDL scriptPackage source
Legend: 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: 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;