目前,Python在大数据处理领域和自动化测试开发方面的应用逐渐火热起来,这是一篇我以前写的实际项目中应用Python调用主机的API的文章
1 什么是zManager 以及其REST API 接口
zEnterprise System由三大部分组成:IBM zEnterprise 大型机、IBM zEnterprise BladeCenter Extension (zBX)刀片扩展机柜和IBM zEnterprise Unified Resource Manager (Unified Resource Manager,zManager)管理固件,zManager能够管理跨越System Z、特定的POWER7和System x服务器上运行的工作负载,实现资源的统一管理。
HMC是管理zManager的访问点。在这个范围内,HMC提供了一个基于WEB的,可以远程操作的图形用户界面(UI),让用户可以操作zManager的。另外,HMC也具备zManager webservice API的实现,这些API与UI的操作是相对应的。
Webservice API是一个面向WEB的编程接口,它可以让潜在的zManager的功能能够被一些高级的应用程序、系统自动化方法,或者例行脚本所使用。
2 API的组件
Web Services API包括两个主要的组件,分别是Web services接口和异步通知(Asynchronous Notification),这两个组件都是通过客户端应用程序对HMC发起TCP/IP网络连接去访问的。
2.1 Web services接口
Web services接口是一个面向request和response的编程接口,通过它,客户端应用程序可以获取zManager所管理的系统资源的信息,并可以对这些资源进行配置和控制等各种动作。
正如任何面向web的接口,客户端应用程序通过位于TCP/IP socket连接之上的HTTP传输协议与Web services接口进行交互。客户端应用程序通过组装并发送基于文本的消息发起一个HTTP request,同样,Web services API返回一个基于文本的HTTP response。使用HTTP让客户端API编程语言变得多元化。Java,Perl和Python等广泛支持HTTP操作的语言都可以被用来实现客户端应用程序。
Web service API的设计受到了表示状态转移(Representational State Transfer,REST)接口设计思想的影响。可管理的系统资源被关联到持久的URI,并可以通过URI进行标识。REST风格下的get,put,post和delete操作恰好对应HTTP的GET, PUT, POST和Delete方法。Request和Response的数据使用Javascript Object Notaion(JSON)来表示。将API方法映射到HTTP的做法简化了客户端应用程序的开发过程,使得客户端不必像使用其他web service接口设计方法那样,需要有额外的工具和库才可以访问API。
2.2 异步通知
Web Services接口大多应用在客户端应用程序与zManager之间的交互是短期行为的场景下:客户端发送一个request,获得一个response,处理这个response,然后就会“忘记”与它进行交互的zManager资源。也就是说,此时客户端并不试图长期保持(或者缓存)zManager资源且维护缓存使其具有时效性。
然而对于一些比较高级的管理应用程序,包括discovery,monitoring和高级的provisioning,并非基于它们对zManager的需求去“请求并忘记”zManager资源。取而代之,它们需要长期保存(如缓存)很多zManager资源的目录信息、配置和状态等等,并使其具有时效性。
为了支持这种更高级的应用程序,Web services API提供了一个异步通知模块,通过它,zManager可以及时通知感兴趣的客户端资源的更新。异步通知模块使用Java Message Serive(JMS)开发,它是一个开源的可以用来在各个应用之间传递消息的标准的API和框架。
3 如何使用zManager API?
调用API即通过编程的手段操作该接口。通过编程的方式访问 zManage web service API, 所选的编程语言无论内建还是扩展,必须支持如下特性:
支持HTTP
支持SSL
创建和解析JSON对象
支持JMS链接或者STOMP协议(可选)
3.1 Python以及其优点
而Python能够很好的支持以上特性,此外还成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。
Python是一种面向对象、直译式计算机程序设计语言。Python语法简洁而清晰,具有丰富和强大的类库。Python也翻译作“蟒蛇”,该语言的特性是善于将不同的系统缠绕在一起。因此它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。
3.2 操作zManager API的基本流程
API是基于会话的(session), 所有的请求都是在一个API session中完成的。
操作API的流程如下:
1 . 与HMC建立SSL socket
# Connect to HMC at address <HMCserver> with 100 second request timeout
conn = httplib.HTTPSConnection(HMCserver, 6794, timeout=100)
conn.connect()
2. 登录到HMC打开一个API session
logon_req = {"userid": userid, "password": password}
req_body = json.dumps(logon_req)
req_hdrs = {"Content-Type": "application/json"}
conn.request("POST", "/api/sessions", req_body, req_hdrs)
response = conn.getresponse()
if response.status != 204:
# If the response provides a body, always read it.
resp_body = response.read()
if response.status != 200:
# Handle failure (eg. wrong psasword)
raise Exception("Request failed (status: %d)" % response.status)
# Retrieve session id from response for later use
logon_resp = json.loads(resp_body)
session_id = logon_resp["api-session"]
3 . 发起一个API请求
# 获取HMC的特性,其中session id是上一步创建的
req_hdrs = {"X-API-Session": session_id}
conn.request("GET", "/api/console", None, req_hdrs)
response = conn.getresponse()
if response.status != 204:
resp_body = response.read()
if response.status != 200:
raise Exception("Request failed (status: %d)" % response.status)
# Convert result JSON into Python objects for processing
console_props = json.loads(resp_body)
print "HMC name is %s." % console_props["name"]
4. 退出登录,关闭API session
req_hdrs = {"X-API-Session": session_id}
conn.request("DELETE", "/api/sessions/this-session", None, req_hdrs)
response = conn.getresponse()
if response.status != 204:
resp_body = response.read()
if response.status != 204:
raise Exception("Request failed (status: %d)" % response.status)
4 应用实例:使用API激活一个LPAR
通过API去激活一个LPAR需要使用HTTP方法POST, 请求的URI为/api/logical-partitions/{logical-partition-id}/operations/activate
在请求的实体中需要构建一个JSON对象包含如下内容:
activation-profile-name:所使用的activation profile的名字
在这个请求的URI中{logical-partition-id}是所要激活的LPAR的id,要获取这个ID
1.首先需要列出当前HMC所管理的CPC,返回结果包含{cpc-id}
GET /api/cpcs
2.接着列出当前CPC下的LPAR,返回结果包含{logical-partition-id}
GET /api/cpcs/{cpc-id}/logical-partitions
获取到LPAR的id就可以发起激活LAPR的请求了, 通常{logical-partition-id}的格式类似如下字符串“fd0255cc-bf90-3295-b8e6-ba61ddc0c08f”。
body_dict = { activation-profile-name : DEFAULT }
body = json.dumps(body_dict)
conn.post("api/logical-partitions/fd0255cc-bf90-3295-b8e6-ba61ddc0c08f/operations/activate", body)
激活一个logical partition 将包含以下操作:
初始化logical partition
给logical partition 分配系统资源
为logical partition 加载CP(control program)或者是操作系统
可见该操作需要一定时间才能完成,当激活LPAR的操作发起后,后台会返回状态码为202(Accepted)的响应。该响应的实体包含一个URI,查询该URI会得到激活LPAR操作的状态: "running" 或者"completed" .当状态为“completed”时激活LPAR的操作完成,同时响应中包含操作的结果。
通过上面的例子展示了通过zManager API 管理主机的方法,事实上zManager 提供了相当丰富的API,几乎涵盖了HMC里涉及到的所有操作,可以参考System z Hardware Management Console Web Services API (Version 2.11.1)了解API的细节。
参考资料:
关于z/OS的信息请访问http://www-03.ibm.com/systems/z/os/zos/
关于zManager API 请参考Hardware Management Console Web Services API Version 2.11.1, IBM System z (SC27-2616-00)
原文链接:
https://www.ibm.com/developerworks/community/blogs/IBMzOS/entry/20131207?lang=en
分享到:
相关推荐
要使用Python FastAPI与PostgreSQL进行增删改查操作,您需要安装以下模块: 1. fastapi:用于创建Web API 2. uvicorn:用于运行Web API 3. psycopg2:用于与PostgreSQL数据库交互 接下来,我们将演示如何使用...
Python调用公有云api操作手册.docx
Python3.5函数API离线查询手册html版
nmap api,用Python可调nmap api,用Python可调nmap api,用Python可调nmap api,用Python可调nmap api,用Python可调nmap api,用Python可调nmap api,用Python可调nmap api,用Python可调nmap api,用Python可调...
使用python 调用api 创建openstack的user,network,subnet,image等
Python3.8官方中文API手册,共26个pdf文档,非常不错,大家解压后打开即可,多谢下载
python 3.10.0参考文档是一套python官方发布的参考使用文档完整版,包含python安装使用、API参考、常见问题、标准库参考、语言参考、入门教程等,需要的朋友可下载! Python 提供了许多模块来帮助使用 Python 语言...
PythonC API 参考手册,标准库参考,入门教程,扩展和嵌入 Python 解释器,Python 语言参考,Python 常见问题,Python 3.8 有什么新变化,Python 常用指引,
简单的使用Python API封装器来使用matplotlib, plotly, bokeh等绘制图表
python 3.4 chm api 函数手册
python 2.5.2 官方API文档的chm版本
Python编写的Web API,内有使用教程,版本需Python3
python-3.3.2 API官方文档,HTML版,可以离线阅读
python百度网盘纯代码分片上传目录文件 不依赖第三方, AppKey等信息需要自己去申请。然后获取code码就可以一直使用。
opencv-python api手册.rar
python.chm api python.chm api python.chm api
api-key-生成器使用 Python 的简单 API 密钥生成器开发环境操作系统:Windows 8.1 64 位工具: Python 2.7.9 MongoDB 3.0.2(从下载 64 位安装程序) pymongo ( pip install pymongo ) 参数解析吉特用法您可以将此...
tensorFlow python API tensorFlow python API tensorFlow python API tensorFlow python API tensorFlow python API tensorFlow python API tensorFlow python API tensorFlow python API tensorFlow python API
3dmax python api 绝对猛料3dmax python api 绝对猛料3dmax python api 绝对猛料3dmax python api 绝对猛料3dmax python api 绝对猛料3dmax python api 绝对猛料3dmax python api 绝对猛料
参考网上的文档,编写了使用 python API 接口实现的接口库:neo4jUtil.py。另外还写一个查询脚本:querySQL.py。 使用方法: 需要安装 neo4j for python 的库: pip install neo4j 修改配置文件:neo4jCfg.py ...