def enableComponents(self, session: Session):
        """
        Raises:
            ConfigurationError
        """

        self._logger.info('Enabling \'installer\' component')

        base_kit = KitApi().getKit(session, 'base')

        enabledComponents = ['installer']

        # get list of components from 'base' kit
        components = [c for c in base_kit.getComponentList()
                      if c.getName() in enabledComponents]

        installerNode = NodeApi().getInstallerNode(session)

        for component in components:
            SoftwareProfileApi().enableComponent(
                session,
                installerNode.getSoftwareProfile().getName(),
                base_kit.getName(),
                base_kit.getVersion(),
                base_kit.getIteration(),
                component.getName(), compVersion=component.getVersion(),
            )
    def installKits(self, dbm):
        self._logger.info('Installing kits')

        self.out('\n' + _('Installing kits') + '...\n')

        kitApi = KitApi()

        # Iterate over the glob of 'kits-*.tar.bz2'
        kitFileGlob = '%s/kits/kit-*.tar.bz2' % (self._cm.getRoot())

        # Split comma-separated list of kits to skip installing. Sorry, you
        # cannot skip installing the base kit.
        val = self._settings['skip_kits'] \
            if 'skip_kits' in self._settings else ''

        skip_kits = set([
            item for item in val.split(',') if item != 'base']) \
            if val else set()

        for kitPackage in glob.glob(kitFileGlob):
            try:
                kit = get_metadata_from_archive(kitPackage)
            except KitNotFound:
                msg = 'Kit [%s] is malformed/invalid. Skipping.' % (
                    os.path.basename(kitPackage))

                self._logger.error(msg)

                self.out('   %s\n' % (msg))

                continue

            if kit['name'] in skip_kits:
                msg = 'Kit [%s] installation skipped.' % (kit['name'])

                self.out('   %s\n' % (msg))

                self._logger.info(msg)

                continue

            try:
                kitApi.installKitPackage(dbm, kitPackage)
            except EulaAcceptanceRequired:
                msg = 'Kit [%s] requires EULA acceptance. Skipping.' % (
                    kitPackage)

                self.out('   %s\n' % (msg))

                self._logger.info(msg)

                continue

            self.out('   - %s installed.\n' % (kit['name']))

            self._logger.info('Kit [%s] installed' % (kit['name']))

        self._logger.info('Done installing kits')

        load_kits()
Exemple #3
0
    def __getBaseKit(self):         \
            # pylint: disable=no-self-use

        kitApi = KitApi()

        k = None

        for k in kitApi.getKitList():
            if k.getName() == 'base':
                break
        else:
            raise ConfigurationError(
                'Unable to find \"base\" kit. Check Tortuga installation')

        return k
Exemple #4
0
def expandVars(actionCommand):
    kit = [kit for kit in KitApi().getKitList()
           if kit.getName() == 'simple_policy_engine']

    if not kit:
        # This cannot happen but handle it anyway...
        return actionCommand

    ddict = {
        'spe_kitdir': os.path.join(
            ConfigManager().getKitDir(),
            'kit-{0}'.format(
                format_kit_descriptor(kit[0].getName(),
                                      kit[0].getVersion(),
                                      kit[0].getIteration()))),
    }

    return Template(actionCommand).render(ddict)
Exemple #5
0
    def runCommand(self):
        self.parseArgs(_("""
Installs operating system media to Tortuga for the purpose of
package-based node provisioning.
"""))

        load_kits()

        api = KitApi()

        # Pre-process the media URL list
        os_media_urls: List[str] = self.getArgs().osMediaUrl.split(',')

        with DbManager().session() as session:
            api.installOsKit(
                session,
                os_media_urls,
                bUseSymlinks=self.getArgs().symlinksFlag,
                bInteractive=True,
                mirror=self.getArgs().mirror
            )

        if self.getArgs().sync:
            Puppet().agent()
Exemple #6
0
    def __init__(self):
        super(TortugaProxyConfig, self).__init__(validArgCount=4)

        self._cm = ConfigManager()
        self._kitApi = KitApi()