lib/pvl/hosts/update.sh
changeset 628 b10ad946d01d
parent 627 a81206440be2
child 629 7214fe5c6fac
equal deleted inserted replaced
627:a81206440be2 628:b10ad946d01d
     1 update_GETOPTS='sSrR'
     1 update_GETOPTS='sSrR'
     2 
     2 
     3 UPDATE_SERIAL=
     3 UPDATE_SERIAL=
     4 UPDATE_RELOAD=
     4 UPDATE_RELOAD=
       
     5 
       
     6 . $LIB/pvl/hosts/dhcp.sh
       
     7 . $LIB/pvl/hosts/zone.sh
     5 
     8 
     6 function update_help {
     9 function update_help {
     7     cat <<END
    10     cat <<END
     8 Update:
    11 Update:
     9     -s      force update serials
    12     -s      force update serials
    32         *)  return 1
    35         *)  return 1
    33     esac
    36     esac
    34 }
    37 }
    35 
    38 
    36 function update_setup {
    39 function update_setup {
    37     for dir in etc etc/zones etc/hosts; do
    40     for dir in $ETC $ETC/zones $ETC/hosts; do
    38         [ -d $dir ] || die "$dir: missing source directory"
    41         [ -d $dir ] || die "$dir: missing source directory"
    39     done
    42     done
    40     
    43     
    41     apply_dir       $VAR
    44     apply_dir       $VAR
    42 
    45 
    50         apply_dir   $dir
    53         apply_dir   $dir
    51     done
    54     done
    52 }
    55 }
    53 
    56 
    54 function update_commit {
    57 function update_commit {
    55     ## Commit
    58     # TODO: pre-commit test host files
    56     # pre-commit check
       
    57     log "Testing hosts..."
       
    58     for hosts in $(list_files etc/hosts); do
       
    59         log_warn "TODO: check_hosts $hosts"
       
    60     done
       
    61 
    59 
    62     # commit, unless noop'd
       
    63     log "Commit..."
    60     log "Commit..."
    64         commit  $SRV
    61         commit  $SRV
    65 }
    62 }
    66 
    63 
    67 function update_update {
    64 function update_update {
    68     if hg_modified etc; then
    65     if commit_modified $SRV; then
    69         serial=$(unix_time)
    66         serial=$(unix_time)
    70         log_warn "Using local unix time for uncommited changes: $serial"
    67         log_warn "Using local unix time for uncommited changes: $serial"
    71     else
    68     else
    72         serial=$(hg_time etc)
    69         serial=$(commit_time $SRV)
    73         log_update "Using HG commit timestamp: $serial"
    70         log_update "Using HG commit timestamp: $serial"
    74     fi
    71     fi
    75 
    72 
    76     ## Hosts
    73     ## Hosts
    77     log "Updating forward host zones..."
    74     log "Updating forward host zones..."
    78     for zone in $(list_dirs etc/hosts/forward); do
    75     for zone in $(list_dirs etc/zones/forward); do
    79         update_hosts_forward    "var/zones/hosts/forward/$zone"     "$zone" \
    76         update_hosts_forward "var/zones/forward/$zone" "etc/zones/forward/$zone/"
    80             etc/hosts/forward/$zone/*
    77     done
       
    78 
       
    79     log "Updating reverse host zones..."
       
    80     for zone in $(list_dirs etc/zones/reverse); do
       
    81         update_hosts_reverse "var/zones/reverse/$zone" "etc/zones/reverse/$zone/"
    81     done
    82     done
    82 
    83 
    83     log "Updating DHCP hosts..."
    84     log "Updating DHCP hosts..."
    84     for hosts in $(list etc/hosts/dhcp); do
    85     for hosts in $(list etc/dhcp/hosts); do
    85         update_hosts_dhcp       "var/dhcp/hosts/$hosts.conf"        $hosts  \
    86         update_hosts_dhcp "var/dhcp/hosts/$hosts.conf" "etc/dhcp/hosts/$hosts"
    86             $(expand_files "etc/hosts/dhcp/$hosts")
       
    87     done
       
    88 
       
    89     log "Updating reverse host zones..."
       
    90     for zone in $(list_dirs etc/hosts/reverse); do
       
    91         update_hosts_reverse    "var/zones/hosts/reverse/$zone"     "$zone" \
       
    92             etc/hosts/reverse/$zone/*
       
    93     done
    87     done
    94 
    88 
    95     ## Zones
    89     ## Zones
    96     log "Copying zone includes..."
    90     log "Copying zone includes..."
    97     for zone in $(list_files etc/zones/includes); do
    91     for zone in $(list_files etc/zones/includes); do
    98         copy                "var/zones/includes/$zone"      "etc/zones/includes/$zone"
    92         update_zone_include "var/zones/includes/$zone" "etc/zones/includes/$zone"
    99     done
       
   100 
       
   101     log "Updating zone serials..."
       
   102     for zone in $(list_files etc/zones); do
       
   103         update_serial       "var/serials/$zone"             $serial \
       
   104             "etc/zones/$zone" $(zone_includes var/include-cache/$zone etc/zones/$zone var/zones/)
       
   105     done
    93     done
   106 
    94 
   107     log "Updating zones..."
    95     log "Updating zones..."
   108     for zone in $(list_files etc/zones); do
    96     for zone in $(list_files etc/zones); do
   109         update_zone         "var/zones/$zone"               "etc/zones/$zone"       "var/serials/$zone" \
    97         zone_includes=$(zone_includes var/include-cache/$zone etc/zones/$zone var/zones/)
   110             $(zone_includes var/include-cache/$zone etc/zones/$zone var/zones/)
    98 
       
    99         update_zone_serial "var/serials/$zone" $serial \
       
   100             "etc/zones/$zone" $zone_includes
       
   101 
       
   102         update_zone "var/zones/$zone" "etc/zones/$zone" "var/serials/$zone" \
       
   103             $zone_includes
   111     done
   104     done
   112 
   105 
   113     log "Updating DHCP confs..."
   106     log "Updating DHCP confs..."
   114     for conf in $(list_files etc/dhcp); do
   107     for conf in $(list_files etc/dhcp); do
   115         update_dhcp_conf    "var/dhcp/$conf"                "etc/dhcp/$conf"
   108         update_dhcp_conf "var/dhcp/$conf" "etc/dhcp/$conf"
   116     done
   109     done
   117 }
   110 }
   118 
   111 
   119 function update_reload {
   112 function update_reload {
   120     ## Check
   113     ## Check
   121     log "Testing zones..."
   114     log "Testing zones..."
   122     for zone in $(list_files etc/zones); do
   115     for zone in $(list_files etc/zones); do
   123         check_zone          "var/zones/$zone"       $zone
   116         test_zone "var/zones/$zone" $zone
   124     done
   117     done
   125 
   118 
   126     log "Testing DHCP confs..."
   119     log "Testing DHCP confs..."
   127     for conf in var/dhcp/*.conf; do
   120     for conf in $(list_files var/dhcp); do
   128         check_dhcp          $conf
   121         test_dhcp "var/dhcp/$conf"
   129     done
   122     done
   130 
   123 
   131     log "Reload zones..."
   124     log "Reload zones..."
   132         reload_zones
   125         reload_zones
   133 
   126