X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/7bf0a6f36b82d90df87533e9d591ea545c2b4559..refs/heads/LOCKING:/dbck/phase2.dc diff --git a/dbck/phase2.dc b/dbck/phase2.dc index 28f6f92b..a9aea9d6 100644 --- a/dbck/phase2.dc +++ b/dbck/phase2.dc @@ -25,6 +25,7 @@ int id; EXEC SQL DECLARE csr201 CURSOR FOR SELECT cluster.name FROM cluster, mcmap WHERE cluster.clu_id=mcmap.clu_id AND mcmap.mach_id = :iid; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr201; while(1) { EXEC SQL FETCH csr201 INTO :name; @@ -52,6 +53,7 @@ int id; EXEC SQL DECLARE csr202 CURSOR FOR SELECT machine.name FROM machine, mcmap WHERE machine.mach_id=mcmap.mach_id AND mcmap.clu_id=:iid; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr202; while(1) { EXEC SQL FETCH csr202 INTO :name; @@ -116,6 +118,71 @@ int id; modified("users"); } + +mach_check(id, m, hint) +int id; +struct machine *m; +int hint; +{ + if (!hash_lookup(subnets, m->snet_id)) { + printf("Machine %s is on a non-existant subnet %d\n", + m->name, m->snet_id); + if (single_fix("Move to null-subnet", 1)) { + EXEC SQL BEGIN DECLARE SECTION; + int rowcount, iid = id; + EXEC SQL END DECLARE SECTION; + + EXEC SQL UPDATE machine SET snet_id=0 WHERE mach_id = :iid; + EXEC SQL INQUIRE_SQL(:rowcount = rowcount); + if (rowcount > 0) + printf("%d entr%s fixed\n", rowcount, rowcount==1?"y":"ies"); + else + printf("Not fixed\n"); + modified("machine"); + } + } + + switch (m->owner_type) { + case 'U': + if (!hash_lookup(users, m->owner_id)) { + printf("Machine %s has non-existant USER owner %d\n", + m->name, m->owner_id); + if (single_fix("Set to no owner", 1)) { + clear_mach_owner(m); + } + } + break; + case 'L': + if (!hash_lookup(lists, m->owner_id)) { + printf("Machine %s has non-existant LIST owner %d\n", + m->name, m->owner_id); + if (single_fix("Set to no owner", 1)) { + clear_mach_owner(m); + } + } + break; + } +} + + +clear_mach_owner(m) +struct machine *m; +{ + EXEC SQL BEGIN DECLARE SECTION; + int rowcount, id = m->mach_id; + EXEC SQL END DECLARE SECTION; + + EXEC SQL UPDATE machine SET owner_type='NONE', owner_id=0 + WHERE mach_id = :id; + EXEC SQL INQUIRE_SQL(:rowcount = rowcount); + if (rowcount > 0) + printf("%d entr%s fixed\n", rowcount, rowcount==1?"y":"ies"); + else + printf("Not fixed\n"); + modified("machine"); +} + + show_svc(id) int id; { @@ -127,6 +194,7 @@ int id; EXEC SQL DECLARE csr203 CURSOR FOR SELECT serv_label, serv_cluster FROM svc WHERE clu_id = :iid; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr203; while(1) { EXEC SQL FETCH csr203 INTO :label, :data; @@ -199,6 +267,7 @@ int id; EXEC SQL DECLARE csr204 CURSOR FOR SELECT member_type, member_id FROM imembers WHERE list_id = :iid AND direct=1; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr204; while(1) { EXEC SQL FETCH csr204 INTO :mtype, :mid; @@ -232,6 +301,7 @@ int id; EXEC SQL DECLARE csr205 CURSOR FOR SELECT list_id FROM imembers WHERE member_id = :iid AND member_type='USER' AND direct=1; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr205; while(1) { EXEC SQL FETCH csr205 INTO :lid; @@ -259,6 +329,7 @@ int id; EXEC SQL DECLARE csr206 CURSOR FOR SELECT list_id FROM imembers WHERE member_id = :iid AND member_type='LIST' AND direct=1; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr206; while(1) { EXEC SQL FETCH csr206 INTO :lid; @@ -286,6 +357,7 @@ int id; EXEC SQL DECLARE csr207 CURSOR FOR SELECT list_id FROM imembers WHERE member_id = :iid AND member_type='STRING' AND direct=1; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr207; while(1) { EXEC SQL FETCH csr207 INTO :lid; @@ -314,6 +386,7 @@ int id; EXEC SQL DECLARE csr208 CURSOR FOR SELECT list_id FROM imembers WHERE member_id = :iid AND member_type='KERBEROS' AND direct=1; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr208; while(1) { EXEC SQL FETCH csr208 INTO :lid; @@ -422,6 +495,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr209 CURSOR FOR SELECT service FROM serverhosts WHERE mach_id = :id; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr209; while(1) { EXEC SQL FETCH csr209 INTO :name; @@ -615,6 +689,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr210 CURSOR FOR SELECT filsys_id FROM fsgroup WHERE group_id = :id; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr210; while(1) { EXEC SQL FETCH csr210 INTO :id1; @@ -693,6 +768,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr211 CURSOR FOR SELECT group_id FROM fsgroup WHERE filsys_id = :id; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr211; while(1) { EXEC SQL FETCH csr211 INTO :id1; @@ -723,6 +799,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr212 CURSOR FOR SELECT filsys_id FROM quota WHERE entity_id = :id AND type='USER'; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr212; while(1) { EXEC SQL FETCH csr212 INTO :id1; @@ -750,6 +827,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr213 CURSOR FOR SELECT filsys_id FROM quota WHERE entity_id = :id AND type='GROUP'; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr213; while(1) { EXEC SQL FETCH csr213 INTO :id1; @@ -817,6 +895,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr214 CURSOR FOR SELECT entity_id, type FROM quota WHERE filsys_id = :id; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr214; while(1) { EXEC SQL FETCH csr214 INTO :id1, :type; @@ -853,6 +932,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr215 CURSOR FOR SELECT entity_id, type FROM quota WHERE filsys_id = :id; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr215; while(1) { EXEC SQL FETCH csr215 INTO :id1, :type; @@ -902,6 +982,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr216 CURSOR FOR SELECT name FROM servers WHERE acl_type='USER' and acl_id = :id; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr216; while(1) { EXEC SQL FETCH csr216 INTO :name; @@ -931,6 +1012,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr217 CURSOR FOR SELECT name FROM servers WHERE acl_type='LIST' AND acl_id = :id; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr217; while(1) { EXEC SQL FETCH csr217 INTO :name; @@ -1000,6 +1082,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr218 CURSOR FOR SELECT string_id FROM krbmap WHERE users_id = :id ; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr218; while(1) { EXEC SQL FETCH csr218 INTO :id1; @@ -1035,6 +1118,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr219 CURSOR FOR SELECT users_id FROM krbmap WHERE string_id = :id; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr219; while(1) { EXEC SQL FETCH csr219 INTO :id1; @@ -1069,6 +1153,7 @@ EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE csr220 CURSOR FOR SELECT name FROM palladium WHERE mach_id = :id; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr220; while(1) { EXEC SQL FETCH csr220 INTO :name; @@ -1104,11 +1189,15 @@ phase2() dprintf("Checking users...\n"); hash_step(users, pobox_check, NULL); + dprintf("Checking machines...\n"); + hash_step(machines, mach_check, NULL); + dprintf("Checking mcmap...\n"); sq1 = sq_create(); sq2 = sq_create(); EXEC SQL DECLARE csr221 CURSOR FOR SELECT mach_id, clu_id FROM mcmap; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr221; while(1) { EXEC SQL FETCH csr221 INTO :id1, :id2; @@ -1131,6 +1220,7 @@ phase2() sq1 = sq_create(); EXEC SQL DECLARE csr222 CURSOR FOR SELECT clu_id FROM svc; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr222; while(1) { EXEC SQL FETCH csr222 INTO :id1; @@ -1158,6 +1248,7 @@ phase2() EXEC SQL DECLARE csr223 CURSOR FOR SELECT list_id, member_type, member_id, ref_count, direct FROM imembers ORDER BY list_id; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr223; while(1) { EXEC SQL FETCH csr223 INTO :id1, :type, :id2, :id3, :id4; @@ -1191,6 +1282,7 @@ phase2() sq2 = sq_create(); EXEC SQL DECLARE csr224 CURSOR FOR SELECT name, acl_type, acl_id FROM servers; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr224; while(1) { EXEC SQL FETCH csr224 INTO :name, :type, :id1; @@ -1214,6 +1306,7 @@ phase2() sq = sq_create(); EXEC SQL DECLARE csr225 CURSOR FOR SELECT mach_id FROM serverhosts; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr225; while(1) { EXEC SQL FETCH csr225 INTO :id1; @@ -1240,6 +1333,7 @@ phase2() sq3 = sq_create(); EXEC SQL DECLARE csr226 CURSOR FOR SELECT group_id, filsys_id FROM fsgroup; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr226; while(1) { EXEC SQL FETCH csr226 INTO :id1, :id2; @@ -1264,6 +1358,7 @@ phase2() sq4 = sq_create(); EXEC SQL DECLARE csr227 CURSOR FOR SELECT entity_id, type, filsys_id, phys_id, quota FROM quota; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr227; while(1) { EXEC SQL FETCH csr227 INTO :id1, :type, :id2, :id3, :id4; @@ -1296,6 +1391,7 @@ phase2() dprintf("Checking hostaccess...\n"); EXEC SQL DECLARE csr228 CURSOR FOR SELECT mach_id, acl_type, acl_id FROM hostaccess; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr228; while(1) { EXEC SQL FETCH csr228 INTO :id1, :type, :id2; @@ -1323,6 +1419,7 @@ phase2() sq1 = sq_create(); EXEC SQL DECLARE csr229 CURSOR FOR SELECT mach_id FROM palladium; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr229; while(1) { EXEC SQL FETCH csr229 INTO :id1; @@ -1343,6 +1440,7 @@ phase2() sq2 = sq_create(); EXEC SQL DECLARE csr230 CURSOR FOR SELECT users_id, string_id FROM krbmap; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr230; while(1) { EXEC SQL FETCH csr230 INTO :id1, :id2; @@ -1363,6 +1461,7 @@ phase2() dprintf("Checking capacls...\n"); EXEC SQL DECLARE csr231 CURSOR FOR SELECT list_id, tag FROM capacls; + if (sqlca.sqlcode != 0) ingerr(&sqlca.sqlcode); EXEC SQL OPEN csr231; while(1) { EXEC SQL FETCH csr231 INTO :id1, :name;