Example #1
0
 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)
Example #2
0
    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
Example #3
0
    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
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
 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)
Example #7
0
 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)
Example #8
0
    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
Example #9
0
    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
Example #10
0
 def setUp(self):
     super(UpgradingTestCase, self).setUp()
     self.dbapi = db_api.get_instance()
     self.object_versions = release_mappings.get_object_versions()
Example #11
0
 def setUp(self):
     super(UpgradingTestCase, self).setUp()
     self.dbapi = db_api.get_instance()
     self.object_versions = release_mappings.get_object_versions()
Example #12
0
 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())
Example #13
0
 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())