<s> import glob <EOL> import logging <EOL> import os <EOL> import re <EOL> import tempfile <EOL> import subprocess <EOL> from freenasUI . common . pipesubr import pipeopen <EOL> log = logging . getLogger ( '<STR_LIT>' ) <EOL> name2plugin = dict ( ) <EOL> class RRDMeta ( type ) : <EOL> def __new__ ( cls , name , bases , dct ) : <EOL> klass = type . __new__ ( cls , name , bases , dct ) <EOL> reg = re . search ( r'<STR_LIT>' , name ) <EOL> if reg and not hasattr ( klass , '<STR_LIT>' ) : <EOL> klass . plugin = reg . group ( "<STR_LIT:name>" ) . lower ( ) <EOL> elif name != '<STR_LIT>' and not hasattr ( klass , '<STR_LIT>' ) : <EOL> raise ValueError ( "<STR_LIT>" % str ( name ) ) <EOL> if reg and not hasattr ( klass , '<STR_LIT:name>' ) : <EOL> klass . name = reg . group ( "<STR_LIT:name>" ) . lower ( ) <EOL> name2plugin [ klass . name ] = klass <EOL> elif hasattr ( klass , '<STR_LIT:name>' ) : <EOL> name2plugin [ klass . name ] = klass <EOL> elif name != '<STR_LIT>' : <EOL> raise ValueError ( "<STR_LIT>" % str ( name ) ) <EOL> return klass <EOL> class RRDBase ( object ) : <EOL> __metaclass__ = RRDMeta <EOL> base_path = None <EOL> identifier = None <EOL> title = None <EOL> vertical_label = None <EOL> imgformat = '<STR_LIT>' <EOL> unit = '<STR_LIT>' <EOL> step = <NUM_LIT:0> <EOL> def __init__ ( self , base_path , identifier = None , unit = None , step = None ) : <EOL> if identifier is not None : <EOL> self . identifier = str ( identifier ) <EOL> if unit is not None : <EOL> self . unit = str ( unit ) <EOL> if step is not None : <EOL> self . step = int ( step ) <EOL> self . _base_path = base_path <EOL> self . base_path = os . path . join ( base_path , self . plugin ) <EOL> def __repr__ ( self ) : <EOL> return '<STR_LIT>' % self . plugin <EOL> def graph ( self ) : <EOL> raise NotImplementedError <EOL> def get_title ( self ) : <EOL> return self . title <EOL> def get_vertical_label ( self ) : <EOL> return self . vertical_label <EOL> @ staticmethod <EOL> def _sort_ports ( entry ) : <EOL> if entry == "<STR_LIT>" : <EOL> pref = "<STR_LIT:0>" <EOL> body = entry <EOL> else : <EOL> reg = re . search ( '<STR_LIT>' , entry ) <EOL> if reg : <EOL> pref = reg . group ( <NUM_LIT:1> ) <EOL> body = reg . group ( <NUM_LIT:2> ) <EOL> else : <EOL> pref = "<STR_LIT>" <EOL> body = entry <EOL> reg = re . search ( '<STR_LIT>' , body ) <EOL> if not reg : <EOL> return ( pref , body , - <NUM_LIT:1> ) <EOL> return ( pref , reg . group ( <NUM_LIT:1> ) , int ( reg . group ( <NUM_LIT:2> ) ) ) <EOL> @ staticmethod <EOL> def _sort_disks ( entry ) : <EOL> reg = re . search ( '<STR_LIT>' , entry ) <EOL> if not reg : <EOL> return entry <EOL> if reg : <EOL> return ( reg . group ( <NUM_LIT:1> ) , int ( reg . group ( <NUM_LIT:2> ) ) ) <EOL> def get_identifiers ( self ) : <EOL> return None <EOL> def generate ( self ) : <EOL> """<STR_LIT>""" <EOL> starttime = '<STR_LIT>' % ( self . unit [ <NUM_LIT:0> ] , ) <EOL> if self . step == <NUM_LIT:0> : <EOL> endtime = '<STR_LIT>' <EOL> else : <EOL> endtime = '<STR_LIT>' % ( self . step , self . unit [ <NUM_LIT:0> ] , ) <EOL> fh , path = tempfile . mkstemp ( ) <EOL> args = [ <EOL> "<STR_LIT>" , <EOL> "<STR_LIT>" , <EOL> path , <EOL> '<STR_LIT>' , self . imgformat , <EOL> '<STR_LIT>' , str ( self . get_vertical_label ( ) ) , <EOL> '<STR_LIT>' , str ( self . get_title ( ) ) , <EOL> '<STR_LIT>' , '<STR_LIT:0>' , <EOL> '<STR_LIT>' , endtime , <EOL> '<STR_LIT>' , '<STR_LIT>' % starttime , '<STR_LIT>' , '<STR_LIT>' , <EOL> ] <EOL> args . extend ( self . graph ( ) ) <EOL> proc = subprocess . Popen ( <EOL> args , <EOL> stdout = subprocess . PIPE , <EOL> stdin = subprocess . PIPE , <EOL> stderr = subprocess . PIPE , <EOL> ) <EOL> err = proc . communicate ( ) [ <NUM_LIT:1> ] <EOL> if proc . returncode != <NUM_LIT:0> : <EOL> log . error ( "<STR_LIT>" , err ) <EOL> return fh , path <EOL> class CPUPlugin ( RRDBase ) : <EOL> plugin = "<STR_LIT>" <EOL> title = "<STR_LIT>" <EOL> vertical_label = "<STR_LIT>" <EOL> def graph ( self ) : <EOL> cpu_idle = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> cpu_nice = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> cpu_user = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> cpu_system = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> cpu_interrupt = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> args = [ <EOL> '<STR_LIT>' % cpu_idle , <EOL> '<STR_LIT>' % cpu_idle , <EOL> '<STR_LIT>' % cpu_idle , <EOL> '<STR_LIT>' % cpu_nice , <EOL> '<STR_LIT>' % cpu_nice , <EOL> '<STR_LIT>' % cpu_nice , <EOL> '<STR_LIT>' % cpu_user , <EOL> '<STR_LIT>' % cpu_user , <EOL> '<STR_LIT>' % cpu_user , <EOL> '<STR_LIT>' % cpu_system , <EOL> '<STR_LIT>' % cpu_system , <EOL> '<STR_LIT>' % cpu_system , <EOL> '<STR_LIT>' % cpu_interrupt , <EOL> '<STR_LIT>' % cpu_interrupt , <EOL> '<STR_LIT>' % cpu_interrupt , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ] <EOL> return args <EOL> class InterfacePlugin ( RRDBase ) : <EOL> vertical_label = "<STR_LIT>" <EOL> def get_title ( self ) : <EOL> return '<STR_LIT>' % self . identifier <EOL> def get_identifiers ( self ) : <EOL> ids = [ ] <EOL> proc = pipeopen ( "<STR_LIT>" , important = False , logger = log ) <EOL> ifaces = proc . communicate ( ) [ <NUM_LIT:0> ] . strip ( '<STR_LIT:\n>' ) . split ( '<STR_LIT:U+0020>' ) <EOL> for entry in glob . glob ( '<STR_LIT>' % self . _base_path ) : <EOL> ident = entry . rsplit ( '<STR_LIT:->' , <NUM_LIT:1> ) [ - <NUM_LIT:1> ] <EOL> if ident not in ifaces : <EOL> continue <EOL> if re . match ( r'<STR_LIT>' , ident ) : <EOL> continue <EOL> if os . path . exists ( os . path . join ( entry , '<STR_LIT>' ) ) : <EOL> ids . append ( ident ) <EOL> ids . sort ( key = RRDBase . _sort_disks ) <EOL> return ids <EOL> def graph ( self ) : <EOL> path = os . path . join ( <EOL> "<STR_LIT>" % ( self . _base_path , self . identifier ) , <EOL> "<STR_LIT>" <EOL> ) <EOL> args = [ <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' <EOL> ] <EOL> return args <EOL> class MemoryPlugin ( RRDBase ) : <EOL> title = "<STR_LIT>" <EOL> vertical_label = "<STR_LIT>" <EOL> def graph ( self ) : <EOL> memory_free = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> memory_active = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> memory_cache = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> memory_inactive = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> memory_wired = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> args = [ <EOL> '<STR_LIT>' % memory_free , <EOL> '<STR_LIT>' % memory_free , <EOL> '<STR_LIT>' % memory_free , <EOL> '<STR_LIT>' % memory_active , <EOL> '<STR_LIT>' % memory_active , <EOL> '<STR_LIT>' % memory_active , <EOL> '<STR_LIT>' % memory_cache , <EOL> '<STR_LIT>' % memory_cache , <EOL> '<STR_LIT>' % memory_cache , <EOL> '<STR_LIT>' % memory_inactive , <EOL> '<STR_LIT>' % memory_inactive , <EOL> '<STR_LIT>' % memory_inactive , <EOL> '<STR_LIT>' % memory_wired , <EOL> '<STR_LIT>' % memory_wired , <EOL> '<STR_LIT>' % memory_wired , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' <EOL> ] <EOL> return args <EOL> class LoadPlugin ( RRDBase ) : <EOL> title = "<STR_LIT>" <EOL> vertical_label = "<STR_LIT>" <EOL> def graph ( self ) : <EOL> load = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> args = [ <EOL> '<STR_LIT>' % load , <EOL> '<STR_LIT>' % load , <EOL> '<STR_LIT>' % load , <EOL> '<STR_LIT>' % load , <EOL> '<STR_LIT>' % load , <EOL> '<STR_LIT>' % load , <EOL> '<STR_LIT>' % load , <EOL> '<STR_LIT>' % load , <EOL> '<STR_LIT>' % load , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' <EOL> ] <EOL> return args <EOL> class ProcessesPlugin ( RRDBase ) : <EOL> title = "<STR_LIT>" <EOL> vertical_label = "<STR_LIT>" <EOL> def graph ( self ) : <EOL> blocked = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> zombies = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> stopped = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> running = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> sleeping = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> idle = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> wait = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> args = [ <EOL> '<STR_LIT>' % blocked , <EOL> '<STR_LIT>' % blocked , <EOL> '<STR_LIT>' % blocked , <EOL> '<STR_LIT>' % zombies , <EOL> '<STR_LIT>' % zombies , <EOL> '<STR_LIT>' % zombies , <EOL> '<STR_LIT>' % stopped , <EOL> '<STR_LIT>' % stopped , <EOL> '<STR_LIT>' % stopped , <EOL> '<STR_LIT>' % running , <EOL> '<STR_LIT>' % running , <EOL> '<STR_LIT>' % running , <EOL> '<STR_LIT>' % sleeping , <EOL> '<STR_LIT>' % sleeping , <EOL> '<STR_LIT>' % sleeping , <EOL> '<STR_LIT>' % idle , <EOL> '<STR_LIT>' % idle , <EOL> '<STR_LIT>' % idle , <EOL> '<STR_LIT>' % wait , <EOL> '<STR_LIT>' % wait , <EOL> '<STR_LIT>' % wait , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' <EOL> ] <EOL> return args <EOL> class SwapPlugin ( RRDBase ) : <EOL> title = "<STR_LIT>" <EOL> vertical_label = "<STR_LIT>" <EOL> def graph ( self ) : <EOL> free = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> used = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> args = [ <EOL> '<STR_LIT>' % free , <EOL> '<STR_LIT>' % free , <EOL> '<STR_LIT>' % free , <EOL> '<STR_LIT>' % used , <EOL> '<STR_LIT>' % used , <EOL> '<STR_LIT>' % used , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' <EOL> ] <EOL> return args <EOL> class DFPlugin ( RRDBase ) : <EOL> vertical_label = "<STR_LIT>" <EOL> def get_title ( self ) : <EOL> title = self . identifier . replace ( "<STR_LIT>" , "<STR_LIT>" ) <EOL> return '<STR_LIT>' % title <EOL> def encode ( self , path ) : <EOL> if path == "<STR_LIT:/>" : <EOL> return "<STR_LIT:root>" <EOL> return path . strip ( '<STR_LIT:/>' ) . replace ( '<STR_LIT:/>' , '<STR_LIT:->' ) <EOL> def get_identifiers ( self ) : <EOL> ids = [ ] <EOL> proc = pipeopen ( "<STR_LIT>" , important = False , logger = log ) <EOL> for line in proc . communicate ( ) [ <NUM_LIT:0> ] . strip ( ) . split ( '<STR_LIT:\n>' ) : <EOL> entry = re . split ( r'<STR_LIT>' , line ) [ - <NUM_LIT:1> ] ; <EOL> if entry != "<STR_LIT:/>" and not entry . startswith ( "<STR_LIT>" ) : <EOL> continue <EOL> path = os . path . join ( self . _base_path , "<STR_LIT>" + self . encode ( entry ) , '<STR_LIT>' ) <EOL> if os . path . exists ( path ) : <EOL> ids . append ( entry ) <EOL> return ids <EOL> def graph ( self ) : <EOL> path = os . path . join ( self . _base_path , "<STR_LIT>" % self . encode ( self . identifier ) ) <EOL> free = os . path . join ( path , "<STR_LIT>" ) <EOL> used = os . path . join ( path , "<STR_LIT>" ) <EOL> args = [ <EOL> '<STR_LIT>' % free , <EOL> '<STR_LIT>' % free , <EOL> '<STR_LIT>' % free , <EOL> '<STR_LIT>' % used , <EOL> '<STR_LIT>' % used , <EOL> '<STR_LIT>' % used , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' <EOL> ] <EOL> return args <EOL> class UptimePlugin ( RRDBase ) : <EOL> title = "<STR_LIT>" <EOL> vertical_label = "<STR_LIT>" <EOL> def graph ( self ) : <EOL> path = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> args = [ <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' <EOL> ] <EOL> return args <EOL> class CTLPlugin ( RRDBase ) : <EOL> vertical_label = "<STR_LIT>" <EOL> def get_title ( self ) : <EOL> title = self . identifier . replace ( "<STR_LIT>" , "<STR_LIT>" ) <EOL> return '<STR_LIT>' % title <EOL> def get_identifiers ( self ) : <EOL> ids = [ ] <EOL> for entry in glob . glob ( '<STR_LIT>' % self . _base_path ) : <EOL> ident = entry . split ( '<STR_LIT:->' , <NUM_LIT:1> ) [ - <NUM_LIT:1> ] <EOL> if ident . endswith ( '<STR_LIT>' ) : <EOL> continue <EOL> if os . path . exists ( os . path . join ( entry , '<STR_LIT>' ) ) : <EOL> ids . append ( ident ) <EOL> ids . sort ( key = RRDBase . _sort_ports ) <EOL> return ids <EOL> def graph ( self ) : <EOL> path = os . path . join ( self . _base_path , "<STR_LIT>" % self . identifier . replace ( "<STR_LIT::>" , "<STR_LIT>" ) , "<STR_LIT>" ) <EOL> args = [ <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ] <EOL> return args <EOL> class DiskPlugin ( RRDBase ) : <EOL> vertical_label = "<STR_LIT>" <EOL> def get_title ( self ) : <EOL> title = self . identifier . replace ( "<STR_LIT>" , "<STR_LIT>" ) <EOL> return '<STR_LIT>' % title <EOL> def get_identifiers ( self ) : <EOL> ids = [ ] <EOL> for entry in glob . glob ( '<STR_LIT>' % self . _base_path ) : <EOL> ident = entry . split ( '<STR_LIT:->' , <NUM_LIT:1> ) [ - <NUM_LIT:1> ] <EOL> if not os . path . exists ( '<STR_LIT>' % ident ) : <EOL> continue <EOL> if ident . startswith ( '<STR_LIT>' ) : <EOL> continue <EOL> if os . path . exists ( os . path . join ( entry , '<STR_LIT>' ) ) : <EOL> ids . append ( ident ) <EOL> ids . sort ( key = RRDBase . _sort_disks ) <EOL> return ids <EOL> def graph ( self ) : <EOL> path = os . path . join ( self . _base_path , "<STR_LIT>" % self . identifier , "<STR_LIT>" ) <EOL> args = [ <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' % path , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ] <EOL> return args <EOL> class ARCSizePlugin ( RRDBase ) : <EOL> plugin = '<STR_LIT>' <EOL> vertical_label = "<STR_LIT>" <EOL> def get_title ( self ) : <EOL> return '<STR_LIT>' <EOL> def graph ( self ) : <EOL> cachearc = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> cachel2 = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> args = [ <EOL> '<STR_LIT>' % cachearc , <EOL> '<STR_LIT>' % cachel2 , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ] <EOL> return args <EOL> class ARCRatioPlugin ( RRDBase ) : <EOL> plugin = '<STR_LIT>' <EOL> vertical_label = "<STR_LIT>" <EOL> def get_title ( self ) : <EOL> return '<STR_LIT>' <EOL> def graph ( self ) : <EOL> ratioarc = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> ratiol2 = os . path . join ( self . base_path , "<STR_LIT>" ) <EOL> args = [ <EOL> '<STR_LIT>' % ratioarc , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' % ratiol2 , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ] <EOL> return args <EOL> class ARCResultPlugin ( RRDBase ) : <EOL> plugin = '<STR_LIT>' <EOL> vertical_label = "<STR_LIT>" <EOL> def get_title ( self ) : <EOL> return '<STR_LIT>' % self . identifier <EOL> def get_identifiers ( self ) : <EOL> return ( "<STR_LIT>" , "<STR_LIT>" , "<STR_LIT>" , "<STR_LIT>" ) <EOL> def graph ( self ) : <EOL> hit = os . path . join ( self . base_path , "<STR_LIT>" % self . identifier ) <EOL> miss = os . path . join ( self . base_path , "<STR_LIT>" % self . identifier ) <EOL> args = [ <EOL> '<STR_LIT>' % hit , <EOL> '<STR_LIT>' % hit , <EOL> '<STR_LIT>' % hit , <EOL> '<STR_LIT>' % miss , <EOL> '<STR_LIT>' % miss , <EOL> '<STR_LIT>' % miss , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> '<STR_LIT>' , <EOL> ] <EOL> return args </s>
