Merge "Remove remaining legacy DB API instance_group* methods"
This commit is contained in:
commit
812beb4305
@ -905,43 +905,6 @@ def instance_remove_security_group(context, instance_id, security_group_id):
|
||||
####################
|
||||
|
||||
|
||||
def instance_group_create(context, values, policies=None, members=None):
|
||||
"""Create a new group.
|
||||
|
||||
Each group will receive a unique uuid. This will be used for access to the
|
||||
group.
|
||||
"""
|
||||
return IMPL.instance_group_create(context, values, policies, members)
|
||||
|
||||
|
||||
def instance_group_get(context, group_uuid):
|
||||
"""Get a specific group by id."""
|
||||
return IMPL.instance_group_get(context, group_uuid)
|
||||
|
||||
|
||||
def instance_group_get_by_instance(context, instance_uuid):
|
||||
"""Get the group an instance is a member of."""
|
||||
return IMPL.instance_group_get_by_instance(context, instance_uuid)
|
||||
|
||||
|
||||
def instance_group_update(context, group_uuid, values):
|
||||
"""Update the attributes of an group."""
|
||||
return IMPL.instance_group_update(context, group_uuid, values)
|
||||
|
||||
|
||||
def instance_group_get_all(context):
|
||||
"""Get all groups."""
|
||||
return IMPL.instance_group_get_all(context)
|
||||
|
||||
|
||||
def instance_group_get_all_by_project_id(context, project_id):
|
||||
"""Get all groups for a specific project_id."""
|
||||
return IMPL.instance_group_get_all_by_project_id(context, project_id)
|
||||
|
||||
|
||||
###################
|
||||
|
||||
|
||||
def instance_info_cache_get(context, instance_uuid):
|
||||
"""Gets an instance info cache from the table.
|
||||
|
||||
|
@ -5670,208 +5670,6 @@ def service_uuids_online_data_migration(context, max_count):
|
||||
####################
|
||||
|
||||
|
||||
def _instance_group_get_query(context, model_class, id_field=None, id=None,
|
||||
read_deleted=None):
|
||||
columns_to_join = {models.InstanceGroup: ['_policies', '_members']}
|
||||
query = model_query(context, model_class, read_deleted=read_deleted,
|
||||
project_only=True)
|
||||
for c in columns_to_join.get(model_class, []):
|
||||
query = query.options(joinedload(c))
|
||||
|
||||
if id and id_field:
|
||||
query = query.filter(id_field == id)
|
||||
|
||||
return query
|
||||
|
||||
|
||||
@pick_context_manager_writer
|
||||
def instance_group_create(context, values, policies=None, members=None):
|
||||
"""Create a new group."""
|
||||
uuid = values.get('uuid', None)
|
||||
if uuid is None:
|
||||
uuid = uuidutils.generate_uuid()
|
||||
values['uuid'] = uuid
|
||||
|
||||
try:
|
||||
group = models.InstanceGroup()
|
||||
group.update(values)
|
||||
group.save(context.session)
|
||||
except db_exc.DBDuplicateEntry:
|
||||
raise exception.InstanceGroupIdExists(group_uuid=uuid)
|
||||
|
||||
# We don't want '_policies' and '_members' attributes to be lazy loaded
|
||||
# later. We know there is nothing here since we just created this
|
||||
# instance group.
|
||||
if policies:
|
||||
_instance_group_policies_add(context, group.id, policies)
|
||||
else:
|
||||
group._policies = []
|
||||
if members:
|
||||
_instance_group_members_add(context, group.id, members)
|
||||
else:
|
||||
group._members = []
|
||||
|
||||
return instance_group_get(context, uuid)
|
||||
|
||||
|
||||
@pick_context_manager_reader
|
||||
def instance_group_get(context, group_uuid):
|
||||
"""Get a specific group by uuid."""
|
||||
group = _instance_group_get_query(context,
|
||||
models.InstanceGroup,
|
||||
models.InstanceGroup.uuid,
|
||||
group_uuid).\
|
||||
first()
|
||||
if not group:
|
||||
raise exception.InstanceGroupNotFound(group_uuid=group_uuid)
|
||||
return group
|
||||
|
||||
|
||||
@pick_context_manager_reader
|
||||
def instance_group_get_by_instance(context, instance_uuid):
|
||||
group_member = model_query(context, models.InstanceGroupMember).\
|
||||
filter_by(instance_id=instance_uuid).\
|
||||
first()
|
||||
if not group_member:
|
||||
raise exception.InstanceGroupNotFound(group_uuid='')
|
||||
group = _instance_group_get_query(context, models.InstanceGroup,
|
||||
models.InstanceGroup.id,
|
||||
group_member.group_id).first()
|
||||
if not group:
|
||||
raise exception.InstanceGroupNotFound(
|
||||
group_uuid=group_member.group_id)
|
||||
return group
|
||||
|
||||
|
||||
@pick_context_manager_writer
|
||||
def instance_group_update(context, group_uuid, values):
|
||||
"""Update the attributes of a group.
|
||||
|
||||
If values contains a metadata key, it updates the aggregate metadata
|
||||
too. Similarly for the policies and members.
|
||||
"""
|
||||
group = model_query(context, models.InstanceGroup).\
|
||||
filter_by(uuid=group_uuid).\
|
||||
first()
|
||||
if not group:
|
||||
raise exception.InstanceGroupNotFound(group_uuid=group_uuid)
|
||||
|
||||
policies = values.get('policies')
|
||||
if policies is not None:
|
||||
_instance_group_policies_add(context,
|
||||
group.id,
|
||||
values.pop('policies'),
|
||||
set_delete=True)
|
||||
members = values.get('members')
|
||||
if members is not None:
|
||||
_instance_group_members_add(context,
|
||||
group.id,
|
||||
values.pop('members'),
|
||||
set_delete=True)
|
||||
|
||||
group.update(values)
|
||||
|
||||
if policies:
|
||||
values['policies'] = policies
|
||||
if members:
|
||||
values['members'] = members
|
||||
|
||||
|
||||
@pick_context_manager_reader
|
||||
def instance_group_get_all(context):
|
||||
"""Get all groups."""
|
||||
return _instance_group_get_query(context, models.InstanceGroup).all()
|
||||
|
||||
|
||||
@pick_context_manager_reader
|
||||
def instance_group_get_all_by_project_id(context, project_id):
|
||||
"""Get all groups."""
|
||||
return _instance_group_get_query(context, models.InstanceGroup).\
|
||||
filter_by(project_id=project_id).\
|
||||
all()
|
||||
|
||||
|
||||
def _instance_group_count_by_project_and_user(context, project_id, user_id):
|
||||
return model_query(context, models.InstanceGroup, read_deleted="no").\
|
||||
filter_by(project_id=project_id).\
|
||||
filter_by(user_id=user_id).\
|
||||
count()
|
||||
|
||||
|
||||
def _instance_group_model_get_query(context, model_class, group_id,
|
||||
read_deleted='no'):
|
||||
return model_query(context,
|
||||
model_class,
|
||||
read_deleted=read_deleted).\
|
||||
filter_by(group_id=group_id)
|
||||
|
||||
|
||||
def _instance_group_id(context, group_uuid):
|
||||
"""Returns the group database ID for the group UUID."""
|
||||
|
||||
result = model_query(context,
|
||||
models.InstanceGroup,
|
||||
(models.InstanceGroup.id,)).\
|
||||
filter_by(uuid=group_uuid).\
|
||||
first()
|
||||
if not result:
|
||||
raise exception.InstanceGroupNotFound(group_uuid=group_uuid)
|
||||
return result.id
|
||||
|
||||
|
||||
def _instance_group_members_add(context, id, members, set_delete=False):
|
||||
all_members = set(members)
|
||||
query = _instance_group_model_get_query(context,
|
||||
models.InstanceGroupMember, id)
|
||||
if set_delete:
|
||||
query.filter(~models.InstanceGroupMember.instance_id.in_(
|
||||
all_members)).\
|
||||
soft_delete(synchronize_session=False)
|
||||
|
||||
query = query.filter(
|
||||
models.InstanceGroupMember.instance_id.in_(all_members))
|
||||
already_existing = set()
|
||||
for member_ref in query.all():
|
||||
already_existing.add(member_ref.instance_id)
|
||||
|
||||
for instance_id in members:
|
||||
if instance_id in already_existing:
|
||||
continue
|
||||
member_ref = models.InstanceGroupMember()
|
||||
member_ref.update({'instance_id': instance_id,
|
||||
'group_id': id})
|
||||
context.session.add(member_ref)
|
||||
|
||||
return members
|
||||
|
||||
|
||||
def _instance_group_policies_add(context, id, policies, set_delete=False):
|
||||
allpols = set(policies)
|
||||
query = _instance_group_model_get_query(context,
|
||||
models.InstanceGroupPolicy, id)
|
||||
if set_delete:
|
||||
query.filter(~models.InstanceGroupPolicy.policy.in_(allpols)).\
|
||||
soft_delete(synchronize_session=False)
|
||||
|
||||
query = query.filter(models.InstanceGroupPolicy.policy.in_(allpols))
|
||||
already_existing = set()
|
||||
for policy_ref in query.all():
|
||||
already_existing.add(policy_ref.policy)
|
||||
|
||||
for policy in policies:
|
||||
if policy in already_existing:
|
||||
continue
|
||||
policy_ref = models.InstanceGroupPolicy()
|
||||
policy_ref.update({'policy': policy,
|
||||
'group_id': id})
|
||||
context.session.add(policy_ref)
|
||||
|
||||
return policies
|
||||
|
||||
|
||||
####################
|
||||
|
||||
|
||||
@pick_context_manager_reader
|
||||
def pci_device_get_by_addr(context, node_id, dev_addr):
|
||||
pci_dev_ref = model_query(context, models.PciDevice).\
|
||||
|
Loading…
x
Reference in New Issue
Block a user