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

最新文章

  1. SCNU ACM 2016新生赛决赛 解题报告
  2. Java网络编程——TCP实例
  3. 三分 --- CSU 1548: Design road
  4. iOS 开发 证书总结 开发证书和生产证书的区别
  5. 一个不错的JavaScript解析浏览器路径方法(转)
  6. Android给ListView设置分割线Divider样式
  7. 针对淡入淡出的定时轮播效果js
  8. m文件转换为C/C++文件的编译、绘图、参数、打包问题总结
  9. anroid平台指纹方案
  10. 项目管理-SVN服务器的搭建
  11. Qt实现软件自动更新的一种简单方法
  12. MySQL自动设置create_time和update_time
  13. Docker 容器生命周期管理命令
  14. SP3946 MKTHNUM - K-th Number(整体二分)
  15. EF DataFirst修改数据类型
  16. Linux使用一个定时器实现设置任意数量定时器功能【转】
  17. RAII(Resource Acquisition Is Initialization)简介
  18. Sql自定义表类型批量导入数据
  19. XCode 添加自定义framework运行时出现dyld: Library not loaded的解决方法
  20. Idea_03_常用快捷键

热门文章

  1. 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem B. Travelling Camera Problem set贪心
  2. Mac下配置Apache服务器
  3. Docker系列之(一):10分钟玩转Docker
  4. 通过WinAPI播放PCM声音
  5. [Winform]默认以管理员身份运行程序
  6. 使用IProgress实现异步编程的进程通知
  7. ios nil、NULL和NSNull 的使用
  8. socket tcp缓冲区大小的默认值、最大值
  9. java List转换为字符串并加入分隔符的一些方法总结
  10. dwz 分页 bug (选回 combox 第一个值时不执行 onchange)