Openstack Mitaka dashboard 增加自定义IP功能

M版dashboard前端页面增加网络端口的时候是不能定义IP的,只能通过DHCP地址池分配或者用命令行模式指定IP,如下图:
Openstack Mitaka dashboard 增加自定义IP功能


修改部分:
使用的horizon版本:openstack-dashboard-9.0.1-1.el7.noarch
只需修改一个文件:
/usr/share/openstack-dashboard/openstack_dashboard/dashboards/admin/networks/ports/forms.py
(1)在CreatePort()类后面增加加IP获取方式和IP地址表单项目,如下图红色框内容:
Openstack Mitaka dashboard 增加自定义IP功能

#Add start
specify_ip = forms.ChoiceField(
    label=_("Floating IPs"),
    help_text=_("To specify a fixed IP, select any options."),
    required=False,
    choices=[('', "DHCP"),
             ('fixed_ip', _("Fixed IPs"))],
    widget=forms.SelectWidget(attrs={
        'class': 'switchable',
        'data-slug': 'specify_ip',
    }))
fixed_ip = forms.IPField(
    label=_("IP Address"),
    required=False,
    help_text=_("Specify the IP address for the new port"),
    version=forms.IPv4 | forms.IPv6,
    widget=forms.TextInput(attrs={
        'class': 'switched',
        'data-switch-on': 'specify_ip',
        'data-specify_ip-fixed_ip': _("IP Address"),
    }))
#Add end

(2)同样在CreatePort()类下面 handle() 函数中,在执行创建端口之前(api.neutron.port_create())修改传递的参数,增加指定IP参数(参数格式为 kwargs['fixed_ips'] = [{'ip_address':'x.x.x.x','subnet_id':'subnet-id'}]),如下图红色框内容:
Openstack Mitaka dashboard 增加自定义IP功能

#Add start
if data['specify_ip']:
    subnet_List = network.to_dict()['subnets']
    if len(subnet_List) == 1:
        subnetId = subnet_List[0]['id']
        data['fixed_ips'] = [{'ip_address':data['fixed_ip'],'subnet_id':subnetId}]
del data['fixed_ip']
del data['specify_ip']
#Add End

这里添加了判断当前网络下是否只有一个子网,如果一个网络下面有多个子网的话则会执行DHCP方式获取。修改后reload一下Apache:
systemctl reload httpd
dashboard效果如下图:
Openstack Mitaka dashboard 增加自定义IP功能Openstack Mitaka dashboard 增加自定义IP功能

转载于:https://blog.51cto.com/ouziyou/2103197

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值