10 |
10 |
FZONE=""
|
11 |
11 |
# the file with dns authorization keys
|
12 |
12 |
KEYFILE=""
|
13 |
|
MAC2EUI64="/usr/bin/mac2eui64"
|
14 |
13 |
|
15 |
14 |
source /etc/default/snf-network
|
16 |
15 |
source /usr/lib/snf-network/common.sh
|
... | ... | |
19 |
18 |
exit 0
|
20 |
19 |
fi
|
21 |
20 |
|
22 |
|
update_dns () {
|
23 |
|
|
24 |
|
if [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_CREATE" ]; then
|
25 |
|
update_all add
|
26 |
|
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_REMOVE" ]; then
|
27 |
|
update_all delete
|
28 |
|
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_RENAME" ]; then
|
29 |
|
update_all delete
|
30 |
|
# Let's override a variable and add ourselves
|
31 |
|
GANETI_INSTANCE_NAME=$GANETI_INSTANCE_NEW_NAME
|
32 |
|
update_all add
|
33 |
|
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_STARTUP" ]; then
|
34 |
|
update_all add
|
35 |
|
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SHUTDOWN" ]; then
|
36 |
|
update_all delete
|
37 |
|
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_REBOOT" ]; then
|
38 |
|
update_all add
|
39 |
|
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SET_PARAMS" ]; then
|
40 |
|
update_all add
|
41 |
|
fi
|
42 |
|
|
43 |
|
}
|
44 |
|
|
45 |
|
|
46 |
21 |
# Query nameserver for entries related to the specific instance
|
47 |
22 |
# An example output is the following:
|
48 |
23 |
# www.google.com has address 173.194.113.114
|
... | ... | |
65 |
40 |
# because we do not know which nics have been modify
|
66 |
41 |
reset_dns () {
|
67 |
42 |
|
68 |
|
if [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SET_PARAMS" ]; then
|
69 |
|
query_dns
|
70 |
|
# This should remove the A, AAAA, CNAME entries
|
71 |
|
send_command "update delete $GANETI_INSTANCE_NAME.$FZONE"
|
72 |
|
for ip in $HOST_IP_ALL; do
|
73 |
|
get_rev4_info $ip
|
74 |
|
# This should remove the IPv4 reverse entry
|
75 |
|
send_command "update delete $RLPART.$RZONE"
|
76 |
|
done
|
77 |
|
for ip6 in $HOST_IP6_ALL; do
|
78 |
|
get_rev6_info $ip6
|
79 |
|
# This should remove the IPv6 reverse entry
|
80 |
|
send_command "update delete $R6LPART$R6ZONE."
|
81 |
|
done
|
82 |
|
fi
|
|
43 |
# This should remove the A, AAAA, CNAME entries
|
|
44 |
send_command "update delete $GANETI_INSTANCE_NAME.$FZONE"
|
|
45 |
for ip in $HOST_IP_ALL; do
|
|
46 |
get_rev4_info $ip
|
|
47 |
# This should remove the IPv4 reverse entry
|
|
48 |
send_command "update delete $RLPART.$RZONE"
|
|
49 |
done
|
|
50 |
for ip6 in $HOST_IP6_ALL; do
|
|
51 |
get_rev6_info $ip6
|
|
52 |
# This should remove the IPv6 reverse entry
|
|
53 |
send_command "update delete $R6LPART$R6ZONE."
|
|
54 |
done
|
|
55 |
|
|
56 |
}
|
|
57 |
|
|
58 |
rename_instance (){
|
|
59 |
|
|
60 |
for ip in $HOST_IP_ALL; do
|
|
61 |
get_rev4_info $ip
|
|
62 |
(
|
|
63 |
GANETI_INSTANCE_NAME=$GANETI_INSTANCE_NEW_NAME
|
|
64 |
IP=$ip
|
|
65 |
update_arecord add
|
|
66 |
update_ptrrecord add
|
|
67 |
)
|
|
68 |
done
|
|
69 |
for ip6 in $HOST_IP6_ALL; do
|
|
70 |
get_rev6_info $ip6
|
|
71 |
(
|
|
72 |
GANETI_INSTANCE_NAME=$GANETI_INSTANCE_NEW_NAME
|
|
73 |
EUI64=$ip6
|
|
74 |
update_aaaarecord add
|
|
75 |
update_ptr6record add
|
|
76 |
)
|
|
77 |
done
|
83 |
78 |
|
84 |
79 |
}
|
85 |
80 |
|
... | ... | |
93 |
88 |
exit 0
|
94 |
89 |
fi
|
95 |
90 |
|
96 |
|
# This runs only for instance modification
|
97 |
|
reset_dns
|
98 |
|
|
99 |
|
# If GANETI_INSTANCE_NIC_COUNT is not set then nothing happens
|
100 |
|
FIRST=0
|
101 |
|
LAST=$((GANETI_INSTANCE_NIC_COUNT - 1))
|
102 |
|
for idx in $(seq $FIRST $LAST); do
|
103 |
|
ip=GANETI_INSTANCE_NIC${idx}_IP
|
104 |
|
mac=GANETI_INSTANCE_NIC${idx}_MAC
|
105 |
|
mode=GANETI_INSTANCE_NIC${idx}_MODE
|
106 |
|
link=GANETI_INSTANCE_NIC${idx}_LINK
|
107 |
|
subnet=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET
|
108 |
|
subnet6=GANETI_INSTANCE_NIC${idx}_NETWORK_SUBNET6
|
109 |
|
tags=GANETI_INSTANCE_NIC${idx}_NETWORK_TAGS
|
110 |
|
eval IP=\$$ip
|
111 |
|
eval MAC=\$$mac
|
112 |
|
eval MODE=\$$mode
|
113 |
|
eval LINK=\$$link
|
114 |
|
eval SUBNET=\$$subnet
|
115 |
|
eval SUBNET6=\$$subnet6
|
116 |
|
eval TAGS=\$$tags
|
117 |
|
|
118 |
|
for tag in $TAGS; do
|
119 |
|
case $tag in
|
120 |
|
$DNS_TAG)
|
121 |
|
|
122 |
|
get_rev4_info "$IP"
|
123 |
|
get_eui64 "$MAC" "$SUBNET6"
|
124 |
|
get_rev6_info "$EUI64"
|
125 |
|
$SNF_NETWORK_LOG dnshook "update dns for $GANETI_INSTANCE_NAME $IP $EUI64"
|
126 |
|
update_dns
|
127 |
|
|
128 |
|
;;
|
129 |
|
esac
|
130 |
|
|
131 |
|
done
|
132 |
|
|
133 |
|
done
|
|
91 |
if [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_REMOVE" ]; then
|
|
92 |
query_dns
|
|
93 |
reset_dns
|
|
94 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_RENAME" ]; then
|
|
95 |
query_dns
|
|
96 |
reset_dns
|
|
97 |
rename_instance
|
|
98 |
elif [ "x$GANETI_OP_CODE" = "xOP_INSTANCE_SHUTDOWN" ]; then
|
|
99 |
query_dns
|
|
100 |
reset_dns
|
|
101 |
fi
|