IBM Systems Director VMControl 资源生命周期管理: 第 3 部分

使用 VMControl REST API 执行远程镜像部署生命周期管理

IBM® Systems Director 是一个平台管理解决方案,用于管理多系统环境中的物理和虚拟系统。该解决方案支持各种各样的虚拟化技术,以及跨 IBM 和非 IBM 平台的多种操作系统。IBM Systems Director VMControl™ 是 IBM Systems Director 的一个高级管理器,而 IBM Systems Director 是一组可免费拥有的平台管理工具。本教程是一个有关 VMControl 资源生命周期管理系列的一部分。本教程介绍使用 VMControl 具象状态传输 (REST) 应用编程接口 (API) 的镜像部署生命周期。

Aparna Khare, 系统软件工程师, IBM China

/developerworks/aix/library/au-aix-vmcontrol-lifecycle-1/aparna_64x80.jpgAparna Khare 是一名系统软件工程师,从事 IBM Systems Director VMControl 高级管理器的开发工作。Aparna 在 Java/J2EE 技术方面拥有 4 年的工作经验。



Piyush Jain, 高级软件工程师, IBM

http://www.ibm.com/developerworks/i/p-pjain.jpgPiyush Jain 是 IBM 的一名高级软件工程师,目前主要致力于 IBM Systems Director 中的 VMControl,这是 IBM 产品组合中的一个重要产品。他有 5 年的从业经验,从印度卡纳塔克邦的 IET Alwar 获得了信息技术工程学士学位。



Nicholas Schambureck, 咨询软件工程师, IBM

/developerworks/aix/library/au-aix-vmcontrol-lifecycle-1/nick_64x80.jpgNick Schambureck 是一名咨询工程师,也是 IBM Systems Director VMControl 命令行界面和 REST API 团队的负责人。他自该项目一开始的时候就一直从事该项目的工作。



Poornima Soundararajan, 软件工程师, IBM

/developerworks/aix/library/au-aix-vmcontrol-lifecycle-1/poornima_64x80.jpgPoornima Soundararajan 是一名软件工程师,从事 IBM Systems Director VMControl 高级管理器的开发。Poornima 在 Java/J2EE 技术方面拥有超过 7 年的工作经验。



2013 年 7 月 22 日

开始之前

了解您期望从本教程学到什么,以及如何充分利用本教程。

关于本系列

IBM Systems Director VMControl 高级管理器简化了跨多种虚拟化技术和硬件平台的虚拟环境的管理。VMControl 是一个领先的多平台虚拟化管理解决方案,包含在各种 IBM Systems Director 版本中。VMControl 支持 3 种类型的接口(GUI、CLI 和 REST API)。本系列通过 REST 探讨 VMControl 资源生命周期。

本系列包含以下生命周期:

  • 通过 VMControl REST API 执行虚拟服务器生命周期管理:介绍一个虚拟服务器的生命周期(创建、查看、编辑和删除)管理。其中着重强调了 VMControl Express Edition(VMControl 的免费部分)的功能。
  • 通过 VMControl REST API 执行虚拟设备生命周期管理:介绍一个虚拟设备的生命周期管理。虚拟设备是一种操作系统镜像和元数据,能够远程安装(部署)在新的或现有的虚拟服务器上。
  • 通过 VMControl REST API 执行镜像部署:介绍一种典型的部署流程,以及使用此部署流程创建的工作负载的生命周期管理。
  • 通过 VMControl REST API 执行服务器系统池生命周期管理:介绍一个服务器系统池的生命周期管理及其虚拟服务器重新部署功能。服务器系统池是一组类似的物理服务器(主机) - 一个由 VMControl 实现的云。VMControl 选择要部署到哪个主机,并允许在服务器系统池内重新部署虚拟服务器。

本系列将通过 REST 帮助所有 VMControl 用户理解 VMControl 功能。本系列还将帮助理解资源生命周期的详细流程。

关于本教程

本教程演示使用 VMControl REST API 实现的镜像部署生命周期。镜像部署是将操作系统安装在一个新的或现有的虚拟服务器的行为。部署的结果是一个封装了一个或多个虚拟服务器的工作负载。镜像部署的生命周期具有以下主要功能:

  • 部署虚拟设备
  • 列出工作负载及其成员
  • 修改工作负载(修改属性和电源管理)
  • 删除工作负载

图 1 使用不同 REST 请求组成的序列详细解释了镜像部署生命周期。

图 1. 镜像部署生命周期
镜像部署生命周期

目标

