Esempio n. 1
0
 def __init__(self):
     self.driver = HaproxyStats()
     if not self.driver.lbaas_dir:
         self.driver.lbaas_dir = LB_BASE_DIR
     try:
         self.old_pool_uuids = os.listdir(self.driver.lbaas_dir)
     except OSError:
         self.old_pool_uuids = []
 def __init__(self, logger, host_ip):
     self.logger = logger
     self.driver = HaproxyStats(logger, host_ip)
     self.driver.logger = logger
     if not self.driver.lbaas_dir:
         self.driver.lbaas_dir = LB_BASE_DIR
     try:
         self.old_pool_uuids = os.listdir(self.driver.lbaas_dir)
     except OSError:
         self.old_pool_uuids = []
 def __init__(self):
    self.driver = HaproxyStats()
    if not self.driver.lbaas_dir:
        self.driver.lbaas_dir = LB_BASE_DIR
    try:
        self.old_pool_uuids = os.listdir(self.driver.lbaas_dir)
    except OSError:
        self.old_pool_uuids = []
 def __init__(self, logger, host_ip):
    self.logger = logger
    self.driver = HaproxyStats(logger, host_ip)
    self.driver.logger = logger
    if not self.driver.lbaas_dir:
        self.driver.lbaas_dir = LB_BASE_DIR
    try:
        self.old_pool_uuids = os.listdir(self.driver.lbaas_dir)
    except OSError:
        self.old_pool_uuids = []
Esempio n. 5
0
class LoadbalancerStatsUVE(object):
    def __init__(self):
        self.driver = HaproxyStats()
        if not self.driver.lbaas_dir:
            self.driver.lbaas_dir = LB_BASE_DIR
        try:
            self.old_pool_uuids = os.listdir(self.driver.lbaas_dir)
        except OSError:
            self.old_pool_uuids = []

    def _uve_get_stats(self, stats):
        obj_stats = LoadbalancerStats()
        obj_stats.obj_name = stats['name']
        obj_stats.uuid = stats['name']
        obj_stats.status = stats['status']
        obj_stats.vrouter = stats['vrouter']

        for attr in dir(obj_stats):
            if attr in stats and stats[attr].isdigit():
                setattr(obj_stats, attr, int(stats[attr]))

        return obj_stats

    def _uve_get_member_stats(self, stats):
        member_stats = []
        for stat in stats:
            obj_stats = LoadbalancerStats()
            obj_stats.obj_name = stat['name']
            obj_stats.uuid = stat['name']
            obj_stats.status = stat['status']
            obj_stats.vrouter = stat['vrouter']
            for attr in dir(obj_stats):
                if attr in stat and stat[attr].isdigit():
                    setattr(obj_stats, attr, int(stat[attr]))
            member_stats.append(obj_stats)
        return member_stats

    def _send_loadbalancer_uve(self):
        try:
            pool_uuids = os.listdir(self.driver.lbaas_dir)
        except OSError:
            return

        # delete stale uves
        for pool_uuid in self.old_pool_uuids:
            if pool_uuid not in pool_uuids:
                uve_lb = UveLoadbalancerStats(name=pool_uuid, deleted=True)
                uve_lb.listener = {}
                uve_lb.pool = {}
                uve_lb.member = {}
                uve_trace = UveLoadbalancerTrace(data=uve_lb)
                uve_trace.send()
        self.old_pool_uuids = pool_uuids

        # send stats
        for pool_uuid in pool_uuids:
            lb_stats = self.driver.get_stats(pool_uuid)
            if not 'listener' in lb_stats or not len(lb_stats['listener']):
                uve_lb = UveLoadbalancerStats(name=pool_uuid, deleted=True)
                uve_lb.listener = {}
                uve_lb.pool = {}
                uve_lb.member = {}
                uve_trace = UveLoadbalancerTrace(data=uve_lb)
                uve_trace.send()
                continue

            uve_lb = UveLoadbalancerStats()
            uve_lb.name = pool_uuid
            uve_lb.listener = {}
            uve_lb.pool = {}
            uve_lb.member = {}
            count = 0
            total_items = len(lb_stats['listener'])
            while (total_items > count):
                lb_stat = lb_stats['listener'][count]
                name = lb_stat['name']
                value = self._uve_get_stats(lb_stat)
                uve_lb.listener[name] = value
                count = count + 1
            count = 0
            total_items = len(lb_stats['pool'])
            while (total_items > count):
                lb_stat = lb_stats['pool'][count]
                name = lb_stat['name']
                value = self._uve_get_stats(lb_stat)
                uve_lb.pool[name] = value
                count = count + 1
            count = 0
            total_items = len(lb_stats['member'])
            while (total_items > count):
                lb_stat = lb_stats['member'][count]
                name = lb_stat['name']
                value = self._uve_get_stats(lb_stat)
                uve_lb.member[name] = value
                count = count + 1
            uve_trace = UveLoadbalancerTrace(data=uve_lb)
            uve_trace.send()

    def send_loadbalancer_stats(self):
        try:
            self._send_loadbalancer_uve()
        except Exception as e:
            sys.stderr.write('LB stats failure ' + str(e) + '\n')
