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