Start a Conversation

Unsolved

This post is more than 5 years old

51256

November 20th, 2013 11:00

Download Dell Update Packages (DUP) from Linux

Hello,

I can't seem to find any way of downloading a firmware (in the DUP format) other then via Dell's Repository Manager (which only runs on Windows). I am trying to automate the firmware update for a few systems via WSMAN and for this I need the relevant firmware DUP files specific to each server model, however I need to be able to get these files from a Linux OS...

Is there a way of downloading these files via rsync or ftp or similar? 

Thank you,

-Ovidiu K.

 

990 Posts

November 20th, 2013 13:00

You should be able to,  using the server's Lifecycle Controller platform update ; ftp://ftp.dell.com/Manuals/Common/dell-lifecycl-cntrler-v1.4_White%20Papers114_en-us.pdf   This will go out to Dell's ftp site and pull down the necessary updates for each server.

Regards,

12 Posts

November 20th, 2013 18:00

Geoff,


I reviewed the PDF and the only problem with that solution is that I need direct internet access which is restricted by design and all of the other options (SUU media, DVD, USB, NFS/CIFS share actually require a repository to be created first via Dell's Repository Manager. Unfortunately, the system that I want to push the firmwares from also cannot have direct internet access - so ideally I'd like to find a way to automate the downloading of the DUPs for the systems I need on a third system which can be exposed to the internet and then scp the firmware files to the provisioning server from where these can then be pushed and applied to the target servers via NFS and WSMAN.

Chris,

I am looking to update all devices for the R620 type server and possibly the R720 model as well. The idea is that after a user is done with the server I want to reapply the 'desired' firmware versions on the system automatically via WSMAN without having to care about what the user did or did not update on the system.

Thanks,

-Ovidiu

12 Posts

November 22nd, 2013 13:00

For anyone else that might be interested I found a post with a simple python parser that can be used to search through the catalog file from ftp.dell.com/catalog/catalog.xml.gz and modified it a little to include some more information. It can also be used to look into a catalog file for a more specific repository (however that has to be created via Dell's Repository Manager utility...)

The modified python code is below (thanks to 'Beaver6675' for his post - see http://en.community.dell.com/support-forums/servers/f/956/p/130835/20258358.aspx)

#!/usr/local/bin/python

import os,sys
import xml.etree.ElementTree

tree = xml.etree.ElementTree.parse( sys.argv[1] )
server_model = sys.argv[2]
root = tree.getroot()
repository_path = ''
software = {}

for child in root.iter('SoftwareComponent'):
   path = child.attrib['path']
   basename = os.path.basename(path)

   if child.find('ComponentType').attrib['value'] not in ['FRMW','APAC']:
       continue
  
   software[basename]=[path]
   for subchild in child: 
       if subchild.tag == 'Name':
           software[basename].append((subchild.find('Display').text))
       elif subchild.tag == 'Description':
           software[basename].append((subchild.find('Display').text))
       elif subchild.tag == 'Category':
           software[basename].append((subchild.find('Display').text))
       elif subchild.tag == 'ImportantInfo':
           software[basename].append((subchild.attrib['URL']))
       elif subchild.tag == 'Criticality':
           software[basename].append((subchild.attrib['value']))


for child in root.iter('SoftwareBundle'):
   target = child.find('TargetSystems/Brand/Model/Display')
   if (target.text != server_model):
       continue
   if (child.attrib['bundleID'].find('WIN') == -1 ):
       continue

   print "## ---software bundle---"
   print "##", child.attrib['bundleID'], target.text
   print "## ---"

   contents = child.find('Contents')
   print "## The following packages are available:"

   for package in child.iter('Package'):
       mypath = package.attrib['path']
       if mypath in software.keys():
           print "File: {}\nName: {}\nDescription: {}\nCategory: {}\nInfoURL: {}\nCriticality: {}".format(software[mypath][0],software[mypath][1],software[mypath][2],software[mypath][3],software[mypath][4],software[mypath][5])
           print "---"

   print "## ---end of software bundle"
   print
No Events found!

Top