lib/update.operations
changeset 589 482d06935d96
parent 587 620f4594a09d
child 591 5a0335960591
equal deleted inserted replaced
588:21b33b9090d0 589:482d06935d96
    26 
    26 
    27         do_update $out \
    27         do_update $out \
    28             cat $ROOT/$src
    28             cat $ROOT/$src
    29     else
    29     else
    30         log_skip "Copying $out <- $src: not changed"
    30         log_skip "Copying $out <- $src: not changed"
       
    31     fi
       
    32 }
       
    33 
       
    34 ## Run check-command on given file, outputting results:
       
    35 #
       
    36 #   check_generic   $src    $cmd $args...
       
    37 #
       
    38 function check_generic {
       
    39     local src=$1; shift
       
    40     local cmd=$1; shift
       
    41 
       
    42     if cmd_test $cmd -q "$@"; then
       
    43         log_skip    "Check $src: OK"
       
    44 
       
    45     else
       
    46         log_error   "  Check $src: Failed"
       
    47 
       
    48         indent "    " $cmd "$@"
       
    49 
       
    50         exit 1
    31     fi
    51     fi
    32 }
    52 }
    33 
    53 
    34 ## Hosts
    54 ## Hosts
    35 ## Update hosts from verbatim from input zone data:
    55 ## Update hosts from verbatim from input zone data:
   272 # Defaults to the global $DHCPD_CONF.
   292 # Defaults to the global $DHCPD_CONF.
   273 # Fails if the check fails.
   293 # Fails if the check fails.
   274 function check_dhcp {
   294 function check_dhcp {
   275     local conf=${1:-$DHCPD_CONF}
   295     local conf=${1:-$DHCPD_CONF}
   276 
   296 
   277     local cmd=($DHCPD -cf $conf -t)
   297     check_generic $conf \
   278 
   298         $DHCPD -cf $conf -t
   279     if "${cmd[@]}" -q; then
       
   280         log_skip    "Check $conf: OK"
       
   281 
       
   282     else
       
   283         log_error   "  Check $conf: Failed"
       
   284 
       
   285         indent "    " "${cmd[@]}"
       
   286 
       
   287         exit 1
       
   288     fi
       
   289 }
   299 }
   290 
   300 
   291 ## Test DHCP configuration of given settings/dhcp using check_dhcp $DHCP_DATA/$host.conf:
   301 ## Test DHCP configuration of given settings/dhcp using check_dhcp $DHCP_DATA/$host.conf:
   292 #
   302 #
   293 #   check_dhcp_conf     $conf
   303 #   check_dhcp_conf     $conf
   294 #
   304 #
   295 function check_dhcp_conf {
   305 function check_dhcp_conf {
   296     local conf=$1
   306     local conf=$1;
   297 
   307 
   298     check_dhcp $DHCP_DATA/$conf.conf
   308     check_dhcp $DHCP_DATA/$conf.conf
   299 }
   309 }
   300 
   310 
       
   311 ## Test DHCP hosts source configuration for invalid fixed-address stanzas:
       
   312 #
       
   313 #   check_dhcp_hosts    $hosts_conf
       
   314 #
       
   315 function check_dhcp_hosts {
       
   316     local hosts=$1
       
   317    
       
   318     # XXX: still too unclear
       
   319     local src=$hosts #$DHCP_DATA/$hosts.conf
       
   320 
       
   321     # set in do_reload_zones below
       
   322     if [ $RELOAD_ZONES ]; then
       
   323         check_generic $src \
       
   324             $BIN/check-dhcp-hosts $DHCP_FILE_ARGS $ROOT/$src
       
   325     else
       
   326         log_noop "Check $src: skipped; did not reload DNS zones"
       
   327     fi
       
   328 }
       
   329 
   301 # Run rndc reload
   330 # Run rndc reload
   302 function do_reload {
   331 function do_reload_zones {
   303     # run
   332     # run
   304     indent "        rndc: " \
   333     indent "        rndc: " \
   305         $RNDC reload
   334         $RNDC reload
       
   335 
       
   336     # set flag
       
   337     RELOAD_ZONES=y
   306 }
   338 }
   307 
   339 
   308 ## Load update zonefiles into bind:
   340 ## Load update zonefiles into bind:
   309 #
   341 #
   310 #   reload_zones    
   342 #   reload_zones    
   314     local msg="Reload zones"
   346     local msg="Reload zones"
   315 
   347 
   316     if [ $RELOAD_FORCE ]; then
   348     if [ $RELOAD_FORCE ]; then
   317         log_force  "$msg..."
   349         log_force  "$msg..."
   318         
   350         
   319         do_reload
   351         do_reload_zones
   320 
   352 
   321     elif [ $RELOAD_NOOP ]; then
   353     elif [ $RELOAD_NOOP ]; then
   322         log_noop    "$msg: skipped"
   354         log_noop    "$msg: skipped"
   323     
   355     
   324     elif [ ! -r $RNDC_KEY ]; then
   356     elif [ ! -r $RNDC_KEY ]; then
   328 
   360 
   329     else
   361     else
   330         log_update  "$msg..."
   362         log_update  "$msg..."
   331 
   363 
   332         # run
   364         # run
   333         do_reload
   365         do_reload_zones
       
   366     fi
       
   367 }
       
   368 
       
   369 ## Reload DHCP by restarting it, if running:
       
   370 #
       
   371 #   do_reload_dhcp
       
   372 #
       
   373 # Does NOT restart dhcp if it is not running (status).
       
   374 function do_reload_dhcp {
       
   375     if cmd_test $DHCPD_INIT status >/dev/null; then
       
   376         cmd $DHCPD_INIT restart
       
   377     else
       
   378         log_warn "dhcpd not running; did not restart"
       
   379     fi
       
   380 }
       
   381 
       
   382 ## Reload dhcp hosts
       
   383 #
       
   384 #   reload_dhcp
       
   385 #
       
   386 # noop's if we haven't reloaded zones
       
   387 function reload_dhcp {
       
   388     local msg="Reload DHCP hosts"
       
   389 
       
   390     if [ $RELOAD_FORCE ]; then
       
   391         log_force  "$msg..."
       
   392         
       
   393         do_reload_dhcp
       
   394 
       
   395     elif [ $RELOAD_NOOP ]; then
       
   396         log_noop    "$msg: skipped"
       
   397     
       
   398     else
       
   399         log_update  "$msg..."
       
   400 
       
   401         # run
       
   402         do_reload_dhcp
   334     fi
   403     fi
   335 }
   404 }
   336 
   405 
   337 ## Perform `hg commit` for $DATA
   406 ## Perform `hg commit` for $DATA
   338 function do_commit {
   407 function do_commit {