@dovetail-v2/refine 0.0.66-pod-exec.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/dist/{MonacoYamlDiffEditor-6b799b64.js → MonacoYamlDiffEditor-e737ae8d.js} +1 -1
  2. package/dist/{index-c07bed15.js → index-0c7bfb69.js} +5800 -19551
  3. package/dist/refine.js +162 -161
  4. package/dist/refine.umd.cjs +4780 -18531
  5. package/dist/style.css +11 -229
  6. package/lib/src/App.js +91 -0
  7. package/lib/src/Dovetail.js +45 -0
  8. package/lib/src/components/Breadcrumb/index.js +20 -0
  9. package/lib/src/components/ConditionsTable/ConditionsTable.js +56 -0
  10. package/lib/src/components/ConditionsTable/index.js +1 -0
  11. package/lib/src/components/CreateButton/index.js +10 -0
  12. package/lib/src/components/CronJobDropdown/index.js +26 -0
  13. package/lib/src/components/CronjobJobsTable/index.js +49 -0
  14. package/lib/src/components/DeleteButton/index.js +13 -0
  15. package/lib/src/components/DeleteManyButton/index.js +16 -0
  16. package/lib/src/components/DrawerShow/DrawerShow.js +13 -0
  17. package/lib/src/components/DrawerShow/index.js +1 -0
  18. package/lib/src/components/EditButton/index.js +13 -0
  19. package/lib/src/components/EditField/index.js +47 -0
  20. package/lib/src/components/ErrorContent/index.js +36 -0
  21. package/lib/src/components/EventsTable/EventsTable.js +59 -0
  22. package/lib/src/components/EventsTable/index.js +1 -0
  23. package/lib/src/components/Form/FormModal.d.ts +0 -1
  24. package/lib/src/components/Form/KeyValueListWidget.js +56 -0
  25. package/lib/src/components/Form/MetadataForm.js +9 -0
  26. package/lib/src/components/Form/NameInputWidget.js +50 -0
  27. package/lib/src/components/Form/NamespaceSelectWidget.js +21 -0
  28. package/lib/src/components/Form/index.js +4 -0
  29. package/lib/src/components/Form/widget.js +1 -0
  30. package/lib/src/components/FormErrorAlert/index.js +8 -0
  31. package/lib/src/components/FormLayout/index.js +21 -0
  32. package/lib/src/components/FormModal/index.js +51 -0
  33. package/lib/src/components/ImageNames/index.js +14 -0
  34. package/lib/src/components/IngressRulesComponent/index.js +11 -0
  35. package/lib/src/components/IngressRulesTable/IngressRulesTable.js +51 -0
  36. package/lib/src/components/IngressRulesTable/index.js +1 -0
  37. package/lib/src/components/K8sDropdown/index.js +31 -0
  38. package/lib/src/components/KeyValue/KeyValue.js +27 -0
  39. package/lib/src/components/KeyValue/index.js +1 -0
  40. package/lib/src/components/KeyValueData/index.js +50 -0
  41. package/lib/src/components/Layout/index.js +39 -0
  42. package/lib/src/components/ListPage/index.d.ts +1 -0
  43. package/lib/src/components/ListPage/index.js +25 -0
  44. package/lib/src/components/Menu/index.js +36 -0
  45. package/lib/src/components/NamespacesFilter/index.js +34 -0
  46. package/lib/src/components/NetworkPolicyRulesTable/NetworkPolicyRulesTable.d.ts +1 -2
  47. package/lib/src/components/NetworkPolicyRulesTable/NetworkPolicyRulesTable.js +77 -0
  48. package/lib/src/components/NetworkPolicyRulesTable/index.js +1 -0
  49. package/lib/src/components/PageShow/PageShow.js +11 -0
  50. package/lib/src/components/PageShow/index.js +1 -0
  51. package/lib/src/components/PodContainersTable/PodContainersTable.js +78 -0
  52. package/lib/src/components/PodContainersTable/index.js +1 -0
  53. package/lib/src/components/PodLog/index.js +136 -0
  54. package/lib/src/components/ReferenceLink/index.js +17 -0
  55. package/lib/src/components/RefineForm/RefineFormContent.d.ts +10 -0
  56. package/lib/src/components/RefineForm/RefineFormModal.d.ts +8 -0
  57. package/lib/src/components/RefineForm/RefineFormPage.d.ts +7 -0
  58. package/lib/src/components/RefineForm/index.d.ts +3 -0
  59. package/lib/src/components/RefineForm/type.d.ts +20 -0
  60. package/lib/src/components/RefineForm/useRefineForm.d.ts +10 -0
  61. package/lib/src/components/ResourceCRUD/ResourceCRUD.js +15 -0
  62. package/lib/src/components/ResourceCRUD/create/index.js +13 -0
  63. package/lib/src/components/ResourceCRUD/index.js +4 -0
  64. package/lib/src/components/ResourceCRUD/list/index.js +19 -0
  65. package/lib/src/components/ResourceCRUD/show/index.js +6 -0
  66. package/lib/src/components/ResourceFiledDisplays.d.ts +7 -0
  67. package/lib/src/components/ResourceLink/index.js +21 -0
  68. package/lib/src/components/ResourceUsageBar/index.js +81 -0
  69. package/lib/src/components/Separator/index.js +11 -0
  70. package/lib/src/components/ShowContent/ShowContent.js +157 -0
  71. package/lib/src/components/ShowContent/fields.d.ts +7 -2
  72. package/lib/src/components/ShowContent/fields.js +157 -0
  73. package/lib/src/components/ShowContent/index.js +2 -0
  74. package/lib/src/components/StateTag/StateTag.js +22 -0
  75. package/lib/src/components/StateTag/index.js +1 -0
  76. package/lib/src/components/Table/ErrorContent.js +36 -0
  77. package/lib/src/components/Table/TableToolBar.js +14 -0
  78. package/lib/src/components/Table/TableWidgets.js +28 -0
  79. package/lib/src/components/Table/index.js +69 -0
  80. package/lib/src/components/Tags/index.js +22 -0
  81. package/lib/src/components/Time/index.js +14 -0
  82. package/lib/src/components/WorkloadDropdown/index.js +24 -0
  83. package/lib/src/components/WorkloadPodsTable/WorkloadPodsTable.js +39 -0
  84. package/lib/src/components/WorkloadPodsTable/index.js +1 -0
  85. package/lib/src/components/WorkloadReplicas/index.js +50 -0
  86. package/lib/src/components/YamlEditor/MonacoYamlDiffEditor.js +34 -0
  87. package/lib/src/components/YamlEditor/MonacoYamlEditor.js +149 -0
  88. package/lib/src/components/YamlEditor/YamlEditorComponent.js +90 -0
  89. package/lib/src/components/YamlEditor/index.js +1 -0
  90. package/lib/src/components/YamlEditor/style.js +102 -0
  91. package/lib/src/components/YamlEditor/yaml.worker.js +1 -0
  92. package/lib/src/components/YamlForm/index.d.ts +0 -4
  93. package/lib/src/components/YamlForm/index.js +61 -0
  94. package/lib/src/components/index.d.ts +1 -3
  95. package/lib/src/components/index.js +38 -0
  96. package/lib/src/constants/index.js +2 -0
  97. package/lib/src/constants/k8s.js +203 -0
  98. package/lib/src/constants/state.js +15 -0
  99. package/lib/src/contexts/component.js +3 -0
  100. package/lib/src/contexts/configs.js +3 -0
  101. package/lib/src/contexts/global-store.js +3 -0
  102. package/lib/src/contexts/index.js +3 -0
  103. package/lib/src/hooks/index.js +7 -0
  104. package/lib/src/hooks/useDeleteModal/index.js +1 -0
  105. package/lib/src/hooks/useDeleteModal/useDeleteManyModal.js +31 -0
  106. package/lib/src/hooks/useDeleteModal/useDeleteModal.js +38 -0
  107. package/lib/src/hooks/useDownloadYAML.js +10 -0
  108. package/lib/src/hooks/useEagleForm.d.ts +1 -2
  109. package/lib/src/hooks/useEagleForm.js +177 -0
  110. package/lib/src/hooks/useEagleTable/columns.d.ts +6 -6
  111. package/lib/src/hooks/useEagleTable/columns.js +246 -0
  112. package/lib/src/hooks/useEagleTable/index.js +2 -0
  113. package/lib/src/hooks/useEagleTable/useEagleTable.js +63 -0
  114. package/lib/src/hooks/useEdit.js +19 -0
  115. package/lib/src/hooks/useGlobalStore.js +5 -0
  116. package/lib/src/hooks/useK8sYamlEditor.js +37 -0
  117. package/lib/src/hooks/useOpenForm.js +43 -0
  118. package/lib/src/hooks/useSchema.js +37 -0
  119. package/lib/src/hooks/useSubmitForm.js +42 -0
  120. package/lib/src/i18n.d.ts +26 -2
  121. package/lib/src/i18n.js +19 -0
  122. package/lib/src/index.js +13 -0
  123. package/lib/src/locales/en-US/dovetail.json +18 -0
  124. package/lib/src/locales/en-US/index.d.ts +14 -1
  125. package/lib/src/locales/en-US/index.js +4 -0
  126. package/lib/src/locales/index.js +6 -0
  127. package/lib/src/locales/zh-CN/dovetail.json +91 -0
  128. package/lib/src/locales/zh-CN/index.d.ts +12 -1
  129. package/lib/src/locales/zh-CN/index.js +4 -0
  130. package/lib/src/main.js +12 -0
  131. package/lib/src/models/cronjob-model.d.ts +0 -1
  132. package/lib/src/models/cronjob-model.js +32 -0
  133. package/lib/src/models/daemonset-model.d.ts +0 -1
  134. package/lib/src/models/daemonset-model.js +17 -0
  135. package/lib/src/models/deployment-model.d.ts +0 -1
  136. package/lib/src/models/deployment-model.js +17 -0
  137. package/lib/src/models/event-model.d.ts +0 -1
  138. package/lib/src/models/event-model.js +11 -0
  139. package/lib/src/models/index.js +14 -0
  140. package/lib/src/models/ingress-model.d.ts +0 -1
  141. package/lib/src/models/ingress-model.js +24 -0
  142. package/lib/src/models/job-model.d.ts +0 -1
  143. package/lib/src/models/job-model.js +56 -0
  144. package/lib/src/models/network-policy-model.d.ts +0 -1
  145. package/lib/src/models/network-policy-model.js +10 -0
  146. package/lib/src/models/node-model.d.ts +0 -1
  147. package/lib/src/models/persistent-volume-claim.d.ts +0 -1
  148. package/lib/src/models/persistent-volume.d.ts +0 -1
  149. package/lib/src/models/pod-metrics-model.d.ts +0 -1
  150. package/lib/src/models/pod-metrics-model.js +34 -0
  151. package/lib/src/models/pod-model.d.ts +0 -1
  152. package/lib/src/models/pod-model.js +78 -0
  153. package/lib/src/models/resource-model.d.ts +1 -1
  154. package/lib/src/models/resource-model.js +34 -0
  155. package/lib/src/models/server-instance-model.d.ts +10 -0
  156. package/lib/src/models/service-model.d.ts +0 -1
  157. package/lib/src/models/service-model.js +17 -0
  158. package/lib/src/models/statefulset-model.d.ts +0 -1
  159. package/lib/src/models/statefulset-model.js +17 -0
  160. package/lib/src/models/storage-class.d.ts +0 -1
  161. package/lib/src/models/types/index.js +1 -0
  162. package/lib/src/models/types/metric.js +1 -0
  163. package/lib/src/models/workload-base-model.d.ts +0 -1
  164. package/lib/src/models/workload-base-model.js +22 -0
  165. package/lib/src/models/workload-model.d.ts +0 -1
  166. package/lib/src/models/workload-model.js +51 -0
  167. package/lib/src/pages/configmaps/index.js +15 -0
  168. package/lib/src/pages/cronjobs/create/index.js +6 -0
  169. package/lib/src/pages/cronjobs/index.js +3 -0
  170. package/lib/src/pages/cronjobs/list/index.js +42 -0
  171. package/lib/src/pages/cronjobs/show/index.js +16 -0
  172. package/lib/src/pages/daemonsets/create/index.js +6 -0
  173. package/lib/src/pages/daemonsets/index.js +3 -0
  174. package/lib/src/pages/daemonsets/list/index.js +32 -0
  175. package/lib/src/pages/daemonsets/show/index.js +16 -0
  176. package/lib/src/pages/deployments/create/index.js +7 -0
  177. package/lib/src/pages/deployments/index.js +3 -0
  178. package/lib/src/pages/deployments/list/index.js +26 -0
  179. package/lib/src/pages/deployments/show/index.js +16 -0
  180. package/lib/src/pages/ingresses/index.js +26 -0
  181. package/lib/src/pages/jobs/index.js +34 -0
  182. package/lib/src/pages/networkPolicies/index.js +67 -0
  183. package/lib/src/pages/persistentvolumeclaims/index.d.ts +4 -0
  184. package/lib/src/pages/persistentvolumes/index.d.ts +3 -18
  185. package/lib/src/pages/pods/create/index.js +6 -0
  186. package/lib/src/pages/pods/index.js +3 -0
  187. package/lib/src/pages/pods/list/index.js +81 -0
  188. package/lib/src/pages/pods/show/index.js +54 -0
  189. package/lib/src/pages/secrets/index.js +15 -0
  190. package/lib/src/pages/services/index.js +26 -0
  191. package/lib/src/pages/statefulsets/create/index.js +6 -0
  192. package/lib/src/pages/statefulsets/index.js +3 -0
  193. package/lib/src/pages/statefulsets/list/index.js +26 -0
  194. package/lib/src/pages/statefulsets/show/index.js +16 -0
  195. package/lib/src/plugins/index.js +3 -0
  196. package/lib/src/plugins/model-plugin.js +46 -0
  197. package/lib/src/plugins/relation-plugin.js +81 -0
  198. package/lib/src/plugins/type.js +1 -0
  199. package/lib/src/providers/index.js +1 -0
  200. package/lib/src/providers/router-provider/index.js +100 -0
  201. package/lib/src/types/index.js +1 -0
  202. package/lib/src/types/resource.js +12 -0
  203. package/lib/src/utils/addId.js +8 -0
  204. package/lib/src/utils/download.js +9 -0
  205. package/lib/src/utils/error.js +53 -0
  206. package/lib/src/utils/form.js +9 -0
  207. package/lib/src/utils/k8s.js +6 -0
  208. package/lib/src/utils/labels.js +15 -0
  209. package/lib/src/utils/match-selector.js +12 -0
  210. package/lib/src/utils/openapi.js +33 -0
  211. package/lib/src/utils/schema.js +117 -0
  212. package/lib/src/utils/selector.js +12 -0
  213. package/lib/src/utils/string.js +6 -0
  214. package/lib/src/utils/time.js +46 -0
  215. package/lib/src/utils/unit.js +69 -0
  216. package/lib/src/utils/yaml.js +44 -0
  217. package/lib/vite.config.js +60 -0
  218. package/package.json +1 -10
  219. package/lib/src/components/ModalContextProvider/index.d.ts +0 -12
  220. package/lib/src/components/PodDropdown/index.d.ts +0 -9
  221. package/lib/src/components/PodShellModal/PodShell.d.ts +0 -18
  222. package/lib/src/components/PodShellModal/index.d.ts +0 -10
  223. package/lib/src/components/Shell/index.d.ts +0 -50
  224. package/lib/src/components/Shell/zmodem/index.d.ts +0 -51
  225. package/lib/src/hooks/useModal.d.ts +0 -0
  226. package/lib/src/hooks/useNamespaceFilter.d.ts +0 -5
  227. package/lib/src/model/cronjob-model.d.ts +0 -9
  228. package/lib/src/model/index.d.ts +0 -6
  229. package/lib/src/model/job-model.d.ts +0 -10
  230. package/lib/src/model/pod-metrics-model.d.ts +0 -7
  231. package/lib/src/model/pod-model.d.ts +0 -15
  232. package/lib/src/model/resource-model.d.ts +0 -17
  233. package/lib/src/model/workload-model.d.ts +0 -17
  234. package/lib/src/pages/nodes/hooks/useNodeMetrics.d.ts +0 -17
  235. package/lib/src/pages/storageclasses/list/index.d.ts +0 -3
  236. package/lib/src/pages/storageclasses/show/index.d.ts +0 -3
  237. package/lib/src/types/metric.d.ts +0 -25
  238. package/lib/src/utils/shell.d.ts +0 -16
