Class confusion

Rodrick Brown rodrick.brown at gmail.com
Wed Jan 9 21:13:30 CET 2013


How can I make a class that has methods with attributes and other
functions?

I see a lot of code


I'm reading the documentation to Redhat's Satellite software which has a
XMLRPC interface and wrote the following code to test the api.

I would like to extend this code to support methods with methods? I see
this done a lot in python code but I'm not sure how to accomplish something
like this?

i.e.

sc = SatelliteConnect()
sc.get_systemlist().get_systemid() ?
or
sc.get_systemlist().get_running_kernel()

How does one chain methods and attributes like this with classes?

import xmlrpclib
import os
import sys

class SatelliteConnect(object):

    SATELLITE_URL = "http://nebula.nydc.fxcorp.prv/rpc/api"
    SATELLITE_LOGIN = os.environ['USER']
    SATELLITE_PASS = os.environ.get('SATELLITE_PASS',None)

    def __init__(self):
        self.client = xmlrpclib.Server(self.SATELLITE_URL, verbose=0)
        self._check_env('SATELLITE_PASS')
        self.key = self.client.auth.login(self.SATELLITE_LOGIN,
self.SATELLITE_PASS)

    def _check_env(self, env_var):
        if not os.environ.get('SATELLITE_PASS'):
            print("{} error please set environment varible {} and
re-run script".format(sys.argv[0], env_var))

            sys.exit(-1)

    def get_runningkernel(self, sysid):
        self.get_systemid('somehost')
        kernel = self.client.system.getRunningKernel(self.key, sysid)
        if kernel:

            return kernel
        else:
            return None


    def get_systemlist(self):
        systemlist = self.client.system.listSystems(self.key)
        return([ system.get('name') for system in systemlist ])

        self.client.auth.logout(self.key)

    def get_systemid(self, host):
        systemlist = self.client.system.getId(self.key, host)
        for system in systemlist:
            return system.get('id')
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20130109/5e7e40eb/attachment.html>


More information about the Python-list mailing list