author | Tero Marttila <tero.marttila@aalto.fi> |
Fri, 27 Feb 2015 18:07:32 +0200 | |
branch | 0.8 |
changeset 654 | 8069b08e90ac |
parent 650 | c707c3ee8665 |
child 664 | 10ac59f9d4e7 |
permissions | -rw-r--r-- |
627 | 1 |
update_GETOPTS='sSrR' |
2 |
||
3 |
UPDATE_SERIAL= |
|
4 |
UPDATE_RELOAD= |
|
648
8e3e6be9ac70
bin/pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
632
diff
changeset
|
5 |
UPDATE_INCLUDES= |
627 | 6 |
|
628
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
7 |
. $LIB/pvl/hosts/dhcp.sh |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
8 |
. $LIB/pvl/hosts/zone.sh |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
9 |
|
627 | 10 |
function update_help { |
11 |
cat <<END |
|
12 |
Update: |
|
13 |
-s force update serials |
|
14 |
-S do not update serial |
|
15 |
||
16 |
-r force reload zones/dhcp |
|
17 |
-R do not reload zones/dhcp |
|
18 |
END |
|
19 |
} |
|
20 |
||
21 |
function update_opt { |
|
22 |
local opt=$1 |
|
23 |
local optarg="$2" |
|
24 |
||
25 |
case $opt in |
|
26 |
s) UPDATE_SERIAL=1 ;; |
|
27 |
S) UPDATE_SERIAL=0 ;; |
|
28 |
||
29 |
r) UPDATE_RELOAD=1 ;; |
|
30 |
R) UPDATE_RELOAD=0 ;; |
|
648
8e3e6be9ac70
bin/pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
632
diff
changeset
|
31 |
|
8e3e6be9ac70
bin/pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
632
diff
changeset
|
32 |
F) UPDATE_INCLUDES=1 ;; |
627 | 33 |
n) |
34 |
UPDATE_SERIAL=0 |
|
35 |
UPDATE_RELOAD=0 |
|
648
8e3e6be9ac70
bin/pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
632
diff
changeset
|
36 |
UPDATE_INCLUDES=0 |
627 | 37 |
;; |
38 |
*) return 1 |
|
39 |
esac |
|
40 |
} |
|
41 |
||
42 |
function update_setup { |
|
654
8069b08e90ac
bin/update: fixup relative/absolute paths
Tero Marttila <tero.marttila@aalto.fi>
parents:
650
diff
changeset
|
43 |
for dir in etc etc/zones etc/hosts; do |
627 | 44 |
[ -d $dir ] || die "$dir: missing source directory" |
45 |
done |
|
46 |
||
654
8069b08e90ac
bin/update: fixup relative/absolute paths
Tero Marttila <tero.marttila@aalto.fi>
parents:
650
diff
changeset
|
47 |
apply_dir var |
627 | 48 |
|
654
8069b08e90ac
bin/update: fixup relative/absolute paths
Tero Marttila <tero.marttila@aalto.fi>
parents:
650
diff
changeset
|
49 |
for dir in var/dhcp var/zones var/include-cache var/serials; do |
627 | 50 |
apply_dir $dir |
51 |
done |
|
654
8069b08e90ac
bin/update: fixup relative/absolute paths
Tero Marttila <tero.marttila@aalto.fi>
parents:
650
diff
changeset
|
52 |
for dir in var/dhcp/hosts; do |
627 | 53 |
apply_dir $dir |
54 |
done |
|
654
8069b08e90ac
bin/update: fixup relative/absolute paths
Tero Marttila <tero.marttila@aalto.fi>
parents:
650
diff
changeset
|
55 |
for dir in var/zones/includes var/zones/forward var/zones/reverse; do |
627 | 56 |
apply_dir $dir |
57 |
done |
|
58 |
} |
|
59 |
||
60 |
function update_commit { |
|
628
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
61 |
# TODO: pre-commit test host files |
627 | 62 |
|
63 |
log "Commit..." |
|
64 |
commit $SRV |
|
65 |
} |
|
66 |
||
67 |
function update_update { |
|
628
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
68 |
if commit_modified $SRV; then |
627 | 69 |
serial=$(unix_time) |
70 |
log_warn "Using local unix time for uncommited changes: $serial" |
|
71 |
else |
|
628
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
72 |
serial=$(commit_time $SRV) |
632 | 73 |
log "Using commit timestamp: $serial" |
627 | 74 |
fi |
75 |
||
76 |
## Hosts |
|
77 |
log "Updating forward host zones..." |
|
628
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
78 |
for zone in $(list_dirs etc/zones/forward); do |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
79 |
update_hosts_forward "var/zones/forward/$zone" "etc/zones/forward/$zone/" |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
80 |
done |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
81 |
|
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
82 |
log "Updating reverse host zones..." |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
83 |
for zone in $(list_dirs etc/zones/reverse); do |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
84 |
update_hosts_reverse "var/zones/reverse/$zone" "etc/zones/reverse/$zone/" |
627 | 85 |
done |
86 |
||
87 |
log "Updating DHCP hosts..." |
|
628
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
88 |
for hosts in $(list etc/dhcp/hosts); do |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
89 |
update_hosts_dhcp "var/dhcp/hosts/$hosts.conf" "etc/dhcp/hosts/$hosts" |
627 | 90 |
done |
91 |
||
92 |
## Zones |
|
93 |
log "Copying zone includes..." |
|
94 |
for zone in $(list_files etc/zones/includes); do |
|
628
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
95 |
update_zone_include "var/zones/includes/$zone" "etc/zones/includes/$zone" |
627 | 96 |
done |
97 |
||
98 |
log "Updating zones..." |
|
99 |
for zone in $(list_files etc/zones); do |
|
648
8e3e6be9ac70
bin/pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
632
diff
changeset
|
100 |
update_zone_includes "var/include-cache/$zone" "etc/zones/$zone" |
8e3e6be9ac70
bin/pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
632
diff
changeset
|
101 |
|
8e3e6be9ac70
bin/pvl.dns-includes
Tero Marttila <tero.marttila@aalto.fi>
parents:
632
diff
changeset
|
102 |
zone_includes=$(cat "var/include-cache/$zone") |
628
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
103 |
|
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
104 |
update_zone_serial "var/serials/$zone" $serial \ |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
105 |
"etc/zones/$zone" $zone_includes |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
106 |
|
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
107 |
update_zone "var/zones/$zone" "etc/zones/$zone" "var/serials/$zone" \ |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
108 |
$zone_includes |
627 | 109 |
done |
110 |
||
111 |
log "Updating DHCP confs..." |
|
112 |
for conf in $(list_files etc/dhcp); do |
|
628
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
113 |
update_dhcp_conf "var/dhcp/$conf" "etc/dhcp/$conf" |
627 | 114 |
done |
115 |
} |
|
116 |
||
117 |
function update_reload { |
|
118 |
## Check |
|
119 |
log "Testing zones..." |
|
120 |
for zone in $(list_files etc/zones); do |
|
628
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
121 |
test_zone "var/zones/$zone" $zone |
627 | 122 |
done |
123 |
||
632 | 124 |
log "Reload zones..." |
125 |
reload_zones |
|
126 |
||
127 |
log "Testing DHCP..." |
|
628
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
128 |
for conf in $(list_files var/dhcp); do |
b10ad946d01d
update: refactor into modularized lib/pvl/**.sh layout
Tero Marttila <tero.marttila@aalto.fi>
parents:
627
diff
changeset
|
129 |
test_dhcp "var/dhcp/$conf" |
627 | 130 |
done |
131 |
||
632 | 132 |
log "Reload DHCP..." |
627 | 133 |
reload_dhcp |
134 |
} |
|
135 |
||
136 |
## Main entry point |
|
137 |
function update_main { |
|
138 |
## Setup source/output dirs |
|
139 |
update_setup |
|
140 |
||
141 |
## Commit source dirs |
|
142 |
update_commit |
|
143 |
||
144 |
## Update output from sources |
|
145 |
update_update |
|
146 |
||
147 |
## Reload output |
|
148 |
update_reload |
|
149 |
} |
|
650
c707c3ee8665
lib/pvl: move main bootstrapping code to pvl/hosts/update.sh to make bin even more trivial
Tero Marttila <tero.marttila@aalto.fi>
parents:
649
diff
changeset
|
150 |
|
c707c3ee8665
lib/pvl: move main bootstrapping code to pvl/hosts/update.sh to make bin even more trivial
Tero Marttila <tero.marttila@aalto.fi>
parents:
649
diff
changeset
|
151 |
# entry point |
c707c3ee8665
lib/pvl: move main bootstrapping code to pvl/hosts/update.sh to make bin even more trivial
Tero Marttila <tero.marttila@aalto.fi>
parents:
649
diff
changeset
|
152 |
MODULES=(log commit apply service test) |
c707c3ee8665
lib/pvl: move main bootstrapping code to pvl/hosts/update.sh to make bin even more trivial
Tero Marttila <tero.marttila@aalto.fi>
parents:
649
diff
changeset
|
153 |
MODULE=hosts |
c707c3ee8665
lib/pvl: move main bootstrapping code to pvl/hosts/update.sh to make bin even more trivial
Tero Marttila <tero.marttila@aalto.fi>
parents:
649
diff
changeset
|
154 |
MODULE_MAIN=update |
c707c3ee8665
lib/pvl: move main bootstrapping code to pvl/hosts/update.sh to make bin even more trivial
Tero Marttila <tero.marttila@aalto.fi>
parents:
649
diff
changeset
|
155 |
|
c707c3ee8665
lib/pvl: move main bootstrapping code to pvl/hosts/update.sh to make bin even more trivial
Tero Marttila <tero.marttila@aalto.fi>
parents:
649
diff
changeset
|
156 |
. $LIB/pvl/main.sh && main "$@" |