本教程的主要目的是帮助用户理解使用 VMControl REST API 的镜像部署生命周期。本教程将描述使用 IBM System Director VMControl 实现完整生命周期的过程。拥有镜像部署和 IBM Systems Director VMControl 的基本知识的用户可轻松掌握本教程。

前提条件

阅读本教程之前,您应已在系统上安装了 IBM Systems Director V6.x.x。本教程假设您熟悉 IBM Systems Director 的使用。本文还假设您了解 JavaScript Object Notation (JSON),以及如何使用您最喜欢的 HTTP 客户端执行 HTTP GETPOSTPUTDELETE 调用。

系统需求

您的系统上应拥有以下组件。

  • 一个已安装和配置的 IBM Systems Director
  • 已激活的 IBM Systems Director VMControl 高级管理器
  • 用于运行远程请求的 HTTP 客户端

列出要部署的自定义参数

列出可用于部署的虚拟设备

列出部署自定义参数的第一步是获取一个虚拟设备列表。虚拟设备是一种操作系统镜像和元数据的组合,能够被远程安装(部署)在新的或现有的虚拟服务器上。从该列表选择合适的虚拟设备并保存其对象 ID (OID) 属性的值。这个值将在下一个请求中使用。

备注:这些示例中的 URL 都将以 https://myserver:port 开头。您应将 myserver 替换为 VMControl 所在的系统的主机名或 IP 地址,并将端口号替换为安装 IBM Systems Director 时使用的安全端口。安全端口的默认值为 8422

  • URL
    • https://myserver:port/ibm/director/rest/VMControl/virtualAppliances
  • HTTP 方法
    • GET
  • 样例请求

    获取所有虚拟设备的列表:

    GET https://myserver:port/ibm/director/rest/VMControl/virtualAppliances

    清单 1. 样例响应表示形式
    {
      "uri": "/ibm/director/rest/VMControl/virtualAppliances",
      "candidates": {"uri": "/ibm/director/rest/VMControl/virtualAppliances/candidates"},
      "virtualAppliances": [
        {
          "name": "Capture GM",
          "properties": {},
          "uri": "/ibm/director/rest/VMControl/virtualAppliances/12927",
          "oid": 12927
        },
        {
          "name": "capture",
          "properties": {},
          "uri": "/ibm/director/rest/VMControl/virtualAppliances/18729",
          "oid": 18729
        }
      ]
    }

列出部署目标

下一步是使用来自第一个请求的虚拟设备的 OID 列出部署目标。目标可以是一个主机、服务器系统池或虚拟服务器。

