RESTMapper解读(三)-其他RESTMapper-v1.5.2
其他RESTMapper
之前的两次关于RESTMapper的分析都是和DefaultRESTMapper相关的。除了DefaultRESTMapper以外,Kubernetes还实现了PriorityRESTMapper,MuiltiRESTMaper和FirstHitRESTMapper。本次分析就来看下这些RESTMapper的实现。
PriorityRESTMapper
PriorityRESTMapper定义在/pkg/api/meta/priority.go中:
PriorityRESTMapper封装了一个RESTMapper,及ResourcePriority和KindPriority。与DefaultRESTMapper多值处理方式(出错处理)不同的是,PriorityRESTMapper会依据ResourcePriority和KindPriority对多值进行过滤,直到只有一个结果为止。
具体PriorityRESTMapper方法这里就不再详细分析。
MultiRESTMapper
MultiRESTMapper定义在/pkg/api/meta/multirestmapper.go中:
MultiRESTMapper中封装了多个RESTMapper,对于KindsFor(),ResourcesFor(),RESTMappings(),MultiRESTMapper会收集所有RESTMapper的结果;对于KindFor(),ResourceFor(),RESTMapping()的多值处理方式和DefaultRESTMapper相同,直接出错处理。
具体MultiRESTMapper方法这里就不再详细分析。
FirstHitRESTMapper
FirstHitRESTMapper定义在/pkg/api/meta/firsthit_restmapper.go中:
FirstHitRESTMapper本质也封装了多个RESTMapper。与其他RESTMapper不同的是,FirstHitRESTMapper并没有实现KindsFor(),ResourcesFor(),RESTMappings()。从”FirstHitRESTMapper”这名字来看,也可以理解FirstHitRESTMapper的处理方式:当有一个RESTMapper成功,则直接返回。如KindFor()方法:
具体FirstHitRESTMapper其他方法这里就不再详细分析。
至此,RESTMapper分析完毕。