def __init__(self, opts, pillar=False, **kwargs): super(TopUtils, self).__init__(opts=opts, pillar=pillar, **kwargs) topd_dir = None if kwargs.get('topd_dir', None): pathutils = PathUtils(opts, pillar=pillar) topd_dir = pathutils.relpath( kwargs['topd_dir'], kwargs.get('saltenv', 'base') ) self.topd_directory = unicode( topd_dir or self.opts.get( u'topd_dir', u'_tops' ) ) self.verbose = kwargs.get('verbose', False) if pillar: self.topd_base = self.opts.get(u'topd_base_pillar', u'/srv/pillar') include = ['pillar_roots'] else: self.topd_base = self.opts.get(u'topd_base_state', u'/srv/salt') include = ['file_roots'] # All enabled tops pattern self.pattern_enable = re.compile( r'{0}{1}*.top'.format( os.path.join(self.topd_base, self.topd_directory), os.sep ) ) # All tops pattern self.pattern_all = re.compile( matcher.Regex( r'''(?ix) (?P<dir> .*? ) (?P<saltenv> {0} ) (?P<sep> [{1}] | [|] ) (?P<top>.*(?=[.]top$)|.*) (?P<ext>[.]top|) '''.format('|'.join(self.saltenvs()), os.sep) ) ) self._topinfo_roots = self.pathinfo_roots(include=include) self._toplist = self.files() self._tops = self.tops()
def generateDirectoryName(cls, databaseSession, repository): from pathutils import PathUtils assert(cls.getRepositoryDirectoryLock().acquired) baseDirectoryName = repository.redactedUrl baseDirectoryName = PathUtils.createFileName(baseDirectoryName) baseDirectoryName = baseDirectoryName.lower() if cls.isDirectoryNameFree(databaseSession, baseDirectoryName): return baseDirectoryName n = 2 while not cls.isDirectoryNameFree(databaseSession, baseDirectoryName + u"_" + unicode(n)): n += 1 return baseDirectoryName + u"_" + unicode(n)