讀古今文學網 > OpenStack系統架構設計實戰 > 5.5.3 Discovery插件開發 >

5.5.3 Discovery插件開發

Ceilometer的Discovery插件的作用是獲取Pollster所需要輪詢的端點資源信息,作為resource參數傳遞給Pollster的get_samples方法。所有的Discovery插件都必須是ceilometer.agent.plugin_base.DiscoveryBase抽像類的子類,需要實現其中的接口。DiscoveryBase的定義如下:

@six.add_metaclass(abc.ABCMeta)class DiscoveryBase(object):@abc.abstractpropertydef discovery(self, manager, param=None): """返回需要輪詢的資源"""

Discovery插件需要實現discovery接口,結果返回一個列表,列表中的值一般用來表示端點信息,具體解釋由不同的Pollster實現而定,即不同的Discovery插件和Pollster插件可能在這個列表中支持返回不同類型的數據。discovery接口的輸入參數含義如下。

1)manager:指向其運行的agent service manager對象的句柄。

2)param:包含了discovery URL中的netloc和path部分的字符串。

Discovery插件需要註冊在ceilometer.discovery的NameSpace下。Discovery插件和Pollster插件之間的對應關係可以由兩種方式指定:一種是在Pipeline配置文件中指定此Pipeline中Pollster所需要的Discovery插件,一種是在Pollster實現中,Pollster開發者通過default_discovery方法來指定此Pollster需要使用的Discovery插件。第一種方式的優先級高於第二種方式。不管是哪種方式,都是通過discovery URL字符串的方式來指定Discovery插件。Discovery URL字符串的格式如下:

<scheme>://<netloc>/<path>

其中,scheme部分用來匹配Discovery插件在ceilometer.discovery的NameSpace下的註冊名,netloc部分和path部分則作為param參數傳遞給Discovery插件的Discovery方法。