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