author | Tero Marttila <tero.marttila@aalto.fi> |
Mon, 02 Mar 2015 20:02:14 +0200 | |
changeset 701 | 8ddc141af313 |
parent 676 | 775747ebdc45 |
child 715 | 76ed62924d50 |
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 |
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
|
79 |
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
|
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 |
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
|
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..." |
|
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
|
128 |
test_dhcp |
627 | 129 |
|
632 | 130 |
log "Reload DHCP..." |
627 | 131 |
reload_dhcp |
132 |
} |
|
133 |
||
134 |
## Main entry point |
|
135 |
function update_main { |
|
136 |
## Setup source/output dirs |
|
137 |
update_setup |
|
138 |
||
139 |
## Commit source dirs |
|
140 |
update_commit |
|
141 |
||
142 |
## Update output from sources |
|
143 |
update_update |
|
144 |
||
145 |
## Reload output |
|
146 |
update_reload |
|
147 |
} |
|
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
|
148 |
|
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 |
# 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
|
150 |
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
|
151 |
MODULE=hosts |
676
775747ebdc45
lib/pvl: fix MAIN_MODULE help/getopts/opt
Tero Marttila <terom@paivola.fi>
parents:
664
diff
changeset
|
152 |
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
|
153 |
|
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 |
. $LIB/pvl/main.sh && main "$@" |