[Openstack]client api源码学习

本文主要探讨OpenStack的官方client API,特别是novaclient。作为跨项目服务调用的工具,novaclient在安装OpenStack时必不可少。文章以novaclient为例,介绍其如何通过HTTPClient类实现对REST API的调用,包括认证、GET、POST等操作,便于理解OpenStack API的使用方法。
摘要由CSDN通过智能技术生成

       Openstack提供了一个rest形式的web api接口供外部用户调用,为了方便对他的使用,openstack提供了一个可以被python直接调用的封装过的官方client api(如novaclient,glanceclient),在openstack的项目中,一些跨项目的服务的调用就是使用client api,在安装openstack时这些api必须要被安装的。

      各个client可能因为开发的人员不同实现起来是有差异的,这里就以比较有代表性的novaclient为例进行学习。client api基本的调用方法如下:

   """

    创建一个client 实例:

        >>> client = Client(USERNAME, PASSWORD, PROJECT_ID, AUTH_URL)

    调用其中managers中的方法
        >>> client.servers.list()
        ...
        >>> client.flavors.list()
        ...

    """

       Client类实际继承于HTTPClient类,HTTPClient类实现通过keystone的验证功能,实现对应于特定endpoint 的含有验证信息的get,post,patch,head,delete, rest方式的方法,方便对于api的访问。

  # FIXME(jesse): project_id isn't required to authenticate
    def __init__(self, username, api_key, project_id, auth_url=None,
                  insecure=False, timeout=None, proxy_tenant_id=None,
                  proxy_token=None, region_name=None,
                  endpoint_type='publicURL', extensions=None,
                  service_type='compute', service_name=None,
                  volume_service_name=None, timings=False,
                  bypass_url=None, os_cache=False, no_cache=True,
                  http_log_debug=False, auth_system='keystone',
                  auth_plugin=None,
                  cacert=None):
        # FIXME(comstud): Rename the api_key argument above when we
        # know it's not being used as keyword argument
        password = api_key
        self.project_id = project_id
        self.flavors = flavors.FlavorManager(self)
        self.flavor_access = flavor_access.FlavorAccessManager(self)
        self.images = images.ImageManager(self)
        self.limits = limits.LimitsManager(self)
        self.servers = servers.ServerManager(self)

        # extensions
        self.agents = agents.AgentsManager(self)
        self.dns_domains = floating_ip_dns.FloatingIPDNSDomainManager(self)
        self.dns_entries =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值