• 【转】XenServer架构之XAPI的调用流程


    XAPI 调用是使用XML-RPC协议通过网络发送到安装有XenServer 的主机上。XAPI对象的引用不保证对象的永久标识符,引用不允许对象进行相等比较。对同一物体的两个引用,不保证是文本相同的。对象UUIDUniversally UniqueIdentifier,通用唯一识别码)的目的是永久的名字,客户可以通过比较对象的UUID 字符串测试平等。XenServerXAPI 提供UUID 和不透明引用之间的转换机制,每个类都包含有一个UUID 字段。

    XenServer API 是基于XML-RPC 协议进行通信的。XML-RPC 是在Internet 上实现远程方法调用的一种规范,它利用HTTP 作为传输协议,使用XML 作为消息请求的传输主体。XML-RPC 将一个XML 格式的消息体作为HTTP POST 请求发送给服务器,该消息包括名称、运行服务的程序以及输入参数,服务器将执行结果以XML 格式返回,其原理如图所示:

    wKiom1dWPmTgi61bAAB6Aj1n9-g233.png

    通过XenServer XAPI,用户可以管理虚拟机、存储、网络、主机配置和XenServer 池。调用XenServer API 的步骤如下:

    1选择传输级别

    可以通过以下两种传输发出API 调用:

    • 远程管理使用HTTPS

    • 本地管理通过Unix Domain Sockets 使用HTTP

    2身份验证和会话处理

    在执行其余的API 前,客户端需要先调用login_with_password 函数连接到XenServer主机进行身份验证,该函数会在服务器端创建一个会话并将该会话的引用返回给客户端。

    3查找操作对象的引用

    为了查询操作对象的状态或在其上调用操作,客户端需要获取操作对象的引用,获取对象引用的方法有以下几种:

    • get_by_name_label:返回具有特定标签的特定类的所有对象列表;

    • get by uuid:每个类都有一个UUID,通过这个引用可以返回指定的对象;

    • get_all:返回一组对特定类的所有对象的引用;

    • get all records:返回对特定类的每个对象的记录的引用映射。

    4通过对象调用执行同步或异步操作

    每个方法调用都可以是同步或异步的,除了会话、任务、设置的一些字段。同步RPC调用块,是指直到返回值被接收;同步RPC 调用块返回值完全按照RPC 返回值/状态码来说。本文中只有同步调用的API,所有的异步调用是在特殊的异步命名空间。异步RPC 调用返回一个任务ID,而不是直接返回结果;这个标识符随后被用来跟踪正在运行的异步RPC 的状态。但是异步调用可能立即失败,在一个任务ID 被创建之前可能代替这种可能性,然后返回的任务ID是包裹在一个XML-RPC 结构中,包括错误描述和字段值。

    API 对象模型

    本小节主要在对XenServer API类型、XenServer API 主要类及其类之间的映射关系的研究基础上给出API 对象模型调用关系。

    XenServer API 类型简单,共有六种数据类型,如下表所示。

    wKiom1dWPqvSVnRJAAAx9VxCcRk753.png-wh_50

    XenServer API 的类多种多样,如下表所示为XenServer 提供的所有类,并给出每个类的描述。

    wKiom1dWPvSRmt0lAABlF4SrAtc601.png

    wKioL1dWQAqRIK3kAACESKTfx8Y917.png

    wKioL1dWQBfDQiwBAAA6uESQUFU058.png

    wKiom1dWPxvwfTgCAABZ_8CuplM278.png

     

    XenServer API 的类之间是以何种关系进行关联的,完成一个功能需要多个类的相互调用才能完成,如图给出主要类之间的映射关系:

    wKioL1dWQDvxhKmjAACQ9waPrSw634.png

    XenServer  XAPI 类的类型、主要类和类之间的映射关系基础上,得出API 对象模型之间的关系。

    5 API 的一些核心类:

    VMVM 对象表示XenServer 主机或资源池上的特定虚拟机实例。

    主机:主机对象表示资源池中的安装XenServer 物理主机。

    VDIVDI 对象表示虚拟磁盘映像。

    SR SR(存储库)聚合VDI 的集合并封装VDI 位所在的物理存储的属性。

    网络:网络对象表示存在于 XenServer 主机实例所在的环境中的第二层网络。

    6 4 个用作连接器的类,用于指定VM 和主机、存储和网络之间的关系:

    VBDVBD(虚拟块设备)对象表示VM VDI 之间的连接。

    VIFVIF(虚拟网络接口)对象表示VM 和网络对象之间的连接。

    PIFPIF(物理接口)对象表示主机和网络对象之间的连接。

    PBDPBD(物理块设备)对象表示主机和SR(存储库)对象之间的连接。

    虚拟机的创建由Domain 0 来控制,虚拟机的存储和网络是如何创建的,如图所示为虚拟机的网络配置模型:

    wKiom1dWP1TjSigBAAAvVcTZbuk805.png

    本文出自 “我拿流年乱了浮生” 博客,请务必保留此出处http://tasnrh.blog.51cto.com/4141731/1786867

  • 相关阅读:
    Github上优秀的.NET Core开源项目的集合
    阿里云服务器CentOS7.5 部署RabbitMQ
    Centos7开放及查看端口
    虚拟机CentOS7.0 部署Redis 5.0.8 集群
    CentOS7 服务检查命令
    CentOS7 常用命令集合
    pyflink小试牛刀
    python mysql pymysql where 当多条件查询,动态出现某些查询条件为空,就不作为条件查询的情况
    centOS6.2 最小安装下的无线网络配置
    Linux命令提示符的配置
  • 原文地址:https://www.cnblogs.com/caogen1991/p/6233162.html
Copyright © 2020-2023  润新知