classify-users: determine type of Athena accounts
[user/alex/software/my-snippets.git] / list-of-lists-updater
index 1ad1549ca80ae9544cbc816e03d665306a461857..756dae927064ec5dc7b2ed7c2a0f80df39edaa96 100755 (executable)
@@ -11,33 +11,43 @@ prev=${prev:-ua-lists}
 anti=${anti:-ua-foreign-lists}
 nativepat=${nativepat:-ua}
 
+function prefix {
+    #echo "$@"
+    "$@"
+}
+
 function add_lists
 {
     (
-    for list in $(blanche $prev | grep LIST | cut -d : -f 2); do # for each list we already know about
+    lists=$(blanche $prev | grep LIST | cut -d : -f 2)
+    for list in $lists; do # for each list we already know about
         # Add a list's sublists
         for newlist in $(blanche $list | grep LIST | cut -d : -f 2); do
-            blanche $prev -a $newlist;
+            prefix blanche $prev -a $newlist;
         done;
         # Add a list's owner and memacl
         owner=$(athrun ops qy -s -f ace_name glin $list)
         towner=$(athrun ops qy -s -f ace_type glin $list)
         if [[ "$towner" == "LIST" ]]; then
-            blanche $prev -a $owner
+            prefix blanche $prev -a $owner
         fi
         macl=$(athrun ops qy -s -f memace_name glin $list)
         tmacl=$(athrun ops qy -s -f memace_type glin $list)
         if [[ "$tmacl" == "LIST" ]]; then
-            blanche $prev -a $macl
+            prefix blanche $prev -a $macl
         fi
+        # Add stuff this owns
+        owned=$(athrun ops qy -s get_ace_use list $list | grep -v ^$prev\$ | grep LIST | cut -d " " -f 2)
+        for newlist in $owned; do
+            prefix blanche $prev -a $newlist;
+        done;
     done
-    ) 2>&1 | grep -v "Record already exists"
+    ) 2>&1 | grep -v "Record already exists" | grep -v "moira (query): No records in database match query"
 }
 
 echo Current members: $(blanche $prev -m | wc)
 echo Expanding out lists
 add_lists
-add_lists
 echo New members: $(blanche $prev -m | wc)
 echo Removing foreign lists
 for list in $(blanche $anti | grep LIST | cut -d : -f 2); do blanche $prev -d $list; done
@@ -45,4 +55,4 @@ echo Finalized members: $(blanche $prev -m | wc)
 
 echo 
 echo Likely foreign members
-blanche $prev | grep LIST: | sed -e "s/^LIST://" | grep -v $nativepat
+blanche $prev | grep LIST: | sed -e "s/^LIST://" | egrep -v "$nativepat"