@@ -0,0 +1,91 @@
1
+ {
2
+ "copy": "复制",
3
+ "reset_arguments": "重置",
4
+ "view_changes": "查看改动",
5
+ "back_to_edit": "编辑",
6
+ "configure_file": "配置内容",
7
+ "yaml_format_wrong": "配置内容不是有效的 yaml 格式。",
8
+ "yaml_value_wrong": "配置内容中存在不合法的值。",
9
+ "edit_yaml": "编辑 YAML",
10
+ "copied": "已复制",
11
+ "already_reset": "已重置",
12
+ "cancel": "取消",
13
+ "delete": "删除",
14
+ "create": "创建",
15
+ "confirm_delete_text": "确定要删除 {{target}} 吗?",
16
+ "edit": "编辑",
17
+ "namespace": "名字空间",
18
+ "name": "名称",
19
+ "state": "状态",
20
+ "status": "状态",
21
+ "phase": "状态",
22
+ "image": "容器镜像",
23
+ "replicas": "副本数",
24
+ "created_time": "创建时间",
25
+ "label": "标签",
26
+ "annotation": "注释",
27
+ "type": "类型",
28
+ "event": "事件",
29
+ "reason": "原因",
30
+ "object": "对象",
31
+ "note": "事件信息",
32
+ "condition": "Condition",
33
+ "download_yaml": "下载 YAML",
34
+ "detail": "详情",
35
+ "node_name": "主机名称",
36
+ "restarts": "重启次数",
37
+ "updated_time": "更新时间",
38
+ "message": "消息",
39
+ "save": "保存",
40
+ "more": "更多",
41
+ "workload": "工作负载",
42
+ "all_namespaces": "所有名字空间",
43
+ "empty": "无可显示的数据",
44
+ "schedule": "调度时间表",
45
+ "lastScheduleTime": "上次调度时间",
46
+ "duration": "持续时间",
47
+ "completions": "完成 Job 历史数",
48
+ "started": "开始时间",
49
+ "init_container": "初始化容器",
50
+ "container": "容器",
51
+ "redeploy": "重新部署",
52
+ "data": "数据",
53
+ "suspend": "暂停",
54
+ "resume": "重新开始",
55
+ "cluster": "集群",
56
+ "storage": "存储",
57
+ "network": "网络",
58
+ "clusterIp": "集群 IP",
59
+ "sessionAffinity": "会话保持",
60
+ "log": "日志",
61
+ "select_container": "选择容器",
62
+ "wrap": "折叠",
63
+ "resume_log": "继续",
64
+ "log_new_lines": ",并展示 {{ count }} 行新日志",
65
+ "fetch_schema_fail": "获取 schema 失败。",
66
+ "obtain_data_error": "获取数据时遇到问题。",
67
+ "retry": "重试",
68
+ "ready": "就绪",
69
+ "updating": "更新中",
70
+ "completed": "完成",
71
+ "failed": "异常",
72
+ "suspended": "挂起",
73
+ "running": "运行中",
74
+ "terminating": "终止",
75
+ "succeeded": "成功终止",
76
+ "unknown": "未知",
77
+ "pending": "待处理",
78
+ "waiting": "等待中",
79
+ "create_resource": "创建 {{resource}}",
80
+ "edit_resource": "编辑 {{resource}}",
81
+ "sec": "秒",
82
+ "min": "分",
83
+ "hr": "小时",
84
+ "day": "天",
85
+ "expand": "展开",
86
+ "fold": "收起",
87
+ "rule": "规则",
88
+ "default_backend": "默认后端",
89
+ "ingress_rule_type": "规则类型",
90
+ "port": "端口"
91
+ }
@@ -155,10 +155,21 @@ declare const _default: {
155
155
  only_support_one_yaml: string;
156
156
  not_support: string;
157
157
  stopped: string;
158
+ any_node_ip: string;
158
159
  storage_class: string;
159
- persistent_volumn: string;
160
+ persistent_volume: string;
160
161
  provisioner: string;
161
162
  file_system: string;
163
+ capacity: string;
164
+ phase: string;
165
+ volume_mode: string;
166
+ access_mode: string;
167
+ block: string;
168
+ pv_phase_available: string;
169
+ pv_phase_bound: string;
170
+ pv_phase_released: string;
171
+ pv_phase_failed: string;
172
+ pv_phase_pending: string;
162
173
  };
