def get_component(self): """ Gets a Component instance for this component. :return: a Component instance """ component = Component(name=self.name, version=self.version) for os_spec in self.os_list: component.addOsFamilyInfo( OsFamilyInfo(name=os_spec['family'], version=os_spec['version'], arch=os_spec['arch'])) return component
def getEnabledComponentList(self, session: Session, name: str) -> TortugaObjectList: """ Get a list of enabled components from the db. Returns: node Throws: DbError """ try: componentList = TortugaObjectList() for c in self._softwareProfilesDbHandler.getSoftwareProfile( session, name).components: self.loadRelation(c, 'kit') componentList.append(Component.getFromDbDict(c.__dict__)) return componentList except TortugaException: raise except Exception as ex: self._logger.exception(str(ex)) raise
def getBestMatchComponent(self, session: Session, name, version, osInfo, kitId): """ Get component from the db. Returns: component Throws: ComponentNotFound DbError """ try: dbComponent = self._componentsDbHandler.getBestMatchComponent( session, name, version, osInfo, kitId) self.loadRelations( dbComponent, { 'os': True, 'family': True, 'kit': True, 'os_components': True, 'osfamily_components': True, }) return Component.getFromDbDict(dbComponent.__dict__) except TortugaException: raise except Exception as ex: self.getLogger().exception('%s' % ex) raise
def getComponent(self, session: Session, name: str, version: str, osInfo: OsInfo, optionDict: Optional[Union[dict, None]] = None) \ -> Component: """ Get component from the db. Returns: component Throws: ComponentNotFound DbError """ try: dbComponent = self._componentsDbHandler.getComponentByOsInfo( session, name, version, osInfo) self.loadRelations(dbComponent, optionDict) return Component.getFromDbDict(dbComponent.__dict__) except TortugaException: raise except Exception as ex: self.getLogger().exception('%s' % ex) raise
def getEnabledComponentList(self, name): """ Get a list of enabled components from the db. Returns: node Throws: DbError """ session = DbManager().openSession() try: componentList = TortugaObjectList() for c in self._softwareProfilesDbHandler.getSoftwareProfile( session, name).components: self.loadRelation(c, 'kit') componentList.append(Component.getFromDbDict(c.__dict__)) return componentList except TortugaException as ex: raise except Exception as ex: self.getLogger().exception('%s' % ex) raise finally: DbManager().closeSession()
def getComponent(self, name, version, osInfo, optionDict=None): """ Get component from the db. Returns: component Throws: ComponentNotFound DbError """ session = DbManager().openSession() try: dbComponent = self._componentsDbHandler.getComponentByOsInfo( session, name, version, osInfo) self.loadRelations(dbComponent, optionDict or {}) return Component.getFromDbDict(dbComponent.__dict__) except TortugaException as ex: raise except Exception as ex: self.getLogger().exception('%s' % ex) raise finally: DbManager().closeSession()
def _create_kit_db_entry(self, session: Session, kit) -> Kit: """ Creates a database entry for a kit. :param kit: :return: a Kit instance (TortugaObject) """ try: return self._kit_db_api.getKit(session, kit['name'], kit['ver']) except KitNotFound: pass # Add the database entries for the kit kitObj = Kit(name=kit['name'], version=kit['ver'], iteration='0') kitObj.setDescription(kit['sum']) kitObj.setIsOs(True) kitObj.setIsRemovable(True) kit_descr = format_kit_descriptor(kit['name'], kit['ver'], kit['arch']) newComp = Component(name=kit_descr, version=kit['ver']) newComp.setDescription('%s mock component' % (kit_descr)) newComp.addOsInfo( osHelper.getOsInfo(kit['name'], kit['ver'], kit['arch'])) kitObj.addComponent(newComp) # Kit does not previously exist, perform 'normal' add kit operation self._kit_db_api.addKit(session, kitObj) return kitObj
def getEnabledComponentList(self, name): """ Get the list of components enabled for a given softwareprofile Returns: a list of enabled components Throws: TortugaException """ url = 'v1/softwareProfiles/%s/components' % ( urllib.parse.quote_plus(name)) try: _, responseDict = self.sendSessionRequest(url) return Component.getListFromDict(responseDict) except TortugaException as ex: raise except Exception as ex: raise TortugaException(exception=ex)
def __retrieveAllKitData(self, dbKit, kit): """ Retrieve full kit data from the db. """ for dbComponent in dbKit.components: # Force loading of OS/OS familyinfo self.loadRelations(dbComponent, { 'os_components': True, 'osfamily_components': True, }) # Convert into component object c = Component.getFromDbDict(dbComponent.__dict__) # Associate component with kit kit.addComponent(c) kit.setSources(self.getTortugaObjectList(KitSource, dbKit.sources)) return kit
def parse(kitXmlFile): """Parse kit information for a given os and return kit object.""" logger = logging.getLogger('tortuga.kit.parse') logger.addHandler(logging.NullHandler()) try: logger.debug('parse(): parsing [%s]' % (kitXmlFile)) xmlDoc = minidom.parse(kitXmlFile) rootNode = xmlDoc.getElementsByTagName('kit')[0] kit = Kit(name=rootNode.getAttribute('name'), version=rootNode.getAttribute('version'), iteration=rootNode.getAttribute('iteration')) documentationNode = rootNode.getElementsByTagName('documentation')[0] kit.setDocumentation(documentationNode.getAttribute('path')) eulaNodes = rootNode.getElementsByTagName('eula') if len(eulaNodes): try: with open(os.path.join(os.path.dirname(kitXmlFile), eulaNodes[0].getAttribute('path')), 'r') as f: textContents = f.read() kit.setEula( Eula(eulaNodes[0].getAttribute('key'), textContents)) except Exception: logger.exception('Exception raised parsing EULA from kit') logger.debug('Unable to load EULA file contents') kit.setIntegrationModulePath( rootNode.getElementsByTagName('integration-module')[0]. getAttribute('path')) kit.setDescription( rootNode.getElementsByTagName('description')[0].firstChild. nodeValue) for cNode in xmlDoc.getElementsByTagName('component'): component = Component(name=cNode.getAttribute('name'), version=cNode.getAttribute('version')) logger.debug( 'parse(): Found component [%s]' % (component.getName())) # Kit description nodeList = cNode.getElementsByTagName('description') if nodeList: component.setDescription(nodeList[0].firstChild.nodeValue) # process os elements for osNode in cNode.getElementsByTagName('os'): result = _process_component_os(osNode, component) logger.debug( 'parse(): Adding component [%s] for [%s]' % ( component, result)) kit.addComponent(component) return kit except TortugaException: raise except Exception as ex: logger.exception('Exception raised while parsing [%s]' % (kitXmlFile)) raise TortugaException(exception=ex)