[vsimage]: Support for the creation of a GNS3 appliance file (#3553)

The script sonic-gns3a.sh creates a GNS3 appliance flle, that points to a sonin-vs.img (SONiC Virtual Switch).

The appliance file (and sonic-vs.img file) can subsequently be imported into a GNS3 simulation environment.
This commit is contained in:
Mike Lazar 2019-10-07 10:16:11 -04:00 committed by lguohan
parent d316bcb537
commit e9a0c57714
2 changed files with 98 additions and 0 deletions

View File

@ -0,0 +1,17 @@
HOWTO Create a GNS3 Appliance File (.gns3a)
Execute the command sonic-gns3.sh
For instance:
./sonic-gns3a.sh -h
sonic-gns3a.sh [ -r <ReleaseNumber> ] -b <SONiC VS image: sonic-vs.image>
e.g.: sonic-gns3a.sh -r 1.1 -b <store_path>/sonic-vs.img
For more information about GNS3, please refer to:
https://gns3.com/

View File

@ -0,0 +1,81 @@
#!/bin/bash
# This script creates a .gns3a SONiC appliance file
IMGFILE="sonic-vs.image"
RELEASE="latest"
usage() {
echo "`basename $0` [ -r <ReleaseNumber> ] -b <SONiC VS image: sonic-vs.image>"
echo "e.g.: `basename $0` -r 1.1 -b <store_path>/sonic-vs.image"
exit 0
}
while getopts "r:b:h" arg; do
case $arg in
h)
usage
;;
r)
RELEASE=$OPTARG
;;
b)
IMGFILE=$OPTARG
;;
esac
done
if [ ! -e ${IMGFILE} ]; then
echo "ERROR: ${IMGFILE} not found"
exit 2
fi
MD5SUMIMGFILE=`md5sum ${IMGFILE} | cut -f 1 -d " "`
LENIMGFILE=`stat -c %s ${IMGFILE}`
GNS3APPNAME="SONiC-${RELEASE}.gns3a"
NAMEIMGFILE=`basename $IMGFILE`
echo "
{
\"name\": \"SONiC\",
\"category\": \"router\",
\"description\": \"SONiC Virtual Switch/Router\n\",
\"vendor_name\": \"SONiC\",
\"vendor_url\": \"https://azure.github.io/SONiC/\",
\"product_name\": \"SONiC\",
\"product_url\": \"https://azure.github.io/SONiC/\",
\"registry_version\": 3,
\"status\": \"experimental\",
\"maintainer\": \"SONiC\",
\"maintainer_email\": \"sonicproject@googlegroups.com\",
\"usage\": \"Supports SONiC release: ${RELEASE}\",
\"qemu\": {
\"adapter_type\": \"e1000\",
\"adapters\": 10,
\"ram\": 2048,
\"hda_disk_interface\": \"virtio\",
\"arch\": \"x86_64\",
\"console_type\": \"telnet\",
\"boot_priority\": \"d\",
\"kvm\": \"require\"
},
\"images\": [
{
\"filename\": \"${NAMEIMGFILE}\",
\"version\": \"${RELEASE}\",
\"md5sum\": \"${MD5SUMIMGFILE}\",
\"filesize\": ${LENIMGFILE}
}
],
\"versions\": [
{
\"name\": \"${RELEASE}\",
\"images\": {
\"hda_disk_image\": \"${NAMEIMGFILE}\"
}
}
]
}
" > ${GNS3APPNAME}