注意:本模块以英格拉米克罗的OSAAPI为受益人进行折旧
paA的Python项目详细描述
用于并行操作自动化(POA)和并行业务自动化企业(PBA)API的Python客户端。
Connecting and Authenticating
POA(host,user=None,password=None,ssl=False,verbose=False,port=8440)PBA(host,user=None,password=None,ssl=False,verbose=False,port=5224)
Default Connection
frompaAPIimportPOA,PBA# connect to POApem=POA('mn.hostname.com')# connect to PBAapi=PBA('pba.hostname.com')
Basic HTTP Authentication
frompaAPIimportPOA,PBA# connect to POApem=POA('mn.hostname.com',user='admin',password='setup')
SSL
frompaAPIimportPOA,PBA# connect to POApem=POA('mn.hostname.com',ssl=True)
Custom Port
frompaAPIimportPOA,PBA# connect to POApem=POA('mn.hostname.com',port=8888)
Parallels Operations Automation (POA) API
除了三个POA API调用之外,其他所有调用都以“pem”开头,因此建议您将POA连接对象命名为“pem”,这样您就可以像本自述文件中的示例那样,准确地调用POA API中记录的函数。
完整的poa公共api引用可以在这里找到:
http://download.pa.parallels.com/poa/5.5/doc/index.htm?fileName=56781.htm
Basic API Call
此示例将显示正在调用的pem.getAccountInfo方法。
frompaAPIimportPOApem=POA('mn.hostname.com')d={'account_id':1002242}printpem.getAccountInfo(**d)# {'status': 0, 'result': {'fax': {'phone_num': '', 'ext_num': '', 'area_code': '', 'country_code': ''}, 'account_type': 'C', 'phone': {'phone_num': '00000000', 'ext_num': '', 'area_code': '04', 'country_code': '61'}, 'brand': {'brand_id': 191, 'domain_name': 'brandingdomain.com', 'name': 'brandname'}, 'email': 'noreply@example.com', 'person': {'first_name': 'John', 'last_name': 'Smith', 'middle_name': '', 'company_name': 'Test Account', 'title': ''}, 'address': {'city': 'Canberra', 'country': 'au', 'street_name': '1 Test Street', 'zipcode': '2621', 'state': 'ACT', 'house_num': '', 'address2': ''}, 'parent_account_id': 1002241}}
API Call with ‘array of struct’
poa api通常要求将值和设置作为“结构数组”发送。这个例子展示了如何使用paapi客户端发送这些值。
此示例基于pem.activateSubscription方法,该方法具有名为“diskspace”和“bandwidth”的资源类型和域名。
frompaAPIimportPOApem=POA('mn.hostname.com')# define the resource limits:DiskSpace={"resource_id":1002486,"resource_limit":1024}Bandwidth={"resource_id":1002487,"resource_limit":-1}# define the paramaters:DomainName={"var_name":"DomainID","var_value":"example.com.au"}# setup the call:d={"account_id":1002242,"subscription_name":"Hosting (example.com.au)","subscription_id":1006754,"service_template_id":204,"resource_limits":[DiskSpace,Bandwidth],"paramaters":[DomainName],}# execute the call:result=pem.activateSubscription(**d)
Transactions
官方文档中有三个poa api调用不是以pem开头的。当使用paapi时,您可以使用这些api调用(如文档所示),但您仍然需要用poa连接对象作为它们的前缀(本页中的示例使用“pem”作为连接对象名)。
frompaAPIimportPOApem=POA('mn.hostname.com')# being transactionpem.txn.Begin()# commit transactionpem.txn.Commit()# rollback transactionpem.txn.Rollback()
Error Handling
当api调用期间发生错误时,poaapi有很好的响应。下面的示例显示POA API错误的响应格式:
{'status':-1,'extype_id':21,'module_id':'OpenAPI','error_message':'Invalid set of arguments. There should be specified EITHER external_info OR person, address, phone, [fax], [locale], email.','properties':{'reason':'Invalid set of arguments. There should be specified EITHER external_info OR person, address, phone, [fax], [locale], email.'}}
Parallels Business Automation (PBA) API
pba api与poaapi有很大不同,并且不太友好。paapi客户机通过标准化返回的响应、提供状态代码和解码任何错误消息,使pba的使用稍微容易一些。
poa和pba api的主要区别在于如何发送和接收值。在pba中,按特定顺序发送参数并接收响应作为列表,以了解每个值代表什么。
完整的PBA公共API引用可以在这里找到:
http://download.pa.parallels.com/pba/5.5/doc/pdf/SDK_API/pba_5.5_public_api_reference.pdf
Basic API Call
此示例将显示正在调用的accountdetailsget_api方法。
frompaAPIimportPBAapi=PBA('pba.hostname.com')printapi.Execute('AccountDetailsGet_API',params=['1002242'])# {'status': 0, 'result': [1002242, 1002241, 'Test Account 5543', '1 Test Street', '', 'Canberra', '', '2621', 'au', '', 'John', 'D', 'Smith', 'noreply@example.com', '61', '04', '000000000', '', '', '', '', '', 1351787114, 2, 0]}
Alternate Server
大多数pba api方法调用使用“bm”服务器。有些方法使用备用服务器,如“pemgate”或“domaingate”。此示例显示如何指定备用服务器:
frompaAPIimportPBAapi=PBA('pba.hostname.com')api.Execute('DomainExpirationDateGet_API',params=params,server='DOMAINGATE')
Error Handling
paapi采用poa本机返回错误的方式,并将其应用于pba api。对于成功的调用,每个响应的状态将为0,如果pba返回错误,则为-1。
这是一个在发生错误时返回内容的示例:
{'status':-1,'error_message':'Table Account does not contain row with ID 99999999.','server':'BM','host':'pba.hostname.com','params':['99999999'],'result':None,'method':'AccountDetailsGet_API'}