Remove remaining legacy DB API instance_group* methods
Since Ifbd53b13fa0fef62e0329283b73d587f367e46c2 we no longer have compat code in the InstanceGroup object and everything is handled in the API database, so we can drop the legacy DB API methods for instance groups. Change-Id: I3816176ccd33995486a7cd19217bd76100f8bddf
This commit is contained in:
@@ -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).\
|
||||
|
Reference in New Issue
Block a user