class LoadbalancerStats(object):
    def __init__(self):
       self.driver = HaproxyStats()
       try:
           self.old_pool_uuids = os.listdir(LB_BASE_DIR)
       except OSError:
           self.old_pool_uuids = []

    def _uve_get_stats(self, stats):
        obj_stats = UveLoadbalancerStats()
        obj_stats.obj_name = stats['name']
        obj_stats.uuid = stats['name']
        obj_stats.status = stats['status']
        obj_stats.vrouter = stats['vrouter']

        for attr in dir(obj_stats):
            if attr in stats and stats[attr].isdigit():
                setattr(obj_stats, attr, int(stats[attr]))

        return [obj_stats]

    def _uve_get_member_stats(self, stats):
        member_stats = []
        for stat in stats:
            obj_stats = UveLoadbalancerStats()
            obj_stats.obj_name = stat['name']
            obj_stats.uuid = stat['name']
            obj_stats.status = stat['status']
            obj_stats.vrouter = stat['vrouter']
            for attr in dir(obj_stats):
                if attr in stat and stat[attr].isdigit():
                    setattr(obj_stats, attr, int(stat[attr]))
            member_stats.append(obj_stats)
        return member_stats

    def _send_loadbalancer_uve(self):
        try:
            pool_uuids = os.listdir(LB_BASE_DIR)
        except OSError:
            return

        # delete stale uves
        for pool_uuid in self.old_pool_uuids:
            if pool_uuid not in pool_uuids:
                uve_lb = UveLoadbalancer(name=pool_uuid, deleted=True)
                uve_trace = UveLoadbalancerTrace(data=uve_lb)
                uve_trace.send()
        self.old_pool_uuids = pool_uuids

        # send stats
        for pool_uuid in pool_uuids:
            stats = self.driver.get_stats(pool_uuid)
            if not len(stats) or not stats.get('vip') or not stats.get('pool'):
                continue

            uve_lb = UveLoadbalancer()
            uve_lb.name = pool_uuid
            uve_lb.virtual_ip_stats = self._uve_get_stats(stats['vip'])
            uve_lb.pool_stats = self._uve_get_stats(stats['pool'])
            uve_lb.member_stats = self._uve_get_member_stats(stats['members'])
            uve_trace = UveLoadbalancerTrace(data=uve_lb)
            uve_trace.send()

    def send_loadbalancer_stats(self):
        try:
            self._send_loadbalancer_uve()
        except Exception as e:
            sys.stderr.write('LB stats failure ' + str(e) + '\n')
 def __init__(self):
    self.driver = HaproxyStats()
    try:
        self.old_pool_uuids = os.listdir(LB_BASE_DIR)
    except OSError:
        self.old_pool_uuids = []
