基于 IBM Systems Director REST API 的交互式工具

本文介绍运行 IBM® Systems Director VMControl™ 的具象状态传输 (REST) 应用编程接口 (API) 的交互式工具。该工具提供了一个命令行接口 (CLI) 来调用 IBM Systems Director VMControl 的 REST API。

Piyush Jain, 系统软件工程师, IBM

http://www.ibm.com/developerworks/i/p-pjain.jpgPiyush Jain 是 IBM 的一名高级软件工程师,目前正在研究 IBM Systems Director 下的 VMControl,这是 IBM 产品组合中的一个关键产品。他拥有大约 6 年的从业经验,获得了 IET Alwar, Rajasthan India 的信息技术工程方面的学士学位。



2013 年 2 月 18 日

第 1 节. 开始之前

目标

本文的主要目标是帮助研究 IBM Systems Director 的开发人员和测试人员运行 IBM Systems Director VMControl REST API,无需借助使用 CLI 的 Linux® 客户端。

先决条件

在继续后面的操作之前,您应该在计算机上安装 IBM Systems Director V6.x.x。本文假设您熟悉 IBM Systems Director 的使用。还假设您对 REST API 和 Python 有一定的了解。

系统要求

您需要在计算机上执行以下任务:

  • 配置 IBM Systems Director
  • 安装 Python 2.7.2

除了上述需求,用户还必须:

  • 在 python 2.x.x 上安装一个 python 模块 httplib2 (httplib2-0.7.2.tar.gz)。
    • gunzip httplib2-0.7.2.tar.gz
    • tar -xvf httplib2-0.7.2.tar
    • cd httplib2-0.7.2
    • 安装 python setup.py
  • 在用户进行任何这些请求之前更新 environment.json 文件。这是一个配置文件,其中包含与 IBM Systems Director IP 地址、System Director 凭据和 Systems Director API 版本相关的信息。用户需要更新该文件中的以下字段:
    • ISD_IP
    • ISDUser
    • ISDPassword
    • ISDAPIVersion

第 2 节. 如何使用此工具运行 IBM Systems Director 的 REST API

关于 REST API

REST 是表示具象状态传输 (Representational State Transfer)。REST 风格的架构由客户端和服务器组成。IBM Systems Director 还提供了一个基于 RESTful Web 服务的接口。IBM Systems Director 是一个基于 Web 的工具,为 REST 提供了全面的支持。CLI 和 GUI 支持的几乎所有功能都可通过 REST API 获得支持。REST 基于超文本传输协议 (HTTP)。它支持以下 HTTP 方法:

  • PUT:此方法可修改现有资源。
  • GET:此方法可检索有关资源的信息。
  • DELETE:此方法可删除资源。

关于该工具

该工具是用 Python 编写的。Python 拥有一些附加优势,它默认情况下可运行在 Linux 之上且易于使用。这个交互式工具提供了简单的菜单,可帮助(拥有 REST API 和 URI 的基本知识的)用户有效使用它。用户可能需要选择不同的选项来运行一个操作。要手动运行任何 REST 请求,有各种不同的客户端可用,比如 HTTP4e、REST 客户端、Firefox poster 等。用户应该知道如何针对一个特定请求使用这些客户端、URI 和 HTTP 头信息。在这个工具出现后,任何具有很少或没有 REST API 信息的用户都可以通过选择菜单来执行各种操作。对于 GET 请求,用户能够直接选择要运行的操作。对于 PUT 和 POST 请求,该工具提供了额外的帮助。用户可运行相关的 GET 请求来检索对象标识符 (OID) 和其他值。用户还可以列出示例 JavaScript Object Notation (JSON) 来形成其自己的 JSON。对于一个 DELETE 请求,用户可获得一项特定资源的 OID 列表,以便执行删除操作。这个工具使用了一个配置文件,用户可在其中指定系统详细信息。

使用该工具的一项最大的优势是,用户可从一个终端在多个机器上执行任务。该工具支持几乎所有 System Director VMControl 操作,并采用了 REST API 功能和一些选定的 Base IBM Systems Director 功能。可以使用该工具来设计用于构建云相关服务(比如部署、采集、配给等)的客户端。

