FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Fedora/Linux Management Tools

 
 
LinkBack Thread Tools
 
Old 06-13-2008, 01:14 PM
Adrian Revill
 
Default Cobbler reposync cron script

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@redhat.com
>>> 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@redhat.com
>> https://www.redhat.com/mailman/listinfo/et-mgmt-tools
>>
>>
>
>

--
View this message in context: http://www.nabble.com/Cobbler-reposync-cron-script-tp17801508p17823138.html
Sent from the et-mgmt-tools mailing list archive at Nabble.com.

_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@redhat.com
https://www.redhat.com/mailman/listinfo/et-mgmt-tools
 
Old 06-13-2008, 01:30 PM
Michael DeHaan
 
Default Cobbler reposync cron script

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@redhat.com
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@redhat.com
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@redhat.com
https://www.redhat.com/mailman/listinfo/et-mgmt-tools
 

Thread Tools




All times are GMT. The time now is 10:51 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org