actifio设备的抽象实用程序

actappliance的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 SimpleFramework和工厂方法   Java适当地处理异常   java单例类不起作用   java小程序和Swing在eclipse中不显示组件   多个键上的java Redisson FastRemove不起作用   java验证请求正文不等于模式   在Java中从URL读取数据   eche RecyclerView项的java Set自定义字体   string Java如何从Date获取HH:mm:ss   当Java应用程序落后于负载均衡器时,在某些URL上强制使用SSL   使用esapi时发生java错误   java使用流根据第二个列表中的值更新一个列表中的对象   组织。openqa。硒。Java中的NoTouchElementException WebDriver?   从JSON字符串Java创建CSV文件