工具类别

运行基础 Director 功能:它对基础的 Director 功能提供了有限的支持,比如:

  • 发现
  • 请求
  • 收集清单

上述所有 3 项功能都是执行 Systems Director VMControl 功能所必不可少的。

下面的第一个示例演示了如何通过 REST API 收集一个系统的清单,以及如何在以后跟踪同一个系统的作业。

[root@rcc-pok-idg-2214 piyush]# python REST_Client_ISD_VMC.pyc
=================================================
Welcome to REST Client for IBM Systems Director
and VMControl, Let's Play
Script : Python
Author : Piyush Jain
E-Mail : piyushjain@in.ibm.com
=================================================
    Select Operation :
    1. IBM Systems Director Menu
    2. VMControl Menu
    3. Quit

Select the action you want to perform: 1
=========================
IBM Systems Director Menu
=========================
    Select Operation :

    1. Discover a Resource
    2. Request Access a Resource
    3. Collect Inventory
    4. Go Back to the Previous Menu
    5. Quit

Select the action you want to perform: 3
=========================================
    Collect Inventory Menu:

    1. View sample JSON collecting inventory
    2. Start Collect Inventory
    3. List the status of the Collect Inventory
    4. Go Back to the Previous Menu
    5. Quit

Select your choice: 1
Example 1:

{"DisplayName": "My inventory collection"}
=========================================
    Collect Inventory Menu:

    1. View sample JSON collecting inventory
    2. Start Collect Inventory
    3. List the status of the Collect Inventory
    4. Go Back to the Previous Menu
    5. Quit

Select your choice: 2
Enter the oid of the resource: 2939
Enter the json for collect inventory: {"DisplayName": "My inventory collection"}

==========
INPUTS :
==========
URI  : https://9.12.181.49:8422/ibm/director/rest/resources/OperatingSystem/
       2939/inventoryprofiles/default.All/inventory/jobs
JSON : {"DisplayName": "My inventory collection"}

===========
RESULT :
===========
{'status': '201', 'content-length': '0', 'content-language': 'en-us',
 'set-cookie': 'JSESSIONID_ibm_console_80=0000WezuGMm0QJBklO_wGBCZUKf;Path=/; 
 Secure; HTTPOnly,  AUTH_JSESSIONID=3shq0mn0kehhrfra521s74c49i5;Path=/; HTTPOnly',
 'accept-ranges': 'bytes', 'expires': 'Thu, 01 Dec 1994 16:00:00 GMT',
 'server': 'Noelios-Restlet-Engine/1.1.4',
 'location': 'https://9.12.181.49:8422/ibm/director/rest/jobs/157',
 'cache-control': 'no-store', 'date': 'Mon, 17 Sep 2012 04:07:47 GMT',
 'content-type': 'text/html; charset=ISO-8859-1'}

======================================================================

    Collect Inventory Menu:

    1. View sample JSON collecting inventory
    2. Start Collect Inventory
    3. List the status of the Collect Inventory
    4. Go Back to the Previous Menu
    5. Quit


Select your choice: 3
Enter the uri to check the status of your job:
https://9.12.181.49:8422/ibm/director/rest/jobs/157

