Проблема с объектом / классом Python "экземпляр не имеет атрибута" из внешнего PythonServerPage - PullRequest
0 голосов
/ 09 марта 2011

Поэтому я создал этот класс с именем BigIPLTM в файле сценария python с именем pycontrol.py.У меня также есть страница сервера Python, которая импортирует скрипт и создает объект.Я сталкиваюсь с проблемой при попытке вызвать методы этого объекта.Ошибка: BigIPLTM не имеет экземпляра get_pool_name .Вот мой код: Кроме того, любая обратная связь с моим классом будет хорошей, поскольку это первый класс, который я написал на python.

pycontrol.py:

import pycontrol.pycontrol as pycontrol

class BigIPLTM:
    def __init__(self, host, user="xxxx", passwd="xxxx",
        content = ['LocalLB.VirtualServer', 'LocalLB.Pool',
                 'LocalLB.VirtualAddress', 'LocalLB.PoolMember',
         'LocalLB.Monitor', 'System.SystemInfo']):
        self.host = host
        self.b = pycontrol.BIGIP(hostname = host, username = user,
             password = passwd, fromurl = True, wsdls = content)

    def get_destination(self, vipName):
        destination = self.b.LocalLB.VirtualServer.get_destination(vipName)
        return destination

    def get_pool_name(self, vipName):
        #needs to be a list
        vip = list()
        vip.append(vipName)
        poolName = self.b.LocalLB.VirtualServer.get_default_pool_name(vip)
        return poolName


    def get_vip_state(self, vipName):
        '''Returns a data structure containing a vip config, status and statistics'''
        vip = list()
        vip.append(vipName)
        state = self.b.LocalLB.VirtualServer.get_enabled_state(vip)
        return state

    def get_members(self, poolName):
        '''Returns array of members in a pool'''
        pool = list()
        pool.append(poolName)
        members = self.b.LocalLB.Pool.get_member(pool)
        #returns 3 dimensional array(default,member_number, address/port)
        return members  

test.psp

def get_vip_properties(vip, env):
    import pycontrol
    tempDict ={}
    vipList = list()
    vipList.append(vip)
    #get pool name
    b = pycontrol.BigIPLTM(env)
    tempDict['pool'] = b.get_pool_name(vipList)
    #get destination address and port
    tempDict['destination'] = b.get_destination(vipList)
    tempDict['port'] = b.get_destination(vipList)
    tempDict['vipState'] = b.get_vip_state(vipList)
    #get members is a 3dimensional array (default, membernumber, address/port)
    tempArray = b.get_members(b.get_pool_name(vipList))
    members = list()
    for row in tempArray:
        for entry in row:
            members.append(entry[0])
    tempDict['members'] = members
    tempDict['member_port'] = b.get_members(b.get_pool_name(vipList))[0][0][1]

    return tempDict
...