获得network的可用fixed_ip个数-openstackE版

感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!

如有转载,请保留源作者博客信息。

Better Me的博客blog.csdn.net/tantexian

如需交流,欢迎大家博客留言。


获得network的可用fixed_ip个数-openstackE版

about:blank

方法一:直接在nova底层增加fixed_ip_count字段:

















方法二:直接从dashboard封装api到底层:

其中api发布为:


以下为详细信息:
1、dashboard页面:
dashboards/nova/zones_and_networks/views.py
            network_id = networks[0]['id']
            count = api.nova.get_available_count_ips(self.request, network_id)
api/nova.py
def get_available_count_ips(request,network_id):
    return novaclient(request).networks.get_available_count_ips(network_id)

2、novaclient层
v1_1/networks.py

    def get_available_count_ips(self, network_id):
        """
        Get a specific flavor.

        :param flavor: The ID of the :class:`Flavor` to get.
        :rtype: :class:`Flavor`
        """
        return self._list("/os-networks/get_available_count_ips/%s" % network_id, "count")

3、nova层
api/openstack/compute/contrib/networks.py
    def get_available_count_ips(self, req, id):
        context = req.environ['nova.context']
        authorize(context)
        LOG.debug(_("Showing network_fixed_count with id %s") % id)
        try:
            count = self.network_api.get_available_count_ips(context, id)
        except exception.NetworkNotFound:
            raise exc.HTTPNotFound(_("Network not found"))
        return {'count': count}

collection_actions = {'list_limit': 'POST','get_available_count_ips': 'POST'},

vi network/api.py
    def get_available_count_ips(self, context,network_id):
        return rpc.call(context,
                        FLAGS.network_topic,
                        {'method': 'get_available_count_ips',
                         'args': {'network_id': network_id}})


vi network/manager.py
    @wrap_check_policy
    def get_available_count_ips(self, context, network_id):
        count = db.network_available_count_ips(context, network_id)
        return count


db/api.py
def network_available_count_ips(context, network_id):
    """Return the number of reserved ips in the network."""
    return IMPL.network_available_count_ips(context, network_id)


db/sqlalchemy/api.py
@require_admin_context
def network_available_count_ips(context, network_id):
    return _network_ips_query(context, network_id).\
                    filter_by(reserved=False).\
                    filter_by(host='').\
                    filter_by(instance_id='').\
                    filter_by(allocated=False).\
                    count()


注释:一定要跟到base.py里面看_list的传参方式:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值