虚拟机列表中虚拟机的操作出不来,只有一个终止实例功能
其他功能出不了
完整的功能应该是:
以快照为例: horizon/dashboard/nova/instances_and_volumes/instances/tables.py 中
class SnapshotLink(tables.LinkAction):
name = "snapshot"
verbose_name = _("Snapshot")
url = "horizon:nova:images_and_snapshots:snapshots:create"
classes = ("ajax-modal", "btn-camera")
def allowed(self, request, instance=None):
return instance.status in ACTIVE_STATES 返回True 则有这个功能,返回False没有这个功能
原因:horizon/dashboard/nova/instances_and_volumes/instances/tables.py 中设置:
ACTIVE_STATES = ("ACTIVE",)
而数据库中instances的vm_state字段是active。大小写导致的。
allowed都是返回False。
解决:添加一个状态:
ACTIVE_STATES = ("ACTIVE", "active")
比较诡异的事情是,数据库中一直是active,装了好几个环境,有的环境取到的值就是active 有的就是ACTIVE。 在instances_and_volumes/views.py中打印
for instance in instances:
LOG.error(instance.status)
有的环境是ACTIVE 有的环境是active