Ejemplo n.º 1
0
    def execute(self):
        if self._executed:
            return False
        self._executed = True

        Log.cout(Log.INFO, 'Save root state...')

        if not self._ainstRoot.checkRoot():
            Log.cout(Log.ERROR, 'Check ainst root failed')
            return False

        saveDir = self._ainstRoot.getRootVarAinstDir('save')
        settingsDir = self._ainstRoot.getRootVarAinstDir('settings')
        tmpDir = self._ainstRoot.getRootVarAinstDir('tmp')
        if not saveDir or not settingsDir or not tmpDir:
            Log.cout(Log.ERROR,
                     'There is not save, settings or tmp dir in installroot')
            return False

        if not self._ainstRoot.isValidAinstRoot():
            Log.cout(Log.ERROR,
                     '%s is invalid ainst root' % self._ainstRoot.getRoot())
            return False
        reader = AinstRootReader(self._ainstRoot)
        activePkgs = reader.getActivePackages()
        activePkgNames = [pkgName for pkgName, pkgVer, mtime in activePkgs]
        activePkgInfos = [(pkgVer, mtime)
                          for pkgName, pkgVer, mtime in activePkgs]
        activePkgInfos = sorted(activePkgInfos, key=lambda pkg: pkg[1])
        pkgSettings = reader.getPkgSettings(activePkgNames)

        state = RootState(time.time(), self._command,
                          self._ainstRoot.getRoot(), common.AINST_VERSION,
                          activePkgInfos, pkgSettings)
        content = RootStateStreamer().toString(state)
        if not content:
            Log.cout(Log.ERROR, 'Generate root state content failed')
            return False

        stateFileName = reader.getNextStateFileName()
        self._tmpFile = tmpDir + stateFileName
        if not file_util.writeToFile(self._tmpFile, content):
            Log.cout(Log.ERROR, 'Write state to %s failed' % self._tmpFile)
            return False

        saveFile = saveDir + stateFileName
        if self._saveFile:
            saveFile = self._saveFile

        if not file_util.move(self._tmpFile, saveFile):
            Log.cout(Log.ERROR, 'Move root state file %s failed' % saveFile)
            self.undo()
            return False

        self._stateFileName = saveFile
        return True
Ejemplo n.º 2
0
    def execute(self):
        if self._executed:
            return False
        self._executed = True

        Log.cout(Log.INFO, 'Save root state...')

        if not self._ainstRoot.checkRoot():
            Log.cout(Log.ERROR, 'Check ainst root failed')
            return False

        saveDir = self._ainstRoot.getRootVarAinstDir('save')
        settingsDir = self._ainstRoot.getRootVarAinstDir('settings')
        tmpDir = self._ainstRoot.getRootVarAinstDir('tmp')
        if not saveDir or not settingsDir or not tmpDir:
            Log.cout(Log.ERROR, 'There is not save, settings or tmp dir in installroot')
            return False

        if not self._ainstRoot.isValidAinstRoot():
            Log.cout(Log.ERROR, '%s is invalid ainst root' % self._ainstRoot.getRoot())
            return False
        reader = AinstRootReader(self._ainstRoot)
        activePkgs = reader.getActivePackages()
        activePkgNames = [pkgName for pkgName, pkgVer, mtime in activePkgs]
        activePkgInfos = [(pkgVer, mtime) for pkgName, pkgVer, mtime in activePkgs]
        activePkgInfos = sorted(activePkgInfos, key = lambda pkg : pkg[1])
        pkgSettings = reader.getPkgSettings(activePkgNames)

        state = RootState(time.time(), self._command, self._ainstRoot.getRoot(),
                          common.AINST_VERSION, activePkgInfos, pkgSettings)
        content = RootStateStreamer().toString(state)
        if not content:
            Log.cout(Log.ERROR, 'Generate root state content failed')
            return False
            
        stateFileName = reader.getNextStateFileName()
        self._tmpFile = tmpDir + stateFileName
        if not file_util.writeToFile(self._tmpFile, content):
            Log.cout(Log.ERROR, 'Write state to %s failed' % self._tmpFile)
            return False

        saveFile = saveDir + stateFileName
        if self._saveFile:
            saveFile = self._saveFile

        if not file_util.move(self._tmpFile, saveFile):
            Log.cout(Log.ERROR, 'Move root state file %s failed' % saveFile)
            self.undo()
            return False

        self._stateFileName = saveFile
        return True
Ejemplo n.º 3
0
 def buildInstalledPkgRepoSack(self):
     sack = PackageSack()
     ainstRoot = AinstRoot(self._installRoot)
     if not ainstRoot.isValidAinstRoot():
         Log.cout(Log.DEBUG, '%s is invalid ainst root' % self._installRoot)
         return None
     reader = AinstRootReader(ainstRoot)
     installPkgMetas = reader.getInstallPkgMetas()
     if installPkgMetas is None:
         Log.cout(Log.DEBUG, 'Get install meta of %s failed' % self._installRoot)
         return None
     for pkgVer, rpmPath in installPkgMetas:
         pkg = LocalRpmPackage(rpmPath)
         if pkg.init():
             sack.addPackageObject(pkg)
     return sack
