~ntt-pf-lab/nova/flatmanager-ipv6

« back to all changes in this revision

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

  • Committer: Tushar Patil
  • Date: 2011-03-14 19:09:57 UTC
  • mfrom: (737.1.62 nova)
  • Revision ID: tushar.vitthal.patil@gmail.com-20110314190957-uog8uzd75v2jhi8e
removed conflicts and merged with trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
119
119
        service_ref = service_get(context, service_id, session=session)
120
120
        service_ref.delete(session=session)
121
121
 
 
122
        if service_ref.topic == 'compute' and \
 
123
            len(service_ref.compute_node) != 0:
 
124
            for c in service_ref.compute_node:
 
125
                c.delete(session=session)
 
126
 
122
127
 
123
128
@require_admin_context
124
129
def service_get(context, service_id, session=None):
126
131
        session = get_session()
127
132
 
128
133
    result = session.query(models.Service).\
 
134
                     options(joinedload('compute_node')).\
129
135
                     filter_by(id=service_id).\
130
136
                     filter_by(deleted=can_read_deleted(context)).\
131
137
                     first()
176
182
 
177
183
 
178
184
@require_admin_context
 
185
def service_get_all_compute_by_host(context, host):
 
186
    topic = 'compute'
 
187
    session = get_session()
 
188
    result = session.query(models.Service).\
 
189
                  options(joinedload('compute_node')).\
 
190
                  filter_by(deleted=False).\
 
191
                  filter_by(host=host).\
 
192
                  filter_by(topic=topic).\
 
193
                  all()
 
194
 
 
195
    if not result:
 
196
        raise exception.NotFound(_("%s does not exist or is not "
 
197
                                   "a compute node.") % host)
 
198
 
 
199
    return result
 
200
 
 
201
 
 
202
@require_admin_context
179
203
def _service_get_all_topic_subquery(context, session, topic, subq, label):
180
204
    sort_value = getattr(subq.c, label)
181
205
    return session.query(models.Service, func.coalesce(sort_value, 0)).\
286
310
 
287
311
 
288
312
@require_admin_context
 
313
def compute_node_get(context, compute_id, session=None):
 
314
    if not session:
 
315
        session = get_session()
 
316
 
 
317
    result = session.query(models.ComputeNode).\
 
318
                     filter_by(id=compute_id).\
 
319
                     filter_by(deleted=can_read_deleted(context)).\
 
320
                     first()
 
321
 
 
322
    if not result:
 
323
        raise exception.NotFound(_('No computeNode for id %s') % compute_id)
 
324
 
 
325
    return result
 
326
 
 
327
 
 
328
@require_admin_context
 
329
def compute_node_create(context, values):
 
330
    compute_node_ref = models.ComputeNode()
 
331
    compute_node_ref.update(values)
 
332
    compute_node_ref.save()
 
333
    return compute_node_ref
 
334
 
 
335
 
 
336
@require_admin_context
 
337
def compute_node_update(context, compute_id, values):
 
338
    session = get_session()
 
339
    with session.begin():
 
340
        compute_ref = compute_node_get(context, compute_id, session=session)
 
341
        compute_ref.update(values)
 
342
        compute_ref.save(session=session)
 
343
 
 
344
 
 
345
###################
 
346
 
 
347
 
 
348
@require_admin_context
289
349
def certificate_get(context, certificate_id, session=None):
290
350
    if not session:
291
351
        session = get_session()
506
566
    return result
507
567
 
508
568
 
 
569
@require_context
 
570
def floating_ip_update(context, address, values):
 
571
    session = get_session()
 
572
    with session.begin():
 
573
        floating_ip_ref = floating_ip_get_by_address(context, address, session)
 
574
        for (key, value) in values.iteritems():
 
575
            floating_ip_ref[key] = value
 
576
        floating_ip_ref.save(session=session)
 
577
 
 
578
 
509
579
###################
510
580
 
511
581
 
907
977
 
908
978
 
909
979
@require_context
 
980
def instance_get_vcpu_sum_by_host_and_project(context, hostname, proj_id):
 
981
    session = get_session()
 
982
    result = session.query(models.Instance).\
 
983
                      filter_by(host=hostname).\
 
984
                      filter_by(project_id=proj_id).\
 
985
                      filter_by(deleted=False).\
 
986
                      value(func.sum(models.Instance.vcpus))
 
987
    if not result:
 
988
        return 0
 
989
    return result
 
990
 
 
991
 
 
992
@require_context
 
993
def instance_get_memory_sum_by_host_and_project(context, hostname, proj_id):
 
994
    session = get_session()
 
995
    result = session.query(models.Instance).\
 
996
                      filter_by(host=hostname).\
 
997
                      filter_by(project_id=proj_id).\
 
998
                      filter_by(deleted=False).\
 
999
                      value(func.sum(models.Instance.memory_mb))
 
1000
    if not result:
 
1001
        return 0
 
1002
    return result
 
1003
 
 
1004
 
 
1005
@require_context
 
1006
def instance_get_disk_sum_by_host_and_project(context, hostname, proj_id):
 
1007
    session = get_session()
 
1008
    result = session.query(models.Instance).\
 
1009
                      filter_by(host=hostname).\
 
1010
                      filter_by(project_id=proj_id).\
 
1011
                      filter_by(deleted=False).\
 
1012
                      value(func.sum(models.Instance.local_gb))
 
1013
    if not result:
 
1014
        return 0
 
1015
    return result
 
1016
 
 
1017
 
 
1018
@require_context
910
1019
def instance_action_create(context, values):
911
1020
    """Create an instance action from the values dictionary."""
912
1021
    action_ref = models.InstanceActions()
1530
1639
                   all()
1531
1640
 
1532
1641
 
 
1642
@require_admin_context
 
1643
def volume_get_all_by_instance(context, instance_id):
 
1644
    session = get_session()
 
1645
    result = session.query(models.Volume).\
 
1646
                     filter_by(instance_id=instance_id).\
 
1647
                     filter_by(deleted=False).\
 
1648
                     all()
 
1649
    if not result:
 
1650
        raise exception.NotFound(_('No volume for instance %s') % instance_id)
 
1651
    return result
 
1652
 
 
1653
 
1533
1654
@require_context
1534
1655
def volume_get_all_by_project(context, project_id):
1535
1656
    authorize_project_context(context, project_id)