def test_deleteKit(dbm): with dbm.session() as session: with pytest.raises(KitInUse): KitsDbHandler().deleteKit(session, 'base', version='7.0.1', iteration='0')
def test_getKitList(dbm): with dbm.session() as session: result = KitsDbHandler().getKitList(session) assert isinstance(result, list) assert len(result)
def test_getKit_name_and_version(dbm): with dbm.session() as session: result = KitsDbHandler().getKit(session, 'centos', '7.4') assert isinstance(result, Kit) assert result.name == 'centos' assert result.isOs
def test_getKit_name_only(dbm, name, isOs): with dbm.session() as session: result = KitsDbHandler().getKit(session, name) assert isinstance(result, Kit) assert result.name == name assert result.isOs == isOs
def test_getKitList_os(dbm): with dbm.session() as session: result = KitsDbHandler().getKitList(session, os_kits_only=True) assert isinstance(result, list) assert len(result) == 1 assert result[0].isOs
def test_addKit(dbm): with dbm.session() as session: name = 'testkit' version = '0.0.1' iteration = '0' kitObj = KitTortugaObject(name=name, version=version, iteration=iteration) # create dummy component dummy_component1 = ComponentTortugaObject(name='dummy', version='0.0.1') kitObj.addComponent(dummy_component1) dummy_component2 = ComponentTortugaObject(name='dummy2', version='0.0.1') kitObj.addComponent(dummy_component2) KitsDbHandler().addKit(session, kitObj) new_kit = KitsDbHandler().getKit(session, 'testkit') assert new_kit.name == 'testkit' assert new_kit.components with pytest.raises(KitAlreadyExists): KitsDbHandler().addKit(session, kitObj) KitsDbHandler().deleteKit(session, name, version, iteration) with pytest.raises(KitNotFound): KitsDbHandler().getKit(session, name)
def test_getKit_failed(dbm): with dbm.session() as session: with pytest.raises(KitNotFound): KitsDbHandler().getKit(session, 'XXXXkitXXXX')
def test_getKitId(dbm): with dbm.session() as session: result = KitsDbHandler().getKitById(session, 1) assert isinstance(result, Kit)
def __init__(self): TortugaDbApi.__init__(self) self._kitsDbHandler = KitsDbHandler()
class KitDbApi(TortugaDbApi): """ Kit DB API class. """ def __init__(self): TortugaDbApi.__init__(self) self._kitsDbHandler = KitsDbHandler() def getKit(self, session: Session, name, version, iteration: Optional[str] = None): """ Get kit from the db. Returns: kit Throws: KitNotFound DbError """ try: dbKit = self._kitsDbHandler.getKit( session, name, version, iteration) kit = Kit.getFromDbDict(dbKit.__dict__) return self.__retrieveAllKitData(dbKit, kit) except TortugaException: raise except Exception as ex: self._logger.exception(str(ex)) raise 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 getKitById(self, session: Session, id_): """ Get kit from the db Returns: kit Throws: KitNotFound DbError """ try: dbKit = self._kitsDbHandler.getKitById(session, id_) kit = Kit.getFromDbDict(dbKit.__dict__) return self.__retrieveAllKitData(dbKit, kit) except TortugaException: raise except Exception as ex: self._logger.exception(str(ex)) raise def getKitList(self, session: Session, os_kits_only: Optional[bool] = False): """ Get list of all available or os kits only from the db """ try: kits = [] for kit in self._kitsDbHandler.getKitList( session, os_kits_only=os_kits_only): self.loadRelations(kit, {'components': True}) kits.append(Kit.getFromDbDict(kit.__dict__)) return TortugaObjectList(kits) except TortugaException: raise except Exception as ex: self._logger.exception(str(ex)) raise def addKit(self, session: Session, kit): """ Insert kit into the db. Raises: KitAlreadyExists DbError """ try: dbKit = self._kitsDbHandler.addKit(session, kit) session.commit() iteration = dbKit.components[0].os_components[0].os.arch \ if dbKit.isOs else dbKit.iteration kit_descr = format_kit_descriptor( dbKit.name, dbKit.version, iteration) logmsg = 'Installed OS kit [{0}] successfully' \ if dbKit.isOs else 'Installed kit [{0}] successfully' self._logger.info(logmsg.format(kit_descr)) except TortugaException: session.rollback() raise except Exception as ex: session.rollback() self._logger.exception(str(ex)) raise def deleteKit(self, session: Session, name, version, iteration, force=False): """ Delete kit from the db. Raises: KitNotFound KitInUse DbError """ try: self._kitsDbHandler.deleteKit( session, name, version, iteration, force=force) session.commit() except TortugaException: session.rollback() raise except Exception as ex: session.rollback() self._logger.exception(str(ex)) raise def addComponentsToKit(self, session: Session, kit, compList): """ Add components found in compList to existing kit Returns: None Throws: KitNotFound KitInUse DbError """ try: self._kitsDbHandler.addComponentsToKit(session, kit, compList) session.commit() except TortugaException: session.rollback() raise except Exception as ex: session.rollback() self._logger.exception(str(ex)) raise