#!/bin/env python import os, sys, getpass import xmlrpclib # Inspired by https://www.redhat.com/archives/spacewalk-list/2011-December/msg00005.html # $client->call('channel.software.regenerateYumCache', $session, $channel); SATELLITE_URL = "http://%s/rpc/api" % (os.getenv('SERVER', 'localhost')) SATELLITE_LOGIN = os.getenv('SPACEWALK_USER') SATELLITE_PASSWORD = os.getenv('SPACEWALK_PASS') if not SATELLITE_LOGIN: SATELLITE_LOGIN = raw_input('Spacewalk User?: ') if not SATELLITE_PASSWORD: SATELLITE_PASSWORD = getpass.getpass() # # Connect and login to the spacewalk server # client = xmlrpclib.Server(SATELLITE_URL, verbose=0) key_session = client.auth.login(SATELLITE_LOGIN, SATELLITE_PASSWORD) # # Get a list of all channels # channels = client.channel.listAllChannels(key_session) channel_labels = [ c['label'] for c in channels ] if len(sys.argv) > 1: # Wonderful... arguments if sys.argv[1] in ['-l', '--list']: print 'Known channels:\n %s' % '\n '.join(channel_labels) sys.exit(0) else: # Assuming you _know_ which channel(s) to regen channel_labels = sys.argv[1:] for c in channel_labels: try: print 'Triggering a Yum repodata regeneration for channel "%s"' % c client.channel.software.regenerateYumCache(key_session, c) except Exception, e: print 'Problem generating Yum repodata for channel "%s"' % (c['label']) # Logout from spacewalk client.auth.logout(key_session)