Re: Cobbler reposync cron script

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Adrian Revill wrote:
Not sure where to post this.

I think i have found a problem in  cobbler reposync.

Sometimes if a rpm is partially downloaded and /usr/bin/reposync is stopped,
say by a collegue rebooting the server, grrr.
/usr/bin/reposync wont continue and throws an error untill the file is
deleted. e.g.
Traceback (most recent call last):
  File "/usr/bin/reposync", line 264, in ?
    main()
  File "/usr/bin/reposync", line 245, in main
    path = repo.getPackage(pkg)
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 652, in
getPackage
    cache=cache
  File "/usr/lib/yum-plugins/rhnplugin.py", line 299, in _getFile
    raise yum.Errors.RepoError, \
yum.Errors.RepoError: failed to retrieve
getPackage/openoffice.org-impress-2.0.4
-5.4.17.1.x86_64.rpm from rhel-x86_64-server-productivity-5
error was [Errno 9] Requested Range Not Satisfiable
cobbler reposync failed


This is not caught by my script because cobbler terminates with a return
code of 0, but cobbler knows it has failed.

Looking at action_reposync.py

               rc = sub_process.call(cmd, shell=True)
               if rc !=0:
                   raise CX(_("cobbler reposync failed"))

The return code from /usr/bin/reposync is being caught, but it looks like
what ever handles the exception raised does not pass it on.
Sorry my python is non existant so i cant follow it any further, any one
know how to make a quick fix?








Adrian Revill wrote:
Yes feel free to add it.

I tried the change to use "cobbler list repo" and it works fine.


Michael DeHaan wrote:
Adrian Revill wrote:
Just in case anyone needs a script to run cobbler reposync from cron, here is one i have written. It runs each repo in turn, and gives each a number of tries (10) to over come problems with failing syncs.

#!/bin/bash

TRIES=10 # number of times to try and run reposync
LOGFILE="/var/log/cobbler/cobbler_reposync.log"

function running {
       PID=$(ps ax| awk '/cobbler reposync/ && !/awk/ {print ($1)}')
       if [ -z $PID ]
       then
               log "cobbler reposync is not running"
               return 1
       fi
       log "cobbler reposync is running PID=$PID"
       return 0
}

function log {
       logger -t "COBBLER_REPOSYNC" -- $1
}

function run {
       try=1
       ret=1
       while [ $try -le $TRIES ]
       do
               running
               ok=$?
               if [ $ok -eq 0 ]
               then
                       log "Already running, aborting"
                       break
               fi
               log "Attempt $try for $1"
               cobbler reposync --only=$1 2>&1 >> $LOGFILE
               ret=$?
               if [ $ret -eq 0 ]
               then
                       break
               fi
               log "Attempt $try failed"
               try=$[ $try + 1 ]
       done
       if [ $ret -eq 0 ]
       then
               log "Compleated $1"
       else
               log "Too many trys or already running, giving up on $1"

       fi
}

log "Starting"
mv $LOGFILE $LOGFILE.1

for name in $(awk '/name:/ {print($2)}' /var/lib/cobbler/repos)
do
       run $name
done

_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/et-mgmt-tools
Nice! Do you mind if I put this in a 'contrib' directory in cobbler's version control so other people can find it later?

We can mention this on the Wiki too.

One small change I'd make is to make the last awk line run 'cobbler repo list' instead of grepping the file, that way it works regardless of the storage backend -- though everyone pretty much uses the stock one.

--Michael

_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/et-mgmt-tools



Please file bugs in Trac here: https://fedorahosted.org/cobbler, and I'll take a look at it.

--Michael

_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/et-mgmt-tools

[Index of Archives]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux