| Server IP : 61.19.30.66 / Your IP : 216.73.216.15 Web Server : Apache/2.2.22 (Ubuntu) System : Linux klw 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:39:31 UTC 2014 x86_64 User : www-data ( 33) PHP Version : 5.3.10-1ubuntu3.48 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /usr/share/pyshared/landscape/manager/ |
Upload File : |
import os
import logging
from ConfigParser import ConfigParser, NoOptionError
from landscape.monitor.plugin import DataWatcher
from landscape.lib.persist import Persist
KEYSTONE_CONFIG_FILE = "/etc/keystone/keystone.conf"
class KeystoneToken(DataWatcher):
"""
A plugin which pulls the admin_token from the keystone configuration file
and sends it to the landscape server.
"""
message_type = "keystone-token"
message_key = "data"
run_interval = 60 * 15
def __init__(self, keystone_config_file=KEYSTONE_CONFIG_FILE):
self._keystone_config_file = keystone_config_file
def register(self, client):
super(KeystoneToken, self).register(client)
self._persist_filename = os.path.join(self.registry.config.data_path,
"keystone.bpickle")
self._persist = Persist(filename=self._persist_filename)
self.registry.reactor.call_on("resynchronize", self._resynchronize)
self.registry.reactor.call_every(self.registry.config.flush_interval,
self.flush)
def _resynchronize(self):
"""
Recreate the persist upon C{_resynchronize}.
"""
self._persist.remove("data")
def flush(self):
self._persist.save(self._persist_filename)
def get_data(self):
"""
Return the Keystone administrative token.
"""
if not os.path.exists(self._keystone_config_file):
return None
config = ConfigParser()
config.read(self._keystone_config_file)
try:
admin_token = config.get("DEFAULT", "admin_token")
except NoOptionError:
logging.error("KeystoneToken: No admin_token found in %s"
% (self._keystone_config_file))
return None
return admin_token