@@ -34,7 +34,7 @@ private KubeUtil() {
3434 * @param hostName hostname
3535 * @return json json from Kubernetes
3636 */
37- public static JsonNode bindingResource (String podName , String podNamespace , String hostName ) {
37+ public static JsonNode toBinding (String podName , String podNamespace , String hostName ) {
3838
3939 ObjectNode binding = new ObjectMapper ().createObjectNode ();
4040 binding .put (KubernetesConstants .KUBE_APIVERSION , KubernetesConstants .DEFAULT_APIVERSION );
@@ -53,4 +53,79 @@ public static JsonNode bindingResource(String podName, String podNamespace, Stri
5353
5454 return binding ;
5555 }
56+
57+ /**
58+ * 不考虑apiVersion为空或者不符合Kuberneres资源定义的的情况
59+ * 否则抛出异常
60+ * https://kubernetes.io/docs/concepts/overview/working-with-objects/
61+ *
62+ * @param apiVersion Kubernetes对应kind的apiVersion
63+ * @return Kubernetes对应kind的group
64+ */
65+ public static String toGroup (String apiVersion ) {
66+ int idx = apiVersion .indexOf (KubernetesConstants .KUBE_APIVERSION_SPLIT );
67+ return idx == -1 ? KubernetesConstants .KUBE_DEFAULT_GROUP : apiVersion .substring (0 , idx );
68+ }
69+
70+
71+ /**
72+ * 不考虑json为空或者不符合Kuberneres资源定义的的情况
73+ * 否则抛出异常
74+ * https://kubernetes.io/docs/concepts/overview/working-with-objects/
75+ *
76+ * @param json json
77+ * @return 获得kubernetes的name
78+ */
79+ public static String getName (JsonNode json ) {
80+ return json .get (KubernetesConstants .KUBE_METADATA ).get (KubernetesConstants .KUBE_METADATA_NAME ).asText ();
81+ }
82+
83+ /**
84+ * 不考虑json为空或者不符合Kuberneres资源定义的的情况
85+ * 否则抛出异常
86+ * https://kubernetes.io/docs/concepts/overview/working-with-objects/
87+ *
88+ * @param json json
89+ * @return 获得kubernetes的namespace
90+ */
91+ public static String getNamespace (JsonNode json ) {
92+ if (json .get (KubernetesConstants .KUBE_METADATA ).has (KubernetesConstants .KUBE_METADATA_NAMESPACE )) {
93+ return json .get (KubernetesConstants .KUBE_METADATA ).get (KubernetesConstants .KUBE_METADATA_NAMESPACE ).asText ();
94+ }
95+ return KubernetesConstants .KUBE_DEFAULT_NAMESPACE ;
96+ }
97+
98+
99+ /**
100+ * 不考虑json为空或者不符合Kuberneres资源定义的的情况
101+ * 否则抛出异常
102+ * https://kubernetes.io/docs/concepts/overview/working-with-objects/
103+ *
104+ * @param json json
105+ * @return 获得kubernetes的namespace
106+ */
107+ public static String getGroup (JsonNode json ) {
108+ return toGroup (json .get (KubernetesConstants .KUBE_APIVERSION ).asText ());
109+ }
110+
111+ /**
112+ * 不考虑fullkind为空或者不符合Kuberneres资源定义的的情况
113+ * 否则抛出异常
114+ * https://kubernetes.io/docs/concepts/overview/working-with-objects/
115+ *
116+ * @param fullkind fullkind = group + "." + kind
117+ * @return 获得kubernetes的namespace
118+ */
119+ public static String getGroup (String fullkind ) {
120+ int idx = fullkind .lastIndexOf (KubernetesConstants .KUBE_VALUE_SPLIT );
121+ return idx == -1 ? KubernetesConstants .KUBE_DEFAULT_GROUP : fullkind .substring (0 , idx );
122+ }
123+
124+ /**
125+ * @param value 目标KInd的元数据表述
126+ * @return 是否支持被watch,像其见Kubernetes的Watch机制
127+ */
128+ public static boolean supportWatch (JsonNode value ) {
129+ return value .get ("verbs" ).toPrettyString ().contains ("watch" );
130+ }
56131}
0 commit comments