[BUG] Dashboard报错:if usages['subnets']['available'] <= 0: KeyError: 'available'

Openstack版本:Liberty

系统平台:CentOS 7.2 64bit

###############################################################

1.现象:

管理员登陆Dasgboard,查看项目》网络》网络》选择一个网络》选择一个子网》查看网络ID,如下:


查看httpd日志报错如下:

tail -f /etc/httpd/logs/error_log
[Tue Apr 12 10:24:08.830778 2016] [:error] [pid 94866] Error while checking action permissions.
[Tue Apr 12 10:24:08.830848 2016] [:error] [pid 94866] Traceback (most recent call last):
[Tue Apr 12 10:24:08.830854 2016] [:error] [pid 94866]   File "/usr/lib/python2.7/site-packages/horizon/tables/base.py", line 1270, in _filter_action
[Tue Apr 12 10:24:08.830859 2016] [:error] [pid 94866]     return action._allowed(request, datum) and row_matched
[Tue Apr 12 10:24:08.830862 2016] [:error] [pid 94866]   File "/usr/lib/python2.7/site-packages/horizon/tables/actions.py", line 135, in _allowed
[Tue Apr 12 10:24:08.830866 2016] [:error] [pid 94866]     self.allowed(request, datum))
[Tue Apr 12 10:24:08.830873 2016] [:error] [pid 94866]   File "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/../../openstack_dashboard/dashboards/project/networks/subnets/tables.py", line 103, in allowed
[Tue Apr 12 10:24:08.830883 2016] [:error] [pid 94866]     if usages['subnets']['available'] <= 0:
[Tue Apr 12 10:24:08.830899 2016] [:error] [pid 94866] KeyError: 'available'
################################################################

2.问题解决:

修改/usr/share/openstack-dashboard/openstack_dashboard/dashboards/project/networks/subnets/tables.py源代码如下

class CreateSubnet(SubnetPolicyTargetMixin, CheckNetworkEditable,
                   tables.LinkAction):
    name = "create"
    verbose_name = _("Create Subnet")
    url = "horizon:project:networks:addsubnet"
    classes = ("ajax-modal",)
    icon = "plus"
    policy_rules = (("network", "create_subnet"),)

    def get_link_url(self, datum=None):
        network_id = self.table.kwargs['network_id']
        return reverse(self.url, args=(network_id,))

    def allowed(self, request, datum=None):
        usages = quotas.tenant_quota_usages(request)
        if usages['subnets'].get('available', 1) <= 0:
            if 'disabled' not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
                self.verbose_name = _('Create Subnet (Quota exceeded)')
        else:
            self.verbose_name = _('Create Subnet')
            self.classes = [c for c in self.classes if c != 'disabled']

        return True


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值