当选择一个主机或服务器系统池作为目标时,VMControl 创建一个新虚拟服务器并将虚拟设备部署到该服务器上。当选择一个虚拟服务器时,VMControl 将虚拟设备部署到该虚拟服务器上。您需要从该列表中选择合适的目标并保存其 OID 属性的值。这个值将在下一个请求中使用。

  • URL
    • https://myserver:port/ibm/director/rest/VMControl/virtualAppliances/{virtualApplianceOID}/targets
  • HTTP 方法
    • GET
  • 样例请求

    获取具有 OID 18729 的虚拟设备的目标列表:

    GET https://myserver:port/ibm/director/rest/VMControl/virtualAppliances/18729/targets

    清单 2. 样例响应表示形式
     {
      "targets": [
        {
          "name": "ip10-32-41-132_sles11SP1_10g",
          "customization": {"uri": "/ibm/director/rest/VMControl/virtualAppliances/18729
    						/targets/13952/customization"},
          "type": "virtualServer",
          "system": {"uri": "/ibm/director/rest/VMControl/virtualServers/13952"},
          "uri": "/ibm/director/rest/VMControl/virtualAppliances/18729/targets/13952",
          "oid": 13952
        },
        {
          "name": "sysPool1",
          "customization": {"uri": "/ibm/director/rest/VMControl/virtualAppliances/18729
    						/targets/18997/customization"},
          "type": "systemPool",
          "system": {"uri": "/ibm/director/rest/VMControl/systemPools/18997"},
          "uri": "/ibm/director/rest/VMControl/virtualAppliances/18729/targets/18997",
          "oid": 18997
        },
        {
          "name": "Server-8406-70Y-SN10E5A0A",
          "customization": {"uri": "/ibm/director/rest/VMControl/virtualAppliances/18729
    						/targets/16223/customization"},
          "type": "host",
          "system": {"uri": "/ibm/director/rest/VMControl/hosts/16223"},
          "uri": "/ibm/director/rest/VMControl/virtualAppliances/18729/targets/16223",
          "oid": 16223
        }
      ],
      "uri": "/ibm/director/rest/VMControl/virtualAppliances/18729/targets"
    }

获取部署到主机或现有虚拟服务器的自定义参数

自定义参数是惟一的、特定于平台的属性,允许用户自定义正在执行的操作。自定义参数具有许多不同的类型,但都以一种类似的方式指定。使用来自上一步的操作系统 OID,对下面指定的 URL 创建一个 GET 请求。结果将是可用于部署虚拟设备的自定义属性列表。

这个示例显示了在部署到 Power Systems™ 服务器上的主机时的自定义参数。下面还有一个部署到服务器系统池的示例。没有提供部署到现有虚拟服务器的示例;部署到现有的虚拟服务器将包含部署到主机属性的一个与网络和存储相关的子集。

这些自定义参数包含完成部署到主机请求所需的所有信息。对于典型的部署,有一些针对处理器、内存、网络和存储的自定义参数。针对部署的自定义参数组合了来自为部署操作所选择的主机的信息,以及来自虚拟设备的开放虚拟机格式 (OVF) 描述符文件的属性。

下一个示例展示了一个典型的 Power Systems 环境中的部署的自定义参数。针对其他平台(比如基于内核的虚拟机 [KVM]、IBM z/VM® 等)的自定义参数将会有所不同。

备注:有关自定义参数的更多信息,请参阅 IBM Systems Director 6.3.x SDK 信息中心的 VMControl 编程主题章节。

  • URL
    • https://myserver:port/ibm/director/rest/VMControl/virtualAppliances/{virtualApplianceOID}/targets/{targetOIDs}/customization
  • HTTP 方法
    • GET
  • 样例请求

    列出将具有惟一 ID 18729 的虚拟设备部署到具有惟一 ID 16223 的主机的自定义属性:

    GET https://myserver:port/ibm/director/rest/VMControl/virtualAppliances/18729/targets/16223/customization

    样例响应表示形式View listing 3

列出部署到服务器系统池的自定义属性

自定义参数是惟一的、特定于平台的属性,允许用户自定义正在执行的操作。自定义参数具有许多不同的类型,但都以一种类似的方式指定。使用来自上一步的操作系统 OID,对下面指定的 URL 创建一个 GET 请求。结果将是可用于部署虚拟设备的自定义属性列表。

当部署到一个服务器系统池时,VMControl 首先选择该服务器系统池中的理想主机作为部署目标。这个过程使用虚拟设备中的默认值来确定能最佳地支持部署任务的主机。对 virtualAppliances/{virtualApplianceOID}/targets/{targetOIDs}/customization 资源中描述的查询参数的使用可能会影响到该主机。有关此请求的有效查询参数的更多信息,请参阅 IBM Systems Director 6.3.x SDK 信息中心中的 virtualAppliances/{virtualApplianceOID}/targets/{targetOIDs}/customization 资源页面。

下面的示例展示了一个典型的 Power Systems 环境中的自定义参数。针对其他平台(比如 KVM、IBM z/VM® 等)的自定义参数将会有所不同。

  • URL
    • https://myserver:port/ibm/director/rest/VMControl/virtualAppliances/{virtualApplianceOID}/targets/{targetOIDs}/customization
  • HTTP 方法
    • GET
  • 样例请求

    列出将具有惟一 ID 18729 的虚拟设备部署到具有惟一 ID 18997 的服务器系统池的自定义属性,其中得到的虚拟服务器将启用远程重启功能:

    备注:这里指定的查询参数值不能在部署请求上重写。

    GET https://myserver:port/ibm/director/rest/VMControl/ virtualAppliances/18729/targets/18997/customization?desiredCPU=3&remoteRestartCapable=true

    样例响应表示形式查看清单 4

部署虚拟设备

部署到主机或现有的虚拟服务器

从上一步获取自定义参数后,下一步就是填充请求的 JSON。创建一个包含部署所需的自定义属性的名称/值对的 JSON 字符串,包括处理器、内存、网络和存储参数。

部署请求的结果是一个新工作负载,这正是将请求发送到工作负载资源的原因。工作负载表示一个或多个可作为单一实体而监视和管理的虚拟服务器。例如,您可以管理一个可能同时包含一个 Web 服务器和一个数据库服务器的工作负载。您可以单一实体的形式启动和停止一个工作负载,进而启动和停止其包含的虚拟服务器。

下面的请求:

  • 表明虚拟设备 18729 将部署到主机 16233。
  • 表明新的虚拟服务器将附加到 Discovered/1014/0 网络。
  • 将 IP 地址、主机名、域名和其他各种各样的网络值分配给虚拟服务器。
  • 指定从存储池 13206 创建一个新磁盘,并将来自虚拟设备的磁盘 1 分配给这个新磁盘。
  • 指定将来自虚拟设备的磁盘 2 分配给现有磁盘 13599。

请求:

  • URL
    • https://myserver:port/ibm/director/rest/VMControl/workloads
  • HTTP 方法
    • POST
  • 样例请求

    将具有惟一 ID 18729 的虚拟设备部署到具有惟一 ID 的 16223 的主机:

    POST https://myserver:port/ibm/director/rest/VMControl/workloads

    清单 3. 样例请求表示形式
    {
        "workload":{
            "virtualAppliance":18729,
            "target":16223,
            "properties":[{
                    "name":"virtualnetworks",
                    "value":"Discovered/1014/0"
                },
    	    {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.adapter.networking.
    							ipv4addresses.5",
                    "value":"10.32.41.91"
                },
                {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.system.networking.
    							ipv4defaultgateway",
                    "value":"10.32.41.1"
                },
                {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.adapter.networking.
    							ipv4netmasks.5",
                    "value":"255.255.255.0"
                },
                {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.system.networking.
    							dnsIPaddresses",
                    "value":"10.20.0.2"
                },
                {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.system.networking.
    							hostname",
                    "value":"ip10-32-41-91"
                },
                {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.system.networking.
    							domainname",
                    "value":"pokprv.stglabs.ibm.com"
                },
                {
                    "name": "storagemapping",
                    "value": "[1]=assignedStorage:poolstorages[13206]"
                },
                {
                    "name": "storagemapping",
                    "value": "[2]=assignedStorage:existingdisks[13599]"
                }
            ]
        }
    }
    清单 4. 样例响应
    HTTP/1.1 201 OK
    Cache-Control: no-store
    Set-Cookie: JSESSIONID_ibm_console_80=0000K8fh4uUjiNXmKSJ3uwePWO_;Path=/; Secure; 
    						HTTPOnly
    Expires: Thu, 01 Dec 1994 16:00:00 GMT
    Content-Type: application/octet-stream; charset=UTF-8
    Content-Length: 46
    Date: Tue, 10 Jul 2012 09:24:32 GMT
    Location: https://9.12.181.48:8422/ibm/director/rest/VMControl/workloads/19001
    Accept-Ranges: bytes
    Server: Noelios-Restlet-Engine/1.1.4
    Content-Language: en-US
    
    DNZEMW350I Workload [19001] creation started.

清单 6 给出了 POST 请求的一个样例响应。Location HTTP 标头包含所创建的工作负载的 URL。部署虚拟设备是一种异步操作。完成该操作的整个过程必须受到监视。

/ibm/director/rest/VMControl/workloads/{workloadOID}/progress 资源中提供了一个进度日志,其中包含有关部署状态的消息。在部署失败时,这是获取失败原因的更多细节的地方。否则,进度资源会在成功部署后删除。

可在部署到服务器系统池一节之后找到监视部署完成过程的更多信息。

部署到服务器系统池

这个请求通过将一个虚拟设备部署到服务器系统池来创建工作负载。这非常类似于上面提及的部署到主机的请求,但具有以下变化:

  • 增加了 deploymentplanid 属性,该属性可从 部署到服务器系统池 自定义请求中获取。
  • 删除了 storagemapping 参数。当部署到一个服务器系统池时,所有磁盘都会在与服务器系统池关联的存储池或存储系统池中创建。
  • URL
    • https://myserver:port/ibm/director/rest/VMControl/workloads
  • HTTP 方法
    • POST
  • 样例请求

    请参阅列出要部署的自定义参数一节,了解将具有惟一 ID 18729 的虚拟设备部署到具有惟一 ID 18997 的服务器系统池,以形成 JSON:

    POST https://myserver:port/ibm/director/rest/VMControl/workloads

    清单 5. 样例请求表示形式
    {
        "workload":{
            "virtualAppliance":18729,
            "target":18997,
            "properties":[{
                    "name":"virtualnetworks",
                    "value":"Discovered/1014/0"
                },
    	    {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.adapter.networking.
    							ipv4addresses.5",
                    "value":"10.32.41.91"
                },
                {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.system.networking.
    							ipv4defaultgateway",
                    "value":"10.32.41.1"
                },
                {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.adapter.networking.
    							ipv4netmasks.5",
                    "value":"255.255.255.0"
                },
                {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.system.networking.
    							dnsIPaddresses",
                    "value":"10.20.0.2"
                },
                {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.system.networking.
    							hostname",
                    "value":"ip10-32-41-91"
                },
                {
                    "name":"product.vs0.com.ibm.ovf.vmcontrol.system.networking.
    							domainname",
                    "value":"pokprv.stglabs.ibm.com"
                },
    	    {
                    "name":"deploymentplanid",
                    "value":"-84070689234545581_00"
                }
            ]
        }
    }
    清单 6. 样例响应
    HTTP/1.1 201 OK
    Cache-Control: no-store
    Set-Cookie: JSESSIONID_ibm_console_80=0000btq85Q1wmv6RhWcipLAaP8F;Path=/; Secure; 
    							HTTPOnly
    Expires: Thu, 01 Dec 1994 16:00:00 GMT
    Content-Type: application/octet-stream; charset=UTF-8
    Content-Length: 46
    Date: Tue, 10 Jul 2012 09:19:49 GMT
    Location: https://9.12.181.48:8422/ibm/director/rest/VMControl/workloads/19000
    Accept-Ranges: bytes
    Server: Noelios-Restlet-Engine/1.1.4
    Content-Language: en-US
    
    DNZEMW350I Workload [19000] creation started.

我们在部署到主机一节中已看到,Location HTTP 标头包含所创建的工作负载的 URL。必须全程监视部署请求的完成过程。

监视部署请求

有许多种监视部署请求完成过程的方式。这一节将介绍所有这些选项。

第一个选项是跟踪部署请求的 Location HTTP 标头中返回的进度日志。可在 /ibm/director/rest/VMControl/workloads/{workloadOID}/progress 中找到进度日志,并可在部署过程中使用。在部署完成后和部署失败时,也可使用该日志。如果部署成功,进度资源会被删除。

此外,还为被捕获的虚拟设备对象创建了一个事件,该事件表明部署的完成进度,并指定其成功与否。这个事件可使用以下两种方法之一来获取:

  • GET /ibm/director/rest/resources/VirtualAppliance/{vaOID}/events
  • GET /ibm/director/rest/events?ComponentType=VirtualAppliance&ComponentCategory=ManagedElement.ManagedSystemElement.LogicalElement.SoftwarePackage

第一个响应返回针对指定的虚拟设备的所有事件,而第二个响应过滤所有事件,以查找针对具有类别 ManagedElement.ManagedSystemElement.LogicalElement.SoftwarePackageVirtualAppliance 资源的事件。

  • URL
    • https://myserver:port/ibm/director/rest/resources/VirtualAppliance/{vaoid}/events
  • HTTP 方法
    • GET
  • 样例请求

    列出针对具有惟一 ID 18729 的虚拟设备的所有事件:

    GET https://myserver:port/ibm/director/rest/resources/VirtualAppliance/18729/events

    清单 7. 样例响应表示形式
    {"events": [
      {
        "EventID": 226875,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    								SoftwarePackage",
        "Severity": "Harmless",
        "Mode": "RESOLUTION",
        "EventText": "A deploy has been successful creating WorkloadInstance 
    	05422ad6-9a93-43e7-b4cb-4fd8108c30bf and the Virtual System WL_149_59367.",
        "uri": "/ibm/director/rest/events/226875",
        "ComponentInstance": null,
        "ComponentType": "VirtualAppliance"
      },
      {
        "EventID": 224929,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    								SoftwarePackage",
        "Severity": "Critical",
        "Mode": "ALERT",
        "EventText": "A deploy has failed for Virtual Appliance 
    	79ba9e0d-5d71-4789-94fb-3c32f0d5c747.\ncom.ibm.ensemble.server.core.api.
    	EMException: DNZEMC766E A problem occurred. Exception encountered: com.ibm.
    	director.im.common.exceptions.DeployException: DNZIMN882E The deploy task 
    	is not progressing and has timed out.",
        "uri": "/ibm/director/rest/events/224929",
        "ComponentInstance": null,
        "ComponentType": "VirtualAppliance"
      }
    ]}
  • URL
    • https://myserver:port/ibm/director/rest/events?ComponentType=VirtualAppliance&ComponentCategory=ManagedElement.ManagedSystemElement.LogicalElement.SoftwarePackage
  • HTTP 方法
    • GET
  • 样例请求

    列出事件的组件类型为 VirtualAppliance 且类别为 ManagedElement.ManagedSystemElement.LogicalElement.SoftwarePackage 的所有 IBM Systems Director 事件:

    GET https://myserver:port/ibm/director/rest/events?ComponentType=VirtualAppliance&ComponentCategory=ManagedElement.ManagedSystemElement.LogicalElement.SoftwarePackage

    清单 8. 样例响应表示形式
    {
      "events": [
      {
        "EventID": 226875,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    								SoftwarePackage",
        "Severity": "Harmless",
        "Mode": "RESOLUTION",
        "EventText": "A deploy has been successful creating WorkloadInstance 
    	05422ad6-9a93-43e7-b4cb-4fd8108c30bf and the Virtual System WL_149_59367.",
        "uri": "/ibm/director/rest/events/226875",
        "ComponentInstance": null,
        "ComponentType": "VirtualAppliance"
      },
      {
        "EventID": 226871,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    								SoftwarePackage",
        "Severity": "Harmless",
        "Mode": "RESOLUTION",
        "EventText": "A deploy has been successful creating WorkloadInstance 
    	05422ad6-9a93-43e7-b4cb-4fd8108c30bf and the Virtual System WL_149_59367.",
        "uri": "/ibm/director/rest/events/226871",
        "ComponentInstance": null,
        "ComponentType": "VirtualAppliance"
      },
      {
        "EventID": 224929,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    								SoftwarePackage",
        "Severity": "Critical",
        "Mode": "ALERT",
        "EventText": "A deploy has failed for Virtual Appliance 
    	79ba9e0d-5d71-4789-94fb-3c32f0d5c747.\ncom.ibm.ensemble.server.core.api.
    	EMException: DNZEMC766E A problem occurred. Exception encountered: com.
    	ibm.director.im.common.exceptions.DeployException: DNZIMN882E The deploy 
    	task is not progressing and has timed out.",
        "uri": "/ibm/director/rest/events/224929",
        "ComponentInstance": null,
        "ComponentType": "VirtualAppliance"
      },
      {
        "EventID": 224924,
        "ComponentCategory": "ManagedElement.ManagedSystemElement.LogicalElement.
    								SoftwarePackage",
        "Severity": "Critical",
        "Mode": "ALERT",
        "EventText": "A deploy has failed for Virtual Appliance 
    	79ba9e0d-5d71-4789-94fb-3c32f0d5c747.\ncom.ibm.director.im.common.
    	exceptions.DeployException: DNZIMN882E The deploy task is not progressing 
    	and has timed out.",
        "uri": "/ibm/director/rest/events/224924",
        "ComponentInstance": null,
        "ComponentType": "VirtualAppliance"
      }
    ]}

可对这些 URL 进行轮询,但推荐的方法是使用 Java™ Message Service (JMS) 提供程序订阅事件。

IBM Systems Director 服务器包含一个 JMS 提供程序,用于向感兴趣的客户端应用程序传达事件和其他重要消息。该提供程序允许在两个或更多应用程序之间执行异步通信。作业激活记录可通过 Director.jobs.activation JMS 主题执行异步监视。

有关 JMS 的更多信息,请参阅 IBM Systems Director 6.3.x SDK 信息中心中的 JMS Messaging Overview 页面。


查看工作负载和工作负载成员

列出所有工作负载

工作负载资源返回 VMControl 已知的所有工作负载的列表。查询参数可用于(基于名称、描述或状态)过滤工作负载,或通过单个调用返回每个工作负载的更多属性。有关这些查询参数的更多信息,请参阅 Systems Director 6.3.x SDK 信息中心的工作负载资源页面。

  • URL
    • https://myserver:port/ibm/director/rest/VMControl/workloads
  • HTTP 方法
    • GET
  • 样例请求

    列出所有已知的工作负载:

    GET https://myserver:port/ibm/director/rest/VMControl/workloads

    清单 9. 样例响应表示形式
    {
      "candidateServers": {"uri": "/ibm/director/rest/VMControl/workloads/
    						candidateServers"},
      "uri": "/ibm/director/rest/VMControl/workloads",
      "workloads": [
        {
          "name": "workload1",
          "properties": {},
          "uri": "/ibm/director/rest/VMControl/workloads/18994",
          "oid": 18994,
          "state": {
            "label": "Started",
            "id": 8
          }
        },
        {
          "name": "workload2",
          "properties": {},
          "uri": "/ibm/director/rest/VMControl/workloads/18995",
          "oid": 18995,
          "state": {
            "label": "Started",
            "id": 8
          }
        }
      ]
    }

查看工作负载属性

工作负载资源返回有关指定的工作负载的详细信息。对于前一个请求中的所有工作负载,可使用针对各个属性的 Props 查询返回属性 JSON 对象中的各项,也可使用 DefaultProps 查询返回属性 JSON 对象中的所有内容。

  • URL
    • https://myserver:port/ibm/director/rest/VMControl/workloads/{workloadOID}
  • HTTP 方法
    • GET
  • 样例请求

    获取具有惟一 ID 18994 的工作负载的属性:

    GET https://myserver:port/ibm/director/rest/VMControl/workloads/18994

    清单 10. 样例响应表示形式
    {
      "oid": 18994,
      "detailedState": 0,
      "systemPools": {"uri": "/ibm/director/rest/VMControl/workloads/18994/systemPools"},
      "state": {
        "label": "Started",
        "id": 8
      },
      "approvalRequired": true,
      "uri": "/ibm/director/rest/VMControl/workloads/18994",
      "properties": {
        "Description": "First workload",
        "Vendor": {},
        "ApprovalRequired": true,
        "ChangedDate": 1341908501000,
        "Oid": 18994,
        "SpecificationVersion": 0,
        "Name": "workload1",
        "Info": {},
        "Resilient": false,
        "State": "Started"
      },
      "hosts": {"uri": "/ibm/director/rest/VMControl/workloads/18994/hosts"},
      "remoteRestart": false,
      "createdBy": "root",
      "specificationVersion": 0,
      "metrics": {"uri": "/ibm/director/rest/resources/WorkloadInstance/18994/
    				monitorviews/WORKLOAD_METRICS_GROUP_ID/monitordata"},
      "virtualServers": {"uri": "/ibm/director/rest/VMControl/workloads/18994/
    								virtualServers"},
      "description": "First workload",
      "changedDate": 1341908501000,
      "virtualServerCount": 1,
      "resilient": "None",
      "liveVirtualServerRelocation": false,
      "info": "UNDEFINED",
      "vendor": "UNDEFINED",
      "priority": 2,
      "name": "workload1"
    }

查看工作负载成员

工作负载表示一个或多个可作为单一实体进行监视和管理的虚拟服务器。在本教程的上下文中,工作负载将仅包含单个虚拟服务器,因为这是当前部署流程的惟一结果。这就使得此资源不那么有趣。

手动工作负载创建或现有虚拟服务器的分组可能得到包含多个成员的工作负载。手动工作负载创建不属于本教程的介绍范畴。有关手动工作负载创建的更多信息,请参阅 Systems Director 6.3.x SDK 信息中心的工作负载资源页面。

  • URL
    • https://myserver:port/ibm/director/rest/VMControl/workloads/{workloadOID}/virtualServers
  • HTTP 方法
    • GET
  • 样例请求

    列出具有惟一 ID 18994 的工作负载的成员:

    GET https://myserver:port/ibm/director/rest/VMControl/workloads/18994/virtualServers

    清单 11. 样例响应表示形式
    {
      "uri": "/ibm/director/rest/VMControl/workloads/18994/virtualServers",
      "virtualServers": [{
        "name": "ip10-32-41-98_rhel62_10g",
        "properties": {},
        "customization": {"uri": "/ibm/director/rest/VMControl/hosts/16223/virtualServers
    								/16220/customization"},
        "oid": 16220,
        "uri": "/ibm/director/rest/VMControl/hosts/16223/virtualServers/16220",
        "state": {
          "label": "Started",
          "id": 8
        }
      }]
    }

修改工作负载

下一节介绍更新现有工作负载。工作负载更新是简单的属性更新,比如名称、描述、状态,如果工作负载是通过部署到服务器 系统池创建的,那么还包括更新一些处理工作负载的高可用性和恢复能力的属性。

根据具体的操作,修改工作负载 任务可能是同步操作,也可能是异步操作。属性更改是同步的,而状态更改是异步的。

如果请求成功运行,对于属性更改,将获得包含 HTTP 状态码 200(成功)的响应,对于状态更改,响应将包含 202(已接受)。如果是 202(已接受)状态代码,Location HTTP 标头将包含为此操作创建的作业的统一资源标识符 (URI)。

下面给出了两个示例。第一个示例展示了一次属性更改,第二个示例展示了一次状态更改。

  • URL
    • https://myserver:port/ibm/director/rest/VMControl/workloads/{workloadOID}
  • HTTP 方法
    • PUT
  • 样例请求 1

    修改具有惟一 ID 6798 的工作负载的名称:

    PUT https://myserver:port/ibm/director/rest/VMControl/workloads/6798

    清单 12. 样例请求表示形式
    {
        "workload": {
            "name": "myUpdatedWorkload"
        }
    }
    清单 13. 样例响应
    HTTP/1.1 200 OK
    Cache-Control: no-store
    Set-Cookie: JSESSIONID_ibm_console_80=0000pF3CdRrz4WwSv4LsNiwI4jJ;Path=/; Secure; 
    							HTTPOnly
    Expires: Thu, 01 Dec 1994 16:00:00 GMT
    Content-Type: application/json; charset=UTF-8
    Content-Length: 97
    Date: Tue, 10 Jul 2012 08:50:33 GMT
    Accept-Ranges: bytes
    Server: Noelios-Restlet-Engine/1.1.4
    Content-Language: en-US
    
    {
      "MessageText": "DNZEMW308I The workload update completed successfully.",
      "MessageID": "DNZEMW308I"
    }
  • 样例请求 2

    修改具有惟一 ID 6798 的工作负载的状态:

    PUT https://myserver:port/ibm/director/rest/VMControl/workloads/6798

    清单 14. 样例请求表示形式
    {
        "workload": {
            "state": 5
        }
    }
    清单 15. 样例响应
    HTTP/1.1 202 OK
    Cache-Control: no-store
    Set-Cookie: JSESSIONID_ibm_console_80=0000xxKiy8AAgbCQUgRuA5bQvDk;Path=/; Secure; 
    							HTTPOnly
    Expires: Thu, 01 Dec 1994 16:00:00 GMT
    Content-Type: application/json; charset=UTF-8
    Content-Length: 216
    Date: Fri, 20 Jul 2012 18:42:02 GMT
    Location: https://9.12.183.62:8422/ibm/director/rest/jobs/224/activations/1
    Accept-Ranges: bytes
    Server: Noelios-Restlet-Engine/1.1.4
    Content-Language: en-US
    
    {
      "MessageText": "DNZEMW307I New job activation for updating the workload was 
    	started.\nRefer to the following URI for job activation status: 
    	/ibm/director/rest/jobs/224/activations/1 ",
      "MessageID": "DNZEMW307I"
    }

监视修改工作负载作业

修改工作负载的最后一步是监视其完成进度。监视 “修改工作负载” 作业的推荐方法是使用作业激活记录。从上面可以看到,这个 URL 在 PUT 请求的响应中返回。作业激活记录可通过轮询该 URL 来监视,但推荐的方法是使用 JMS 提供程序。

IBM Systems Director 服务器包含一个 JMS 提供程序,用于向感兴趣的客户端应用程序传达事件和其他重要消息。该提供程序允许在两个或更多应用程序之间执行异步通信。作业激活记录可通过 Director.jobs.activation JMS 主题执行异步监视。

有关 JMS 的更多信息,请参阅 IBM Systems Director 6.3.x SDK 信息中心中的 JMS Messaging Overview 页面。


删除工作负载

删除工作负载

下一步是请求删除工作负载。删除工作负载可能是同步的操作,也可能是异步的操作,具体取决于查询参数和请求中包含的 ISDAPIVersion HTTP 标头的值。

删除工作负载而不删除所包含的虚拟服务器,这是同步操作。删除包含的虚拟服务器和与这些服务器关联的存储也是同步的,条件是 ISDAPIVersion HTTP 标头设置为 6.3.2.0 或更高版本。

  • URL
    • https://myserver:port/ibm/director/rest/VMControl/workloads/{workloadOID}
  • HTTP 方法
    • DELETE
  • 样例请求

    删除具有惟一 ID 6798 的工作负载:

    DELETE https://myserver:port/ibm/director/rest/VMControl/workloads/6798

    清单 16. 样例响应表示形式
    HTTP/1.1 202 OK
    Cache-Control: no-store
    Set-Cookie: JSESSIONID_ibm_console_80=0000FfgRXo3ew2Q6dd0ndxPnYIC;Path=/; Secure; 
    							HTTPOnly
    Expires: Thu, 01 Dec 1994 16:00:00 GMT
    Content-Type: application/json; charset=UTF-8
    Content-Length: 92
    Date: Tue, 10 Jul 2012 08:43:39 GMT
    Accept-Ranges: bytes
    Server: Noelios-Restlet-Engine/1.1.4
    Content-Language: en-US
    
    {"MessageID":"DNZEMW389I","MessageText":"DNZEMW389I New Delete workload operation 
    							started."}

参考资料

学习

  • 您可以参阅本文在 developerWorks 全球网站上的 英文原文
  • IBM Systems Director
  • JavaScript Object Notation (JSON)
  • RESTful Web 服务
  • How to test REST APIs for IBM Systems Director using Java
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。

获得产品和技术

讨论

  • 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX, Linux
ArticleID=938143
ArticleTitle=IBM Systems Director VMControl 资源生命周期管理: 第 3 部分
publish-date=07222013