예제 #1
0
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)
예제 #2
0
 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))
예제 #3
0
    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