def _flavor_create(context, values): specs = values.get('extra_specs') db_specs = [] if specs: for k, v in specs.items(): db_spec = api_models.FlavorExtraSpecs() db_spec['key'] = k db_spec['value'] = v db_specs.append(db_spec) projects = values.get('projects') db_projects = [] if projects: for project in set(projects): db_project = api_models.FlavorProjects() db_project['project_id'] = project db_projects.append(db_project) values['extra_specs'] = db_specs values['projects'] = db_projects db_flavor = api_models.Flavors() db_flavor.update(values) try: db_flavor.save(context.session) except db_exc.DBDuplicateEntry as e: if 'flavorid' in e.columns: raise exception.FlavorIdExists(flavor_id=values['flavorid']) raise exception.FlavorExists(name=values['name']) except Exception as e: raise db_exc.DBError(e) return _dict_with_extra_specs(db_flavor)
def test_tables_flavors_instance_types(self): flavors = api_models.Flavors() instance_types = models.InstanceTypes() columns_flavors = self._get_columns_list(flavors) # The description column is only in the API database so we have to # exclude it from this check. columns_flavors.remove('description') columns_instance_types = self._get_columns_list(instance_types) self.assertTrue( self._check_column_list(columns_flavors, columns_instance_types))
def _create_api_flavor(context): fake_db_flavor = dict(fake_api_flavor) del fake_db_flavor['extra_specs'] flavor = api_models.Flavors() flavor.update(fake_db_flavor) flavor.save(context.session) fake_db_extra_spec = { 'flavor_id': flavor['id'], 'key': 'foo', 'value': 'bar' } flavor_es = api_models.FlavorExtraSpecs() flavor_es.update(fake_db_extra_spec) flavor_es.save(context.session) return flavor