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