272 |
280 |
273 function hg_commit { |
281 function hg_commit { |
274 local msg=$2 |
282 local msg=$2 |
275 local user_opt=$(hg_user) |
283 local user_opt=$(hg_user) |
276 |
284 |
277 log_debug "commit: $user_opt: $msg" |
285 debug "$user_opt: $msg" |
278 hg commit $user_opt -m "$msg" |
286 hg commit $user_opt -m "$msg" |
279 } |
287 } |
280 |
288 |
281 |
289 |
282 ## functions |
290 ## functions |
283 function check_update { |
291 function check_update { |
284 # target |
292 # target |
285 local dst=$1; shift |
293 local dst=$1; shift |
286 |
294 |
287 log_debug "check_update: $dst" |
295 debug "$dst" |
288 |
296 |
289 # need update? |
297 # need update? |
290 local update= |
298 local update= |
291 |
299 |
292 if [ ! -e $dst ] || [ $UPDATE_FORCE ]; then |
300 if [ ${#@} == 0 ]; then |
293 log_debug " update forced" |
301 debug " update: unknown deps" |
|
302 update=y |
|
303 |
|
304 elif [ ! -e $dst ]; then |
|
305 debug " update: dest missing" |
|
306 update=y |
|
307 |
|
308 elif [ $UPDATE_FORCE ]; then |
|
309 debug " update: forced" |
294 update=y |
310 update=y |
295 fi |
311 fi |
296 |
312 |
297 # check deps |
313 # check deps |
298 for dep in "$@"; do |
314 for dep in "$@"; do |
302 # check |
318 # check |
303 if [ ! -e $ROOT/$dep ]; then |
319 if [ ! -e $ROOT/$dep ]; then |
304 fail "$dst: Missing source: $dep" |
320 fail "$dst: Missing source: $dep" |
305 |
321 |
306 elif [ $ROOT/$dst -ot $ROOT/$dep ]; then |
322 elif [ $ROOT/$dst -ot $ROOT/$dep ]; then |
307 log_debug " changed: $dep" |
323 debug " update: $dep" |
308 update=y |
324 update=y |
|
325 else |
|
326 debug " check: $dep" |
309 fi |
327 fi |
310 done |
328 done |
311 |
329 |
312 [ ! $update ] && log_debug " up-to-date" |
330 [ ! $update ] && debug " up-to-date" |
313 |
331 |
314 # return |
332 # return |
315 [ $update ] |
333 [ $update ] |
316 } |
334 } |
317 |
335 |
318 function do_update { |
336 function do_update { |
319 local dst=$1; shift |
337 local dst=$1; shift |
320 local tmp=$dst.new |
338 local tmp=$dst.new |
321 |
339 |
322 log_debug "update: $dst" |
340 debug "$dst" |
323 cmd "$@" > $ROOT/$tmp |
341 cmd "$@" > $ROOT/$tmp |
324 |
342 |
325 # compare |
343 # compare |
326 if [ -e $ROOT/$dst ] && [ $UPDATE_DIFF ]; then |
344 if [ -e $ROOT/$dst ] && [ $UPDATE_DIFF ]; then |
327 log_debug " changes:" |
345 debug " changes:" |
328 |
346 |
329 # terse |
347 # terse |
330 indent " " diff --unified=1 $ROOT/$dst $ROOT/$tmp || true |
348 indent " " diff --unified=1 $ROOT/$dst $ROOT/$tmp || true |
331 fi |
349 fi |
332 |
350 |
333 if [ $UPDATE_NOOP ]; then |
351 if [ $UPDATE_NOOP ]; then |
334 # cleanup |
352 # cleanup |
335 log_debug " no-op" |
353 debug " no-op" |
336 |
354 |
337 cmd rm $ROOT/$tmp |
355 cmd rm $ROOT/$tmp |
338 else |
356 else |
339 # commit |
357 # commit |
340 log_debug " update" |
358 debug " commit" |
341 |
359 |
342 cmd mv $ROOT/$tmp $ROOT/$dst |
360 cmd mv $ROOT/$tmp $ROOT/$dst |
343 fi |
361 fi |
344 } |
362 } |
345 |
363 |
420 fi |
438 fi |
421 } |
439 } |
422 |
440 |
423 ## actions |
441 ## actions |
424 # serial |
442 # serial |
425 function update_serial { |
443 function do_update_serial { |
426 local zone=$1; shift |
444 local serial=$1 |
427 |
445 |
428 local serial=$SERIALS/$zone.serial |
|
429 |
|
430 # read |
446 # read |
431 local old=$(test -e $ROOT/$serial && cat $ROOT/$serial || echo '') |
447 local old=$(test -e $ROOT/$serial && cat $ROOT/$serial || echo '') |
432 |
448 |
433 log_info "Updating $serial..." |
|
434 |
449 |
435 cmd $BIN/update-serial $ROOT/$serial |
450 cmd $BIN/update-serial $ROOT/$serial |
436 |
451 |
437 # read |
452 # read |
438 local new=$(cat $ROOT/$serial) |
453 local new=$(cat $ROOT/$serial) |
439 |
454 |
440 log_debug " $old -> $new" |
455 debug " $old -> $new" |
|
456 } |
|
457 |
|
458 function update_serial { |
|
459 local zone=$1; shift |
|
460 |
|
461 local serial=$SERIALS/$zone.serial |
|
462 |
|
463 # test |
|
464 if ! check_update $serial "$@"; then |
|
465 log_skip "Updating $serial: not changed" |
|
466 |
|
467 elif [ $SERIAL_NOUPDATE ]; then |
|
468 log_skip "Updating $serial: skipped" |
|
469 |
|
470 else |
|
471 log_info "Updating $serial..." |
|
472 |
|
473 do_update_serial $serial |
|
474 fi |
441 } |
475 } |
442 |
476 |
443 function link_serial { |
477 function link_serial { |
444 local zone=$1 |
478 local zone=$1 |
445 local base=$2 |
479 local base=$2 |
626 copy_zone includes paivola:external paivola.zone.external |
660 copy_zone includes paivola:external paivola.zone.external |
627 copy_zone includes paivola.auto paivola.zone.auto |
661 copy_zone includes paivola.auto paivola.zone.auto |
628 copy_zone includes paivola.services paivola.zone.services |
662 copy_zone includes paivola.services paivola.zone.services |
629 |
663 |
630 # serials |
664 # serials |
631 if [ $SERIAL_NOUPDATE ]; then |
665 log "Updating serials..." |
632 log "Updating serials: skipped" |
666 |
633 |
667 # zone *deps |
634 else |
668 update_serial pvl $ZONES/hosts/pvl $DATA/pvl.zone |
635 log "Updating serials..." |
669 update_serial 10 $ZONES/hosts/10 $DATA/10.zone |
636 |
670 update_serial 192.168 $ZONES/hosts/192.168 $DATA/192.168.zone |
637 # zone base |
671 |
638 update_serial pvl |
672 update_serial paivola \ |
639 link_serial 10 pvl |
673 $ZONES/hosts/paivola:* \ |
640 link_serial 192.168 pvl |
674 $DATA/paivola.zone \ |
641 |
675 $ZONES/includes/paivola:* \ |
642 update_serial paivola |
676 $ZONES/includes/paivola.* |
643 update_serial 194.197.235 |
677 |
644 fi |
678 update_serial 194.197.235 \ |
|
679 $ZONES/hosts/194.197.235 \ |
|
680 $DATA/194.197.235.zone |
645 |
681 |
646 # zones |
682 # zones |
647 log "Updating zones..." |
683 log "Updating zones..." |
648 # view zone base |
684 # view zone base |
649 update_zone internal pvl |
685 update_zone internal pvl |