Example #1
0
    def prepareOSKit(self) -> Dict[str, str]:
        """
        :return: None
        """
        kit: Dict[str, str] = {
            'ver': self.osdistro.version,
            'arch': self.osdistro.architecture,
            'name': self.osdistro.name,
            'sum':
            'OS kit for %s %s' % (self.osdistro.name, self.osdistro.version),
            'initrd': self.osdistro.initrd_path,
            'kernel': self.osdistro.kernel_path
        }

        # Copy kernel & initrd to pxedir
        if not os.path.exists(self.pxeboot_dir):
            os.makedirs(self.pxeboot_dir)

        try:
            self.osdistro.copy_initrd(self.pxeboot_dir, True)
            self.osdistro.copy_kernel(self.pxeboot_dir, True)
        except (CopyError, FileAlreadyExists, IOError) as exc:
            self.logger.error(
                'Error copying initrd and/or kernel from OS media'
                ' (exception=[%s])' % exc)

            # consider the kernel/initrd invalidated, remove them
            removeFile(os.path.join(self.pxeboot_dir, kit['kernel']))
            removeFile(os.path.join(self.pxeboot_dir, kit['initrd']))

            raise

        self.kit = kit

        return kit
Example #2
0
    def prepareOSKit(self, srcPath):
        version = self.osdistro.version \
            if not self.mirror else self.osdistro.version.split('.', 1)[0]

        kit = {
            'ver': version,
            'arch': self.osdistro.arch,
            'name': self.osdistro.ostype,
        }

        kit_descr = format_kit_descriptor(kit['name'], kit['ver'], kit['arch'])

        kit['sum'] = 'OS kit for %s %s' % (kit['name'], kit['ver'])
        kit['initrd'] = 'initrd-%s.img' % (kit_descr)
        kit['kernel'] = 'kernel-%s' % (kit_descr)

        # Copy kernel & initrd to pxedir
        if not os.path.exists(self.pxeboot_dir):
            os.makedirs(self.pxeboot_dir)

        bmt = BootMediaTool(srcPath)

        # Check whether this is disc 1.
        if bmt.getKernelPath() is None or bmt.getInitrdPath() is None:
            raise UnrecognizedKitMedia("Please supply disc 1 first!")

        try:
            bmt.copyInitrd(os.path.join(self.pxeboot_dir, kit['initrd']), True)

            # copy kernel to standardized name
            bmt.copyKernel(os.path.join(self.pxeboot_dir, kit['kernel']), True)
        except (CopyError, FileAlreadyExists, IOError) as exc:
            # cleanup tmp stuff

            self.logger.error(
                'Error copying initrd and/or kernel from OS media'
                ' (exception=[%s])' % (exc))

            # consider the kernel/initrd invalidated, remove them
            removeFile(os.path.join(self.pxeboot_dir, kit['kernel']))
            removeFile(os.path.join(self.pxeboot_dir, kit['initrd']))

            raise

        self.kit = kit

        return kit
    def __deleteRule(self, applicationName, ruleName):
        ruleId = self.__getRuleId(applicationName, ruleName)

        self._logger.debug('[%s] Deleting rule %s' %
                           (self.__class__.__name__, ruleId))

        self.__checkRuleExists(ruleId)

        rule = self._ruleDict[ruleId]

        if rule.isStatusEnabled():
            self.__disableRule(rule)

        del self._disabledRuleDict[ruleId]

        del self._ruleDict[ruleId]

        osUtility.removeFile(self.__getRuleFileName(applicationName, ruleName))
Example #4
0
    def cleanup(self):
        # If possible, remove any package sources we added
        self._removePackageSources()

        osUtility.removeFile(self._lockFilePath)

        osUtility.removeFile(self._cm.getProfileNiiFile())

        # Turn off the webservice daemon
        self._disableTortugaws()

        # Restore resolv.conf
        if osUtility.haveBackupFile('/etc/resolv.conf'):
            osUtility.restoreFile('/etc/resolv.conf')

        # Drop database
        dbManager = self._osObjectFactory.getOsApplicationManager(
            self._settings['database']['engine'])

        try:
            dbSchema = self._cm.getDbSchema()

            self.out('  * Removing database [%s]\n' % (dbSchema))

            dbManager.destroyDb(dbSchema)
        except Exception as ex:   # pylint: disable=broad-except
            self._logger.exception(
                'Could not destroy existing db: {}'.format(ex))

        # Remove DB password file
        osUtility.removeFile(self._cm.getDbPasswordFile())

        # Remove CFM secret
        cfmSecretFile = self._cm.getCfmSecretFile()
        if os.path.exists(cfmSecretFile):
            osUtility.removeFile(self._cm.getCfmSecretFile())

        # Generic cleanup
        osUtility.removeLink('/etc/tortuga-release')

        # Cleanup or remove depot directory
        errmsg = 'Removing contents of [%s]' % (self._settings['depotpath'])

        self._logger.debug(errmsg)

        if self._depotCreated:
            self.out('  * %s\n' % (errmsg))

            osUtility.removeDir(self._settings['depotpath'])
        else:
            if self._settings['depotpath']:
                self.out('  * %s\n' % (errmsg))

                tortugaSubprocess.executeCommand(
                    'rm -rf %s/*' % (self._settings['depotpath']))

                self.out('\n')

        if not self._forceCleaning:
            self.out('Consult log(s) for further details.\n')

            self._logger.error('Installation failed')