def get_usable_luns(cls, queryset):
"""
Get all Luns which are not used by Targets and have enough VolumeNode configuration
to be used as a Target (i.e. have only one node or at least have a primary node set)
Luns are usable if they have only one VolumeNode (i.e. no HA available but
we can definitively say where it should be mounted) or if they have
a primary VolumeNode (i.e. one or more VolumeNodes is available and we
know at least where the primary mount should be)
"""
queryset = cls.get_unused_luns(queryset)\
.filter(volumenode__host__not_deleted=True)\
.annotate(has_primary=BoolOr('volumenode__primary'), num_volumenodes=Count('volumenode'))\
.filter(Q(num_volumenodes=1) | Q(has_primary=True))
return queryset
评论列表
文章目录