==========
INPUTS :
==========
URI  : https://9.12.181.49:8422/ibm/director/rest/jobs/157
===========
RESULT :
===========
{'status': '200', 
 'content-location': 'https://9.12.181.49:8422/ibm/director/rest/jobs/157',
 'content-language': 'en-us', 'transfer-encoding': 'chunked',
 'set-cookie': 'JSESSIONID_ibm_console_80=0000LhUR0Bp8y82ouO2LPdBcEb1;Path=/;
 Secure; HTTPOnly,  AUTH_JSESSIONID=225r1kma3drkh44mhi7egqbmme1;Path=/; HTTPOnly',
 'accept-ranges': 'bytes', 'expires': 'Thu, 01 Dec 1994 16:00:00 GMT',
 'server': 'Noelios-Restlet-Engine/1.1.4', 'etag': '"43114311"',
 'cache-control': 'no-store', 'date': 'Mon, 17 Sep 2012 04:08:07 GMT',
 'content-type': 'application/json; charset=UTF-8'}
{"uri":"/ibm/director/rest/jobs/157", "DisplayName":"My inventory collection",
"JobID":157,"Description":"Run once on 9/17/12 at 12:07 AM",
"Tasks":["/ibm/director/rest/tasks/INVENTORY_TASK"],
"Targets":["/ibm/director/rest/resources/OperatingSystem/2939"],
"Activations":"/ibm/director/rest/jobs/157/activations",
"LastRunStatus":"Active","LastRun":1347854866883,
"LastRunProgress":84,"NextRun":null,"CreatedBy":"root"}

====================================================================
    Collect Inventory Menu:

    1. View sample JSON collecting inventory
    2. Start Collect Inventory
    3. List the status of the Collect Inventory
    4. Go Back to the Previous Menu
    5. Quit

Select your choice: 5
[root@rcc-pok-idg-2214 piyush]#

我们在这里为用户提供了额外的帮助(比如列出用于启动作业的示例 JSON)。对于 POSTPUT 操作,用户可以跟踪作业,如第一个示例中所示。

以下是第一个示例中执行的操作顺序:

  1. 选择 Base Director 菜单选项。
  2. 选择收集清单操作。
  3. 查看收集清单 POST 请求的示例 JSON。
  4. 启动收集清单操作。
  5. 查看为收集清单而启动的作业的状态。
  6. 退出。

运行 VMControl 功能:它支持以下 VMControl 资源。用户可执行所有这些操作,比如获取有关资源的信息、创建资源、修改资源和删除资源。

  • 主机
  • 虚拟服务器
  • 工作负载
  • 系统池
  • 存储库
  • 虚拟设备

第二个示例演示了如何创建一个工作负载并在完成创建之后跟踪某个作业。

[root@rcc-pok-idg-2214 piyush]# python REST_Client_ISD_VMC.pyc
=================================================
Welcome to REST Client for IBM Systems Director
and VMControl, Let's Play
Script : Python
Author : Piyush Jain
E-Mail : piyushjain@in.ibm.com
=================================================
    Select Operation :
    1. IBM Systems Director Menu
    2. VMControl Menu
    3. Quit

Select the action you want to perform: 2
===============================
IBM Systems Director VMControl
===============================
    Select Operation :

    1. Create a Resource
    2. Modify a Resource
    3. Delete a Resource
    4. List a Resource
    5. Go Back to the Previous Menu
    6. Quit

Select the action you want to perform: 1
=========================================
    Create Resource Menu:

    1. Create Virtual Servers
    2. Create Workloads
    3. Create Virtual Appliances
    4. Create Repository
    5. Create Server System Pool
    6. Go Back to the Previous Menu
    7. Quit

Select your choice: 2
=========================================
    Create Workload Menu:

    1. Using Virtual Server
    2. Deploy a Virtual Appliance
    3. Go Back to the Previous Menu
    4. Quit

Select your choice: 1
=========================================
    Create Workload using Virtual Server Menu:

    1. List Virtual Servers
    2. View sample JSON to create Workload using Virtual Server
    3. Create Working Using Virtual Server
    4. List the status of the create workload Request
    5. Go Back to the Previous Menu
    6. Quit

