美文网首页
CDH 的python api的一些底层的探索

CDH 的python api的一些底层的探索

作者: 钙世英雄转世 | 来源:发表于2018-12-20 14:30 被阅读0次

在做需求的时候发现似乎没有CM的python的重启api于是去看了下,他们自己做的CM的api的工作过程:

1.以cms为例

他的inspect_hosts调用的其实就是一个_cmd,括号里的inspectHosts 看着似乎哪里见到过,翻出官方的api文档

发现在官方的输入命令的文档里有这行语句,所以这运行的底层机制其实就是一目了然了,其实调用python方法就是官方给你添加了cmd语句,那么是怎么运行的呢?

在cms.py里找不到_cmd这个内部方法,就可以想到,他是继承了父类的这个内部方法

我们查找BaseApiResource这个基类,在types.py里可以找到也可以用查找类的命令找到

我们可以看到BaseApiResource这个类里有这个方法

这里有很多默认参数,如果你要修改可以修改,如果不修改就是默认的参数比如api_version

ApiCommand是什么呢?

那么就可以很清晰的看到为什么会是/cm/commands/inspectHosts了,我们再往下追查

看到了这是更底层的调用

到这一步其实就是可以了,但是还可以往下看看这个getattr是干嘛的

说白了就是 资源.post的一个组合,这里已经写的很清楚了, is equivalent to x.y

而resource_root其实就是在初始化中@param resource_root: API resource object. 资源的一个基类

探索了这些,其实我们就可以对cms的命令进行随意的组合了

2.当然在cms中我们还发现了_put的请求也可以看下

对应的api就是

同样也是基类当中

我们看到调用的还是_call方法,这下更清楚底层的调用模式

相似的还有delete

和get

附录更新记录

后来发现还是有的,只不过clouderamanager的一些操作在service,这里记下

相关文章

网友评论

      本文标题:CDH 的python api的一些底层的探索

      本文链接:https://www.haomeiwen.com/subject/asfykqtx.html