[f-nsp] Script to simplify software upgrade process

Piper, James James.Piper at railcorp.nsw.gov.au
Mon Mar 31 00:31:29 EDT 2008


Hi All,

I'm not sure if I missed something but I haven't found anything in the
documentation that gives a simple list of commands to execute in order
to perform a software upgrade from a TFTP server. In response I wrote
this simple script to parse a software release directory and generate a
file listing the exact commands in order to cut-and-paste onto the
switch. Be good if SNMP could be used instead. Hope it helps someone..

Regards,
James

# Copyright 2008 Rail Corporation of NSW
#
# This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published
by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see
<http://www.gnu.org/licenses/>.

import re
from os import listdir
from sys import argv, exit

if len(argv)==3:
    tftp_server = argv[1]
    files_dir = argv[2]
else:
    tftp_server = '172.21.2.101'
    files_dir = '.'

files = listdir(files_dir)

# regex for matching files
mgt_monitor = re.compile('^xmb\d+.*\.bin')
mgt_boot = re.compile('^xmprm\d+.*\.bin')
mgt_ironware = re.compile('^xmr\d+.*\.bin')
mgt_fpga = re.compile('^mbridge_\d+.*\.xsvf')

int_monitor = re.compile('^xmlb\d+.*\.bin')
int_boot = re.compile('^xmlprm\d+.*\.bin')
int_ironware = re.compile('^xmlp\d+.*\.bin')
int_pbif = re.compile('^pbif(?!oc).*\.bin')
int_xpp = re.compile('^xpp(?!oc).*\.bin')
int_xgmac = re.compile('^xgmac')

fabric_fpga = re.compile('^sbridge')

commands = {}

# commands are entered in order
for f in files:
	if mgt_monitor.match(f): 
		commands[0] = '! mgt_monitor\ncopy tftp flash %s %s
monitor\n' % (tftp_server, f)

	if mgt_boot.match(f): 
		commands[1] =  '! mgt_boot\ncopy tftp flash %s %s
boot\n' % (tftp_server, f)

	if mgt_ironware.match(f): 
		commands[2] =  '! mgt_ironware\ncopy tftp flash %s %s
primary\n' % (tftp_server, f)

	if mgt_fpga.match(f): 
		commands[3] =  '! mgt_fpga\ncopy tftp mbridge %s %s\n' %
(tftp_server, f)

	if int_monitor.match(f): 
		commands[4] =  '! int_monitor\ncopy tftp lp %s %s
monitor all\n' % (tftp_server, f)

	if int_boot.match(f): 
		commands[5] =  '! int_boot\ncopy tftp lp %s %s boot
all\n' % (tftp_server, f)

	if int_ironware.match(f): 
		commands[6] =  '! int_ironware\ncopy tftp lp %s %s
primary all\n' % (tftp_server, f)

	if int_pbif.match(f): 
		commands[7] =  '! int_pbif\ncopy tftp lp %s %s fpga-pbif
all\n' % (tftp_server, f)

	if int_xpp.match(f): 
		commands[8] =  '! int_xpp\ncopy tftp lp %s %s fpga-xpp
all\n' % (tftp_server, f)

	if int_xgmac.match(f): 
		commands[9] =  '! int_xgmac\ncopy tftp lp %s %s
fpga-xgmac all\n' % (tftp_server, f)

out  = open('upgrade.cfg','w')

# write out commands in order
for i in range(10):
	if commands.has_key(i): out.write( '%s' % (commands[i]) )

if not len(commands)==0:
    out.write('! reboot\nboot system flash primary')





This e-mail and any attachments may contain confidential information that is intended solely for the use of the intended recipient and may be subject to copyright. If you receive this e-mail in error, please notify the sender immediately and delete the e-mail and its attachments from your system. You must not disclose, copy or use any part of this e-mail if you are not the intended recipient. Any opinion expressed in this e-mail and any attachments is not an opinion of RailCorp unless stated or apparent from its content. RailCorp is not responsible for any unauthorised alterations to this e-mail or any attachments. RailCorp will not incur any liability resulting directly or indirectly as a result of the recipient accessing any of the attached files that may contain a virus.



More information about the foundry-nsp mailing list