Select your choice: 1
==========
INPUTS :
==========
URI  : https://9.12.181.49:8422/ibm/director/rest/VMControl/virtualServers
===========
RESULT :
===========
{'status': '200', 'content-length': '1168', 
'content-location': 
u'https://9.12.181.49:8422/ibm/director/rest/VMControl/virtualServers',
'content-language': 'en-us', 
'set-cookie': 
'JSESSIONID_ibm_console_80=0000_VKrZuyB8OpOqeQOFjav8m9;Path=/; Secure; HTTPOnly,
 AUTH_JSESSIONID=1s7204b52823o4rn32g32q65ac1;Path=/; HTTPOnly', 
'accept-ranges': 'bytes', 'expires': 'Thu, 01 Dec 1994 16:00:00 GMT',
 'server': 'Noelios-Restlet-Engine/1.1.4', 'etag': '"2109597345"',
 'cache-control': 'no-store', 'date': 'Mon, 17 Sep 2012 05:55:51 GMT', 
'content-type': 'application/json; charset=UTF-8'}
{"virtualServers":
[{"uri":"\/ibm\/director\/rest\/VMControl\/hosts\/15546\/virtualServers\/15551",
"oid":15551,"name":"AIX207","state":{"label":"Started","id":8},
"customization":
{"uri":
"\/ibm\/director\/rest\/VMControl\/hosts\/15546\/virtualServers\/15551\/customization"},
"properties":{}}],"uri":"\/ibm\/director\/rest\/VMControl\/virtualServers"}
================================================================================
    Create Workload using Virtual Server Menu:
    1. List Virtual Servers
    2. View sample JSON to create Workload using Virtual Server
    3. Create Working Using Virtual Server
    4. List the status of the create workload Request
    5. Go Back to the Previous Menu
    6. Quit

Select your choice: 2
Example 1:

{"workload": {"name": "workload_1", "server": 1234, 
"description": "This is a workload"}}

Example 2:

{"workload": {"name": "workload_1", "servers": [4599, 4600, 4601], 
"description": "This is a workload"}}
=========================================
    Create Workload using Virtual Server Menu:

    1. List Virtual Servers
    2. View sample JSON to create Workload using Virtual Server
    3. Create Working Using Virtual Server
    4. List the status of the create workload Request
    5. Go Back to the Previous Menu
    6. Quit

Select your choice: 3
Enter the input json to create a workload using virtual servers: 
{"workload": {"name": "workload_1", "server": 15551, "description": "This is a workload"}}

==========
INPUTS :
==========
URI  : https://9.12.181.49:8422/ibm/director/rest/VMControl/workloads
JSON : {"workload": {"name": "workload_1", "server": 15551, 
"description": "This is a workload"}}

===========
RESULT :
===========
{'status': '201', 'content-length': '46', 'content-language': 'en-us', 
'set-cookie': 
'JSESSIONID_ibm_console_80=0000DonDzXSvbkOJocmMgTTKsrP;Path=/; Secure; HTTPOnly,
 AUTH_JSESSIONID=4cqas97nift2kpormrn509n0h90;Path=/; HTTPOnly', 
'accept-ranges': 'bytes', 'expires': 'Thu, 01 Dec 1994 16:00:00 GMT', 
'server': 'Noelios-Restlet-Engine/1.1.4',
 'location': 'https://9.12.181.49:8422/ibm/director/rest/VMControl/workloads/15647', 
'cache-control': 'no-store', 'date': 'Mon, 17 Sep 2012 05:56:06 GMT', 
'content-type': 'application/octet-stream; charset=UTF-8'}
DNZEMW350I Workload [15647] creation started.
======================================================================================
    Create Workload using Virtual Server Menu:
    1. List Virtual Servers
    2. View sample JSON to create Workload using Virtual Server
    3. Create Working Using Virtual Server
    4. List the status of the create workload Request
    5. Go Back to the Previous Menu
    6. Quit

Select your choice: 4
Enter the uri to check the status of your job: 
https://9.12.181.49:8422/ibm/director/rest/VMControl/workloads/15647

==========
INPUTS :
==========
URI  : https://9.12.181.49:8422/ibm/director/rest/VMControl/workloads/15647

