actifio设备的抽象实用程序

act-appliance的Python项目详细描述


#actappliance


此repo抽象了您正在与actifio设备建立的连接类型。您可以通过ssh或restful连接编写测试或用例。

主要的想法是,所有发送的命令都可以看起来像cli,因为它更短,而且有更多的人熟悉它,
响应看起来像restful api的json返回,因为它们更易于解析。
它还允许直接命令使用具有相同cli-like请求契约的连接,并允许restful-like
响应在调用不可靠的情况下,无论出于何种原因都不可用(cli权限,任意输出)。

库的功能


首先创建设备/sky/uds对象:

>;a=设备(IP地址=<;sky或CDS IP>;,主机名=<;sky或CDS DNS名称>;)\r需要主机名或IP地址
>;例如,a=appliance(ip_address=8.8.8.8)


u'installed':u'2016-03-07 12:14:37'},{u'version':u'7.0.0.68595',u'component':u'psrv-revision',u'installed':u'2016-03-07 12:14:37'}
`````
注意:如果不设置日志级别,您可能会看到调试消息!

如果存储返回,则对象还有其他方法,如parse and raise_for_error。
`````
>;>;act_response=a.a.cmd('udsinfo lsversion')
>;>;act_response.parse()
{u'version':u'7.0.68595',u'component':u'cds',u'installed':u'2016-03-07 12:14:37'}
````

它只返回字典和字符串。它永远不会返回列表!在上面的例子中,您可以看到它返回了找到的第一个相关字典。如果您想要的信息是psrv修订组件的版本,那么您将使用m_k="component"(搜索键是component),
m_k="psrv-revision"(匹配值是psrv revision)。这两个输入在起作用:
```
>>>>act u response.parse(m_k='component',m_v='psrv-revision')
{u'version':u'7.0.0.68595',u'component':u'psrv-revision',u'installed':u'2016-03-07 12:14:37'}
```
但是我们希望版本不是整个dicitonary,所以我们将添加k'version'(在dict中搜索键版本并返回相应的值)。
完整的命令和结果:
```
>;act_response
{u'status':0,'errorcode':8675309,'errormessage':'something water wrong',u'result':[{u'version':u'7.0.0.68595,'u'component':u'cds',u'installed':u'2016-03-07 12:14:37',{u'version':u'7.0.0.68595,'u'component':u'psrv-revision',u'installed':u'2016-03-07 12:14:37'}
>>>>;act-u response.parse(m_k='component',m_k='psrv-revision',k='version')
u'7.0.0.68595'
````
这里我们可以看到parse的用途是简化设备响应的基本解析。

*高级示例
一段时间以来,您可能已经开始了解它的功能。过度依赖parse可能会导致编写如下代码:

`ids=[act_response.parse(backups,k='id',index=backup)for backup in range(len(backups))]`

当做类似于上述的事情时,重写它以避免使用parse,而是执行
它的操作。下面的结果与上面的行相同:

`ids=[data['id']for data in backups['result']`


ids.append(data['id'])
````

出现ED错误。
这些错误不包括连接错误,例如无法验证和获取有效的rest sessionid。这些都是
专门针对在与actifio设备交互时向用户冒泡的错误。响应对象
有两个属性"errorMessage"和"errorcode",可用于处理不应结束测试的错误。

*基本示例
````
>;>r=self.a.cmd('udsinfo lsversion-l')
>;>r.raise_for_status()
响应:{u'errorcode':10010,u'errormessage':u'invalid option:l}
````

这引发了一个错误,因为-l不是"udsinfo lsversion"的有效选项。错误对象本身可以直接访问errorcode和errormessage。您可以根据需要处理这些异常:
```
>>gt;来自actappliance。操作错误导入acterror
>>gt;尝试:
…r.raise_for_error()
…除了作为e:
的acterror…如果e.errorcode==10010:
…#处理或允许此错误
…print("我允许这个错误")
…其他:
…提高
``

处理此问题的另一种方法是捕获来自actappliance的特定错误:
```
>;>;操作错误导入操作错误
>;>;尝试:
…r.raise_for_error()
…除了动作错误[10010]:
…#处理或允许此错误
…print("我允许这个错误")
```



注意:如果您的命令需要特别地是rest或ssh,并且无法运行,或者如果以
其他方式发送,则是不准确的测试,请使用特定的方法而不是cmd。

< BR>![非常有趣](http://i.imgur.com/fzhenp0.png)



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何格式化servlet响应以生成HTML中“accept”参数可接受的媒体类型?   java如何使用JasperReports为单个报表传递多个结果集?   EclipseVBA到JAVA链接   java如何为Gradle中的不同配置配置PMD规则集?   在给出正确答案之前,是否要求回答?Java Eclipse   java查询SearchView崩溃(尝试实现SearchView操作栏)   java为什么跳过我的IF语句?   java循环以获取与输入值最接近的对象   java默认构造函数真正做什么?   java我需要测试类中的测试方法吗   java如何在代码中滚动滚动窗格?   java我需要获得发布和调试证书指纹的帮助   javascript如何在JS中取消Java“DES/CBC/PKCS5Padding”?