def __init__(self, plugin_name, plugin_domain, read_freq, time_to_reading): from xmlrpclib import ServerProxy # The proxy through which we talk to the rrd daemon is the # same for all plugins, so we just initialize it once and # share it among them if PluginControl.__plugin_proxy is None: PluginControl.__plugin_proxy = ServerProxy( 'http://' + SOCKPATH, transport=UnixStreamTransport()).Plugin if plugin_domain not in PLUGIN_DOMAINS: raise ValueError("'plugin_domain' = '{}' not one of '{}'".format( plugin_domain, ', '.join(PLUGIN_DOMAINS))) if read_freq not in READ_FREQS: raise ValueError("'read_freq' = '{}' not one of '{}'".format( read_freq, ', '.join(READ_FREQS))) self.__time_to_reading = float(time_to_reading) if time_to_reading >= READ_FREQS[read_freq] - 1: raise ValueError("'time_to_reading' too high") self.__mmap = PluginBackend(plugin_name) self.__plugin_name = plugin_name self.__plugin_domain = plugin_domain self.__read_freq = read_freq self.__dispatch = getattr(PluginControl.__plugin_proxy, plugin_domain)