===========
RESULT :
===========
{'status': '200', 'content-length': '1071', 
'content-location': 
'https://9.12.181.49:8422/ibm/director/rest/VMControl/workloads/15647',
 'content-language': 'en-us',
 'set-cookie': 
'JSESSIONID_ibm_console_80=0000tsdpxtr0njR0nYHROmgHJyT;Path=/; Secure; HTTPOnly,
 AUTH_JSESSIONID=95fg36cdjsqrr16ensj4ipnodq;Path=/; HTTPOnly', 'accept-ranges': 'bytes',
 'expires': 'Thu, 01 Dec 1994 16:00:00 GMT', 'server': 'Noelios-Restlet-Engine/1.1.4',
 'cache-control': 'no-store', 'date': 'Mon, 17 Sep 2012 05:56:21 GMT',
 'content-type': 'application/json; charset=UTF-8'}
{"virtualServerCount":1,"detailedState":0,"changedDate":1347861365000,
"approvalRequired":true,
"metrics":{"uri":
"\/ibm\/director\/rest\/resources\/WorkloadInstance\/15647\/monitorviews\/
WORKLOAD_METRICS_GROUP_ID\/monitordata"},"suspendResumeCapable":false,
"priority":2,"virtualServers":
{"uri":"\/ibm\/director\/rest\/VMControl\/workloads\/15647\/virtualServers"},
"resilient":"None","systemPools":
{"uri":"\/ibm\/director\/rest\/VMControl\/workloads\/15647\/systemPools"},
"vendor":"UNDEFINED","remoteRestart":false,"liveVirtualServerRelocation":false,
"oid":15647,"name":"workload_1","hosts":
{"uri":"\/ibm\/director\/rest\/VMControl\/workloads\/15647\/hosts"},
"uri":"\/ibm\/director\/rest\/VMControl\/workloads\/15647",
"info":"UNDEFINED","state":{"label":"Started","id":8},
"properties":{"State":"Started","ApprovalRequired":true,
"ChangedDate":1347861365000,"Resilient":false,"SpecificationVersion":null,
"Vendor":{},"Oid":15647,"Name":"workload_1","Description":"This is a workload",
"Info":{}},
"specificationVersion":null,"description":"This is a workload","createdBy":"root"}
===================================================================================
Create Workload using Virtual Server Menu: 1. List Virtual Servers
2. View sample JSON to create Workload using Virtual Server
3. Create Working Using Virtual Server
4. List the status of the create workload Request
5. Go Back to the Previous Menu
6. Quit Select your choice: 6 [root@rcc-pok-idg-2214 piyush]#

以下是第二个示例中执行的操作的顺序:

  1. 选择 VMControl 菜单选项。
  2. 选择创建资源操作。
  3. 选择创建工作负载资源操作。
  4. 选择使用一个虚拟服务器创建一个工作负载。
  5. 选择列出可用于创建工作负载的虚拟服务器。
  6. 查看创建工作负载 POST 请求的示例 JSON。
  7. 启动创建工作负载操作。
  8. 查看创建的工作负载的状态。
  9. 退出。

该工具可帮助您很好地理解使用简单的交互式选项创建一个资源的流程。参见 图 1,了解该工具的流程。

图 1.IBM Systems Director 和 VMControl 的 REST 客户端工具的流程图:
工具的流程图:

图 1 所示,用户必须先选择要执行的操作(即 GET、PUT、POST 或 DELETE)。然后,分别选择资源和操作。用户将立刻在屏幕上获得响应。

该工具具有以下优势:

  1. 易于使用,REST 请求的运行很简单
  2. 可扩展
  3. 包含内置的帮助,以形成 JSON 来运行 PUTPOST 请求
  4. 帮助检索 OID 和其他值
  5. 有助于更好地理解流程,因为它是一个交互式工具
  6. 提供简单的菜单来选择正确的操作
  7. 在运行 POSTPUTDELETE 操作之后跟踪作业

下载

描述名字大小
演示:运行 REST API 的交互式工具的代码rest_client.zip95 KB

参考资料

学习

  • 请参阅 IBM Systems Director 资源中心,了解有关 IBM Systems Director 产品的信息。
  • 请参阅 Python 编程语言 – 官方网站,了解有关 Python 的更多信息。
  • 请参阅 JSON 简介,了解有关 JSON 的信息。
  • 请参阅 RESTful Web 服务,了解有关的基础知识。
  • 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
ArticleID=858251
ArticleTitle=基于 IBM Systems Director REST API 的交互式工具
publish-date=02182013