一、界面样式
二、语法设计
- Items属性
- label:前端显示搜索名
- path:查询的JSON位置,”##”表示”.”
- type: “textbox”类型表示手动输入;combobox表示下拉框
- data: 数据请求,包含两种模式
- 传kind和field,主要用于从数据库查询,比如主机个数
- 传ConfigMap, namespace和name,主要用于用户配置,比如配置Pod的状态
{"metadata": {"name": "formsearch-pod","namespace": "default"},"apiVersion": "doslab.io/v1","kind": "Frontend","spec": {"data": {"items": [{"label": "资源名称:","path": "metadata##name","type": "textbox"},{"label": "所在主机:","path": "spec##nodeName","type": "combobox","data":{"kind": "Node","field": "metadata##name"}},{"label": "实例状态:","path": "status##phase","type": "combobox","data":{"kind": "ConfigMap","namespace": "default","name": "pod-status"}}]},"type": "formsearch"}}
三、语法使用
3.1 普通模式
{
"label": "资源名称:",
"path": "metadata##name",
"type": "textbox"
}
说明根据JSON的metadata##name进行查询,其结果是

3.2 根据查询结果
{
"label": "所在主机:",
"path": "spec##nodeName",
"type": "combobox",
"data":
{
"kind": "Node",
"field": "metadata##name"
}
}
即向Node资源(kubectl get nodes)查询所有资源,取metadata.name(##表示“.”)<br />
3.3 用户配置
{
"label": "实例状态:",
"path": "status##phase",
"type": "combobox",
"data":
{
"kind": "ConfigMap",
"namespace": "default",
"name": "pod-status"
}
}

其对应的ConfigMap为
apiVersion: v1
kind: ConfigMap
metadata:
name: pod-status
namespace: default
data:
Completed: 执行完成
Running: 运行中
Terminating: 销毁中
Pending: 挂起中
Failed: 执行失败
Unknown: 未知状态
