Would anyone know if up2dateAuth module  could be used to replace 
username/password auth to query RHN/SPWLK server via RHN API?


On Jun 7, 2012, at 6:33 PM, "Musayev, Ilya" <imusa...@webmd.net> wrote:

> While RHN has a limitation on locking the host from the Web UI, user is still 
> able to run yum operations from the host (granted user has proper access).
> 
> I wrote a simple YUM plugin to check if the host is locked in RHN and if it 
> is, prevent yum usage on the host.
> 
> Needless to say, this is proof of concept and my python skills are lacking, 
> nevertheless it works.
> 
> TODO:
> * Move Authentication part into config - easy to do but not secure
> * Use alternative method of authentication used by rhnplugin - need to see 
> how that can be done - if it all possible
> 
> I need help with understanding how i can leverage rhnplugin type of auth with 
> RHN Lock Yum Plugin.
> 
> The proof of concept code is below - if you could make any suggestions and 
> improvements - it would be appreciated.
> 
> 
> Thanks
> ilya
> 
> 
> 
> ----------- /etc/yum/pluginconf.d/rhnlockplugin.conf --------
> [main]
> enabled=1
> ------------
> 
> 
> ---------- /usr/share/yum-plugins/rhnlockplugin.py ----------
> 
> from yum.plugins import PluginYumExit, TYPE_CORE, TYPE_INTERACTIVE
> from xml.dom import minidom
> import xmlrpclib
> 
> requires_api_version = '2.3'
> plugin_type = (TYPE_CORE, TYPE_INTERACTIVE)
> 
> def init_hook(conduit):
>    conduit.info(2, 'Checking if system is locked in RHN/Spacewalk')
>    SATELLITE_URL = "http://spacewalk.hostname.com/rpc/api";
>    SATELLITE_LOGIN = "admin"
>    SATELLITE_PASSWORD = "password"
> 
>    client = xmlrpclib.Server(SATELLITE_URL, verbose=0)
> 
>    key = client.auth.login(SATELLITE_LOGIN, SATELLITE_PASSWORD)
> 
>    #----------------------------------------------------------------------
>    def getSystemID(xml):
>        """
>        Print out all names found in xml
>        """
>        doc = minidom.parse(xml)
>        node = doc.documentElement
>        members = doc.getElementsByTagName("member")
> 
>        for member in members:
>            name = member.getElementsByTagName("name")[0].firstChild.data
>            if name == "system_id":
>                value = \
>                    member.getElementsByTagName("string")[0].firstChild.data
>                return value.replace("ID-","")
> 
>    def getLockStatus(sysID):
>        """
>        Function to check if the host is locked
>        """
>        details = client.system.getDetails(key, int(sysID))
>        if details['lock_status']:
>            #print "ERROR: Skipping RHN/Spacewalk locked system %s" % sysID
>            raise PluginYumExit('ERROR: Skipping RHN/Spacewalk locked system: 
> %s' % sysID)
>        else:
>            print "NOTE: This host in not locked in RHN/Spacewalk"
> 
>    systemIDfile = '/etc/sysconfig/rhn/systemid'
>    mySystemID = getSystemID(systemIDfile)
>    getLockStatus(getSystemID(systemIDfile))
> 
>    client.auth.logout(key)
> -----------------------------------
> 
> _______________________________________________
> Spacewalk-devel mailing list
> Spacewalk-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/spacewalk-devel
> 


_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to