def test_current_object_versions(self): registered_objects = obj_base.IronicObjectRegistry.obj_classes() obj_versions = release_mappings.get_object_versions( releases=['master']) for obj, vers in obj_versions.items(): # vers is a set of versions, not ordered self.assertIn(registered_objects[obj][0].VERSION, vers)
def check_versions(self): """Checks the whole database for incompatible objects. This scans all the tables in search of objects that are not supported; i.e., those that are not specified in `ironic.common.release_mappings.RELEASE_MAPPING`. This includes objects that have null 'version' values. :returns: A Boolean. True if all the objects have supported versions; False otherwise. """ object_versions = release_mappings.get_object_versions() for model in models.Base.__subclasses__(): if model.__name__ in object_versions: supported_versions = object_versions[model.__name__] if not supported_versions: continue # NOTE(rloo): .notin_ does not handle null: # http://docs.sqlalchemy.org/en/latest/core/sqlelement.html#sqlalchemy.sql.operators.ColumnOperators.notin_ query = model_query(model).filter( sql.or_(model.version == sql.null(), model.version.notin_(supported_versions))) if query.count(): return False return True
def test_get_object_versions_releases_objects(self): with mock.patch.dict(release_mappings.RELEASE_MAPPING, self.TEST_MAPPING, clear=True): actual_versions = release_mappings.get_object_versions( releases=['7.0'], objects=['Portgroup', 'Chassis']) expected_versions = { 'Portgroup': set(['1.3']), } self.assertEqual(expected_versions, actual_versions)
def test_get_object_versions_releases(self): with mock.patch.dict(release_mappings.RELEASE_MAPPING, self.TEST_MAPPING, clear=True): actual_versions = release_mappings.get_object_versions( releases=['ocata']) expected_versions = { 'Node': set(['1.21']), 'Conductor': set(['1.2']), 'Port': set(['1.6']), 'Portgroup': set(['1.3']), } self.assertEqual(expected_versions, actual_versions)
def setUp(self): super(UpdateToLatestVersionsTestCase, self).setUp() self.context = context.get_admin_context() self.dbapi = db_api.get_instance() obj_versions = release_mappings.get_object_versions( objects=['Node', 'Chassis']) master_objs = release_mappings.RELEASE_MAPPING['master']['objects'] self.node_ver = master_objs['Node'][0] self.chassis_ver = master_objs['Chassis'][0] self.node_old_ver = self._get_old_object_version( self.node_ver, obj_versions['Node']) self.chassis_old_ver = self._get_old_object_version( self.chassis_ver, obj_versions['Chassis']) self.node_version_same = self.node_old_ver == self.node_ver self.chassis_version_same = self.chassis_old_ver == self.chassis_ver # number of objects with different versions self.num_diff_objs = 2 if self.node_version_same: self.num_diff_objs -= 1 if self.chassis_version_same: self.num_diff_objs -= 1
def setUp(self): super(UpgradingTestCase, self).setUp() self.dbapi = db_api.get_instance() self.object_versions = release_mappings.get_object_versions()
def test_current_object_versions(self): registered_objects = obj_base.IronicObjectRegistry.obj_classes() obj_versions = release_mappings.get_object_versions( releases=['master']) for obj, vers in obj_versions.items(): self.assertEqual(registered_objects[obj][0].VERSION, vers.pop())