lib/pvl/hosts/update.sh
changeset 628 b10ad946d01d
parent 627 a81206440be2
child 629 7214fe5c6fac
--- a/lib/pvl/hosts/update.sh	Thu Feb 26 21:38:09 2015 +0200
+++ b/lib/pvl/hosts/update.sh	Thu Feb 26 22:36:05 2015 +0200
@@ -3,6 +3,9 @@
 UPDATE_SERIAL=
 UPDATE_RELOAD=
 
+. $LIB/pvl/hosts/dhcp.sh
+. $LIB/pvl/hosts/zone.sh
+
 function update_help {
     cat <<END
 Update:
@@ -34,7 +37,7 @@
 }
 
 function update_setup {
-    for dir in etc etc/zones etc/hosts; do
+    for dir in $ETC $ETC/zones $ETC/hosts; do
         [ -d $dir ] || die "$dir: missing source directory"
     done
     
@@ -52,67 +55,57 @@
 }
 
 function update_commit {
-    ## Commit
-    # pre-commit check
-    log "Testing hosts..."
-    for hosts in $(list_files etc/hosts); do
-        log_warn "TODO: check_hosts $hosts"
-    done
+    # TODO: pre-commit test host files
 
-    # commit, unless noop'd
     log "Commit..."
         commit  $SRV
 }
 
 function update_update {
-    if hg_modified etc; then
+    if commit_modified $SRV; then
         serial=$(unix_time)
         log_warn "Using local unix time for uncommited changes: $serial"
     else
-        serial=$(hg_time etc)
+        serial=$(commit_time $SRV)
         log_update "Using HG commit timestamp: $serial"
     fi
 
     ## Hosts
     log "Updating forward host zones..."
-    for zone in $(list_dirs etc/hosts/forward); do
-        update_hosts_forward    "var/zones/hosts/forward/$zone"     "$zone" \
-            etc/hosts/forward/$zone/*
+    for zone in $(list_dirs etc/zones/forward); do
+        update_hosts_forward "var/zones/forward/$zone" "etc/zones/forward/$zone/"
+    done
+
+    log "Updating reverse host zones..."
+    for zone in $(list_dirs etc/zones/reverse); do
+        update_hosts_reverse "var/zones/reverse/$zone" "etc/zones/reverse/$zone/"
     done
 
     log "Updating DHCP hosts..."
-    for hosts in $(list etc/hosts/dhcp); do
-        update_hosts_dhcp       "var/dhcp/hosts/$hosts.conf"        $hosts  \
-            $(expand_files "etc/hosts/dhcp/$hosts")
-    done
-
-    log "Updating reverse host zones..."
-    for zone in $(list_dirs etc/hosts/reverse); do
-        update_hosts_reverse    "var/zones/hosts/reverse/$zone"     "$zone" \
-            etc/hosts/reverse/$zone/*
+    for hosts in $(list etc/dhcp/hosts); do
+        update_hosts_dhcp "var/dhcp/hosts/$hosts.conf" "etc/dhcp/hosts/$hosts"
     done
 
     ## Zones
     log "Copying zone includes..."
     for zone in $(list_files etc/zones/includes); do
-        copy                "var/zones/includes/$zone"      "etc/zones/includes/$zone"
-    done
-
-    log "Updating zone serials..."
-    for zone in $(list_files etc/zones); do
-        update_serial       "var/serials/$zone"             $serial \
-            "etc/zones/$zone" $(zone_includes var/include-cache/$zone etc/zones/$zone var/zones/)
+        update_zone_include "var/zones/includes/$zone" "etc/zones/includes/$zone"
     done
 
     log "Updating zones..."
     for zone in $(list_files etc/zones); do
-        update_zone         "var/zones/$zone"               "etc/zones/$zone"       "var/serials/$zone" \
-            $(zone_includes var/include-cache/$zone etc/zones/$zone var/zones/)
+        zone_includes=$(zone_includes var/include-cache/$zone etc/zones/$zone var/zones/)
+
+        update_zone_serial "var/serials/$zone" $serial \
+            "etc/zones/$zone" $zone_includes
+
+        update_zone "var/zones/$zone" "etc/zones/$zone" "var/serials/$zone" \
+            $zone_includes
     done
 
     log "Updating DHCP confs..."
     for conf in $(list_files etc/dhcp); do
-        update_dhcp_conf    "var/dhcp/$conf"                "etc/dhcp/$conf"
+        update_dhcp_conf "var/dhcp/$conf" "etc/dhcp/$conf"
     done
 }
 
@@ -120,12 +113,12 @@
     ## Check
     log "Testing zones..."
     for zone in $(list_files etc/zones); do
-        check_zone          "var/zones/$zone"       $zone
+        test_zone "var/zones/$zone" $zone
     done
 
     log "Testing DHCP confs..."
-    for conf in var/dhcp/*.conf; do
-        check_dhcp          $conf
+    for conf in $(list_files var/dhcp); do
+        test_dhcp "var/dhcp/$conf"
     done
 
     log "Reload zones..."