-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add get_graph service to fetch minigraph automatically #288
Changes from 2 commits
128d31a
9678062
71dfb98
64942c8
dd8a3ff
4c4b8e7
e79ea20
aad5f39
3a972f6
02d8676
33277c4
fb0c25c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# Configuration file for /sbin/dhclient, which is included in Debian's | ||
# dhcp3-client package. | ||
# | ||
# This is a sample configuration file for dhclient. See dhclient.conf's | ||
# man page for more information about the syntax of this file | ||
# and a more comprehensive list of the parameters understood by | ||
# dhclient. | ||
# | ||
# Normally, if the DHCP server provides reasonable information and does | ||
# not leave anything out (like the domain name, for example), then | ||
# few changes must be made to this file, if any. | ||
# | ||
|
||
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; | ||
option snmp-community code 224 = text; | ||
option minigraph-service-url code 225 = text; | ||
|
||
send host-name = gethostname(); | ||
request subnet-mask, broadcast-address, time-offset, routers, | ||
domain-name, domain-name-servers, domain-search, host-name, | ||
dhcp6.name-servers, dhcp6.domain-search, | ||
netbios-name-servers, netbios-scope, interface-mtu, | ||
rfc3442-classless-static-routes, ntp-servers, snmp-community, minigraph-service-url; | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
case $reason in | ||
BOUND|RENEW|REBIND|REBOOT) | ||
if [ -n "${new_minigraph_service_url}" ]; then | ||
echo $new_minigraph_service_url > /etc/sonic/graph_service_url | ||
else | ||
if [ !-f "/etc/sonic/graph_service_url"]; then | ||
echo "N/A" > /etc/sonic/graph_service_url | ||
fi | ||
fi | ||
;; | ||
esac |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,19 @@ | ||
#!/bin/bash | ||
# This script is to update hostname of the system. | ||
|
||
if [ "$reason" != BOUND ] && [ "$reason" != RENEW ] \ | ||
&& [ "$reason" != REBIND ] && [ "$reason" != REBOOT ] | ||
if [ "$reason" = BOUND ] && ["$reason" != RENEW ] \ | ||
&& ["$reason" != REBIND ] && ["$reason" != REBOOT ] | ||
then | ||
exit 0 | ||
fi | ||
|
||
current_host_name=`hostname -s` | ||
|
||
if [ "$current_host_name" != "$new_host_name" ] | ||
if [ "$current_host_name" != "$new_host_name" ] && [ ! -z "$new_host_name" ] | ||
then | ||
echo $new_host_name > /etc/hostname | ||
line_to_replace=`grep 127.0.0.1.*$current_host_name /etc/hosts` | ||
new_line=`echo $line_to_replace | sed "s/$current_host_name/$new_host_name/"` | ||
sed -i "s/$line_to_replace/$new_line/" /etc/hosts | ||
|
||
hostname -F /etc/hostname | ||
sed -i "/\s$current_host_name$/d" /etc/hosts | ||
echo "127.0.0.1 $new_host_name" >> /etc/hosts | ||
fi | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why are we changing this file at all? #ByDesign There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. From observation this bash will be called twice in a row sometimes, "oldhostname" -> "" and "" -> "newhostname". Old implementation is not working correctly under these cases. In reply to: 100569696 [](ancestors = 100569696) |
||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
case $reason in | ||
BOUND|RENEW|REBIND|REBOOT) | ||
if [ -n "${new_snmp_community}" ]; then | ||
if [ -f /etc/sonic/snmp.yml ]; then | ||
sed -i "s/^snmp_rocommunity:.*/snmp_rocommunity: $new_snmp_community/g" /etc/sonic/snmp.yml | ||
else | ||
echo "snmp_rocommunity: "$new_snmp_community > /etc/sonic/snmp.yml | ||
fi | ||
fi | ||
;; | ||
esac |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
#!/bin/bash | ||
|
||
while [ ! -f /etc/sonic/graph_service_url ]; do | ||
echo "No graph service url speficied, waiting for DHCP response..." | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I am not sure where I am able to see the message? is it in syslog? #ByDesign There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
sleep 1 | ||
done | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. where is the graph service configuration file to enable/disable graph downloading? #Resolved There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. /etc/sonic/graph_service_url. A non-existing file means dhcp, and an exisiting file writing "disabled" means disabled. In reply to: 100565302 [](ancestors = 100565302) |
||
|
||
if [ `cat /etc/sonic/graph_service_url` = "N/A" ]; then | ||
echo "Graph service url not included in DHCP response, skip minigraph downloading" | ||
exit 0 | ||
fi | ||
|
||
if [ -f /etc/sonic/minigraph.xml ]; then | ||
echo "Renaming minigraph.xml to minigraph.old" | ||
rm -rf /etc/sonic/minigraph.old | ||
mv /etc/sonic/minigraph.xml /etc/sonic/minigraph.old | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
this will replace the old, no need to rm -rf #Resolved |
||
fi | ||
|
||
HOSTNAME=`hostname -s` | ||
GRAPH_URL=`sed "s/{{\s*hostname\s*}}/$HOSTNAME/g" /etc/sonic/graph_service_url` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can you use jinji2 template to instead of sed? #Resolved There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We don't have j2 installed in base image now. Do you want to install it? In reply to: 100561378 [](ancestors = 100561378) |
||
echo "Getting minigraph from $GRAPH_URL" | ||
|
||
while true; do | ||
wget -T 15 -c $GRAPH_URL -O /etc/sonic/minigraph.xml && break | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I think we should use curl here, the package is much smaller. #Resolved There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
print message for each try. #WontFix There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
sleep 5 | ||
done |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
[Unit] | ||
Description=get minigraph | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Download minigraph from graph service #Resolved |
||
Before=ntp-config.service | ||
Before=rsyslog-config.service | ||
Before=interfaces-config.service | ||
|
||
[Service] | ||
Type=oneshot | ||
ExecStart=/usr/bin/get_graph | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
updategraph #Resolved |
||
|
||
[Install] | ||
WantedBy=multi-user.target | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can you also change the get_graph.service name to updategraph.service? #Resolved |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# Initial /etc/network/interface file for first boot | ||
# Will be overwritten based on minigraph information by interfaces-config service | ||
|
||
# The loopback network interface | ||
auto lo | ||
iface lo inet loopback | ||
# | ||
# The management network interface | ||
auto eth0 | ||
iface eth0 inet dhcp | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. isn't this the default debian behavior? do we need to override? #WontFix There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not quite sure whether this is the default behavior. Why not override it explicitly to make things clearer though? In reply to: 100564200 [](ancestors = 100564200) |
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
to simplify the name, we can use minigraph-url #Resolved