]> andersk Git - moira.git/blobdiff - dbck/phase2.dc
Diane Delgado's changes for a fixed table-locking order
[moira.git] / dbck / phase2.dc
index 28f6f92b6d9d73b0de69a95d349750305082892f..a9aea9d66787b0e217bcadd7da949293b0848dd7 100644 (file)
@@ -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;
This page took 0.044036 seconds and 4 git commands to generate.