~citrix-openstack/nova/xenapi

« back to all changes in this revision

Viewing changes to nova/db/sqlalchemy/api.py

merged trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
155
155
 
156
156
 
157
157
@require_admin_context
 
158
def service_get_by_host_and_topic(context, host, topic):
 
159
    session = get_session()
 
160
    return session.query(models.Service).\
 
161
                   filter_by(deleted=False).\
 
162
                   filter_by(disabled=False).\
 
163
                   filter_by(host=host).\
 
164
                   filter_by(topic=topic).\
 
165
                   first()
 
166
 
 
167
 
 
168
@require_admin_context
158
169
def service_get_all_by_host(context, host):
159
170
    session = get_session()
160
171
    return session.query(models.Service).\
1262
1273
 
1263
1274
 
1264
1275
@require_admin_context
1265
 
def auth_destroy_token(_context, token):
 
1276
def auth_token_destroy(context, token_id):
1266
1277
    session = get_session()
1267
 
    session.delete(token)
 
1278
    with session.begin():
 
1279
        token_ref = auth_token_get(context, token_id, session=session)
 
1280
        token_ref.delete(session=session)
1268
1281
 
1269
1282
 
1270
1283
@require_admin_context
1271
 
def auth_get_token(_context, token_hash):
1272
 
    session = get_session()
 
1284
def auth_token_get(context, token_hash, session=None):
 
1285
    if session is None:
 
1286
        session = get_session()
1273
1287
    tk = session.query(models.AuthToken).\
1274
1288
                  filter_by(token_hash=token_hash).\
 
1289
                  filter_by(deleted=can_read_deleted(context)).\
1275
1290
                  first()
1276
1291
    if not tk:
1277
1292
        raise exception.NotFound(_('Token %s does not exist') % token_hash)
1279
1294
 
1280
1295
 
1281
1296
@require_admin_context
1282
 
def auth_create_token(_context, token):
 
1297
def auth_token_update(context, token_hash, values):
 
1298
    session = get_session()
 
1299
    with session.begin():
 
1300
        token_ref = auth_token_get(context, token_hash, session=session)
 
1301
        token_ref.update(values)
 
1302
        token_ref.save(session=session)
 
1303
 
 
1304
 
 
1305
@require_admin_context
 
1306
def auth_token_create(_context, token):
1283
1307
    tk = models.AuthToken()
1284
1308
    tk.update(token)
1285
1309
    tk.save()
1959
1983
                       all()
1960
1984
 
1961
1985
 
 
1986
###################
 
1987
 
 
1988
 
 
1989
@require_admin_context
 
1990
def migration_create(context, values):
 
1991
    migration = models.Migration()
 
1992
    migration.update(values)
 
1993
    migration.save()
 
1994
    return migration
 
1995
 
 
1996
 
 
1997
@require_admin_context
 
1998
def migration_update(context, id, values):
 
1999
    session = get_session()
 
2000
    with session.begin():
 
2001
        migration = migration_get(context, id, session=session)
 
2002
        migration.update(values)
 
2003
        migration.save(session=session)
 
2004
        return migration
 
2005
 
 
2006
 
 
2007
@require_admin_context
 
2008
def migration_get(context, id, session=None):
 
2009
    if not session:
 
2010
        session = get_session()
 
2011
    result = session.query(models.Migration).\
 
2012
                     filter_by(id=id).first()
 
2013
    if not result:
 
2014
        raise exception.NotFound(_("No migration found with id %s")
 
2015
                % migration_id)
 
2016
    return result
 
2017
 
 
2018
 
 
2019
@require_admin_context
 
2020
def migration_get_by_instance_and_status(context, instance_id, status):
 
2021
    session = get_session()
 
2022
    result = session.query(models.Migration).\
 
2023
                     filter_by(instance_id=instance_id).\
 
2024
                     filter_by(status=status).first()
 
2025
    if not result:
 
