本文整理汇总了Python中Utils.HttpClient.HttpClient类的典型用法代码示例。如果您正苦于以下问题:Python HttpClient类的具体用法?Python HttpClient怎么用?Python HttpClient使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了HttpClient类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: createProfiles
def createProfiles(self, profile_info, nw_id=None):
"""
@summary: 创建指定网络的配置集
@param profile_info: XML文件
输入说明:
1)配置集名称只能由数字、字母、-、_组成
2)名称和网络id是必须的,网络名称无效
@param nw_id:指定网络id
@return: 字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容(dict格式)
@note: 有两种使用情况
1)nw_id可以通过外部传参,此时xml文件中network id为变量
<vnic_profile>
<name>abc#</name>
<description>shelled</description>
<network id="%s"/>
<port_mirroring>false</port_mirroring>
</vnic_profile>
2)nw_id为空,此时xml文件中需为network id赋值
<vnic_profile>
<name>abc#</name>
<description>shelled</description>
<network id="字符串"/>
<port_mirroring>false</port_mirroring>
</vnic_profile>
"""
api_url = self.base_url
method = "POST"
if nw_id:
r = HttpClient.sendRequest(method=method, api_url=api_url, data=(profile_info % nw_id))
else:
r = HttpClient.sendRequest(method=method, api_url=api_url, data=profile_info)
return {"status_code": r.status_code, "result": xmltodict.parse(r.text)}
示例2: createTemplateNic
def createTemplateNic(self,temp_name,nic_data,proid=None):
'''
@summary:为模板创建网络接口
@param temp_name:模板名称
@param nic_data:网络接口配置信息,xml文件
@param proid:配置集id
参数传递有两种情况:
1)proid为空,即通过xml文件中定义vnic_profile_id值
<nic>
<name>nic4</name>
<vnic_profile id="6f1bff46-d0aa-49d2-9206-0bc9a4adf6aa"/>
</nic>
2)proid非空,即通过外部传参设置vnic_profile_id
<nic>
<name>nic4</name>
<vnic_profile id="%s"/>
</nic>
网络接口输入说明:
1)接口名称是必须的,其余是可选的
2)配置集必须设置id
异常情况说明:
1)接口名称重复(409)
2)id设置错误(400)
3)对象不存在(404)
@return:字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容
'''
temp_id = self.getTemplateIdByName(temp_name)
api_url = '%s/%s/nics' % (self.base_url,temp_id)
method = 'POST'
if proid:
r = HttpClient.sendRequest(method=method, api_url=api_url,data=(nic_data %proid))
else:
r = HttpClient.sendRequest(method=method, api_url=api_url,data=nic_data )
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例3: updateTemplateNic
def updateTemplateNic(self,temp_name,nic_name,update_data,proid=None):
'''
@summary:编辑某个模板的网络接口
@param temp_name:模板名称
@param nic_name:网络接口名称
@param update_data:网络接口配置信息 ,xml
@param proid: 配置集id
1)proid为空,即通过xml文件中定义vnic_profile_id值
<nic>
<name>nic2</name>
<vnic_profile id="6f1bff46-d0aa-49d2-9206-0bc9a4adf6aa"/>
<interface>VirtIO</interface>
<linked>false</linked>
<plugged>false</plugged>
</nic>
2)proid非空,即通过外部传参设置vnic_profile_id
<nic>
<name>nic2</name>
<vnic_profile id="%s"/>
<interface>VirtIO</interface>
<linked>false</linked>
<plugged>false</plugged>
</nic>
@return:字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容
'''
temp_id = self.getTemplateIdByName(temp_name)
nic_id = self.getNicIdByName(temp_name, nic_name)
api_url='%s/%s/nics/%s' % (self.base_url,temp_id,nic_id)
method = 'PUT'
if proid:
r = HttpClient.sendRequest(method=method, api_url=api_url,data=(update_data %proid))
else:
r = HttpClient.sendRequest(method=method, api_url=api_url,data=update_data)
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例4: createTemplate
def createTemplate(self, temp_info,vm_id=None,disk_id=None,sd_id=None):
'''
@summary: 创建模板
@param temp_info: XML形式的集群信息,调用接口时需要传递此xml数据
@note: 有三种使用情况
1)vm_id可以通过外部传参,此时xml文件中vm id为变量
<template>
<name>template-osvtest1</name>
<vm id="%s"/>
</template>
2)nw_id为空,此时xml文件中需为vm id赋值
<template>
<name>template-osvtest1</name>
<vm id="4fbca0c3-e2b7-4cf0-a680-ea43d5a0e778"/>
</template>
3)vm_id、disk_id、sd_id均通过外部传参
<template>
<name>template-osvtest1</name>
<vm id="%s">
<disks>
<disk id="%s">
<storage_domains>
<storage_domain id="%s"/>
</storage_domains>
</disk>
</disks>
</vm>
</template>
创建模板的测试数据说明:
1)测试数据最小集: 模板名称和虚拟机id,且模板名称唯一且虚拟机状态为down,创建成功并返回代码202(异步)
3)虚拟机状态非down,创建失败并返回代码409
4)其他参数:
<permissions>
<clone>true</clone> ;是否复制虚拟机权限
</permissions>
*************************************************
<vm id="91fab0d3-5ee0-4d81-9e4e-342327d0e362">
<disks>
<disk id="7aa205f0-f292-415b-8bf4-91c009e573d1">
<storage_domains>
<storage_domain id="ae2d5d54-38d5-41a2-835b-1c966c199855"/>
</storage_domains>
</disk>
</disks>
</vm> ;为虚拟机的某个磁盘指定存放的存储域
@return: 字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容(dict格式)
'''
api_url = self.base_url
method = 'POST'
if not vm_id and not disk_id and not sd_id:
r = HttpClient.sendRequest(method=method, api_url=api_url, data=temp_info)
if vm_id and not disk_id and not sd_id:
r = HttpClient.sendRequest(method=method, api_url=api_url, data=(temp_info %vm_id))
if vm_id and disk_id and sd_id:
r=HttpClient.sendRequest(method=method, api_url=api_url, data=(temp_info %(vm_id,disk_id,sd_id)))
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例5: createCluster
def createCluster(self, cluster_info):
'''
@summary: 创建集群
@param cluster_info: XML形式的集群信息,调用接口时需要传递此xml数据
创建集群时集群名称、cpuid和数据中心为必需,其余为可选;
1)内存优化
<memory_policy>
<overcommit percent="150"/> ;100,150,200,默认为200
<transparent_hugepages>
<enabled>true</enabled> ;默认false
</transparent_hugepages>
</memory_policy>
2)cpu线程
<threads_as_cores>false</threads_as_cores> ;默认为false
3)弹性策略
<error_handling>
<on_error>migrate_highly_available</on_error>;包括migrate,migrate_highly_available,do_not_migrate,默认为migrate
</error_handling>
4)集群策略
<scheduling_policy>
<policy>power_saving</policy> ;包括none(默认),power_saving,evenly_distributed三种,其中none无需输入,evenly_distributed需要输入high和duration两个参数
<thresholds low="20" high="80" duration="120"/>
</scheduling_policy>
5)其他
<virt_service>true</virt_service>
<gluster_service>false</gluster_service>
<tunnel_migration>false</tunnel_migration>
<trusted_service>false</trusted_service> ;若设置true,前提是配置服务,否则创建失败
<ballooning_enabled>false</ballooning_enabled>
@return: 字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容(dict格式)
'''
api_url = self.base_url
method = 'POST'
r = HttpClient.sendRequest(method=method, api_url=api_url, data=cluster_info)
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例6: attachNicWithNetwork
def attachNicWithNetwork(self, host_name, nic_name, network_name):
'''
@summary: 将虚拟化主机网卡与逻辑网络绑定(附加)
@param host_name: 虚拟化主机名称
@param nic_name: 虚拟化主机网络接口名称
@param xml_network_info: network的XML信息(需提供network的name或id),如:
<action>
<network id="id"/>
</action>
@return: 字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容
@todo: 其功能只是将逻辑网络与物理网卡绑定,至于具体的配置需要调用其他接口?
'''
host_id = self.getHostIdByName(host_name)
nic_id = self.getHostNicIdByName(host_name, nic_name)
api_url = '%s/%s/%s/%s/attach' % (self.base_url, host_id, self.sub_url, nic_id)
method = 'POST'
xml_network_info = '''
<action>
<network>
<name>%s</name>
</network>
</action>
''' % network_name
r = HttpClient.sendRequest(method=method, api_url=api_url, data=xml_network_info)
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例7: setupNetworks
def setupNetworks(self, host_name, xml_networks_info):
'''
@summary: 对虚拟化主机上的多个网络接口进行配置
@param xml_networks_info: 虚拟化主机网络配置信息,如:
<action>
<host_nics>
<host_nic id="41561e1c-c653-4b45-b9c9-126630e8e3b9">
<name>em1</name>
<network id="00000000-0000-0000-0000-000000000009"/>
<boot_protocol>dhcp</boot_protocol>
</host_nic>
<host_nic id="3c3f442f-948b-4cdc-9a48-89bb0593cfbd">
<name>em2</name>
<network id="00000000-0000-0000-0000-000000000010"/>
<ip address="10.35.1.247" netmask="255.255.254.0" gateway="10.35.1.254"/>
<boot_protocol>static</boot_protocol>
</host_nic>
<checkConnectivity>true</checkConnectivity>
<connectivityTimeout>60</connectivityTimeout>
<force>false</force>
</host_nics>
</action>
@attention: 没有指定的nic是否直接设置为空?
@return:
'''
host_id = self.getHostIdByName(host_name)
api_url = '%s/%s/%s/setupnetworks' % (self.base_url, host_id, self.sub_url)
method = 'POST'
r = HttpClient.sendRequest(method=method, api_url=api_url, data=xml_networks_info)
print r.text
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例8: delStorageDomain
def delStorageDomain(self, sd_name, xml_del_option, host_name=None):
'''
@summary: 删除存储域(包括删除、销毁)
@param sd_name: 存储域名称
@param host_name: 关联的主机名称(如果不提供,则必须在xml_del_option中指定)
@param xml_del_option: XML格式的删除选项信息;如下:
<storage_domain>
<host>
<name>node2</name>
</host>
<format>true</format>
<destroy>true</destroy>
<async>false</async>
</storage_domain>
@attention:
(1) <host>字段是必须提供的;(2)<destroy>字段表示销毁操作,销毁时不需要另外指定<format>字段;
(3)<format>字段表示是否格式化域,在进行删除操作时必须指定该字段;(4)<async>表示是否异步返回。
@attention: (1)Maintenance状态可以销毁;(2)游离状态可以删除。
@return: 字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容。
'''
sd_id = self.getStorageDomainIdByName(sd_name)
api_url = '%s/%s' % (self.base_url, sd_id)
method = 'DELETE'
if host_name:
xml_del_option = xml_del_option % host_name
r = HttpClient.sendRequest(method=method, api_url=api_url, data=xml_del_option)
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例9: getStorageConnectionInfo
def getStorageConnectionInfo(self, sc_id):
'''
@summary: 获得Storage Connection的信息
'''
api_url = '%s/%s' % (self.base_url, sc_id)
method = 'GET'
r = HttpClient.sendRequest(method=method, api_url=api_url)
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例10: createDisk
def createDisk(self, disk_info,sd_id=None):
'''
@summary: 创建磁盘
@param disk_info: XML形式的集群信息,调用接口时需要传递此xml数据
磁盘大小、存储域、interface、format参数是必需的(不能设置type字段)
异常情况说明:
1)存储域不存在:404
2)缺少参数或参数错误:400
@return: 字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容(dict格式)
'''
api_url = self.base_url
method = 'POST'
if sd_id:
r = HttpClient.sendRequest(method=method, api_url=api_url, data=(disk_info %sd_id))
else:
r = HttpClient.sendRequest(method=method, api_url=api_url, data=disk_info)
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例11: getDataCentersList
def getDataCentersList(self):
'''
@summary: 获取全部数据中心列表
@return: 字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容(dict格式)。
'''
api_url = self.base_url
method = "GET"
r = HttpClient.sendRequest(method=method, api_url=api_url)
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例12: attachStorageDomainToDC
def attachStorageDomainToDC(self, dc_name, sd_name=None, data=None):
'''
@summary: 将存储域附加到数据中心
@param dc_name: 数据中心名称
@param sd_name: 存储域名称(可选参数,若不指定,则必须按规则在data中指定相应参数)
@param data: 存储域的xml数据(可选参数,若提供了sd_name,则不需要提供该参数;若未提供sd_name,则需提供相应的xml字符串)
@return: 字典,(1)status_code:请求返回状态码;(2)result:请求返回的内容。
'''
api_url = '%s/%s/storagedomains' % (self.base_url, self.getDataCenterIdByName(dc_name))
method = 'POST'
if sd_name:
data = '''<storage_domain><name>%s</name></storage_domain>''' % sd_name
r = HttpClient.sendRequest(method=method, api_url=api_url, data=data)
elif data:
r = HttpClient.sendRequest(method=method, api_url=api_url, data=data)
else:
raise Exception(u'至少需要提供storage_name或xml数据来完成分离操作。')
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例13: getProfilesList
def getProfilesList(self):
"""
@summary: 获取全部配置集列表
@return: 字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容(dict格式)。
"""
api_url = self.base_url
method = "GET"
r = HttpClient.sendRequest(method=method, api_url=api_url)
return {"status_code": r.status_code, "result": xmltodict.parse(r.text)}
示例14: getStorageConnectionsList
def getStorageConnectionsList(self):
'''
@summary: 获得全部storage connection的列表
@return: 字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容(dict格式)。
'''
api_url = self.base_url
method = 'GET'
r = HttpClient.sendRequest(method=method, api_url=api_url)
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}
示例15: updateStorageDomain
def updateStorageDomain(self, sd_name, xml_update_info):
'''
@summary: 更新存储域信息
@param xml_update_info: XML格式的待更新存储域信息,通过该接口可以编辑NFS、ISCSC和FC类型存储域,如下:
(1) 编辑NFS类型存储域(NFS类型存储域只能编辑名称、描述等字段):
<storage_domain>
<name>data-new</name>
<description>aaa</description>
</storage_domain>
(2) 编辑ISCSI/FC类型存储域(编辑名称、描述)
<storage_domain>
<name>Data2-ISCSI</name>
<description>bbb</description>
<storage>
<type>iscsi</type>
<logical_unit id="35005907f57002df5"/>
<override_luns>true</override_luns>
</storage>
</storage_domain>
(3) 编辑ISCSI/FC类型存储域(添加LUN,前提是主机已经登陆该Target)
<storage_domain>
<host>
<name>node2</name>
</host>
<storage>
<type>iscsi</type>
<logical_unit id="35005907f57002df5"/>
<override_luns>true</override_luns>
</storage>
</storage_domain>
(4) 编辑ISCSI/FC类型存储域(添加LUN,前提是主机未登录该Target)
<storage_domain>
<host>
<name>node2</name>
</host>
<storage>
<type>iscsi</type>
<logical_unit id="35005907f57002df5">
<address>10.1.161.61</address>
<port>3260</port>
<target>iqn.2012-07.com.lenovoemc:ix12.px12-TI3111.wangyy</target>
<serial>SLENOVO_LIFELINE-DISK</serial>
<vendor_id>LENOVO</vendor_id>
<product_id>LIFELINE-DISK</product_id>
<lun_mapping>1</lun_mapping>
</logical_unit>
<override_luns>true</override_luns>
</storage>
</storage_domain>
@return: 字典,包括:(1)status_code:http请求返回码;(2)result:请求返回的内容。
'''
sd_id = self.getStorageDomainIdByName(sd_name)
api_url = '%s/%s' % (self.base_url, sd_id)
method = 'PUT'
r = HttpClient.sendRequest(method=method, api_url=api_url, data=xml_update_info)
return {'status_code':r.status_code, 'result':xmltodict.parse(r.text)}