163
174
  };
164
175
  export default _default;
@@ -0,0 +1,4 @@
1
+ import dovetail from './dovetail.json';
2
+ export default {
3
+ dovetail,
4
+ };
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { initParrotI18n } from '@cloudtower/eagle';
3
+ import React from 'react';
4
+ // eslint-disable-next-line react/no-deprecated
5
+ import { render } from 'react-dom';
6
+ import App from './App';
7
+ import './i18n';
8
+ import 'antd/dist/antd.css';
9
+ import '@cloudtower/eagle/dist/style.css';
10
+ initParrotI18n();
11
+ const container = document.getElementById('root');
12
+ render(_jsx(React.StrictMode, { children: _jsx(React.Suspense, { fallback: "loading", children: _jsx(App, {}) }) }), container);
@@ -5,7 +5,6 @@ import { WorkloadBaseModel } from './workload-base-model';
5
5
  type RequiredCronJob = Required<CronJob> & Unstructured;
6
6
  export declare class CronJobModel extends WorkloadBaseModel {
7
7
  _rawYaml: RequiredCronJob;
8
- _globalStore: GlobalStore;
9
8
  spec?: RequiredCronJob['spec'];
10
9
  status?: RequiredCronJob['status'];
11
10
  constructor(_rawYaml: RequiredCronJob, _globalStore: GlobalStore);
@@ -0,0 +1,32 @@
1
+ import { set, cloneDeep } from 'lodash';
2
+ import { WorkloadState } from '../constants';
3
+ import { WorkloadBaseModel } from './workload-base-model';
4
+ export class CronJobModel extends WorkloadBaseModel {
5
+ _rawYaml;
6
+ _globalStore;
7
+ constructor(_rawYaml, _globalStore) {
8
+ super(_rawYaml, _globalStore);
9
+ this._rawYaml = _rawYaml;
10
+ this._globalStore = _globalStore;
11
+ }
12
+ get stateDisplay() {
13
+ if (!this.spec?.suspend) {
14
+ return WorkloadState.SUSPENDED;
15
+ }
16
+ return WorkloadState.RUNNING;
17
+ }
18
+ suspend() {
19
+ const newOne = cloneDeep(this._rawYaml);
20
+ if (this._rawYaml.kind === 'CronJob') {
21
+ set(newOne, 'spec.suspend', true);
22
+ }
23
+ return newOne;
24
+ }
25
+ resume() {
26
+ const newOne = cloneDeep(this._rawYaml);
27
+ if (this._rawYaml.kind === 'CronJob') {
28
+ set(newOne, 'spec.suspend', false);
29
+ }
30
+ return newOne;
31
+ }
32
+ }
@@ -5,7 +5,6 @@ import { WorkloadModel } from './workload-model';
5
5
  type RequiredDaemonSet = Required<DaemonSet> & Unstructured;
6
6
  export declare class DaemonSetModel extends WorkloadModel {
7
7
  _rawYaml: RequiredDaemonSet;
8
- _globalStore: GlobalStore;
9
8
  spec?: RequiredDaemonSet['spec'];
10
9
  status?: RequiredDaemonSet['status'];
11
10
  constructor(_rawYaml: RequiredDaemonSet, _globalStore: GlobalStore);
@@ -0,0 +1,17 @@
1
+ import { WorkloadState } from '../constants';
2
+ import { WorkloadModel } from './workload-model';
3
+ export class DaemonSetModel extends WorkloadModel {
4
+ _rawYaml;
5
+ _globalStore;
6
+ constructor(_rawYaml, _globalStore) {
7
+ super(_rawYaml, _globalStore);
8
+ this._rawYaml = _rawYaml;
9
+ this._globalStore = _globalStore;
10
+ }
11
+ get stateDisplay() {
12
+ if (this.status?.desiredNumberScheduled !== this.status?.numberReady) {
13
+ return WorkloadState.UPDATEING;
14
+ }
15
+ return WorkloadState.READY;
16
+ }
17
+ }
@@ -5,7 +5,6 @@ import { WorkloadModel } from './workload-model';
5
5
  type RequiredDeployment = Required<Deployment> & Unstructured;
6
6
  export declare class DeploymentModel extends WorkloadModel {
7
7
  _rawYaml: RequiredDeployment;
8
- _globalStore: GlobalStore;
9
8
  spec?: RequiredDeployment['spec'];
10
9
  status?: RequiredDeployment['status'];
11
10
  constructor(_rawYaml: RequiredDeployment, _globalStore: GlobalStore);
@@ -0,0 +1,17 @@
1
+ import { WorkloadState } from '../constants';
2
+ import { WorkloadModel } from './workload-model';
3
+ export class DeploymentModel extends WorkloadModel {
4
+ _rawYaml;
5
+ _globalStore;
6
+ constructor(_rawYaml, _globalStore) {
7
+ super(_rawYaml, _globalStore);
8
+ this._rawYaml = _rawYaml;
9
+ this._globalStore = _globalStore;
10
+ }
11
+ get stateDisplay() {
12
+ if (this.spec?.replicas !== this.status?.readyReplicas) {
13
+ return WorkloadState.UPDATEING;
14
+ }
15
+ return WorkloadState.READY;
16
+ }
17
+ }
@@ -3,6 +3,5 @@ import { Event } from 'kubernetes-types/core/v1';
3
3
  import { ResourceModel } from './resource-model';
4
4
  export declare class EventModel extends ResourceModel {
5
5
  _rawYaml: Unstructured & Event;
6
- _globalStore: GlobalStore;
7
6
  constructor(_rawYaml: Unstructured & Event, _globalStore: GlobalStore);
8
7
  }
@@ -0,0 +1,11 @@
1
+ import { ResourceModel } from './resource-model';
2
+ export class EventModel extends ResourceModel {
3
+ _rawYaml;
4
+ _globalStore;
5
+ constructor(_rawYaml, _globalStore) {
6
+ super(_rawYaml, _globalStore);
7
+ this._rawYaml = _rawYaml;
8
+ this._globalStore = _globalStore;
9
+ this.id = _rawYaml.metadata.uid || _rawYaml.id;
10
+ }
11
+ }
@@ -0,0 +1,14 @@
1
+ export * from './ingress-model';
2
+ export * from './network-policy-model';
3
+ export * from './job-model';
4
+ export * from './workload-model';
5
+ export * from './workload-base-model';
6
+ export * from './pod-model';
7
+ export * from './pod-metrics-model';
8
+ export * from './resource-model';
9
+ export * from './workload-model';
10
+ export * from './cronjob-model';
11
+ export * from './event-model';
12
+ export * from './deployment-model';
13
+ export * from './daemonset-model';
14
+ export * from './statefulset-model';
@@ -12,7 +12,6 @@ export type RuleItem = {
12
12
  };
13
13
  export declare class IngressModel extends ResourceModel<IngressTypes> {
14
14
  _rawYaml: IngressTypes;
15
- _globalStore: GlobalStore;
16
15
  flattenedRules: RuleItem[];
17
16
  constructor(_rawYaml: IngressTypes, _globalStore: GlobalStore);
18
17
  init(): Promise<void>;
@@ -0,0 +1,24 @@
1
+ import { ResourceModel } from './resource-model';
2
+ export class IngressModel extends ResourceModel {
3
+ _rawYaml;
4
+ _globalStore;
5
+ flattenedRules;
6
+ constructor(_rawYaml, _globalStore) {
7
+ super(_rawYaml, _globalStore);
8
+ this._rawYaml = _rawYaml;
9
+ this._globalStore = _globalStore;
10
+ this.flattenedRules =
11
+ this._rawYaml.spec.rules?.reduce((res, rule) => {
12
+ const paths = rule.http?.paths.map(p => {
13
+ return {
14
+ serviceName: p.backend.service?.name || '',
15
+ fullPath: rule.host ? `${rule.host}${p.path}` : p.path || '',
16
+ pathType: p.pathType,
17
+ servicePort: p.backend.service?.port?.number,
18
+ host: rule.host,
19
+ };
20
+ });
21
+ return [...res, ...(paths || [])];
22
+ }, []) || [];
23
+ }
24
+ }
@@ -5,7 +5,6 @@ import { WorkloadBaseModel } from './workload-base-model';
5
5
  type RequiredJob = Required<Job> & Unstructured;
6
6
  export declare class JobModel extends WorkloadBaseModel {
7
7
  _rawYaml: RequiredJob;
8
- _globalStore: GlobalStore;
9
8
  restarts: number;
10
9
  spec?: RequiredJob['spec'];
11
10
  status?: RequiredJob['status'];
@@ -0,0 +1,56 @@
1
+ import { sumBy } from 'lodash';
2
+ import { WorkloadState } from '../constants';
3
+ import { matchSelector } from '../utils/match-selector';
4
+ import { getSecondsDiff } from '../utils/time';
5
+ import { WorkloadBaseModel } from './workload-base-model';
6
+ export class JobModel extends WorkloadBaseModel {
7
+ _rawYaml;
8
+ _globalStore;
9
+ restarts = 0;
10
+ constructor(_rawYaml, _globalStore) {
11
+ super(_rawYaml, _globalStore);
12
+ this._rawYaml = _rawYaml;
13
+ this._globalStore = _globalStore;
14
+ }
15
+ async init() {
16
+ await this.getRestarts();
17
+ }
18
+ async getRestarts() {
19
+ const pods = (await this._globalStore.get('pods', {
20
+ resourceBasePath: '/api/v1',
21
+ kind: 'Pod',
22
+ }));
23
+ const myPods = pods.items.filter(p => this.spec?.selector ? matchSelector(p, this.spec?.selector) : false);
24
+ const result = sumBy(myPods, 'restartCount');
25
+ this.restarts = result;
26
+ }
27
+ get duration() {
28
+ const completionTime = this._rawYaml.status?.completionTime;
29
+ const startTime = this._rawYaml.status?.startTime;
30
+ if (!completionTime && startTime) {
31
+ return getSecondsDiff(startTime, Date.now().toString());
32
+ }
33
+ if (completionTime && startTime) {
34
+ return getSecondsDiff(startTime, completionTime);
35
+ }
36
+ return 0;
37
+ }
38
+ get completionsDisplay() {
39
+ return `${this._rawYaml.status?.succeeded || 0}/${this._rawYaml.spec?.completions}`;
40
+ }
41
+ get stateDisplay() {
42
+ if (!this.spec?.completions && !this.status?.succeeded) {
43
+ return WorkloadState.RUNNING;
44
+ }
45
+ if (this.spec?.completions === this.status?.succeeded) {
46
+ return WorkloadState.COMPLETED;
47
+ }
48
+ if (this.status?.conditions?.some(c => c.type === 'Failed' && c.status === 'True')) {
49
+ return WorkloadState.FAILED;
50
+ }
51
+ if (this.status?.conditions?.some(c => c.type === 'Suspended' && c.status === 'True')) {
52
+ return WorkloadState.SUSPENDED;
53
+ }
54
+ return WorkloadState.RUNNING;
55
+ }
56
+ }
@@ -4,7 +4,6 @@ import { ResourceModel } from './resource-model';
4
4
  type NetworkPolicyTypes = Required<NetworkPolicy> & Unstructured;
5
5
  export declare class NetworkPolicyModel extends ResourceModel<NetworkPolicyTypes> {
6
6
  _rawYaml: NetworkPolicyTypes;
7
- _globalStore: GlobalStore;
8
7
  constructor(_rawYaml: NetworkPolicyTypes, _globalStore: GlobalStore);
9
8
  }
10
9
  export {};
@@ -0,0 +1,10 @@
1
+ import { ResourceModel } from './resource-model';
2
+ export class NetworkPolicyModel extends ResourceModel {
3
+ _rawYaml;
4
+ _globalStore;
5
+ constructor(_rawYaml, _globalStore) {
6
+ super(_rawYaml, _globalStore);
7
+ this._rawYaml = _rawYaml;
8
+ this._globalStore = _globalStore;
9
+ }
10
+ }
@@ -8,7 +8,6 @@ export declare enum NodeRole {
8
8
  }
9
9
  export declare class NodeModel extends WorkloadBaseModel {
10
10
  _rawYaml: RequiredNode;
11
- _globalStore: GlobalStore;
12
11
  constructor(_rawYaml: RequiredNode, _globalStore: GlobalStore);
13
12
  get role(): NodeRole;
14
13
  get ip(): string | undefined;
@@ -4,7 +4,6 @@ import { ResourceModel } from './resource-model';
4
4
  type RequiredPersistentClaimVolume = Required<PersistentVolumeClaim> & Unstructured;
5
5
  export declare class PersistentVolumeClaimModel extends ResourceModel {
6
6
  _rawYaml: RequiredPersistentClaimVolume;
7
- _globalStore: GlobalStore;
8
7
  constructor(_rawYaml: RequiredPersistentClaimVolume, _globalStore: GlobalStore);
9
8
  }
10
9
  export {};
@@ -4,7 +4,6 @@ import { ResourceModel } from './resource-model';
4
4
  type RequiredPersistentVolume = Required<PersistentVolume> & Unstructured;
5
5
  export declare class PersistentVolumeModel extends ResourceModel {
6
6
  _rawYaml: RequiredPersistentVolume;
7
- _globalStore: GlobalStore;
8
7
  constructor(_rawYaml: RequiredPersistentVolume, _globalStore: GlobalStore);
9
8
  }
10
9
  export {};
@@ -3,7 +3,6 @@ import { ResourceModel } from './resource-model';
3
3
  import { PodMetrics, ResourceQuantity } from './types/metric';
4
4
  export declare class PodMetricsModel extends ResourceModel<PodMetrics> {
5
5
  _rawYaml: PodMetrics;
6
- _globalStore: GlobalStore;
7
6
  usage: ResourceQuantity;
8
7
  constructor(_rawYaml: PodMetrics, _globalStore: GlobalStore);
9
8
  }
@@ -0,0 +1,34 @@
1
+ import { formatSi, parseSi } from '../utils/unit';
2
+ import { ResourceModel } from './resource-model';
3
+ export class PodMetricsModel extends ResourceModel {
4
+ _rawYaml;
5
+ _globalStore;
6
+ usage;
7
+ constructor(_rawYaml, _globalStore) {
8
+ super(_rawYaml, _globalStore);
9
+ this._rawYaml = _rawYaml;
10
+ this._globalStore = _globalStore;
11
+ let cpuUsageNum = 0;
12
+ let memoryUsageNum = 0;
13
+ for (const container of _rawYaml.containers) {
14
+ cpuUsageNum += parseSi(container.usage.cpu || '0');
15
+ memoryUsageNum += parseSi(container.usage.memory || '0');
16
+ }
17
+ this.usage = {
18
+ cpu: {
19
+ value: cpuUsageNum,
20
+ si: formatSi(1000 * cpuUsageNum, {
21
+ suffix: 'm',
22
+ maxPrecision: 0,
23
+ }),
24
+ },
25
+ memory: {
26
+ value: memoryUsageNum,
27
+ si: formatSi(memoryUsageNum, {
28
+ suffix: 'i',
29
+ maxPrecision: 0,
30
+ }),
31
+ },
32
+ };
33
+ }
34
+ }
@@ -5,7 +5,6 @@ import { WorkloadBaseModel } from './workload-base-model';
5
5
  type RequiredPod = Required<Pod> & Unstructured;
6
6
  export declare class PodModel extends WorkloadBaseModel {
7
7
  _rawYaml: RequiredPod;
8
- _globalStore: GlobalStore;
9
8
  request: ResourceQuantity;
10
9
  limit: ResourceQuantity;
11
10
  spec?: RequiredPod['spec'];
@@ -0,0 +1,78 @@
1
+ import { WorkloadState } from '../constants';
2
+ import { shortenedImage } from '../utils/string';
3
+ import { formatSi, parseSi } from '../utils/unit';
4
+ import { WorkloadBaseModel } from './workload-base-model';
5
+ export class PodModel extends WorkloadBaseModel {
6
+ _rawYaml;
7
+ _globalStore;
8
+ request;
9
+ limit;
10
+ constructor(_rawYaml, _globalStore) {
11
+ super(_rawYaml, _globalStore);
12
+ this._rawYaml = _rawYaml;
13
+ this._globalStore = _globalStore;
14
+ let cpuRequestNum = 0;
15
+ let memoryRequestNum = 0;
16
+ let cpuLimitNum = 0;
17
+ let memoryLimitNum = 0;
18
+ for (const container of _rawYaml.spec?.containers || []) {
19
+ cpuRequestNum += parseSi(container.resources?.requests?.cpu || '0');
20
+ memoryRequestNum += parseSi(container.resources?.requests?.memory || '0');
21
+ cpuLimitNum += parseSi(container.resources?.limits?.cpu || '0');
22
+ memoryLimitNum += parseSi(container.resources?.limits?.memory || '0');
23
+ }
24
+ this.request = {
25
+ cpu: {
26
+ value: cpuRequestNum,
27
+ si: formatSi(cpuRequestNum, {
28
+ suffix: 'm',
29
+ }),
30
+ },
31
+ memory: {
32
+ value: memoryRequestNum,
33
+ si: formatSi(memoryRequestNum, {
34
+ suffix: 'i',
35
+ }),
36
+ },
37
+ };
38
+ this.limit = {
39
+ cpu: {
40
+ value: cpuLimitNum,
41
+ si: formatSi(cpuLimitNum, {
42
+ suffix: 'm',
43
+ }),
44
+ },
45
+ memory: {
46
+ value: memoryLimitNum,
47
+ si: formatSi(memoryLimitNum, {
48
+ suffix: 'i',
49
+ }),
50
+ },
51
+ };
52
+ }
53
+ get imageNames() {
54
+ return (this._rawYaml.spec?.containers.map(container => shortenedImage(container.image || '')) || []);
55
+ }
56
+ get restartCount() {
57
+ if (this._rawYaml.status?.containerStatuses) {
58
+ return this._rawYaml.status?.containerStatuses[0].restartCount || 0;
59
+ }
60
+ return 0;
61
+ }
62
+ get readyDisplay() {
63
+ return `${this._rawYaml.status?.containerStatuses?.filter(c => c.ready).length}/${this
64
+ ._rawYaml.spec?.containers.length}`;
65
+ }
66
+ get readyContainerCount() {
67
+ return this._rawYaml.status?.containerStatuses?.filter(c => c.ready).length;
68
+ }
69
+ get containerCount() {
70
+ return this._rawYaml.spec?.containers.length;
71
+ }
72
+ get stateDisplay() {
73
+ if (this.metadata.deletionTimestamp) {
74
+ return WorkloadState.TERMINATING;
75
+ }
76
+ return this.status?.phase?.toLowerCase() || WorkloadState.UNKNOWN;
77
+ }
78
+ }
@@ -2,11 +2,11 @@ import { GlobalStore, Unstructured } from 'k8s-api-provider';
2
2
  export type IResourceModel = Unstructured & ResourceModel;
3
3
  export declare class ResourceModel<T extends Unstructured = Unstructured> {
4
4
  _rawYaml: T;
5
- _globalStore: GlobalStore;
6
5
  id: string;
7
6
  apiVersion: T['apiVersion'];
8
7
  kind: T['kind'];
9
8
  metadata: T['metadata'];
9
+ _globalStore: GlobalStore;
10
10
  constructor(_rawYaml: T, _globalStore: GlobalStore);
11
11
  init(): Promise<void>;
12
12
  get name(): string | undefined;
@@ -0,0 +1,34 @@
1
+ export class ResourceModel {
2
+ _rawYaml;
3
+ _globalStore;
4
+ id;
5
+ apiVersion;
6
+ kind;
7
+ metadata;
8
+ constructor(_rawYaml, _globalStore) {
9
+ this._rawYaml = _rawYaml;
10
+ this._globalStore = _globalStore;
11
+ Object.keys(_rawYaml).forEach(key => {
12
+ Object.defineProperty(this, key, {
13
+ value: _rawYaml[key],
14
+ });
15
+ });
16
+ }
17
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
18
+ async init() { }
19
+ get name() {
20
+ return this._rawYaml.metadata?.name;
21
+ }
22
+ get namespace() {
23
+ return this._rawYaml.metadata?.namespace;
24
+ }
25
+ get labels() {
26
+ return this._rawYaml.metadata?.labels;
27
+ }
28
+ get annotations() {
29
+ return this._rawYaml.metadata?.annotations;
30
+ }
31
+ restore() {
32
+ return this._rawYaml;
33
+ }
34
+ }
@@ -0,0 +1,10 @@
1
+ import { GlobalStore, Unstructured } from 'k8s-api-provider';
2
+ import { ResourceModel } from './resource-model';
3
+ type ServerInstanceTypes = Required<Unstructured>;
4
+ export declare class ServerInstanceModel extends ResourceModel<ServerInstanceTypes> {
5
+ _rawYaml: ServerInstanceTypes;
6
+ _globalStore: GlobalStore;
7
+ sshMethod: 'password' | 'privateKey';
8
+ constructor(_rawYaml: ServerInstanceTypes, _globalStore: GlobalStore);
9
+ }
10
+ export {};
@@ -11,7 +11,6 @@ export declare enum ServiceTypeEnum {
11
11
  }
12
12
  export declare class ServiceModel extends ResourceModel<ServiceType> {
13
13
  _rawYaml: ServiceType;
14
- _globalStore: GlobalStore;
15
14
  constructor(_rawYaml: ServiceType, _globalStore: GlobalStore);
16
15
  get displayType(): string | undefined;
17
16
  get dnsRecord(): string;
@@ -0,0 +1,17 @@
1
+ import { ResourceModel } from './resource-model';
2
+ export class ServiceModel extends ResourceModel {
3
+ _rawYaml;
4
+ _globalStore;
5
+ constructor(_rawYaml, _globalStore) {
6
+ super(_rawYaml, _globalStore);
7
+ this._rawYaml = _rawYaml;
8
+ this._globalStore = _globalStore;
9
+ }
10
+ inClusterAccess() {
11
+ if (this._rawYaml.spec.type &&
12
+ ['ClusterIP', 'NodePort', 'LoadBalancer'].includes(this._rawYaml.spec.type)) {
13
+ return this._rawYaml.spec.clusterIP;
14
+ }
15
+ return this._rawYaml.spec.externalName;
16
+ }
17
+ }
@@ -5,7 +5,6 @@ import { WorkloadModel } from './workload-model';
5
5
  type RequiredStatefulSet = Required<StatefulSet> & Unstructured;
6
6
  export declare class StatefulSetModel extends WorkloadModel {
7
7
  _rawYaml: RequiredStatefulSet;
8
- _globalStore: GlobalStore;
9
8
  spec?: RequiredStatefulSet['spec'];
10
9
  status?: RequiredStatefulSet['status'];
11
10
  constructor(_rawYaml: RequiredStatefulSet, _globalStore: GlobalStore);