2026
        raise exception.NotFound(_("No migration found with instance id %s")
 
2027
                % migration_id)
 
2028
    return result
 
2029
 
 
2030
 
1962
2031
##################
1963
2032
 
1964
2033
 
2060
2129
    return result
2061
2130
 
2062
2131
 
 
2132
    ##################
 
2133
 
 
2134
 
 
2135
@require_admin_context
 
2136
def instance_type_create(_context, values):
 
2137
    try:
 
2138
        instance_type_ref = models.InstanceTypes()
 
2139
        instance_type_ref.update(values)
 
2140
        instance_type_ref.save()
 
2141
    except:
 
2142
        raise exception.DBError
 
2143
    return instance_type_ref
 
2144
 
 
2145
 
 
2146
@require_context
 
2147
def instance_type_get_all(context, inactive=0):
 
2148
    """
 
2149
    Returns a dict describing all instance_types with name as key.
 
2150
    """
 
2151
    session = get_session()
 
2152
    if inactive:
 
2153
        inst_types = session.query(models.InstanceTypes).\
 
2154
                        order_by("name").\
 
2155
                        all()
 
2156
    else:
 
2157
        inst_types = session.query(models.InstanceTypes).\
 
2158
                        filter_by(deleted=inactive).\
 
2159
                        order_by("name").\
 
2160
                        all()
 
2161
    if inst_types:
 
2162
        inst_dict = {}
 
2163
        for i in inst_types:
 
2164
            inst_dict[i['name']] = dict(i)
 
2165
        return inst_dict
 
2166
    else:
 
2167
        raise exception.NotFound
 
2168
 
 
2169
 
 
2170
@require_context
 
2171
def instance_type_get_by_name(context, name):
 
2172
    """Returns a dict describing specific instance_type"""
 
2173
    session = get_session()
 
2174
    inst_type = session.query(models.InstanceTypes).\
 
2175
                    filter_by(name=name).\
 
2176
                    first()
 
2177
    if not inst_type:
 
2178
        raise exception.NotFound(_("No instance type with name %s") % name)
 
2179
    else:
 
2180
        return dict(inst_type)
 
2181
 
 
2182
 
 
2183
@require_context
 
2184
def instance_type_get_by_flavor_id(context, id):
 
2185
    """Returns a dict describing specific flavor_id"""
 
2186
    session = get_session()
 
2187
    inst_type = session.query(models.InstanceTypes).\
 
2188
                                    filter_by(flavorid=int(id)).\
 
2189
                                    first()
 
2190
    if not inst_type:
 
2191
        raise exception.NotFound(_("No flavor with name %s") % id)
 
2192
    else:
 
2193
        return dict(inst_type)
 
2194
 
 
2195
 
 
2196
@require_admin_context
 
2197
def instance_type_destroy(context, name):
 
2198
    """ Marks specific instance_type as deleted"""
 
2199
    session = get_session()
 
2200
    instance_type_ref = session.query(models.InstanceTypes).\
 
2201
                                      filter_by(name=name)
 
2202
    records = instance_type_ref.update(dict(deleted=1))
 
2203
    if records == 0:
 
2204
        raise exception.NotFound
 
2205
    else:
 
2206
        return instance_type_ref
 
2207
 
 
2208
 
 
2209
@require_admin_context
 
2210
def instance_type_purge(context, name):
 
2211
    """ Removes specific instance_type from DB
 
2212
        Usually instance_type_destroy should be used
 
2213
    """
 
2214
    session = get_session()
 
2215
    instance_type_ref = session.query(models.InstanceTypes).\
 
2216
                                      filter_by(name=name)
 
2217
    records = instance_type_ref.delete()
 
2218
    if records == 0:
 
2219
        raise exception.NotFound
 
2220
    else:
 
2221
        return instance_type_ref
 
2222
 
 
2223
 
2063
2224
####################
2064
2225
 
2065
2226