示例#1
0
文件: config.py 项目: 159645/Linux
   def __init__(self, configfile='/etc/rcsctl.conf', silent=False):
       
      self.silent = silent
      msg.__init__(self, self.silent) 
      self.step('lecture de la configuration')

      self.configfile = configfile
      self.top = None
      self.rcstop = None
      self.rcslst = None
      self.texteditor = None
      self.filelist = list()

      # recupere les parametres de configuration
      self._getconfig()

      # recupere la liste des fichiers
      if self.rcslst:
         self.poste = 'admin'
  
         self.filelist = self._readfilelist(self.rcslst)

      else:
        self.poste = 'client'

        # il n'y a pas de liste de fichier sur le poste,
        # on construit la liste des fichiers a partir des 
        # fichiers controllés dans rcstop
        self.filelist = self._buildfilelist()
示例#2
0
文件: jobs.py 项目: 159645/Linux
   def __init__(self, todolist, action=None, dryrun=False, silent=False):     
      # affichage des messages
      self.silent = silent
      msg.__init__(self, self.silent)

      self.step('do the job')
      self.todolist = todolist
      self.action = action
      self.dryrun = dryrun
      
      self.doit()
      self.undoit() 
示例#3
0
文件: prep.py 项目: 159645/Linux
   def __init__(self, config, silent=False):

      # affichage des messages
      self.silent = silent
      msg.__init__(self, self.silent)

      # on affiche le resume de la configuration     
      self.config = config
      self.info(self.config)
      
      self.step('preparation ...')
   
      # dictionnaire des fichiers a controler, la clef est
      # le nom du fichier lui meme, la valeure est une liste
      # des attributs du fichier.
      self.files = dict()

      # dictionnaire qui resume les differentes actions
      # a entreprendre en fonction des fichiers a traiter
      self.operations = {
      
         # ...

         # chaque valeure est constituée d'une ou deux listes
         # self.operations[key] = [existant]
         # self.operations[key] = ([existant][a faire])

         # liste les fichiers qui ne seront pas a 
         # traiter, soit innexistants dans le systeme 
         # de fichier, soit le nom du fichier est invalide.

         'skips' : [],

         # liste des dossiers existants.
         # liste des dossiers a creer dans rcstop.

         'dirs' : ([],[]),

         # liste des liens existants valides.
         # listes des liens existants non valides,
         # et des liens a creer.

         'links' : ([],[]),

         # liste des fichiers marques pour check-in.
         # typiquement les nouveaux fichiers.
         # liste des fichiers marques pour check-out.
         # typiquement q<les fichiers qui ont deja subit
         # un check-in.

         'checks' : ([],[]),

         # liste des fichiers auquel on va tenter d'appliquer
         # un template.
       
         'template' : [],

      }

      # ignore list files
      self.skips = self.operations['skips']

      # directory list
      self.dirsok, self.dirsko = self.operations['dirs']

      # links list
      self.linksok, self.linksko = self.operations['links']

      # embarquement, debarquement
      self.cin, self.cout = self.operations['checks']

      # liste des fichiers qui ont besoin d'un remplacement
      # exemple : $HOSTNAME dans le fichier sera remplacé par
      # le nom de machine.
      self.template = self.operations['template']


      if len(config.filelist) > 0:

         # top doit exister si on veut continuer
         # un dossier RCS sera crée a cet emplacement qui contiendra
         # tous les fichiers de revision rcs.
         if not os.path.exists(self.config.top):
            self.error('[dir] %s innexistant' % self.config.top)
            sys.exit(1)

         # premier lancement rcstop est innexistant il faut le creer
         if not os.path.exists(self.config.rcstop):
               self.warn('[dir] %s innexistant' % self.config.rcstop)
               self.dirsko.append(self.config.rcstop)

      # construction des listes d'operations a traiter
      # pour chaque fichier on verifie que les conditions
      # sont bien reunies

         for f in config.filelist:
             
            # recupere les attributs du fichier
            self.__getattr(f)   

            # si le fichier est innexistant sur le systeme
            # on l'ignore
            self.__skips(f)   
 
            # dossier a creer ou pas
            self.__dirs(f)

            # lien a creer ou pas
            self.__links(f)

            # embarquement ou debarquement
            self.__checks(f)
 
            # besoin de remplacement
            self.__template(f)