Beispiel #1
0
    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)
	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)