Ejemplo n.º 4
0
 def buildInstalledPkgRepoSack(self):
     sack = PackageSack()
     ainstRoot = AinstRoot(self._installRoot)
     if not ainstRoot.isValidAinstRoot():
         Log.cout(Log.DEBUG, '%s is invalid ainst root' % self._installRoot)
         return None
     reader = AinstRootReader(ainstRoot)
     installPkgMetas = reader.getInstallPkgMetas()
     if installPkgMetas is None:
         Log.cout(Log.DEBUG,
                  'Get install meta of %s failed' % self._installRoot)
         return None
     for pkgVer, rpmPath in installPkgMetas:
         pkg = LocalRpmPackage(rpmPath)
         if pkg.init():
             sack.addPackageObject(pkg)
     return sack
Ejemplo n.º 5
0
 def buildInstalledPkgSack(self):
     sack = PackageSack()
     ainstRoot = AinstRoot(self._installRoot)
     if not ainstRoot.isValidAinstRoot():
         Log.cout(Log.DEBUG, '%s is invalid ainst root' % self._installRoot)
         return None
     reader = AinstRootReader(ainstRoot)
     installPkgMetas = reader.getInstallPkgMetas()
     if installPkgMetas is None:
         Log.cout(Log.DEBUG, 'Get install meta of %s failed' % self._installRoot)
         return None
     for pkgVer, rpmPath in installPkgMetas:
         header = rpmutils.readRpmHeader(rpmPath)
         if header:
             repo = FakeRepository(self._installRoot, True)
             pkg = AinstRpmPackage(header, repo)
             sack.addPackageObject(pkg)
     return sack
Ejemplo n.º 6
0
 def buildInstalledPkgSack(self):
     sack = PackageSack()
     ainstRoot = AinstRoot(self._installRoot)
     if not ainstRoot.isValidAinstRoot():
         Log.cout(Log.DEBUG, '%s is invalid ainst root' % self._installRoot)
         return None
     reader = AinstRootReader(ainstRoot)
     installPkgMetas = reader.getInstallPkgMetas()
     if installPkgMetas is None:
         Log.cout(Log.DEBUG,
                  'Get install meta of %s failed' % self._installRoot)
         return None
     for pkgVer, rpmPath in installPkgMetas:
         header = rpmutils.readRpmHeader(rpmPath)
         if header:
             repo = FakeRepository(self._installRoot, True)
             pkg = AinstRpmPackage(header, repo)
             sack.addPackageObject(pkg)
     return sack
Ejemplo n.º 7
0
 def buildActivePkgSack(self):
     sack = PackageSack()
     ainstRoot = AinstRoot(self._installRoot)
     if not ainstRoot.isValidAinstRoot():
         Log.cout(Log.DEBUG, '%s is invalid ainst root' % self._installRoot)
         return None
     reader = AinstRootReader(ainstRoot)
     activePkgMetas = reader.getActivePkgMetas()
     if activePkgMetas is None:
         Log.cout(Log.DEBUG, 'Get active meta of %s failed' % self._installRoot)
         return None
     for pkgName, rpmPath, aicfPath in activePkgMetas:
         aicfInfo = None
         if file_util.isFile(aicfPath):
             aicfInfo = AicfParser().parse(aicfPath)
         header = rpmutils.readRpmHeader(rpmPath)
         if header:
             repo = FakeRepository(self._installRoot, True)
             pkg = AinstRpmPackage(header, repo, aicfInfo)
             sack.addPackageObject(pkg)
     return sack
Ejemplo n.º 8
0
 def buildActivePkgSack(self):
     sack = PackageSack()
     ainstRoot = AinstRoot(self._installRoot)
     if not ainstRoot.isValidAinstRoot():
         Log.cout(Log.DEBUG, '%s is invalid ainst root' % self._installRoot)
         return None
     reader = AinstRootReader(ainstRoot)
     activePkgMetas = reader.getActivePkgMetas()
     if activePkgMetas is None:
         Log.cout(Log.DEBUG,
                  'Get active meta of %s failed' % self._installRoot)
         return None
     for pkgName, rpmPath, aicfPath in activePkgMetas:
         aicfInfo = None
         if file_util.isFile(aicfPath):
             aicfInfo = AicfParser().parse(aicfPath)
         header = rpmutils.readRpmHeader(rpmPath)
         if header:
             repo = FakeRepository(self._installRoot, True)
             pkg = AinstRpmPackage(header, repo, aicfInfo)
             sack.addPackageObject(pkg)
     return sack