class LoadbalancerStatsUVE(object):
    def __init__(self, logger):
       self.logger = logger
       self.driver = HaproxyStats(logger)
       self.driver.logger = logger
       if not self.driver.lbaas_dir:
           self.driver.lbaas_dir = LB_BASE_DIR
       try:
           self.old_pool_uuids = os.listdir(self.driver.lbaas_dir)
       except OSError:
           self.old_pool_uuids = []

    def msg_log(self, msg, level):
        self.logger.log(SandeshLogger.get_py_logger_level(level), msg)

    def _uve_get_stats(self, stats):
        obj_stats = LoadbalancerStats()
        obj_stats.obj_name = stats['name']
        obj_stats.uuid = stats['name']
        obj_stats.status = stats['status']
        obj_stats.vrouter = stats['vrouter']

        for attr in dir(obj_stats):
            if attr in stats and stats[attr].isdigit():
                setattr(obj_stats, attr, int(stats[attr]))

        return obj_stats

    def _uve_get_member_stats(self, stats):
        member_stats = []
        for stat in stats:
            obj_stats = LoadbalancerStats()
            obj_stats.obj_name = stat['name']
            obj_stats.uuid = stat['name']
            obj_stats.status = stat['status']
            obj_stats.vrouter = stat['vrouter']
            for attr in dir(obj_stats):
                if attr in stat and stat[attr].isdigit():
                    setattr(obj_stats, attr, int(stat[attr]))
            member_stats.append(obj_stats)
        return member_stats

    def _send_loadbalancer_uve(self):
        try:
            pool_uuids = os.listdir(self.driver.lbaas_dir)
        except OSError:
            return

        # delete stale uves
        for pool_uuid in self.old_pool_uuids:
            if pool_uuid not in pool_uuids:
                uve_lb = UveLoadbalancerStats(name=pool_uuid, deleted=True)
                uve_lb.listener = {}
                uve_lb.pool = {}
                uve_lb.member = {}
                uve_trace = UveLoadbalancerTrace(data=uve_lb)
                uve_trace.send()
        self.old_pool_uuids = pool_uuids

        # send stats
        for pool_uuid in pool_uuids:
            lb_stats = self.driver.get_stats(pool_uuid)
            if not 'listener' in lb_stats or not len(lb_stats['listener']):
                uve_lb = UveLoadbalancerStats(name=pool_uuid, deleted=True)
                uve_lb.listener = {}
                uve_lb.pool = {}
                uve_lb.member = {}
                uve_trace = UveLoadbalancerTrace(data=uve_lb)
                uve_trace.send()
                continue

            uve_lb = UveLoadbalancerStats()
            uve_lb.name = pool_uuid
            uve_lb.listener = {}
            uve_lb.pool = {}
            uve_lb.member = {}
            count = 0
            total_items = len(lb_stats['listener'])
            while (total_items > count):
                lb_stat = lb_stats['listener'][count]
                name = lb_stat['name']
                value = self._uve_get_stats(lb_stat)
                uve_lb.listener[name] = value
                count = count + 1
            count = 0
            total_items = len(lb_stats['pool'])
            while (total_items > count):
                lb_stat = lb_stats['pool'][count]
                name = lb_stat['name']
                value = self._uve_get_stats(lb_stat)
                uve_lb.pool[name] = value
                count = count + 1
            count = 0
            total_items = len(lb_stats['member'])
            while (total_items > count):
                lb_stat = lb_stats['member'][count]
                name = lb_stat['name']
                value = self._uve_get_stats(lb_stat)
                uve_lb.member[name] = value
                count = count + 1
            uve_trace = UveLoadbalancerTrace(data=uve_lb)
            uve_trace.send()

    def send_loadbalancer_stats(self):
        try:
            self._send_loadbalancer_uve()
        except Exception as e:
            self.msg_log('LB stats failure ' + str(e), SandeshLevel.SYS_ERR)
Esempio n. 9
0
### set server list #####
servers = []
for sec in config.data.sections:
    if sec.name == "backend":
        backend_name = sec.attributes[0]
        for p in sec.params:
            if p[0] == "server":
                servers.append(backend_name + "/" + p[1])
                
### get new log #########
httpLog = HaproxyHttpLog(req['host'])

if service.state == "running":

    ### get stats ######
    st = HaproxyStats(req['host'])
    socket_output = ""
    if req["socket_command"]:
        socket_output = st.socketCommand(req["socket_command"])
    stats = st.getStats()

### render html #####

### <head>--</head> ####
renderHead(loc.str('menu_haproxy'), "", "haproxy.js")

print("<body onLoad='setRefreshTimerAndScroll(" + req["refresh"] + "," + req["y_scroll"] + ")'>")

Menu(req['tab_id'], loc).render()

### form (hidden params) #####