Skip to content

Commit

Permalink
[updategraph]: Support a special value to use empty configuration (#1086
Browse files Browse the repository at this point in the history
)

When updategraph service is enabled, a special value 'default'
from DHCP response will now initialize the system with an empty
configuration instead of existing minigraph.

A DHCP response without option 224 will remain the current behavior
of skipping graph update and use existing default minigraph.
  • Loading branch information
taoyl-ms authored and Shuotian Cheng committed Oct 28, 2017
1 parent c92b953 commit a7ea055
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
2 changes: 1 addition & 1 deletion files/dhcp/graphserviceurl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ case $reason in
if [ -n "$new_minigraph_url" ]; then
echo $new_minigraph_url > /tmp/dhcp_graph_url
else
echo "N/A" > /tmp/dhcp_graph_url
echo "default" > /tmp/dhcp_graph_url
fi
if [ -n "$new_acl_url" ]; then
echo $new_acl_url > /tmp/dhcp_acl_url
Expand Down
20 changes: 19 additions & 1 deletion files/image_config/updategraph/updategraph
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,33 @@ if [ "$src" = "dhcp" ]; then
sleep 1
done

if [ "`cat /tmp/dhcp_graph_url`" = "default" ]; then
echo "No graph_url option in DHCP response. Skipping graph update and using existing minigraph."
if [ "$dhcp_as_static" = "true" ]; then
sed -i "/enabled=/d" /etc/sonic/updategraph.conf
echo "enabled=false" >> /etc/sonic/updategraph.conf
fi
exit 0
fi
if [ "`cat /tmp/dhcp_graph_url`" = "N/A" ]; then
echo "No graph_url option in DHCP response. Skipping graph update."
echo "'N/A' found in DHCP response. Skipping graph update and generating an empty configuration."
echo '{"DEVICE_METADATA":' > /tmp/device_meta.json
sonic-cfggen -m /etc/sonic/minigraph.xml --var-json DEVICE_METADATA >> /tmp/device_meta.json
echo '}' >> /tmp/device_meta.json
if [ -f /etc/sonic/init_cfg.json ]; then
sonic-cfggen -j /tmp/device_meta.json -j /etc/sonic/init_cfg.json --print-data > /etc/sonic/config_db.json
else
cp -f /tmp/device_meta.json /etc/sonic/config_db.json
fi

if [ "$dhcp_as_static" = "true" ]; then
sed -i "/enabled=/d" /etc/sonic/updategraph.conf
echo "enabled=false" >> /etc/sonic/updategraph.conf
fi
exit 0
fi


HOSTNAME=`hostname -s`
GRAPH_URL=`sonic-cfggen -t /tmp/dhcp_graph_url -a "{\"hostname\": \"$HOSTNAME\"}"`
URL_REGEX='^(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]$'
Expand Down

0 comments on commit a7ea055

Please sign in to comment.