pass class NotConfiguredError(BaseException): pass EMBED_SNMPD = True NET_SNMPD = False SNMP_RESTART_DELAY = 5 # Seconds SNMP_POLL_INTERVAL = 10 # Seconds if linux.os.windows_family: from scalarizr.util import reg_value INSTALL_DIR = reg_value('InstallDir') else: INSTALL_DIR = '/' PID_FILE = os.path.join(INSTALL_DIR, 'var', 'run', 'scalarizr.pid') LOGFILES_BASEPATH = os.path.join(INSTALL_DIR, 'var', 'log') LOG_PATH = os.path.join(LOGFILES_BASEPATH, 'scalarizr.log') LOG_DEBUG_PATH = os.path.join(LOGFILES_BASEPATH, 'scalarizr_debug.log') LOGGING_CONFIG = r''' [loggers] keys=root,scalarizr [handlers] keys=console,user_log,debug_log
def installed_version(self, name): ''' Return installed package version ''' return '{0}-{1}'.format(util.reg_value('DisplayVersion'), util.reg_value('DisplayRelease'))
class WinPackageMgr(object): SOURCES_DIR = os.path.join(util.reg_value('InstallDir'), 'etc') def __init__(self): self.index = None def install(self, name, version=None, updatedb=False, **kwds): ''' Installs a `version` of package `name` ''' if not self.index or updatedb: self.updatedb() packageurl = self.index[ name] # simplification. candidate is always the one. tmp_dir = tempfile.mkdtemp() try: packagefile = os.path.join(tmp_dir, os.path.basename(packageurl)) LOG.info('Downloading %s', packageurl) urlretrieve(packageurl, packagefile) LOG.info('Executing installer') p = subprocess.Popen('start "Installer" /wait "%s" /S' % packagefile, shell=True) out, err = p.communicate() LOG.debug('out: %s', out) LOG.debug('err: %s', err) if p.returncode: msg = 'Installation failed. <out>: %s, <err>: %s' % (out, err) raise Exception(msg) LOG.info('Done') finally: shutil.rmtree(tmp_dir) def installed_version(self, name): ''' Return installed package version ''' return '{0}-{1}'.format(util.reg_value('DisplayVersion'), util.reg_value('DisplayRelease')) def _join_packages_str(self, sep, name, version, *args): packages = [(name, version)] if args: for i in xrange(0, len(args), 2): packages.append(args[i:i + 2]) format = '%s' + sep + '%s' return ' '.join(format % p for p in packages) def updatedb(self, **kwds): tmp_dir = tempfile.mkdtemp() self.index = {} try: LOG.debug('Scan package sources dir') for sourcesfile in glob.glob( os.path.join(self.SOURCES_DIR, '*.winrepo')): LOG.debug('Process sources file %s', sourcesfile) urls = open(sourcesfile).read().splitlines() urls = map(string.strip, urls) urls = filter(lambda u: u and not u.startswith('#'), urls) for url in urls: if not re.search(r'{0}/?'.format(linux.os['arch']), url): url = posixpath.join(url, linux.os['arch']) dst = os.path.join(tmp_dir, url.replace('/', '_')) src = posixpath.join(url, 'index') LOG.debug('Fetching index file %s', src) urlretrieve(src, dst) with open(dst) as fp: for line in fp: colums = map(string.strip, line.split(' ')) colums = filter(None, colums) package = colums[0] packagefile = colums[1] self.index[package] = posixpath.join( url, packagefile) finally: shutil.rmtree(tmp_dir) def info(self, name): if not self.index: self.updatedb() try: installed = self.installed_version(name) except: installed = None try: candidate = os.path.basename(self.index[name]) candidate = candidate.split('_', 1)[1].rsplit('.', 2)[0] except KeyError: candidate = None if installed and installed == candidate: candidate = None LOG.debug('Package %s info. installed: %s, candidate: %s', name, installed, candidate) return {'installed': installed, 'candidate': candidate} def version_cmp(self, name_1, name_2): return cmp(distutils.version.LooseVersion(name_1), distutils.version.LooseVersion(name_2)) def list(self): return []
class ScalarizrError(BaseException): pass class NotConfiguredError(BaseException): pass EMBED_SNMPD = True NET_SNMPD = False SNMP_RESTART_DELAY = 5 # Seconds SNMP_POLL_INTERVAL = 10 # Seconds if linux.os.windows_family: from scalarizr.util import reg_value INSTALL_DIR = reg_value('InstallDir') else: INSTALL_DIR = '/' PID_FILE = os.path.join(INSTALL_DIR, 'var', 'run', 'scalarizr.pid') LOGFILES_BASEPATH = os.path.join(INSTALL_DIR, 'var', 'log') LOG_PATH = os.path.join(LOGFILES_BASEPATH, 'scalarizr.log') LOG_DEBUG_PATH = os.path.join(LOGFILES_BASEPATH, 'scalarizr_debug.log') LOGGING_CONFIG = r''' [loggers] keys=root,scalarizr [handlers] keys=console,user_log,debug_log