diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/incloud-web-resources.iml b/.idea/incloud-web-resources.iml
new file mode 100644
index 0000000..5e764c4
--- /dev/null
+++ b/.idea/incloud-web-resources.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..3b3432b
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Chart.yaml b/Chart.yaml
index b25904d..8e8d566 100644
--- a/Chart.yaml
+++ b/Chart.yaml
@@ -5,7 +5,7 @@ description: Chart for configuring Kubernetes Web UI InCloud
type: application
# Chart (packaging) version — semver. Bump on ANY template/values change.
-version: 0.1.3
+version: "0.1.4-dev"
# Application version — free-form string. Tie it to app images/tags you ship.
# Tip: keep it in sync with image tags from values.yaml.
diff --git a/templates/Breadcrumb/factory/apiextensions.k8s.io.v1.crd.yaml b/templates/Breadcrumb/factory/apiextensions.k8s.io.v1.crd.yaml
index 8ff8d86..f44ea1d 100644
--- a/templates/Breadcrumb/factory/apiextensions.k8s.io.v1.crd.yaml
+++ b/templates/Breadcrumb/factory/apiextensions.k8s.io.v1.crd.yaml
@@ -8,6 +8,6 @@ spec:
breadcrumbItems:
- key: customresourcedefinition
label: "apiextensions.k8s.io/v1/customresourcedefinitions"
- link: "/openapi-ui/{clusterName}/api-table/apiextensions.k8s.io/v1/customresourcedefinitions"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/api-table/apiextensions.k8s.io/v1/customresourcedefinitions"
- key: customresourcedefinitions
label: "{5}"
diff --git a/templates/Breadcrumb/factory/configmap-details.yaml b/templates/Breadcrumb/factory/configmap-details.yaml
index a3b6818..43f2891 100644
--- a/templates/Breadcrumb/factory/configmap-details.yaml
+++ b/templates/Breadcrumb/factory/configmap-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: configmaps
label: "v1/configmaps"
- link: "/openapi-ui/{clusterName}/{namespace}/builtin-table/configmaps"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/configmaps"
- key: configmap
label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-configmap-details
+spec:
+ id: "stock-instance-factory-instance-configmap-details"
+ breadcrumbItems:
+ - key: configmaps
+ label: "v1/configmaps"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/configmaps"
+ - key: configmap
+ label: "{7}"
+{{- end }}
diff --git a/templates/Breadcrumb/factory/cronjob-details.yaml b/templates/Breadcrumb/factory/cronjob-details.yaml
index 0ce5a86..5497916 100644
--- a/templates/Breadcrumb/factory/cronjob-details.yaml
+++ b/templates/Breadcrumb/factory/cronjob-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: cronjob
label: "batch/v1/cronjobs"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/batch/v1/cronjobs"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/batch/v1/cronjobs"
- key: cronjob
label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-cronjob-details
+spec:
+ id: "stock-instance-factory-instance-cronjob-details"
+ breadcrumbItems:
+ - key: cronjob
+ label: "batch/v1/cronjobs"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/batch/v1/cronjobs"
+ - key: cronjob
+ label: "{7}"
+{{- end }}
diff --git a/templates/Breadcrumb/factory/daemonset-details.yaml b/templates/Breadcrumb/factory/daemonset-details.yaml
index a873b0f..754e18b 100644
--- a/templates/Breadcrumb/factory/daemonset-details.yaml
+++ b/templates/Breadcrumb/factory/daemonset-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: daemonsets
label: "apps/v1/daemonsets"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/apps/v1/daemonsets"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/apps/v1/daemonsets"
- key: daemonset
- label: "{5}"
+ label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-daemonset-details
+spec:
+ id: "stock-instance-factory-instance-daemonset-details"
+ breadcrumbItems:
+ - key: daemonsets
+ label: "apps/v1/daemonsets"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/apps/v1/daemonsets"
+ - key: daemonset
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/deployment-details.yaml b/templates/Breadcrumb/factory/deployment-details.yaml
index 24a3577..518f0a7 100644
--- a/templates/Breadcrumb/factory/deployment-details.yaml
+++ b/templates/Breadcrumb/factory/deployment-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: deployments
label: "apps/v1/deployments"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/apps/v1/deployments"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/apps/v1/deployments"
- key: Deployment
label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-deployment-details
+spec:
+ id: "stock-instance-factory-instance-deployment-details"
+ breadcrumbItems:
+ - key: deployments
+ label: "apps/v1/deployments"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/apps/v1/deployments"
+ - key: Deployment
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/horizontalpodautoscalers-details.yaml b/templates/Breadcrumb/factory/horizontalpodautoscalers-details.yaml
index 45dc19e..673e205 100644
--- a/templates/Breadcrumb/factory/horizontalpodautoscalers-details.yaml
+++ b/templates/Breadcrumb/factory/horizontalpodautoscalers-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: horizontalpodautoscalers
label: "autoscaling/v2/horizontalpodautoscalers"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/autoscaling/v2/horizontalpodautoscalers"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/autoscaling/v2/horizontalpodautoscalers"
- key: horizontalpodautoscaler
label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-horizontalpodautoscaler-details
+spec:
+ id: "stock-instance-factory-instance-horizontalpodautoscaler-details"
+ breadcrumbItems:
+ - key: horizontalpodautoscalers
+ label: "autoscaling/v2/horizontalpodautoscalers"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/autoscaling/v2/horizontalpodautoscalers"
+ - key: horizontalpodautoscaler
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/job-details.yaml b/templates/Breadcrumb/factory/job-details.yaml
index 395142f..d24ddf7 100644
--- a/templates/Breadcrumb/factory/job-details.yaml
+++ b/templates/Breadcrumb/factory/job-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: jobs
label: "batch/v1/jobs"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/batch/v1/jobs"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/batch/v1/jobs"
- key: job
label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-job-details
+spec:
+ id: "stock-instance-factory-instance-job-details"
+ breadcrumbItems:
+ - key: jobs
+ label: "batch/v1/jobs"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/batch/v1/jobs"
+ - key: job
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/namespace-details.yaml b/templates/Breadcrumb/factory/namespace-details.yaml
deleted file mode 100644
index 3f0497b..0000000
--- a/templates/Breadcrumb/factory/namespace-details.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Breadcrumb
-metadata:
- name: stock-cluster-factory-namespace-details
-spec:
- id: "stock-cluster-factory-namespace-details"
- breadcrumbItems:
- - key: namespaces
- label: "v1/namespaces"
- link: "/openapi-ui/{clusterName}/builtin-table/namespaces"
- - key: namespace
- label: "{5}"
diff --git a/templates/Breadcrumb/factory/networking.k8s.io.v1.networkpolicies.yaml b/templates/Breadcrumb/factory/networking.k8s.io.v1.networkpolicies.yaml
new file mode 100644
index 0000000..1e207a2
--- /dev/null
+++ b/templates/Breadcrumb/factory/networking.k8s.io.v1.networkpolicies.yaml
@@ -0,0 +1,29 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-project-factory-networkpolicy-details
+spec:
+ id: "stock-project-factory-networkpolicy-details"
+ breadcrumbItems:
+ - key: networkpolicys
+ label: "networking.k8s.io/v1/networkpolicies"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/networking.k8s.io/v1/networkpolicies"
+ - key: networkpolicy
+ label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-networkpolicy-details
+spec:
+ id: "stock-instance-factory-instance-networkpolicy-details"
+ breadcrumbItems:
+ - key: networkpolicys
+ label: "networking.k8s.io/v1/networkpolicies"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/networking.k8s.io/v1/networkpolicies"
+ - key: networkpolicy
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/node-details.yaml b/templates/Breadcrumb/factory/node-details.yaml
index edf2d88..1eb823b 100644
--- a/templates/Breadcrumb/factory/node-details.yaml
+++ b/templates/Breadcrumb/factory/node-details.yaml
@@ -8,6 +8,6 @@ spec:
breadcrumbItems:
- key: node
label: "v1/nodes"
- link: "/openapi-ui/{clusterName}/builtin-table/nodes"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/builtin-table/nodes"
- key: node
label: "{5}"
diff --git a/templates/Breadcrumb/factory/pod-details.yaml b/templates/Breadcrumb/factory/pod-details.yaml
index a0d5bc1..4ae6043 100644
--- a/templates/Breadcrumb/factory/pod-details.yaml
+++ b/templates/Breadcrumb/factory/pod-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: pods
label: "v1/pods"
- link: "/openapi-ui/{clusterName}/{namespace}/builtin-table/pods"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/pods"
- key: pod
label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-pod-details
+spec:
+ id: "stock-instance-factory-instance-pod-details"
+ breadcrumbItems:
+ - key: pods
+ label: "v1/pods"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/pods"
+ - key: pod
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/poddisruptionbudget-details.yaml b/templates/Breadcrumb/factory/poddisruptionbudget-details.yaml
index e086a81..59a5f00 100644
--- a/templates/Breadcrumb/factory/poddisruptionbudget-details.yaml
+++ b/templates/Breadcrumb/factory/poddisruptionbudget-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: poddisruptionbudgets
label: "policy/v1/poddisruptionbudgets"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/policy/v1/poddisruptionbudgets"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/policy/v1/poddisruptionbudgets"
- key: poddisruptionbudget
label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-poddisruptionbudget-details
+spec:
+ id: "stock-instance-factory-instance-poddisruptionbudget-details"
+ breadcrumbItems:
+ - key: poddisruptionbudgets
+ label: "policy/v1/poddisruptionbudgets"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/policy/v1/poddisruptionbudgets"
+ - key: poddisruptionbudget
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/project-details.yaml b/templates/Breadcrumb/factory/project-details.yaml
new file mode 100644
index 0000000..22aea1c
--- /dev/null
+++ b/templates/Breadcrumb/factory/project-details.yaml
@@ -0,0 +1,31 @@
+{{ $projRes := .Values.projectResource }}
+
+{{ if and ($projRes.deployDefaultForms) (not .Values.namespaceNavigation) }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-cluster-factory-project-details
+spec:
+ id: "stock-cluster-factory-project-details"
+ breadcrumbItems:
+ - key: project
+ label: "{{ $projRes.apiGroup }}/{{ $projRes.apiVersion }}/{{ $projRes.resourceName }}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/api-table/{{ $projRes.apiGroup }}/{{ $projRes.apiVersion }}/{{ $projRes.resourceName }}"
+ - key: project
+ label: "{5}"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-project-factory-project-details
+spec:
+ id: "stock-project-factory-project-details"
+ breadcrumbItems:
+ - key: project
+ label: "{{ $projRes.apiGroup }}/{{ $projRes.apiVersion }}/{{ $projRes.resourceName }}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/api-table/{{ $projRes.apiGroup }}/{{ $projRes.apiVersion }}/{{ $projRes.resourceName }}"
+ - key: project
+ label: "{3}"
+{{ end }}
diff --git a/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.clusterrolebindings.yaml b/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.clusterrolebindings.yaml
index 420a645..2b5b906 100644
--- a/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.clusterrolebindings.yaml
+++ b/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.clusterrolebindings.yaml
@@ -8,6 +8,6 @@ spec:
breadcrumbItems:
- key: clusterrolebinding
label: "rbac.authorization.k8s.io/v1/clusterrolebindings"
- link: "/openapi-ui/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterrolebindings"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterrolebindings"
- key: clusterrolebinding
label: "{5}"
diff --git a/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.clusterroles.yaml b/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.clusterroles.yaml
index 4be826d..dd1b80d 100644
--- a/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.clusterroles.yaml
+++ b/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.clusterroles.yaml
@@ -8,6 +8,6 @@ spec:
breadcrumbItems:
- key: clusterrole
label: "rbac.authorization.k8s.io/v1/clusterroles"
- link: "/openapi-ui/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterroles"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterroles"
- key: clusterrole
label: "{5}"
diff --git a/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.rolebindings.yaml b/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.rolebindings.yaml
index 7c28dfe..68ab6a3 100644
--- a/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.rolebindings.yaml
+++ b/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.rolebindings.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: roles
label: "rbac.authorization.k8s.io/v1/roles"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/rbac.authorization.k8s.io/v1/roles"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/rbac.authorization.k8s.io/v1/roles"
- key: rolebinding
- label: "{5}"
+ label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-rolebinding-details
+spec:
+ id: "stock-instance-factory-instance-rolebinding-details"
+ breadcrumbItems:
+ - key: roles
+ label: "rbac.authorization.k8s.io/v1/roles"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/rbac.authorization.k8s.io/v1/roles"
+ - key: rolebinding
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.roles.yaml b/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.roles.yaml
index 5455f51..9149093 100644
--- a/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.roles.yaml
+++ b/templates/Breadcrumb/factory/rbac.authorization.k8s.io.v1.roles.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: roles
label: "rbac.authorization.k8s.io/v1/roles"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/rbac.authorization.k8s.io/v1/roles"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/rbac.authorization.k8s.io/v1/roles"
- key: role
- label: "{5}"
+ label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-role-details
+spec:
+ id: "stock-instance-factory-instance-role-details"
+ breadcrumbItems:
+ - key: roles
+ label: "rbac.authorization.k8s.io/v1/roles"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/rbac.authorization.k8s.io/v1/roles"
+ - key: role
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/replicaset-details.yaml b/templates/Breadcrumb/factory/replicaset-details.yaml
index 7a715ab..f83c644 100644
--- a/templates/Breadcrumb/factory/replicaset-details.yaml
+++ b/templates/Breadcrumb/factory/replicaset-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: replicasets
label: "apps/v1/replicasets"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/apps/v1/replicasets"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/apps/v1/replicasets"
- key: ReplicaSet
label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-replicaset-details
+spec:
+ id: "stock-instance-factory-instance-replicaset-details"
+ breadcrumbItems:
+ - key: replicasets
+ label: "apps/v1/replicasets"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/apps/v1/replicasets"
+ - key: ReplicaSet
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/replicationcontroller-details.yaml b/templates/Breadcrumb/factory/replicationcontroller-details.yaml
index d054eca..92b3c70 100644
--- a/templates/Breadcrumb/factory/replicationcontroller-details.yaml
+++ b/templates/Breadcrumb/factory/replicationcontroller-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: replicationcontrollers
label: "v1/replicationcontrollers"
- link: "/openapi-ui/{clusterName}/{namespace}/builtin-table/replicationcontrollers"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/replicationcontrollers"
- key: replicationcontroller
- label: "{5}"
+ label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-replicationcontroller-details
+spec:
+ id: "stock-instance-factory-instance-replicationcontroller-details"
+ breadcrumbItems:
+ - key: replicationcontrollers
+ label: "v1/replicationcontrollers"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/replicationcontrollers"
+ - key: replicationcontroller
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/secret-details.yaml b/templates/Breadcrumb/factory/secret-details.yaml
index 53070b3..e232ab7 100644
--- a/templates/Breadcrumb/factory/secret-details.yaml
+++ b/templates/Breadcrumb/factory/secret-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: secrets
label: "v1/secrets"
- link: "/openapi-ui/{clusterName}/{namespace}/builtin-table/secrets"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/secrets"
- key: secret
label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-secret-details
+spec:
+ id: "stock-instance-factory-instance-secret-details"
+ breadcrumbItems:
+ - key: secrets
+ label: "v1/secrets"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/secrets"
+ - key: secret
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/service-details.yaml b/templates/Breadcrumb/factory/service-details.yaml
index 3cb6341..b392ec8 100644
--- a/templates/Breadcrumb/factory/service-details.yaml
+++ b/templates/Breadcrumb/factory/service-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: services
label: "v1/services"
- link: "/openapi-ui/{clusterName}/{namespace}/builtin-table/services"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/services"
- key: service
label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-service-details
+spec:
+ id: "stock-instance-factory-instance-service-details"
+ breadcrumbItems:
+ - key: services
+ label: "v1/services"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/services"
+ - key: service
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/serviceaccount-details.yaml b/templates/Breadcrumb/factory/serviceaccount-details.yaml
index e758616..49c5d94 100644
--- a/templates/Breadcrumb/factory/serviceaccount-details.yaml
+++ b/templates/Breadcrumb/factory/serviceaccount-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: serviceaccounts
label: "v1/serviceaccounts"
- link: "/openapi-ui/{clusterName}/{namespace}/builtin-table/serviceaccounts"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/serviceaccounts"
- key: serviceaccount
label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-serviceaccount-details
+spec:
+ id: "stock-instance-factory-instance-serviceaccount-details"
+ breadcrumbItems:
+ - key: serviceaccounts
+ label: "v1/serviceaccounts"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/serviceaccounts"
+ - key: serviceaccount
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/factory/statefulset-details.yaml b/templates/Breadcrumb/factory/statefulset-details.yaml
index c86a2f6..5750266 100644
--- a/templates/Breadcrumb/factory/statefulset-details.yaml
+++ b/templates/Breadcrumb/factory/statefulset-details.yaml
@@ -8,6 +8,22 @@ spec:
breadcrumbItems:
- key: statefulsets
label: "apps/v1/statefulsets"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/apps/v1/statefulsets"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/apps/v1/statefulsets"
- key: statefulset
- label: "{5}"
+ label: "{6}"
+
+{{- if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-factory-instance-statefulset-details
+spec:
+ id: "stock-instance-factory-instance-statefulset-details"
+ breadcrumbItems:
+ - key: statefulsets
+ label: "apps/v1/statefulsets"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/apps/v1/statefulsets"
+ - key: statefulset
+ label: "{7}"
+{{- end -}}
diff --git a/templates/Breadcrumb/stock-cluster-api.yaml b/templates/Breadcrumb/stock-cluster-api.yaml
index d09c70e..ee6aa31 100644
--- a/templates/Breadcrumb/stock-cluster-api.yaml
+++ b/templates/Breadcrumb/stock-cluster-api.yaml
@@ -19,7 +19,7 @@ spec:
breadcrumbItems:
- key: create-api-res-namespaced-table
label: "{apiGroup}/{apiVersion}/{typeName}"
- link: "/openapi-ui/{clusterName}/api-table/{apiGroup}/{apiVersion}/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/api-table/{apiGroup}/{apiVersion}/{typeName}"
- key: create-api-res-namespaced-typename
label: Create
@@ -33,6 +33,6 @@ spec:
breadcrumbItems:
- key: create-api-res-namespaced-table
label: "{apiGroup}/{apiVersion}/{typeName}"
- link: "/openapi-ui/{clusterName}/api-table/{apiGroup}/{apiVersion}/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/api-table/{apiGroup}/{apiVersion}/{typeName}"
- key: create-api-res-namespaced-typename
label: Update
diff --git a/templates/Breadcrumb/stock-cluster-builtin.yaml b/templates/Breadcrumb/stock-cluster-builtin.yaml
index 1960a6e..4907281 100644
--- a/templates/Breadcrumb/stock-cluster-builtin.yaml
+++ b/templates/Breadcrumb/stock-cluster-builtin.yaml
@@ -19,7 +19,7 @@ spec:
breadcrumbItems:
- key: create-api-res-namespaced-table
label: "v1/{typeName}"
- link: "/openapi-ui/{clusterName}/builtin-table/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/builtin-table/{typeName}"
- key: create-api-res-namespaced-typename
label: Create
@@ -33,6 +33,6 @@ spec:
breadcrumbItems:
- key: create-api-res-namespaced-table
label: "v1/{typeName}"
- link: "/openapi-ui/{clusterName}/builtin-table/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/builtin-table/{typeName}"
- key: create-api-res-namespaced-typename
label: Update
diff --git a/templates/Breadcrumb/stock-cluster-projects-list.yaml b/templates/Breadcrumb/stock-cluster-projects-list.yaml
new file mode 100644
index 0000000..791ea50
--- /dev/null
+++ b/templates/Breadcrumb/stock-cluster-projects-list.yaml
@@ -0,0 +1,12 @@
+{{ if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-cluster-projects-list
+spec:
+ id: "stock-cluster-projects-list"
+ breadcrumbItems:
+ - key: api
+ label: "{apiGroup}/{apiVersion}/{typeName}"
+{{ end }}
diff --git a/templates/Breadcrumb/stock-instance-api.yaml b/templates/Breadcrumb/stock-instance-api.yaml
new file mode 100644
index 0000000..7967c6f
--- /dev/null
+++ b/templates/Breadcrumb/stock-instance-api.yaml
@@ -0,0 +1,38 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-api-table
+spec:
+ id: "stock-instance-api-table"
+ breadcrumbItems:
+ - key: api
+ label: "{apiGroup}/{apiVersion}/{typeName}"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-api-form
+spec:
+ id: "stock-instance-api-form"
+ breadcrumbItems:
+ - key: create-api-res-namespaced-table
+ label: "{apiGroup}/{apiVersion}/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/{apiGroup}/{apiVersion}/{typeName}"
+ - key: create-api-res-namespaced-typename
+ label: Create
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-api-form-edit
+spec:
+ id: "stock-instance-api-form-edit"
+ breadcrumbItems:
+ - key: create-api-res-namespaced-table
+ label: "{apiGroup}/{apiVersion}/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/{apiGroup}/{apiVersion}/{typeName}"
+ - key: create-api-res-namespaced-typename
+ label: Update
diff --git a/templates/Breadcrumb/stock-instance-builtin.yaml b/templates/Breadcrumb/stock-instance-builtin.yaml
new file mode 100644
index 0000000..3104915
--- /dev/null
+++ b/templates/Breadcrumb/stock-instance-builtin.yaml
@@ -0,0 +1,38 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-builtin-table
+spec:
+ id: "stock-instance-builtin-table"
+ breadcrumbItems:
+ - key: api
+ label: "v1/{typeName}"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-builtin-form
+spec:
+ id: "stock-instance-builtin-form"
+ breadcrumbItems:
+ - key: create-api-res-namespaced-table
+ label: "v1/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/{typeName}"
+ - key: create-api-res-namespaced-typename
+ label: Create
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-instance-builtin-form-edit
+spec:
+ id: "stock-instance-builtin-form-edit"
+ breadcrumbItems:
+ - key: create-api-res-namespaced-table
+ label: "v1/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/{typeName}"
+ - key: create-api-res-namespaced-typename
+ label: Update
diff --git a/templates/Breadcrumb/stock-project-api.yaml b/templates/Breadcrumb/stock-project-api.yaml
index 4c18fa9..682b5d9 100644
--- a/templates/Breadcrumb/stock-project-api.yaml
+++ b/templates/Breadcrumb/stock-project-api.yaml
@@ -19,7 +19,7 @@ spec:
breadcrumbItems:
- key: create-api-res-namespaced-table
label: "{apiGroup}/{apiVersion}/{typeName}"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/{apiGroup}/{apiVersion}/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/{apiGroup}/{apiVersion}/{typeName}"
- key: create-api-res-namespaced-typename
label: Create
@@ -33,6 +33,6 @@ spec:
breadcrumbItems:
- key: create-api-res-namespaced-table
label: "{apiGroup}/{apiVersion}/{typeName}"
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/{apiGroup}/{apiVersion}/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/api-table/{apiGroup}/{apiVersion}/{typeName}"
- key: create-api-res-namespaced-typename
label: Update
diff --git a/templates/Breadcrumb/stock-project-builtin.yaml b/templates/Breadcrumb/stock-project-builtin.yaml
index edc2f66..fb92245 100644
--- a/templates/Breadcrumb/stock-project-builtin.yaml
+++ b/templates/Breadcrumb/stock-project-builtin.yaml
@@ -19,7 +19,7 @@ spec:
breadcrumbItems:
- key: create-api-res-namespaced-table
label: "v1/{typeName}"
- link: "/openapi-ui/{clusterName}/{namespace}/builtin-table/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/{typeName}"
- key: create-api-res-namespaced-typename
label: Create
@@ -33,6 +33,6 @@ spec:
breadcrumbItems:
- key: create-api-res-namespaced-table
label: "v1/{typeName}"
- link: "/openapi-ui/{clusterName}/{namespace}/builtin-table/{typeName}"
+ link: "/{{ .Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/{typeName}"
- key: create-api-res-namespaced-typename
label: Update
diff --git a/templates/Breadcrumb/stock-search.yaml b/templates/Breadcrumb/stock-search.yaml
new file mode 100644
index 0000000..dca7c32
--- /dev/null
+++ b/templates/Breadcrumb/stock-search.yaml
@@ -0,0 +1,25 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-cluster-search-page
+spec:
+ id: stock-cluster-search-page
+ breadcrumbItems:
+ - key: search
+ label: "search"
+ - key: resources
+ label: "resources"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Breadcrumb
+metadata:
+ name: stock-namespace-search-page
+spec:
+ id: stock-namespace-search-page
+ breadcrumbItems:
+ - key: search
+ label: "search"
+ - key: resources
+ label: "resources"
diff --git a/templates/CustomColumnsOverride/addons/argocd/argoproj.io.v1alpha1.applications.yaml b/templates/CustomColumnsOverride/addons/argocd/argoproj.io.v1alpha1.applications.yaml
new file mode 100644
index 0000000..b736312
--- /dev/null
+++ b/templates/CustomColumnsOverride/addons/argocd/argoproj.io.v1alpha1.applications.yaml
@@ -0,0 +1,328 @@
+{{- if .Values.addons.argocd.enabled }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-cluster-argoproj.io.v1alpha1.applications"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Application"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "argocd-application-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .status.sync.status
+ name: Sync Status
+ type: string
+ - jsonPath: .status.health.status
+ name: Health Status
+ type: string
+ - jsonPath: .status.sync.revision
+ name: Revision
+ type: string
+ - jsonPath: .spec.project
+ name: Project
+ type: string
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths: []
+ additionalPrinterColumnsUndefinedValues:
+ - key: Name
+ value: "-"
+ - key: Sync Status
+ value: "-"
+ - key: Health Status
+ value: "-"
+ - key: Revision
+ value: "-"
+ - key: Project
+ value: "-"
+
+ id: "stock-cluster-/argoproj.io/v1alpha1/applications"
+
+ {{ if .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-namespace-argoproj.io.v1alpha1.applications"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Application"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "argocd-application-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .status.sync.status
+ name: Sync Status
+ type: string
+ - jsonPath: .status.health.status
+ name: Health Status
+ type: string
+ - jsonPath: .status.sync.revision
+ name: Revision
+ type: string
+ - jsonPath: .spec.project
+ name: Project
+ type: string
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths: []
+
+ additionalPrinterColumnsUndefinedValues:
+ - key: Name
+ value: "-"
+ - key: Sync Status
+ value: "-"
+ - key: Health Status
+ value: "-"
+ - key: Revision
+ value: "-"
+ - key: Project
+ value: "-"
+
+ id: "stock-namespace-/argoproj.io/v1alpha1/applications"
+ {{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-argoproj.io.v1alpha1.applications"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Application"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "argocd-application-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .status.sync.status
+ name: Sync Status
+ type: string
+ - jsonPath: .status.health.status
+ name: Health Status
+ type: string
+ - jsonPath: .status.sync.revision
+ name: Revision
+ type: string
+ - jsonPath: .spec.project
+ name: Project
+ type: string
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths: []
+
+ additionalPrinterColumnsUndefinedValues:
+ - key: Name
+ value: "-"
+ - key: Sync Status
+ value: "-"
+ - key: Health Status
+ value: "-"
+ - key: Revision
+ value: "-"
+ - key: Project
+ value: "-"
+
+ id: "stock-project-/argoproj.io/v1alpha1/applications"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-instance-argoproj.io.v1alpha1.applications"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Application"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "argocd-application-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .status.sync.status
+ name: Sync Status
+ type: string
+ - jsonPath: .status.health.status
+ name: Health Status
+ type: string
+ - jsonPath: .status.sync.revision
+ name: Revision
+ type: string
+ - jsonPath: .spec.project
+ name: Project
+ type: string
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths: []
+
+ additionalPrinterColumnsUndefinedValues:
+ - key: Name
+ value: "-"
+ - key: Sync Status
+ value: "-"
+ - key: Health Status
+ value: "-"
+ - key: Revision
+ value: "-"
+ - key: Project
+ value: "-"
+
+ id: "stock-instance-/argoproj.io/v1alpha1/applications"
+ {{ end }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: factory-argocd-application-resources
+spec:
+ additionalPrinterColumns:
+ - jsonPath: .kind
+ name: Kind
+ type: string
+ - jsonPath: .version
+ name: Version
+ type: string
+ - jsonPath: .name
+ name: Name
+ type: string
+ - jsonPath: .namespace
+ name: Namespace
+ type: string
+ - jsonPath: .status
+ name: Status
+ type: string
+ - jsonPath: .message
+ name: Message
+ type: string
+
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ - key: Message
+ value: 64
+ additionalPrinterColumnsUndefinedValues:
+ - key: Message
+ value: "-"
+ - key: Namespace
+ value: "-"
+
+ id: "factory-argocd-application-resources"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "factory-argocd-application-status-resources"
+spec:
+ additionalPrinterColumns:
+ - jsonPath: .kind
+ name: Kind
+ type: string
+ - jsonPath: .version
+ name: Version
+ type: string
+ - jsonPath: .name
+ name: Name
+ type: string
+ - jsonPath: .namespace
+ name: Namespace
+ type: string
+ - jsonPath: .status
+ name: Status
+ type: string
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Namespace
+ value: "-"
+
+ id: "factory-argocd-application-status-resources"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "factory-argocd-application-status-history"
+spec:
+ additionalPrinterColumns:
+ - jsonPath: .id
+ name: ID
+ type: string
+ - jsonPath: .initiatedBy.username
+ name: InitiatedBy
+ type: string
+ - jsonPath: .deployStartedAt
+ name: Deploy Started At
+ type: factory
+ customProps:
+ disableEventBubbling: true
+ items:
+ {{ include "incloud-web-resources.factory.timeblock" (dict
+ "req" ".deployStartedAt"
+ ) | nindent 8
+ }}
+ - jsonPath: .deployedAt
+ name: Deployed At
+ type: factory
+ customProps:
+ disableEventBubbling: true
+ items:
+ {{ include "incloud-web-resources.factory.timeblock" (dict
+ "req" ".deployedAt"
+ ) | nindent 8
+ }}
+ - jsonPath: .revision
+ name: Revision
+ type: string
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Namespace
+ value: "-"
+ - key: Revision
+ value: "-"
+ id: "factory-argocd-application-status-history"
+
+{{- end -}}
diff --git a/templates/CustomColumnsOverride/addons/argocd/argoproj.io.v1alpha1.appproject.yaml b/templates/CustomColumnsOverride/addons/argocd/argoproj.io.v1alpha1.appproject.yaml
new file mode 100644
index 0000000..9cb30ed
--- /dev/null
+++ b/templates/CustomColumnsOverride/addons/argocd/argoproj.io.v1alpha1.appproject.yaml
@@ -0,0 +1,120 @@
+{{- if .Values.addons.argocd.enabled }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-cluster-argoproj.io.v1alpha1.appprojects"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "AppProject"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "argocd-appproject-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths: []
+ additionalPrinterColumnsUndefinedValues: []
+ id: "stock-cluster-/argoproj.io/v1alpha1/appprojects"
+
+ {{ if .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-namespace-argoproj.io.v1alpha1.appprojects"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "AppProject"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "argocd-appproject-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths: []
+ additionalPrinterColumnsUndefinedValues: []
+ id: "stock-namespace-/argoproj.io/v1alpha1/appprojects"
+ {{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-argoproj.io.v1alpha1.appprojects"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "AppProject"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "argocd-appproject-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths: []
+ additionalPrinterColumnsUndefinedValues: []
+ id: "stock-project-/argoproj.io/v1alpha1/appprojects"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-instance-argoproj.io.v1alpha1.appprojects"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "AppProject"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "argocd-appproject-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths: []
+ additionalPrinterColumnsUndefinedValues: []
+ id: "stock-instance-/argoproj.io/v1alpha1/appprojects"
+ {{ end }}
+{{- end -}}
diff --git a/templates/CustomColumnsOverride/trivy/factory-aquasecurity.github.io.v1alpha1.clusterinfraassessmentreports.yaml b/templates/CustomColumnsOverride/addons/trivy/factory-aquasecurity.github.io.v1alpha1.clusterinfraassessmentreports.yaml
similarity index 100%
rename from templates/CustomColumnsOverride/trivy/factory-aquasecurity.github.io.v1alpha1.clusterinfraassessmentreports.yaml
rename to templates/CustomColumnsOverride/addons/trivy/factory-aquasecurity.github.io.v1alpha1.clusterinfraassessmentreports.yaml
diff --git a/templates/CustomColumnsOverride/trivy/factory-aquasecurity.github.io.v1alpha1.configauditreports.yaml b/templates/CustomColumnsOverride/addons/trivy/factory-aquasecurity.github.io.v1alpha1.configauditreports.yaml
similarity index 100%
rename from templates/CustomColumnsOverride/trivy/factory-aquasecurity.github.io.v1alpha1.configauditreports.yaml
rename to templates/CustomColumnsOverride/addons/trivy/factory-aquasecurity.github.io.v1alpha1.configauditreports.yaml
diff --git a/templates/CustomColumnsOverride/trivy/factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports.yaml b/templates/CustomColumnsOverride/addons/trivy/factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports.yaml
similarity index 51%
rename from templates/CustomColumnsOverride/trivy/factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports.yaml
rename to templates/CustomColumnsOverride/addons/trivy/factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports.yaml
index 2ea5379..f11fe4f 100644
--- a/templates/CustomColumnsOverride/trivy/factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports.yaml
+++ b/templates/CustomColumnsOverride/addons/trivy/factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports.yaml
@@ -11,7 +11,16 @@ spec:
type: string
- jsonPath: .vulnerabilityID
name: Vulnerability ID
- type: string
+ type: factory
+ customProps:
+ disableEventBubbling: true
+ items:
+ - type: parsedText
+ data:
+ id: "vulnerability-link"
+ # href: "https://nvd.nist.gov/vuln/detail/{reqsJsonPath[0]['.vulnerabilityID']['-']}"
+ text: "{reqsJsonPath[0]['.vulnerabilityID']['-']}"
+
- jsonPath: .installedVersion
name: Installed version
type: string
@@ -38,4 +47,33 @@ spec:
- key: Resource
value: "-"
id: "factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports"
+
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "factory-aquasecurity.github.io.v1alpha1.sbomreports"
+spec:
+ additionalPrinterColumns:
+ - jsonPath: .name
+ name: Name
+ type: string
+ - jsonPath: .version
+ name: Version
+ type: string
+ - jsonPath: .type
+ name: Type
+ type: string
+ - jsonPath: .licenses[?(@.license)].license.name
+ name: License
+ type: array
+
+ additionalPrinterColumnsTrimLengths:
+ - key: title
+ value: 128
+ additionalPrinterColumnsUndefinedValues:
+ - key: License
+ value: "-"
+ id: "factory-aquasecurity.github.io.v1alpha1.sbomreports"
{{- end -}}
diff --git a/templates/CustomColumnsOverride/apiextensions.k8s.io.v1.crd.yaml b/templates/CustomColumnsOverride/apiextensions.k8s.io.v1.crd.yaml
index d989a1e..c63da4a 100644
--- a/templates/CustomColumnsOverride/apiextensions.k8s.io.v1.crd.yaml
+++ b/templates/CustomColumnsOverride/apiextensions.k8s.io.v1.crd.yaml
@@ -5,25 +5,15 @@ metadata:
name: stock-cluster-apiextensions.k8s.io.v1.customresourcedefinitions
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "CRD"
- "title" "crd"
- "backgroundColor" "#2b9af3"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "factory" "crd-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "CustomResourceDefinition"
+ "reqIndex" 0
+ "jsonPath" ".metadata.name"
+ "factory" "crd-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .spec.group
name: Group
type: string
@@ -37,8 +27,7 @@ spec:
name: Established
type: string
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
id: stock-cluster-/apiextensions.k8s.io/v1/customresourcedefinitions
---
@@ -59,6 +48,5 @@ spec:
type: string
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
id: versions-apiextensions.k8s.io.v1.customresourcedefinitions
diff --git a/templates/CustomColumnsOverride/apps.v1.daemonset.yaml b/templates/CustomColumnsOverride/apps.v1.daemonset.yaml
index 7c4fd68..653b9de 100644
--- a/templates/CustomColumnsOverride/apps.v1.daemonset.yaml
+++ b/templates/CustomColumnsOverride/apps.v1.daemonset.yaml
@@ -5,122 +5,152 @@ metadata:
name: "stock-cluster-apps.v1.daemonsets"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "DS"
- "title" "ds"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "daemonset-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .metadata.ownerReferences[*].name
- name: Owner
- type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "DaemonSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "daemonset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/daemonsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=apps~v1~daemonsets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Owner
value: "-"
id: "stock-cluster-/apps/v1/daemonsets"
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
metadata:
name: "stock-namespace-apps.v1.daemonsets"
-spec:
- additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "DS"
- "title" "ds"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "daemonset-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
-
- - jsonPath: .metadata.ownerReferences[*].name
- name: Owner
- type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+spec:
+ additionalPrinterColumns: &dsColumns
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "DaemonSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "daemonset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~daemonsets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Owner
+ value: "-"
id: "stock-namespace-/apps/v1/daemonsets"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-apps.v1.daemonsets"
+spec:
+ additionalPrinterColumns: *dsColumns
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Owner
+ value: "-"
+ id: "stock-project-/apps/v1/daemonsets"
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-instance-apps.v1.daemonsets"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "DaemonSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-daemonset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~daemonsets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Owner
+ value: "-"
+ id: "stock-instance-/apps/v1/daemonsets"
+{{ end }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -132,4 +162,3 @@ spec:
name: Name
type: string
id: "factory-daemonset-details-volume-list"
-
diff --git a/templates/CustomColumnsOverride/apps.v1.deployments.yaml b/templates/CustomColumnsOverride/apps.v1.deployments.yaml
index 470d85f..a2b0fc1 100644
--- a/templates/CustomColumnsOverride/apps.v1.deployments.yaml
+++ b/templates/CustomColumnsOverride/apps.v1.deployments.yaml
@@ -17,140 +17,179 @@ metadata:
name: "stock-cluster-apps.v1.deployments"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "D"
- "title" "deployment"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "deployment-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .spec.template.metadata.labels
- name: Pod Selector
- type: array
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Deployment"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "deployment-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/deployments/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=apps~v1~deployments&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
- name: Status
type: factory
customProps:
disableEventBubbling: true
items:
{{ include "incloud-web-resources.factory.statuses.deployment" . | nindent 8 }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Labels
+ value: "-"
+ - key: Pod Selector
+ value: "-"
+ id: "stock-cluster-/apps/v1/deployments"
+
+{{ if .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-namespace-apps.v1.deployments"
+spec:
+ additionalPrinterColumns: &deploymentsColumns
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Deployment"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "deployment-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~deployments&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ - name: Status
type: factory
customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.factory.statuses.deployment" . | nindent 8 }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
- key: Labels
- value: 1
+ value: "-"
- key: Pod Selector
- value: 1
+ value: "-"
+ id: "stock-namespace-/apps/v1/deployments"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-apps.v1.deployments"
+spec:
+ additionalPrinterColumns: *deploymentsColumns
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Labels
value: "-"
- key: Pod Selector
value: "-"
- id: "stock-cluster-/apps/v1/deployments"
+ id: "stock-project-/apps/v1/deployments"
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
metadata:
- name: "stock-namespace-apps.v1.deployments"
+ name: "stock-instance-apps.v1.deployments"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "D"
- "title" "deployment"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "deployment-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .spec.template.metadata.labels
- name: Pod Selector
- type: array
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Deployment"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-deployment-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~deployments&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
- name: Status
type: factory
customProps:
disableEventBubbling: true
items:
{{ include "incloud-web-resources.factory.statuses.deployment" . | nindent 8 }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
- - key: Pod Selector
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Labels
value: "-"
- key: Pod Selector
value: "-"
- id: "stock-namespace-/apps/v1/deployments"
+ id: "stock-instance-/apps/v1/deployments"
+{{ end }}
diff --git a/templates/CustomColumnsOverride/apps.v1.replicasets.yaml b/templates/CustomColumnsOverride/apps.v1.replicasets.yaml
index 150f3c6..5ae8ef0 100644
--- a/templates/CustomColumnsOverride/apps.v1.replicasets.yaml
+++ b/templates/CustomColumnsOverride/apps.v1.replicasets.yaml
@@ -5,68 +5,49 @@ metadata:
name: "stock-cluster-apps.v1.replicasets"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "RS"
- "title" "deployment"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "replicaset-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .metadata.ownerReferences[*].name
- name: Owner
- type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ReplicaSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "replicaset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/replicasets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=apps~v1~replicasets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
id: "stock-cluster-/apps/v1/replicasets"
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -74,48 +55,116 @@ metadata:
name: "stock-namespace-apps.v1.replicasets"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "RS"
- "title" "deployment"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "replicaset-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .metadata.ownerReferences[*].name
- name: Owner
- type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ReplicaSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "replicaset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~replicasets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
id: "stock-namespace-/apps/v1/replicasets"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-apps.v1.replicasets"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ReplicaSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "replicaset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~replicasets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ id: "stock-project-/apps/v1/replicasets"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-instance-apps.v1.replicasets"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ReplicaSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-replicaset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~replicasets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ id: "stock-instance-/apps/v1/replicasets"
---
apiVersion: front.in-cloud.io/v1alpha1
@@ -124,53 +173,84 @@ metadata:
name: "factory-apps.v1.replicasets"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "RS"
- "title" "deployment"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "replicaset-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .metadata.ownerReferences[*].name
- name: Owner
- type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ReplicaSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "replicaset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~replicasets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Labels
value: "-"
-
id: "factory-/apps/v1/replicasets"
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "factory-instance-replicaset-details"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Replicaset"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-replicaset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~replicasets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Labels
+ value: "-"
+ id: "factory-instance-replicaset-details"
+{{ end }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
diff --git a/templates/CustomColumnsOverride/apps.v1.statefulsets.yaml b/templates/CustomColumnsOverride/apps.v1.statefulsets.yaml
index b5d4b5b..3a019e8 100644
--- a/templates/CustomColumnsOverride/apps.v1.statefulsets.yaml
+++ b/templates/CustomColumnsOverride/apps.v1.statefulsets.yaml
@@ -17,73 +17,50 @@ metadata:
name: "stock-cluster-apps.v1.statefulsets"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "SS"
- "title" "statefulset"
- "backgroundColor" "#2b9af3"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "statefulset-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .spec.template.metadata.labels
- name: Pod Selector
- type: array
- - jsonPath: .status.conditions[?(@.type=="Available")].status
- name: Status
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "StatefulSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "statefulset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/statefulsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=apps~v1~statefulsets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
- - key: Pod Selector
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
id: "stock-cluster-/apps/v1/statefulsets"
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -91,50 +68,117 @@ metadata:
name: "stock-namespace-apps.v1.statefulsets"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "SS"
- "title" "statefulset"
- "backgroundColor" "#2b9af3"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "statefulset-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .spec.template.metadata.labels
- name: Pod Selector
- type: array
- - jsonPath: .status.conditions[?(@.type=="Available")].status
- name: Status
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "StatefulSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "statefulset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~statefulsets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
- - key: Pod Selector
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
id: "stock-namespace-/apps/v1/statefulsets"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-apps.v1.statefulsets"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "StatefulSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "statefulset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~statefulsets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
+ id: "stock-project-/apps/v1/statefulsets"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-instance-apps.v1.statefulsets"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "StatefulSet"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-statefulset-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~statefulsets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
+ id: "stock-instance-/apps/v1/statefulsets"
+{{ end }}
diff --git a/templates/CustomColumnsOverride/argocd/argoproj.io.v1alpha1.applications.yaml b/templates/CustomColumnsOverride/argocd/argoproj.io.v1alpha1.applications.yaml
deleted file mode 100644
index c31abc5..0000000
--- a/templates/CustomColumnsOverride/argocd/argoproj.io.v1alpha1.applications.yaml
+++ /dev/null
@@ -1,266 +0,0 @@
-{{- if .Values.addons.argocd.enabled }}
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: CustomColumnsOverride
-metadata:
- name: "stock-cluster-argoproj.io.v1alpha1.applications"
-spec:
- additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "A"
- "title" "applications"
- "backgroundColor" "#436853ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "argocd-application-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .status.sync.status
- name: Sync Status
- type: string
- - jsonPath: .status.health.status
- name: Health Status
- type: string
- - jsonPath: .status.sync.revision
- name: Revision
- type: string
- - jsonPath: .spec.project
- name: Project
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
- additionalPrinterColumnsTrimLengths: []
- additionalPrinterColumnsUndefinedValues:
- - key: Name
- value: "-"
- - key: Sync Status
- value: "-"
- - key: Health Status
- value: "-"
- - key: Revision
- value: "-"
- - key: Project
- value: "-"
-
- id: "stock-cluster-/argoproj.io/v1alpha1/applications"
-
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: CustomColumnsOverride
-metadata:
- name: "stock-namespace-argoproj.io.v1alpha1.applications"
-spec:
- additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "A"
- "title" "applications"
- "backgroundColor" "#436853ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "argocd-application-details"
- ) | nindent 12
- }}
- - jsonPath: .status.sync.status
- name: Sync Status
- type: string
- - jsonPath: .status.health.status
- name: Health Status
- type: string
- - jsonPath: .status.sync.revision
- name: Revision
- type: string
- - jsonPath: .spec.project
- name: Project
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
- additionalPrinterColumnsTrimLengths: []
-
- additionalPrinterColumnsUndefinedValues:
- - key: Name
- value: "-"
- - key: Sync Status
- value: "-"
- - key: Health Status
- value: "-"
- - key: Revision
- value: "-"
- - key: Project
- value: "-"
-
- id: "stock-namespace-/argoproj.io/v1alpha1/applications"
-
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: CustomColumnsOverride
-metadata:
- name: factory-argocd-application-resources
-spec:
- additionalPrinterColumns:
- - jsonPath: .kind
- name: Kind
- type: string
- - jsonPath: .version
- name: Version
- type: string
- - jsonPath: .name
- name: Name
- type: string
- - jsonPath: .namespace
- name: Namespace
- type: string
- - jsonPath: .status
- name: Status
- type: string
- - jsonPath: .message
- name: Message
- type: string
-
- additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Message
- value: 64
- additionalPrinterColumnsUndefinedValues:
- - key: Message
- value: "-"
- - key: Namespace
- value: "-"
-
- id: "factory-argocd-application-resources"
-
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: CustomColumnsOverride
-metadata:
- name: "factory-argocd-application-status-resources"
-spec:
- additionalPrinterColumns:
- - jsonPath: .kind
- name: Kind
- type: string
- - jsonPath: .version
- name: Version
- type: string
- - jsonPath: .name
- name: Name
- type: string
- - jsonPath: .namespace
- name: Namespace
- type: string
- - jsonPath: .status
- name: Status
- type: string
- additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- additionalPrinterColumnsUndefinedValues:
- - key: Namespace
- value: "-"
-
- id: "factory-argocd-application-status-resources"
-
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: CustomColumnsOverride
-metadata:
- name: "factory-argocd-application-status-history"
-spec:
- additionalPrinterColumns:
- - jsonPath: .id
- name: ID
- type: string
- - jsonPath: .initiatedBy.username
- name: InitiatedBy
- type: string
- - jsonPath: .deployStartedAt
- name: Deploy Started At
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".deployStartedAt"
- ) | nindent 8
- }}
- - jsonPath: .deployedAt
- name: Deployed At
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".deployedAt"
- ) | nindent 8
- }}
- - jsonPath: .revision
- name: Revision
- type: string
- additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- additionalPrinterColumnsUndefinedValues:
- - key: Namespace
- value: "-"
- - key: Revision
- value: "-"
- id: "factory-argocd-application-status-history"
-
-{{- end -}}
\ No newline at end of file
diff --git a/templates/CustomColumnsOverride/autoscaling.v2.horizontalpodautoscalers.yaml b/templates/CustomColumnsOverride/autoscaling.v2.horizontalpodautoscalers.yaml
index ce40f45..545acde 100644
--- a/templates/CustomColumnsOverride/autoscaling.v2.horizontalpodautoscalers.yaml
+++ b/templates/CustomColumnsOverride/autoscaling.v2.horizontalpodautoscalers.yaml
@@ -5,88 +5,62 @@ metadata:
name: "stock-cluster-autoscaling.v2.horizontalpodautoscalers"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "HPA"
- "title" "horizontalpodautoscaler"
- "backgroundColor" "#2b9af3"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "horizontalpodautoscaler-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .metadata.labels
- name: Min replicas
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- - type: parsedText
- data:
- id: min-replicas-value
- text: "{reqsJsonPath[0]['.spec.minReplicas']['-']}"
- - jsonPath: .metadata.labels
- name: Max replicas
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- - type: parsedText
- data:
- id: max-replicas-value
- text: "{reqsJsonPath[0]['.spec.maxReplicas']['-']}"
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "HorizontalPodAutoscaler"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "horizontalpodautoscaler-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/autoscaling/v2/horizontalpodautoscalers/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=autoscaling~v2~horizontalpodautoscalers&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.parsed-text" (dict
+ "columnName" "Min replicas"
+ "jsonPath" ".metadata.labels"
+ "text" "{reqsJsonPath[0]['.spec.minReplicas']['-']}"
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.parsed-text" (dict
+ "columnName" "Max replicas"
+ "jsonPath" ".metadata.labels"
+ "text" "{reqsJsonPath[0]['.spec.maxReplicas']['-']}"
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Labels
value: "-"
+ - key: Max replicas
+ value: "-"
+ - key: Min replicas
+ value: "-"
id: "stock-cluster-/autoscaling/v2/horizontalpodautoscalers"
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -94,65 +68,153 @@ metadata:
name: "stock-namespace-autoscaling.v2.horizontalpodautoscalers"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "HPA"
- "title" "horizontalpodautoscaler"
- "backgroundColor" "#2b9af3"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "horizontalpodautoscaler-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .metadata.labels
- name: Min replicas
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- - type: parsedText
- data:
- id: min-replicas-value
- text: "{reqsJsonPath[0]['.spec.minReplicas']['-']}"
- - jsonPath: .metadata.labels
- name: Max replicas
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- - type: parsedText
- data:
- id: max-replicas-value
- text: "{reqsJsonPath[0]['.spec.maxReplicas']['-']}"
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "HorizontalPodAutoscaler"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "horizontalpodautoscaler-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/autoscaling/v2/namespaces/{3}/horizontalpodautoscalers/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=autoscaling~v2~horizontalpodautoscalers&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.parsed-text" (dict
+ "columnName" "Min replicas"
+ "jsonPath" ".metadata.labels"
+ "text" "{reqsJsonPath[0]['.spec.minReplicas']['-']}"
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.parsed-text" (dict
+ "columnName" "Max replicas"
+ "jsonPath" ".metadata.labels"
+ "text" "{reqsJsonPath[0]['.spec.maxReplicas']['-']}"
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Labels
value: "-"
+ - key: Max replicas
+ value: "-"
+ - key: Min replicas
+ value: "-"
id: "stock-namespace-/autoscaling/v2/horizontalpodautoscalers"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-autoscaling.v2.horizontalpodautoscalers"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "HorizontalPodAutoscaler"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "horizontalpodautoscaler-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/autoscaling/v2/namespaces/{3}/horizontalpodautoscalers/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=autoscaling~v2~horizontalpodautoscalers&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.parsed-text" (dict
+ "columnName" "Min replicas"
+ "jsonPath" ".metadata.labels"
+ "text" "{reqsJsonPath[0]['.spec.minReplicas']['-']}"
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.parsed-text" (dict
+ "columnName" "Max replicas"
+ "jsonPath" ".metadata.labels"
+ "text" "{reqsJsonPath[0]['.spec.maxReplicas']['-']}"
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Labels
+ value: "-"
+ - key: Max replicas
+ value: "-"
+ - key: Min replicas
+ value: "-"
+ id: "stock-project-/autoscaling/v2/horizontalpodautoscalers"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-instance-autoscaling.v2.horizontalpodautoscalers"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "HorizontalPodAutoscaler"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-horizontalpodautoscaler-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/autoscaling/v2/namespaces/{3}/horizontalpodautoscalers/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=autoscaling~v2~horizontalpodautoscalers&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.parsed-text" (dict
+ "columnName" "Min replicas"
+ "jsonPath" ".metadata.labels"
+ "text" "{reqsJsonPath[0]['.spec.minReplicas']['-']}"
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.parsed-text" (dict
+ "columnName" "Max replicas"
+ "jsonPath" ".metadata.labels"
+ "text" "{reqsJsonPath[0]['.spec.maxReplicas']['-']}"
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Labels
+ value: "-"
+ - key: Max replicas
+ value: "-"
+ - key: Min replicas
+ value: "-"
+ id: "stock-instance-/autoscaling/v2/horizontalpodautoscalers"
+{{ end }}
diff --git a/templates/CustomColumnsOverride/batch.v1.cronjobs.yaml b/templates/CustomColumnsOverride/batch.v1.cronjobs.yaml
index b10aa0a..4065e8f 100644
--- a/templates/CustomColumnsOverride/batch.v1.cronjobs.yaml
+++ b/templates/CustomColumnsOverride/batch.v1.cronjobs.yaml
@@ -5,45 +5,32 @@ metadata:
name: "stock-cluster-batch.v1.cronjobs"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "CJ"
- "title" "cronjob"
- "backgroundColor" "#2b9af3"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "cronjob-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "CronJob"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "cronjob-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/cronjobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=batch~v1~cronjobs&labels="
+ ) | nindent 4
+ }}
- jsonPath: .spec.schedule
name: Schedule
type: string
@@ -56,19 +43,13 @@ spec:
- jsonPath: .spec.startingDeadlineSeconds
name: Starting deadline seconds
type: string
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Namespace
value: "-"
@@ -76,6 +57,7 @@ spec:
value: "-"
id: "stock-cluster-/batch/v1/cronjobs"
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -83,26 +65,22 @@ metadata:
name: "stock-namespace-batch.v1.cronjobs"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "CJ"
- "title" "cronjob"
- "backgroundColor" "#2b9af3"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "cronjob-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "CronJob"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "cronjob-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=batch~v1~cronjobs&labels="
+ ) | nindent 4
+ }}
- jsonPath: .spec.schedule
name: Schedule
type: string
@@ -115,22 +93,116 @@ spec:
- jsonPath: .spec.startingDeadlineSeconds
name: Starting deadline seconds
type: string
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Namespace
value: "-"
- key: Starting deadline seconds
value: "-"
id: "stock-namespace-/batch/v1/cronjobs"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-batch.v1.cronjobs"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "CronJob"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "cronjob-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=batch~v1~cronjobs&labels="
+ ) | nindent 4
+ }}
+ - jsonPath: .spec.schedule
+ name: Schedule
+ type: string
+ - jsonPath: .spec.suspend
+ name: Suspend
+ type: string
+ - jsonPath: .spec.concurrencyPolicy
+ name: Concurrency policy
+ type: string
+ - jsonPath: .spec.startingDeadlineSeconds
+ name: Starting deadline seconds
+ type: string
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Namespace
+ value: "-"
+ - key: Starting deadline seconds
+ value: "-"
+ id: "stock-project-/batch/v1/cronjobs"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-instance-batch.v1.cronjobs"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "CronJob"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-cronjob-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=batch~v1~cronjobs&labels="
+ ) | nindent 4
+ }}
+ - jsonPath: .spec.schedule
+ name: Schedule
+ type: string
+ - jsonPath: .spec.suspend
+ name: Suspend
+ type: string
+ - jsonPath: .spec.concurrencyPolicy
+ name: Concurrency policy
+ type: string
+ - jsonPath: .spec.startingDeadlineSeconds
+ name: Starting deadline seconds
+ type: string
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Namespace
+ value: "-"
+ - key: Starting deadline seconds
+ value: "-"
+ id: "stock-instance-/batch/v1/cronjobs"
+{{ end }}
diff --git a/templates/CustomColumnsOverride/batch.v1.jobs.yaml b/templates/CustomColumnsOverride/batch.v1.jobs.yaml
index 3928c67..81c8716 100644
--- a/templates/CustomColumnsOverride/batch.v1.jobs.yaml
+++ b/templates/CustomColumnsOverride/batch.v1.jobs.yaml
@@ -5,45 +5,32 @@ metadata:
name: "stock-cluster-batch.v1.jobs"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "J"
- "title" "job"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "job-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Job"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "job-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/jobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=batch~v1~jobs&labels="
+ ) | nindent 4
+ }}
- jsonPath: .spec.manualSelector
name: Manual selector
type: string
@@ -68,19 +55,13 @@ spec:
disableEventBubbling: true
items:
{{ include "incloud-web-resources.factory.statuses.job" . | nindent 8 }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Namespace
value: "-"
@@ -88,6 +69,7 @@ spec:
value: "-"
id: "stock-cluster-/batch/v1/jobs"
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -95,26 +77,22 @@ metadata:
name: "stock-namespace-batch.v1.jobs"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "J"
- "title" "job"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "job-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Job"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "job-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=batch~v1~jobs&labels="
+ ) | nindent 4
+ }}
- jsonPath: .spec.manualSelector
name: Manual selector
type: string
@@ -139,53 +117,167 @@ spec:
disableEventBubbling: true
items:
{{ include "incloud-web-resources.factory.statuses.job" . | nindent 8 }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Namespace
+ value: "-"
+ - key: Starting deadline seconds
+ value: "-"
+ id: "stock-namespace-/batch/v1/jobs"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-batch.v1.jobs"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Job"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "job-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=batch~v1~jobs&labels="
+ ) | nindent 4
+ }}
+ - jsonPath: .spec.manualSelector
+ name: Manual selector
+ type: string
+ - jsonPath: .spec.backoffLimit
+ name: Backoff limit
+ type: string
+ - jsonPath: .spec.completions
+ name: Completions
+ type: string
+ - jsonPath: .spec.parallelism
+ name: Parallelism
+ type: string
+ - jsonPath: .spec.completionMode
+ name: Completion mode
+ type: string
+ - jsonPath: .spec.suspend
+ name: Suspend
+ type: string
+ - name: Status
type: factory
customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.factory.statuses.job" . | nindent 8 }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Namespace
value: "-"
- key: Starting deadline seconds
value: "-"
- id: "stock-namespace-/batch/v1/jobs"
+ id: "stock-project-/batch/v1/jobs"
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
metadata:
- name: "factory-batch.v1.jobs"
+ name: "stock-instance-batch.v1.jobs"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Job"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-job-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=batch~v1~jobs&labels="
+ ) | nindent 4
+ }}
+ - jsonPath: .spec.manualSelector
+ name: Manual selector
+ type: string
+ - jsonPath: .spec.backoffLimit
+ name: Backoff limit
+ type: string
+ - jsonPath: .spec.completions
+ name: Completions
+ type: string
+ - jsonPath: .spec.parallelism
+ name: Parallelism
+ type: string
+ - jsonPath: .spec.completionMode
+ name: Completion mode
+ type: string
+ - jsonPath: .spec.suspend
+ name: Suspend
+ type: string
+ - name: Status
type: factory
customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "J"
- "title" "job"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "job-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.factory.statuses.job" . | nindent 8 }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Namespace
+ value: "-"
+ - key: Starting deadline seconds
+ value: "-"
+ id: "stock-instance-/batch/v1/jobs"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "factory-instance-jobs-details"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Job"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-job-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=batch~v1~jobs&labels="
+ ) | nindent 4
+ }}
- jsonPath: .spec.manualSelector
name: Manual selector
type: string
@@ -213,19 +305,77 @@ spec:
disableEventBubbling: true
items:
{{ include "incloud-web-resources.factory.statuses.job" . | nindent 8 }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Namespace
+ value: "-"
+ - key: Starting deadline seconds
+ value: "-"
+ id: "factory-instance-jobs-details"
+{{ end }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "factory-batch.v1.jobs"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Job"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "job-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=batch~v1~jobs&labels="
+ ) | nindent 4
+ }}
+ - jsonPath: .spec.manualSelector
+ name: Manual selector
+ type: string
+ - jsonPath: .spec.backoffLimit
+ name: Backoff limit
+ type: string
+ - jsonPath: .spec.completions
+ name: Completions
+ type: string
+ - jsonPath: .spec.parallelism
+ name: Parallelism
+ type: string
+ - jsonPath: .spec.completionMode
+ name: Completion mode
+ type: string
+ - jsonPath: .spec.suspend
+ name: Suspend
+ type: string
+ - jsonPath: .spec.startingDeadlineSeconds
+ name: Starting deadline seconds
+ type: string
+ - name: Status
type: factory
customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.factory.statuses.job" . | nindent 8 }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Namespace
value: "-"
diff --git a/templates/CustomColumnsOverride/cert-manager.io.v1.certificates.yaml b/templates/CustomColumnsOverride/cert-manager.io.v1.certificates.yaml
new file mode 100644
index 0000000..ae92e33
--- /dev/null
+++ b/templates/CustomColumnsOverride/cert-manager.io.v1.certificates.yaml
@@ -0,0 +1,88 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-cluster-cert-manager.io.v1.certificates
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Certificate"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "certificate-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Secret"
+ "title" "Secret"
+ "jsonPath" ".spec.secretName"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "secret-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues: []
+
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+
+ id: stock-cluster-/cert-manager.io/v1/certificates
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-namespace-cert-manager.io.v1.certificates
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Certificate"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "certificate-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Secret"
+ "title" "Secret"
+ "jsonPath" ".spec.secretName"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "secret-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues: []
+
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+
+ id: stock-namespace-/cert-manager.io/v1/certificates
+
diff --git a/templates/CustomColumnsOverride/discovery.k8s.io.v1.endpointslices.yaml b/templates/CustomColumnsOverride/discovery.k8s.io.v1.endpointslices.yaml
index 9a5be10..60c584a 100644
--- a/templates/CustomColumnsOverride/discovery.k8s.io.v1.endpointslices.yaml
+++ b/templates/CustomColumnsOverride/discovery.k8s.io.v1.endpointslices.yaml
@@ -5,25 +5,17 @@ metadata:
name: factory-service-details-endpointslice
spec:
additionalPrinterColumns:
- - name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "P"
- "title" "pod"
- "backgroundColor" "#009596"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".targetRef.name"
- "namespace" "{reqsJsonPath[0]['.targetRef.namespace']['-']}"
- "factory" "pod-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Pod"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".targetRef.name"
+ "namespace" "{reqsJsonPath[0]['.targetRef.namespace']['-']}"
+ "factory" "pod-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .conditions.ready
name: Ready
type: bool
@@ -34,6 +26,4 @@ spec:
name: Terminating
type: bool
additionalPrinterColumnsUndefinedValues: []
-
-
id: factory-service-details-endpointslice
diff --git a/templates/CustomColumnsOverride/factory-node-images.yaml b/templates/CustomColumnsOverride/factory-node-images.yaml
index d3e51c0..7ae5861 100644
--- a/templates/CustomColumnsOverride/factory-node-images.yaml
+++ b/templates/CustomColumnsOverride/factory-node-images.yaml
@@ -20,14 +20,10 @@ spec:
bytesValue: "{reqsJsonPath[0]['.sizeBytes']['-']}"
format: true
precision: 1
-
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.node-image-id" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.node-image-size" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Message
value: "-"
-
- additionalPrinterColumnsTrimLengths:
- - key: ImageID
- value: 128
- - key: Size
- value: 63
id: "factory-node-images"
diff --git a/templates/CustomColumnsOverride/factory-status-conditions.yaml b/templates/CustomColumnsOverride/factory-status-conditions.yaml
index 8c5d44a..79fe694 100644
--- a/templates/CustomColumnsOverride/factory-status-conditions.yaml
+++ b/templates/CustomColumnsOverride/factory-status-conditions.yaml
@@ -35,6 +35,6 @@ spec:
value: "-"
additionalPrinterColumnsTrimLengths:
- - key: Message
- value: 63
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.status-message" . | nindent 4 }}
+
id: "factory-status-conditions"
diff --git a/templates/CustomColumnsOverride/helpers/columns-trim-lengths.tpl b/templates/CustomColumnsOverride/helpers/columns-trim-lengths.tpl
new file mode 100644
index 0000000..7c4083a
--- /dev/null
+++ b/templates/CustomColumnsOverride/helpers/columns-trim-lengths.tpl
@@ -0,0 +1,54 @@
+{{- define "incloud-web-resources.cco.columns-trim-lengths.name" -}}
+- key: Name
+ value: 64
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns-trim-lengths.namespace" -}}
+- key: Namespace
+ value: 64
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns-trim-lengths.labels" -}}
+- key: Labels
+ value: 1
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns-trim-lengths.pod-selector" -}}
+- key: Pod Selector
+ value: 5
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns-trim-lengths.container-image" -}}
+- key: Image
+ value: 63
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns-trim-lengths.node-image-id" -}}
+- key: ImageID
+ value: 128
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns-trim-lengths.node-image-size" -}}
+- key: Size
+ value: 63
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns-trim-lengths.status-message" -}}
+- key: Message
+ value: 64
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns-trim-lengths.rbac-resources" -}}
+- key: Resources
+ value: 10
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns-trim-lengths.rbac-role-ref" -}}
+- key: Role ref
+ value: 64
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns-trim-lengths.sa-secrets" -}}
+- key: Secrets
+ value: 1
+{{- end -}}
diff --git a/templates/CustomColumnsOverride/helpers/columns.tpl b/templates/CustomColumnsOverride/helpers/columns.tpl
new file mode 100644
index 0000000..f574258
--- /dev/null
+++ b/templates/CustomColumnsOverride/helpers/columns.tpl
@@ -0,0 +1,163 @@
+{{- define "incloud-web-resources.cco.columns.icon-link-block" -}}
+{{- $columnName := (default "" .columnName) -}}
+{{- $title := (default "" .title) -}}
+{{- $reqIndex := (default 0 .reqIndex) -}}
+{{- $type := (default "" .type) -}}
+{{- $jsonPath := (default "" .jsonPath) -}}
+{{- $factory := (default "" .factory) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+{{- $namespace := (default "" .namespace) -}}
+{{- $project := (default "" .project) -}}
+
+- jsonPath: {{ $jsonPath }}
+ name: {{ $columnName }}
+ type: factory
+ customProps:
+ disableEventBubbling: true
+ items:
+ - type: antdFlex
+ data:
+ id: resource-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: example-resource-badge
+ value: {{ $title }}
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" $reqIndex
+ "type" $type
+ "jsonPath" $jsonPath
+ "factory" $factory
+ "basePrefix" $basePrefix
+ "namespace" $namespace
+ "project" $project
+ ) | nindent 8
+ }}
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns.timeblock" -}}
+{{- $columnName := (default "" .columnName) -}}
+{{- $jsonPath := (default "" .jsonPath) -}}
+
+- jsonPath: {{ $jsonPath }}
+ name: {{ $columnName }}
+ type: factory
+ customProps:
+ disableEventBubbling: true
+ items:
+ {{ include "incloud-web-resources.factory.timeblock" (dict
+ "req" $jsonPath
+ ) | nindent 4
+ }}
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns.parsed-text" -}}
+{{- $columnName := (default "" .columnName) -}}
+{{- $jsonPath := (default "" .jsonPath) -}}
+{{- $text := (default "" .text) -}}
+
+- jsonPath: {{ $jsonPath }}
+ name: {{ $columnName }}
+ type: factory
+ customProps:
+ disableEventBubbling: true
+ items:
+ - type: parsedText
+ data:
+ id: {{ $columnName | nospace | lower }}-value
+ text: "{reqsJsonPath[0]['.spec.minReplicas']['-']}"
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns.labels" -}}
+- jsonPath: .metadata.labels
+ name: Labels
+ type: array
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns.owner" -}}
+- jsonPath: .metadata.ownerReferences[*].name
+ name: Owner
+ type: array
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns.pod-selector" -}}
+{{- $i := (default 0 .reqIndex) -}}
+{{- $type := (default "pod-selector" .type) -}}
+{{- $title := (default "Pod selector" .title) -}}
+{{- $jsonPath := (default ".spec.template.metadata.labels" .jsonPath) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+- jsonPath: "{{ $jsonPath }}"
+ name: Pod Selector
+ type: factory
+ customProps:
+ disableEventBubbling: true
+ items:
+ # - type: antdText
+ # data:
+ # id: search-icon
+ # text: "🔎"
+ # strong: true
+ # style:
+ # fontSize: 14
+
+ - type: LabelsToSearchParams
+ data:
+ id: {{ printf "%s-to-search-params" $type }}
+ reqIndex: {{$i}}
+ jsonPathToLabels: "{{ $jsonPath }}"
+ linkPrefix: "{{ .linkPrefix }}"
+ errorText: "No selector"
+ maxTextLength: 11
+ textLink: Search
+{{- end -}}
+
+{{- define "incloud-web-resources.cco.columns.labels-new" -}}
+{{- $i := (default 0 .reqIndex) -}}
+{{- $type := (default "labels" .type) -}}
+{{- $title := (default "Labels" .title) -}}
+{{- $jsonPath := (default ".metadata.labels" .jsonPath) -}}
+{{- $endpoint := (default "" .endpoint) -}}
+{{- $pathToValue := (default "/metadata/labels" .pathToValue) -}}
+{{- $maxTagTextLength := (default 35 .maxTagTextLength) -}}
+{{- $maxEditTagTextLength := (default 35 .maxEditTagTextLength) -}}
+{{- $notificationSuccessMessage := (default "Updated successfully" .notificationSuccessMessage) -}}
+{{- $notificationSuccessMessageDescription := (default "Labels have been updated" .notificationSuccessMessageDescription) -}}
+{{- $modalTitle := (default "Edit labels" .modalTitle) -}}
+{{- $modalDescriptionText := (default "" .modalDescriptionText) -}}
+{{- $inputLabel := (default "false" .inputLabel) -}}
+{{- $containerMarginTop := (default "-30px" .containerMarginTop) -}}
+{{- $linkPrefix := (default "" .linkPrefix) -}}
+
+- jsonPath: "{{ $jsonPath }}"
+ name: Labels
+ type: factory
+ customProps:
+ disableEventBubbling: true
+ items:
+ - type: Labels
+ data:
+ id: {{ printf "%s-editor" $type }}
+ reqIndex: {{ $i }}
+ jsonPathToLabels: "{{ $jsonPath }}"
+ selectProps:
+ maxTagTextLength: {{ $maxTagTextLength }}
+ notificationSuccessMessage: "{{ $notificationSuccessMessage }}"
+ notificationSuccessMessageDescription: "{{ $notificationSuccessMessageDescription }}"
+ modalTitle: "{{ $modalTitle }}"
+ modalDescriptionText: "{{ $modalDescriptionText }}"
+ inputLabel: "{{ $inputLabel }}"
+ #containerStyle:
+ # marginTop: "{{ $containerMarginTop }}"
+ maxEditTagTextLength: {{ $maxEditTagTextLength }}
+ endpoint: "{{ $endpoint }}"
+ pathToValue: "{{ $pathToValue }}"
+ editModalWidth: 650
+ paddingContainerEnd: "24px"
+ linkPrefix: "{{ $linkPrefix }}"
+ verticalViewList: true
+ readOnly: true
+{{- end -}}
diff --git a/templates/CustomColumnsOverride/helpers/icons.tpl b/templates/CustomColumnsOverride/helpers/icons.tpl
index 12a8e7e..e881e12 100644
--- a/templates/CustomColumnsOverride/helpers/icons.tpl
+++ b/templates/CustomColumnsOverride/helpers/icons.tpl
@@ -40,7 +40,7 @@
data:
id: header-badge
text: NS
- title: Nanesoace
+ title: Nanespace
style:
fontSize: 20px
lineHeight: 24px
diff --git a/templates/CustomColumnsOverride/helpers/links.tpl b/templates/CustomColumnsOverride/helpers/links.tpl
new file mode 100644
index 0000000..d78ca92
--- /dev/null
+++ b/templates/CustomColumnsOverride/helpers/links.tpl
@@ -0,0 +1,54 @@
+{{- define "incloud-web-resources.api-table.links.details" -}}
+{{- $i := (default 0 .reqIndex) -}}
+{{- $type := (default "" .type) -}}
+{{- $title := (default "" .title) -}}
+{{- $jsonPath := (default "" .jsonPath) -}}
+{{- $resource := (default "" .resource) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+{{- $ns := (default "" .namespace) -}}
+{{- $proj := (default "" .project) -}}
+
+{{- $nsPart := "" -}}
+{{- if ne $ns "" }}
+ {{- $nsPart = printf "%s/" $ns -}}
+{{- end }}
+{{- if ne $proj "" }}
+ {{- $nsPart = printf "%s%s/" $nsPart $proj -}}
+{{- end }}
+- type: parsedText
+ data:
+ id: {{ printf "%s-title" $type }}
+ strong: true
+ text: "{{ $title }}"
+ style:
+ fontWeight: bold
+- type: antdLink
+ data:
+ id: {{ printf "%s-link" $type }}
+ text: "{reqsJsonPath[{{$i}}]['{{ $jsonPath }}']['-']}"
+ href: "/{{ $basePrefix }}/{2}/{{$nsPart}}api-table/{{ $resource }}"
+{{- end -}}
+
+{{- define "incloud-web-resources.api-table.linkblock" -}}
+{{- $i := (default 0 .reqIndex) -}}
+{{- $type := (default "" .type) -}}
+{{- $jsonPath := (default "" .jsonPath) -}}
+{{- $resource := (default "" .resource) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+{{- $ns := (default "" .namespace) -}}
+{{- $proj := (default "" .project) -}}
+
+{{- $nsPart := "" -}}
+{{- if ne $ns "" }}
+ {{- $nsPart = printf "%s/" $ns -}}
+{{- end }}
+ {{- if ne $proj "" }}
+ {{- $nsPart = printf "%s%s/" $nsPart $proj -}}
+ {{- end }}
+
+- type: antdLink
+ data:
+ id: {{ printf "%s-link" $type }}
+ text: "{reqsJsonPath[{{$i}}]['{{ $jsonPath }}']['-']}"
+ href: "/{{ $basePrefix }}/{2}/{{$nsPart}}api-table/{{ $resource }}"
+{{- end -}}
diff --git a/templates/CustomColumnsOverride/instance.yaml b/templates/CustomColumnsOverride/instance.yaml
new file mode 100644
index 0000000..d30a85b
--- /dev/null
+++ b/templates/CustomColumnsOverride/instance.yaml
@@ -0,0 +1,81 @@
+{{ $instRes := .Values.instanceResource }}
+
+{{ if and ($instRes.deployDefaultForms) (not .Values.namespaceNavigation) }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-project-instance
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Instance"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "resource" "apps/v1/deployments"
+ "project" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}-{reqsJsonPath[0]['.metadata.name']['-']}"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Project"
+ "title" "Project"
+ "reqIndex" 0
+ "type" "project"
+ "jsonPath" ".metadata.namespace"
+ "factory" "project-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues: []
+ id: "stock-project-/{{ $instRes.apiGroup }}/{{ $instRes.apiVersion }}/{{ $instRes.resourceName }}"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: factory-project-instance-details
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Instance"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "resource" "apps/v1/deployments"
+ "project" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}-{reqsJsonPath[0]['.metadata.name']['-']}"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Project"
+ "title" "Project"
+ "reqIndex" 0
+ "type" "project"
+ "jsonPath" ".metadata.namespace"
+ "factory" "project-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues: []
+ id: factory-project-instance-details
+{{ end }}
diff --git a/templates/CustomColumnsOverride/k8s.container.yaml b/templates/CustomColumnsOverride/k8s.container.yaml
index 13fed82..aaeeb6f 100644
--- a/templates/CustomColumnsOverride/k8s.container.yaml
+++ b/templates/CustomColumnsOverride/k8s.container.yaml
@@ -34,10 +34,8 @@ spec:
value: "-"
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 63
- - key: Image
- value: 63
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.container-image" . | nindent 4 }}
id: "container-status-init-containers-list"
---
@@ -76,10 +74,8 @@ spec:
value: "-"
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 63
- - key: Image
- value: 63
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.container-image" . | nindent 4 }}
id: "container-status-containers-list"
---
@@ -102,8 +98,7 @@ spec:
name: Resources limits
type: array
additionalPrinterColumnsTrimLengths:
- - key: Image
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.container-image" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Name
value: "-"
@@ -138,8 +133,7 @@ spec:
name: Ports
type: array
additionalPrinterColumnsTrimLengths:
- - key: Image
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.container-image" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Name
value: "-"
@@ -151,4 +145,4 @@ spec:
value: "-"
- key: Ports
value: "-"
- id: container-spec-containers-list
\ No newline at end of file
+ id: container-spec-containers-list
diff --git a/templates/CustomColumnsOverride/k8s.roles.yaml b/templates/CustomColumnsOverride/k8s.roles.yaml
index 6f4a56d..2f6c527 100644
--- a/templates/CustomColumnsOverride/k8s.roles.yaml
+++ b/templates/CustomColumnsOverride/k8s.roles.yaml
@@ -26,10 +26,8 @@ spec:
type: array
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Resources
- value: 10
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.rbac-resources" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Api groups
value: "-"
diff --git a/templates/CustomColumnsOverride/networking.k8s.io.v1.networkpolicies.yaml b/templates/CustomColumnsOverride/networking.k8s.io.v1.networkpolicies.yaml
new file mode 100644
index 0000000..84c4184
--- /dev/null
+++ b/templates/CustomColumnsOverride/networking.k8s.io.v1.networkpolicies.yaml
@@ -0,0 +1,216 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-cluster-networking.k8s.io.v1.networkpolicies
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "NetworkPolicy"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "networkpolicy-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/networking.k8s.io/v1/networkpolicies/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=networking.k8s.io~v1~networkpolicies&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.podSelector.matchLabels"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: ClusterIP
+ value: "-"
+ - key: LoadbalancerIP
+ value: "-"
+ - key: Labels
+ value: "-"
+ - key: Pod Selector
+ value: "-"
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
+ id: stock-cluster-/networking.k8s.io/v1/networkpolicies
+
+{{ if .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-namespace-networking.k8s.io.v1.networkpolicies
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "NetworkPolicy"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "networkpolicy-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=networking.k8s.io~v1~networkpolicies&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.podSelector.matchLabels"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Labels
+ value: "-"
+ - key: Pod Selector
+ value: "-"
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
+ id: stock-namespace-/networking.k8s.io/v1/networkpolicies
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-project-networking.k8s.io.v1.networkpolicies
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "NetworkPolicy"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "networkpolicy-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=networking.k8s.io~v1~networkpolicies&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.podSelector.matchLabels"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Labels
+ value: "-"
+ - key: Pod Selector
+ value: "-"
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
+ id: stock-project-/networking.k8s.io/v1/networkpolicies
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-instance-networking.k8s.io.v1.networkpolicies
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "NetworkPolicy"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-networkpolicy-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=networking.k8s.io~v1~networkpolicies&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.podSelector.matchLabels"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Labels
+ value: "-"
+ - key: Pod Selector
+ value: "-"
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
+ id: stock-instance-/networking.k8s.io/v1/networkpolicies
+{{ end }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: factory-networkpolicy-details-port-mapping
+spec:
+ additionalPrinterColumns:
+ - jsonPath: .name
+ name: Name
+ type: string
+ - jsonPath: .port
+ name: Port
+ type: string
+ - jsonPath: .protocol
+ name: Protocol
+ type: string
+ - jsonPath: .targetPort
+ name: Pod port or name
+ type: string
+ id: factory-networkpolicy-details-port-mapping
diff --git a/templates/CustomColumnsOverride/policy.v1.poddisruptionbudgets.yaml b/templates/CustomColumnsOverride/policy.v1.poddisruptionbudgets.yaml
index 2fb6a1d..2757bce 100644
--- a/templates/CustomColumnsOverride/policy.v1.poddisruptionbudgets.yaml
+++ b/templates/CustomColumnsOverride/policy.v1.poddisruptionbudgets.yaml
@@ -5,64 +5,46 @@ metadata:
name: "stock-cluster-policy.v1.poddisruptionbudgets"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "PDB"
- "title" "poddisruptionbudgets"
- "backgroundColor" "#2b9af3"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "poddisruptionbudget-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
-
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "PodDisruptionBudget"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "poddisruptionbudget-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.selector.matchLabels"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues: []
id: "stock-cluster-/policy/v1/poddisruptionbudgets"
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -70,41 +52,105 @@ metadata:
name: "stock-namespace-policy.v1.poddisruptionbudgets"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "PDB"
- "title" "poddisruptionbudgets"
- "backgroundColor" "#2b9af3"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "poddisruptionbudget-details"
- ) | nindent 12
- }}
-
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "PodDisruptionBudget"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "poddisruptionbudget-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.selector.matchLabels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues: []
id: "stock-namespace-/policy/v1/poddisruptionbudgets"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-policy.v1.poddisruptionbudgets"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "PodDisruptionBudget"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "poddisruptionbudget-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.selector.matchLabels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+
+ additionalPrinterColumnsUndefinedValues: []
+
+ id: "stock-project-/policy/v1/poddisruptionbudgets"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-instance-policy.v1.poddisruptionbudgets"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "PodDisruptionBudget"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-poddisruptionbudget-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.selector.matchLabels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+
+ additionalPrinterColumnsUndefinedValues: []
+
+ id: "stock-instance-/policy/v1/poddisruptionbudgets"
+{{ end }}
diff --git a/templates/CustomColumnsOverride/project.yaml b/templates/CustomColumnsOverride/project.yaml
new file mode 100644
index 0000000..7410348
--- /dev/null
+++ b/templates/CustomColumnsOverride/project.yaml
@@ -0,0 +1,31 @@
+{{ $projRes := .Values.projectResource }}
+
+{{ if and ($projRes.deployDefaultForms) (not .Values.namespaceNavigation) }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-cluster-project
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "project"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "factory" "project-details"
+ "namespace" "{reqsJsonPath[0]['.metadata.name']['-']}"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues: []
+ id: "stock-cluster-/{{ $projRes.apiGroup }}/{{ $projRes.apiVersion }}/{{ $projRes.resourceName }}"
+{{ end }}
diff --git a/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.clusterrolebindings.yaml b/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.clusterrolebindings.yaml
index 69a8b11..fa73bdb 100644
--- a/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.clusterrolebindings.yaml
+++ b/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.clusterrolebindings.yaml
@@ -5,28 +5,24 @@ metadata:
name: stock-cluster-rbac.authorization.k8s.io.v1.clusterrolebindings
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "CRB"
- "title" "clusterrolebinding"
- "backgroundColor" "#008bad"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "factory" "clusterrolebinding-details"
- ) | nindent 12
- }}
- - jsonPath: .roleRef.name
- name: Role ref
- type: string
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ClusterRoleBinding"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "factory" "clusterrolebinding-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Role"
+ "title" "ClusterRole"
+ "jsonPath" ".roleRef.name"
+ "factory" "clusterrole-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .subjects[?(@.kind=="ServiceAccount")].name
name: Service accounts
type: array
@@ -36,16 +32,14 @@ spec:
- jsonPath: .subjects[?(@.kind=="Group")].name
name: Groups
type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.rbac-role-ref" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Role ref
value: "-"
@@ -57,9 +51,4 @@ spec:
value: "-"
- key: Namespace
value: "All namespaces"
- additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Role ref
- value: 64
id: stock-cluster-/rbac.authorization.k8s.io/v1/clusterrolebindings
diff --git a/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.clusterroles.yaml b/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.clusterroles.yaml
index 4b00aab..5bee6e0 100644
--- a/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.clusterroles.yaml
+++ b/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.clusterroles.yaml
@@ -5,36 +5,21 @@ metadata:
name: stock-cluster-rbac.authorization.k8s.io.v1.clusterroles
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "CR"
- "title" "clusterrole"
- "backgroundColor" "#c46100"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "factory" "clusterrole-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ClusterRole"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "factory" "clusterrole-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- id: stock-cluster-/rbac.authorization.k8s.io/v1/clusterroles
\ No newline at end of file
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ id: stock-cluster-/rbac.authorization.k8s.io/v1/clusterroles
diff --git a/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.rolebindings.yaml b/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.rolebindings.yaml
index 9cf0fdd..408ccb9 100644
--- a/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.rolebindings.yaml
+++ b/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.rolebindings.yaml
@@ -5,48 +5,36 @@ metadata:
name: stock-cluster-rbac.authorization.k8s.io.v1.rolebindings
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "RB"
- "title" "rolebinding"
- "backgroundColor" "#008bad"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "rolebinding-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .roleRef.name
- name: Role ref
- type: string
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "RoleBinding"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "rolebinding-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Role"
+ "title" "Role"
+ "jsonPath" ".roleRef.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "role-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .subjects[?(@.kind=="ServiceAccount")].name
name: Service accounts
type: array
@@ -56,16 +44,11 @@ spec:
- jsonPath: .subjects[?(@.kind=="Group")].name
name: Groups
type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsUndefinedValues:
- key: Role ref
value: "-"
@@ -78,12 +61,11 @@ spec:
- key: Namespace
value: "-"
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Role ref
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.rbac-role-ref" . | nindent 4 }}
id: stock-cluster-/rbac.authorization.k8s.io/v1/rolebindings
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -91,29 +73,83 @@ metadata:
name: stock-namespace-rbac.authorization.k8s.io.v1.rolebindings
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "RB"
- "title" "rolebinding"
- "backgroundColor" "#008bad"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "rolebinding-details"
- ) | nindent 12
- }}
- - jsonPath: .roleRef.name
- name: Role ref
- type: string
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "RoleBinding"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "rolebinding-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Role"
+ "title" "Role"
+ "jsonPath" ".roleRef.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "role-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .subjects[?(@.kind=="ServiceAccount")].name
+ name: Service accounts
+ type: array
+ - jsonPath: .subjects[?(@.kind=="User")].name
+ name: Users
+ type: array
+ - jsonPath: .subjects[?(@.kind=="Group")].name
+ name: Groups
+ type: array
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Role ref
+ value: "-"
+ - key: Users
+ value: "-"
+ - key: Groups
+ value: "-"
+ - key: Service accounts
+ value: "-"
+ - key: Namespace
+ value: "All namespaces"
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.rbac-role-ref" . | nindent 4 }}
+ id: stock-namespace-/rbac.authorization.k8s.io/v1/rolebindings
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-project-rbac.authorization.k8s.io.v1.rolebindings
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "RoleBinding"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "rolebinding-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Role"
+ "title" "Role"
+ "jsonPath" ".roleRef.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "role-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .subjects[?(@.kind=="ServiceAccount")].name
name: Service accounts
type: string
@@ -123,16 +159,11 @@ spec:
- jsonPath: .subjects[?(@.kind=="Group")].name
name: Groups
type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsUndefinedValues:
- key: Role ref
value: "-"
@@ -145,8 +176,65 @@ spec:
- key: Namespace
value: "All namespaces"
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.rbac-role-ref" . | nindent 4 }}
+ id: stock-project-/rbac.authorization.k8s.io/v1/rolebindings
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-instance-rbac.authorization.k8s.io.v1.rolebindings
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "RoleBinding"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "rolebinding-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Role"
+ "title" "Role"
+ "jsonPath" ".roleRef.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "role-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .subjects[?(@.kind=="ServiceAccount")].name
+ name: Service accounts
+ type: string
+ - jsonPath: .subjects[?(@.kind=="User")].name
+ name: Users
+ type: array
+ - jsonPath: .subjects[?(@.kind=="Group")].name
+ name: Groups
+ type: array
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
- key: Role ref
- value: 64
- id: stock-namespace-/rbac.authorization.k8s.io/v1/rolebindings
+ value: "-"
+ - key: Users
+ value: "-"
+ - key: Groups
+ value: "-"
+ - key: Service accounts
+ value: "-"
+ - key: Namespace
+ value: "All namespaces"
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.rbac-role-ref" . | nindent 4 }}
+ id: stock-instance-/rbac.authorization.k8s.io/v1/rolebindings
+{{ end }}
diff --git a/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.roles.yaml b/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.roles.yaml
index 3295c60..35a47ca 100644
--- a/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.roles.yaml
+++ b/templates/CustomColumnsOverride/rbac.authorization.k8s.io.v1.roles.yaml
@@ -5,62 +5,38 @@ metadata:
name: stock-cluster-rbac.authorization.k8s.io.v1.roles
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "R"
- "title" "role"
- "backgroundColor" "#c46100"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "role-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Role"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "role-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Namespace
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.namespace" . | nindent 4 }}
id: stock-cluster-/rbac.authorization.k8s.io/v1/roles
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -68,39 +44,81 @@ metadata:
name: stock-namespace-rbac.authorization.k8s.io.v1.roles
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "R"
- "title" "role"
- "backgroundColor" "#c46100"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "role-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Role"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "role-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Namespace
- value: 64
- id: stock-namespace-/rbac.authorization.k8s.io/v1/roles
\ No newline at end of file
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.namespace" . | nindent 4 }}
+ id: stock-namespace-/rbac.authorization.k8s.io/v1/roles
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-project-rbac.authorization.k8s.io.v1.roles
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Role"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "role-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.namespace" . | nindent 4 }}
+ id: stock-project-/rbac.authorization.k8s.io/v1/roles
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-instance-rbac.authorization.k8s.io.v1.roles
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Role"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "role-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.namespace" . | nindent 4 }}
+ id: stock-instance-/rbac.authorization.k8s.io/v1/roles
+{{ end }}
diff --git a/templates/CustomColumnsOverride/v1.configmaps.yaml b/templates/CustomColumnsOverride/v1.configmaps.yaml
index 152acc3..3ecf4f4 100644
--- a/templates/CustomColumnsOverride/v1.configmaps.yaml
+++ b/templates/CustomColumnsOverride/v1.configmaps.yaml
@@ -5,63 +5,40 @@ metadata:
name: "stock-cluster-v1.configmaps"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "CM"
- "title" "configmap"
- "backgroundColor" "#b48c78ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "configmap-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ConfigMap"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "configmap-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Namespace
value: "-"
id: "stock-cluster-/v1/configmaps"
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -69,41 +46,81 @@ metadata:
name: "stock-namespace-v1.configmaps"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "CM"
- "title" "configmap"
- "backgroundColor" "#b48c78ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "configmap-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ConfigMap"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "configmap-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
id: "stock-namespace-/v1/configmaps"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-v1.configmaps"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ConfigMap"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "configmap-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ id: "stock-project-/v1/configmaps"
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-instance-v1.configmaps"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ConfigMap"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-configmap-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ id: "stock-instance-/v1/configmaps"
+{{ end }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -111,58 +128,34 @@ metadata:
name: "cluster-v1.configmaps"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "CM"
- "title" "configmap"
- "backgroundColor" "#b48c78ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "configmap-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ConfigMap"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "configmap-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Namespace
value: "-"
diff --git a/templates/CustomColumnsOverride/v1.nodes.yaml b/templates/CustomColumnsOverride/v1.nodes.yaml
index 099eb62..e356e6e 100644
--- a/templates/CustomColumnsOverride/v1.nodes.yaml
+++ b/templates/CustomColumnsOverride/v1.nodes.yaml
@@ -5,42 +5,60 @@ metadata:
name: stock-cluster-v1.nodes
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "N"
- "title" "node"
- "backgroundColor" "#8476d1"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "factory" "node-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Node"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "factory" "node-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- name: Status
type: factory
customProps:
disableEventBubbling: true
items:
{{ include "incloud-web-resources.factory.statuses.node" . | nindent 8 }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ id: stock-cluster-/v1/nodes
+
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-namespace-v1.nodes
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Node"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "factory" "node-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - name: Status
type: factory
customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.factory.statuses.node" . | nindent 8 }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- id: stock-cluster-/v1/nodes
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ id: stock-namespace-/v1/nodes
diff --git a/templates/CustomColumnsOverride/v1.pods.yaml b/templates/CustomColumnsOverride/v1.pods.yaml
index 799c8a2..cdc97e2 100644
--- a/templates/CustomColumnsOverride/v1.pods.yaml
+++ b/templates/CustomColumnsOverride/v1.pods.yaml
@@ -5,45 +5,27 @@ metadata:
name: "factory-node-details-v1.pods"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "P"
- "title" "pod"
- "backgroundColor" "#009596"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "pod-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Pod"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "pod-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .spec.restartPolicy
name: Restart Policy
type: string
@@ -65,78 +47,65 @@ spec:
disableEventBubbling: true
items:
{{ include "incloud-web-resources.factory.statuses.pod" . | nindent 8 }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsUndefinedValues:
- key: Node
value: Unschedulable
- key: Pod IP
value: NotAllocated
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
id: "factory-node-details-/v1/pods"
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
metadata:
- name: "factory-v1.pods"
+ name: "stock-cluster-v1.pods"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "P"
- "title" "pod"
- "backgroundColor" "#009596"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "pod-details"
- ) | nindent 12
- }}
- - name: Node
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "N"
- "title" "node"
- "backgroundColor" "#8476d1"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".spec.nodeName"
- "factory" "node-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Pod"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "pod-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Node"
+ "title" "Node"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".spec.nodeName"
+ "factory" "node-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .spec.restartPolicy
name: Restart Policy
type: string
- jsonPath: .status.podIP
name: Pod IP
type: string
- # - jsonPath: .status.conditions[?(@.type=="ContainersReady" || @.type=="PodReady")].status
+ # - jsonPath: .status.conditions[?(@.type=="ContainersReady")].status
# name: Status Containers
# type: string
# - jsonPath: .status.conditions[?(@.type=="PodScheduled")].status
@@ -151,91 +120,49 @@ spec:
disableEventBubbling: true
items:
{{ include "incloud-web-resources.factory.statuses.pod" . | nindent 8 }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsUndefinedValues:
- key: Node
value: Unschedulable
- key: Pod IP
value: NotAllocated
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- id: "factory-/v1/pods"
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ id: "stock-cluster-/v1/pods"
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
metadata:
- name: "stock-cluster-v1.pods"
+ name: "stock-namespace-v1.pods"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "P"
- "title" "pod"
- "backgroundColor" "#009596"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "pod-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .spec.nodeName
- name: Node
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "N"
- "title" "node"
- "backgroundColor" "#8476d1"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".spec.nodeName"
- "factory" "node-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Pod"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "pod-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Node"
+ "title" "Node"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".spec.nodeName"
+ "factory" "node-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .spec.restartPolicy
name: Restart Policy
type: string
@@ -257,78 +184,183 @@ spec:
disableEventBubbling: true
items:
{{ include "incloud-web-resources.factory.statuses.pod" . | nindent 8 }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Node
+ value: Unschedulable
+ - key: Pod IP
+ value: NotAllocated
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ id: "stock-namespace-/v1/pods"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-v1.pods"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Pod"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "pod-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Node"
+ "title" "Node"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".spec.nodeName"
+ "factory" "node-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .spec.restartPolicy
+ name: Restart Policy
+ type: string
+ - jsonPath: .status.podIP
+ name: Pod IP
+ type: string
+ # - jsonPath: .status.conditions[?(@.type=="ContainersReady")].status
+ # name: Status Containers
+ # type: string
+ # - jsonPath: .status.conditions[?(@.type=="PodScheduled")].status
+ # name: Status Scheduled
+ # type: string
+ - jsonPath: .status.qosClass
+ name: QOS
+ type: string
+ - name: Status
type: factory
customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.factory.statuses.pod" . | nindent 8 }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsUndefinedValues:
- key: Node
value: Unschedulable
- key: Pod IP
value: NotAllocated
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- id: "stock-cluster-/v1/pods"
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ id: "stock-project-/v1/pods"
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
metadata:
- name: "stock-namespace-v1.pods"
+ name: "stock-instance-v1.pods"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "P"
- "title" "pod"
- "backgroundColor" "#009596"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "pod-details"
- ) | nindent 12
- }}
- - name: Node
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Pod"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-pod-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Node"
+ "title" "Node"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".spec.nodeName"
+ "factory" "node-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .spec.restartPolicy
+ name: Restart Policy
+ type: string
+ - jsonPath: .status.podIP
+ name: Pod IP
+ type: string
+ # - jsonPath: .status.conditions[?(@.type=="ContainersReady")].status
+ # name: Status Containers
+ # type: string
+ # - jsonPath: .status.conditions[?(@.type=="PodScheduled")].status
+ # name: Status Scheduled
+ # type: string
+ - jsonPath: .status.qosClass
+ name: QOS
+ type: string
+ - name: Status
type: factory
customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "N"
- "title" "node"
- "backgroundColor" "#8476d1"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".spec.nodeName"
- "factory" "node-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.factory.statuses.pod" . | nindent 8 }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Node
+ value: Unschedulable
+ - key: Pod IP
+ value: NotAllocated
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ id: "stock-instance-/v1/pods"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "factory-instance-pods-details"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Pod"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-pod-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Node"
+ "title" "Node"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".spec.nodeName"
+ "factory" "node-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .spec.restartPolicy
name: Restart Policy
type: string
- jsonPath: .status.podIP
name: Pod IP
type: string
- # - jsonPath: .status.conditions[?(@.type=="ContainersReady")].status
+ # - jsonPath: .status.conditions[?(@.type=="ContainersReady" || @.type=="PodReady")].status
# name: Status Containers
# type: string
# - jsonPath: .status.conditions[?(@.type=="PodScheduled")].status
@@ -343,22 +375,79 @@ spec:
disableEventBubbling: true
items:
{{ include "incloud-web-resources.factory.statuses.pod" . | nindent 8 }}
- - jsonPath: .metadata.creationTimestamp
- name: Created
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Node
+ value: Unschedulable
+ - key: Pod IP
+ value: NotAllocated
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ id: "factory-instance-pods-details"
+{{ end }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "factory-v1.pods"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Pod"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "pod-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Node"
+ "title" "Node"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".spec.nodeName"
+ "factory" "node-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .spec.restartPolicy
+ name: Restart Policy
+ type: string
+ - jsonPath: .status.podIP
+ name: Pod IP
+ type: string
+ # - jsonPath: .status.conditions[?(@.type=="ContainersReady" || @.type=="PodReady")].status
+ # name: Status Containers
+ # type: string
+ # - jsonPath: .status.conditions[?(@.type=="PodScheduled")].status
+ # name: Status Scheduled
+ # type: string
+ - jsonPath: .status.qosClass
+ name: QOS
+ type: string
+ - name: Status
type: factory
customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.factory.statuses.pod" . | nindent 8 }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Node
value: Unschedulable
- key: Pod IP
value: NotAllocated
- additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- id: "stock-namespace-/v1/pods"
+ id: "factory-/v1/pods"
diff --git a/templates/CustomColumnsOverride/v1.replicationcontrollers.yaml b/templates/CustomColumnsOverride/v1.replicationcontrollers.yaml
index e72804e..bffa8bc 100644
--- a/templates/CustomColumnsOverride/v1.replicationcontrollers.yaml
+++ b/templates/CustomColumnsOverride/v1.replicationcontrollers.yaml
@@ -5,68 +5,49 @@ metadata:
name: "stock-cluster-apps.v1.replicationcontroller"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "RC"
- "title" "replicationcontroller"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "replicationcontroller-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .metadata.ownerReferences[*].name
- name: Owner
- type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ReplicationController"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "replicationcontroller-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/daemonsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=apps~v1~daemonsets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
id: "stock-cluster-/v1/replicationcontrollers"
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -74,49 +55,117 @@ metadata:
name: "stock-namespace-apps.v1.replicationcontroller"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "RC"
- "title" "replicationcontroller"
- "backgroundColor" "#004080"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "replicationcontroller-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.labels
- name: Labels
- type: string
- - jsonPath: .metadata.ownerReferences[*].name
- name: Owner
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ReplicationController"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "replicationcontroller-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/daemonsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~daemonsets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
id: "stock-namespace-/v1/replicationcontrollers"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-apps.v1.replicationcontroller"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ReplicationController"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "replicationcontroller-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/daemonsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~daemonsets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ id: "stock-project-/v1/replicationcontrollers"
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-instance-apps.v1.replicationcontroller"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ReplicationController"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-replicationcontroller-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/daemonsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~daemonsets&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ id: "stock-instance-/v1/replicationcontrollers"
+{{ end }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
diff --git a/templates/CustomColumnsOverride/v1.secrets.yaml b/templates/CustomColumnsOverride/v1.secrets.yaml
index b4f94cc..efa6802 100644
--- a/templates/CustomColumnsOverride/v1.secrets.yaml
+++ b/templates/CustomColumnsOverride/v1.secrets.yaml
@@ -5,63 +5,40 @@ metadata:
name: "stock-cluster-v1.secrets"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "S"
- "title" "secret"
- "backgroundColor" "#c46100"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "secret-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Secret"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "secret-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .type
name: Type
type: string
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
id: "stock-cluster-/v1/secrets"
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -69,43 +46,96 @@ metadata:
name: "stock-namespace-v1.secrets"
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "S"
- "title" "secret"
- "backgroundColor" "#c46100"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "secret-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Secret"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "secret-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .type
name: Type
type: string
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
additionalPrinterColumnsUndefinedValues:
- key: Namespace
value: "-"
id: "stock-namespace-/v1/secrets"
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-project-v1.secrets"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Secret"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "secret-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .type
+ name: Type
+ type: string
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Namespace
+ value: "-"
+ id: "stock-project-/v1/secrets"
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: "stock-instance-v1.secrets"
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Secret"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-secret-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .type
+ name: Type
+ type: string
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Namespace
+ value: "-"
+ id: "stock-instance-/v1/secrets"
+{{ end }}
diff --git a/templates/CustomColumnsOverride/v1.serviceaccounts.yaml b/templates/CustomColumnsOverride/v1.serviceaccounts.yaml
index c90e27a..6029ae2 100644
--- a/templates/CustomColumnsOverride/v1.serviceaccounts.yaml
+++ b/templates/CustomColumnsOverride/v1.serviceaccounts.yaml
@@ -5,70 +5,46 @@ metadata:
name: stock-cluster-v1.serviceaccounts
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "SA"
- "title" "serviceaccount"
- "backgroundColor" "#b48c78ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "serviceaccount-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ServiceAccount"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "serviceaccount-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .secrets[*].name
name: Secrets
type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsUndefinedValues:
- key: Namespace
value: "-"
- key: Secrets
value: "-"
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Secrets
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.sa-secrets" . | nindent 4 }}
id: stock-cluster-/v1/serviceaccounts
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -76,49 +52,102 @@ metadata:
name: stock-namespace-v1.serviceaccounts
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "SA"
- "title" "serviceaccount"
- "backgroundColor" "#b48c78ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "serviceaccount-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ServiceAccount"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "serviceaccount-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
- jsonPath: .secrets
name: Secrets
type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsUndefinedValues:
- key: Secrets
value: "-"
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Secrets
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.sa-secrets" . | nindent 4 }}
id: stock-namespace-/v1/serviceaccounts
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-project-v1.serviceaccounts
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ServiceAccount"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "serviceaccount-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .secrets
+ name: Secrets
+ type: array
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Secrets
+ value: "-"
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.sa-secrets" . | nindent 4 }}
+ id: stock-project-/v1/serviceaccounts
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-instance-v1.serviceaccounts
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ServiceAccount"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-serviceaccount-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - jsonPath: .secrets
+ name: Secrets
+ type: array
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: Secrets
+ value: "-"
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.sa-secrets" . | nindent 4 }}
+ id: stock-instance-/v1/serviceaccounts
+{{ end }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -126,24 +155,15 @@ metadata:
name: factory-serviceaccount-secrets
spec:
additionalPrinterColumns:
- - jsonPath: .name
- name: Name
- type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "S"
- "title" "secret"
- "backgroundColor" "#c46100"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "secret-details"
- ) | nindent 12
- }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "ServiceAccount"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "secret-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
id: factory-serviceaccount-secrets
diff --git a/templates/CustomColumnsOverride/v1.services.yaml b/templates/CustomColumnsOverride/v1.services.yaml
index be2432c..c45920e 100644
--- a/templates/CustomColumnsOverride/v1.services.yaml
+++ b/templates/CustomColumnsOverride/v1.services.yaml
@@ -5,67 +5,63 @@ metadata:
name: stock-cluster-v1.services
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Service"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "service-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Namespace"
+ "title" "Namespace"
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "S"
- "title" "service"
- "backgroundColor" "#6ca100"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "service-details"
- ) | nindent 12
- }}
- - jsonPath: .metadata.namespace
- name: Namespace
+ - type: parsedText
+ data:
+ id: loadbalancerip-value
+ text: "{reqsJsonPath[0]['.spec.clusterIP']['-']}"
+ name: ClusterIP
+ jsonPath: .spec.clusterIP
type: factory
- customProps:
+ - customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 12
- }}
- - jsonPath: .spec.clusterIP
- name: ClusterIP
- type: string
- - jsonPath: .spec.loadBalancerIP
+ - type: parsedText
+ data:
+ id: loadbalancerip-value
+ text: "{reqsJsonPath[0]['.status.loadBalancer.ingress[0].ip']['-']}"
name: LoadbalancerIP
- type: string
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .spec.selector
- name: Pod Selector
- type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
+ jsonPath: .status.loadBalancer.ingress[0].ip
type: factory
- customProps:
- disableEventBubbling: true
- items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/services/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~services&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.selector"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsUndefinedValues:
- key: ClusterIP
value: "-"
@@ -76,14 +72,12 @@ spec:
- key: Pod Selector
value: "-"
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
- - key: Labels
- value: 1
- - key: Pod Selector
- value: 1
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
id: stock-cluster-/v1/services
+{{ if .Values.namespaceNavigation }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
@@ -91,48 +85,53 @@ metadata:
name: stock-namespace-v1.services
spec:
additionalPrinterColumns:
- - jsonPath: .metadata.name
- name: Name
- type: factory
- customProps:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Service"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "service-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.icon" (dict
- "text" "S"
- "title" "service"
- "backgroundColor" "#6ca100"
- )| nindent 8
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".metadata.name"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- "factory" "service-details"
- ) | nindent 12
- }}
- - jsonPath: .spec.clusterIP
+ - type: parsedText
+ data:
+ id: loadbalancerip-value
+ text: "{reqsJsonPath[0]['.spec.clusterIP']['-']}"
name: ClusterIP
- type: string
- - jsonPath: .spec.loadBalancerIP
- name: LoadbalancerIP
- type: string
- - jsonPath: .metadata.labels
- name: Labels
- type: array
- - jsonPath: .spec.selector
- name: Pod Selector
- type: array
- - jsonPath: .metadata.creationTimestamp
- name: Created
+ jsonPath: .spec.clusterIP
type: factory
- customProps:
+ - customProps:
disableEventBubbling: true
items:
- {{ include "incloud-web-resources.factory.timeblock" (dict
- "req" ".metadata.creationTimestamp"
- ) | nindent 8
- }}
+ - type: parsedText
+ data:
+ id: loadbalancerip-value
+ text: "{reqsJsonPath[0]['.status.loadBalancer.ingress[0].ip']['-']}"
+ name: LoadbalancerIP
+ jsonPath: .status.loadBalancer.ingress[0].ip
+ type: factory
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~services&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.selector"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
additionalPrinterColumnsUndefinedValues:
- key: ClusterIP
value: "-"
@@ -143,14 +142,148 @@ spec:
- key: Pod Selector
value: "-"
additionalPrinterColumnsTrimLengths:
- - key: Name
- value: 64
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
+ id: stock-namespace-/v1/services
+{{ else }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-project-v1.services
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Service"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "service-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - customProps:
+ disableEventBubbling: true
+ items:
+ - type: parsedText
+ data:
+ id: loadbalancerip-value
+ text: "{reqsJsonPath[0]['.spec.clusterIP']['-']}"
+ name: ClusterIP
+ jsonPath: .spec.clusterIP
+ type: factory
+ - customProps:
+ disableEventBubbling: true
+ items:
+ - type: parsedText
+ data:
+ id: loadbalancerip-value
+ text: "{reqsJsonPath[0]['.status.loadBalancer.ingress[0].ip']['-']}"
+ name: LoadbalancerIP
+ type: factory
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~services&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.selector"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: ClusterIP
+ value: "-"
+ - key: LoadbalancerIP
+ value: "-"
- key: Labels
- value: 1
+ value: "-"
- key: Pod Selector
- value: 1
- id: stock-namespace-/v1/services
+ value: "-"
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
+ id: stock-project-/v1/services
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomColumnsOverride
+metadata:
+ name: stock-instance-v1.services
+spec:
+ additionalPrinterColumns:
+ {{ include "incloud-web-resources.cco.columns.icon-link-block" (dict
+ "columnName" "Name"
+ "title" "Service"
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".metadata.name"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "project" "{4}"
+ "factory" "instance-service-details"
+ "basePrefix" .Values.basePrefix
+ ) | nindent 4
+ }}
+ - customProps:
+ disableEventBubbling: true
+ items:
+ - type: parsedText
+ data:
+ id: loadbalancerip-value
+ text: "{reqsJsonPath[0]['.spec.clusterIP']['-']}"
+ name: ClusterIP
+ jsonPath: .spec.clusterIP
+ type: factory
+ - customProps:
+ disableEventBubbling: true
+ items:
+ - type: parsedText
+ data:
+ id: loadbalancerip-value
+ text: "{reqsJsonPath[0]['.status.loadBalancer.ingress[0].ip']['-']}"
+ name: LoadbalancerIP
+ type: factory
+ {{ include "incloud-web-resources.cco.columns.labels-new" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~services&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.pod-selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.selector"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 4
+ }}
+ {{ include "incloud-web-resources.cco.columns.timeblock" (dict
+ "columnName" "Created"
+ "jsonPath" ".metadata.creationTimestamp"
+ ) | nindent 4
+ }}
+ additionalPrinterColumnsUndefinedValues:
+ - key: ClusterIP
+ value: "-"
+ - key: LoadbalancerIP
+ value: "-"
+ - key: Labels
+ value: "-"
+ - key: Pod Selector
+ value: "-"
+ additionalPrinterColumnsTrimLengths:
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.name" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.labels" . | nindent 4 }}
+ {{ include "incloud-web-resources.cco.columns-trim-lengths.pod-selector" . | nindent 4 }}
+ id: stock-instance-/v1/services
+{{ end }}
---
apiVersion: front.in-cloud.io/v1alpha1
kind: CustomColumnsOverride
diff --git a/templates/CustomFormOverride/argocd/argoproj.io.v1alpha1.applications.yaml b/templates/CustomFormOverride/addons/argocd/argoproj.io.v1alpha1.applications.yaml
similarity index 100%
rename from templates/CustomFormOverride/argocd/argoproj.io.v1alpha1.applications.yaml
rename to templates/CustomFormOverride/addons/argocd/argoproj.io.v1alpha1.applications.yaml
diff --git a/templates/CustomFormOverride/argocd/argoproj.io.v1alpha1.applicationsets.yaml b/templates/CustomFormOverride/addons/argocd/argoproj.io.v1alpha1.applicationsets.yaml
similarity index 100%
rename from templates/CustomFormOverride/argocd/argoproj.io.v1alpha1.applicationsets.yaml
rename to templates/CustomFormOverride/addons/argocd/argoproj.io.v1alpha1.applicationsets.yaml
diff --git a/templates/CustomFormOverride/argocd/argoproj.io.v1alpha1.appprojects.yaml b/templates/CustomFormOverride/addons/argocd/argoproj.io.v1alpha1.appprojects.yaml
similarity index 100%
rename from templates/CustomFormOverride/argocd/argoproj.io.v1alpha1.appprojects.yaml
rename to templates/CustomFormOverride/addons/argocd/argoproj.io.v1alpha1.appprojects.yaml
diff --git a/templates/CustomFormOverride/instances.yaml b/templates/CustomFormOverride/instances.yaml
new file mode 100644
index 0000000..ba6001d
--- /dev/null
+++ b/templates/CustomFormOverride/instances.yaml
@@ -0,0 +1,67 @@
+{{ $instRes := .Values.instanceResource }}
+
+{{ if and ($instRes.deployDefaultForms) (not .Values.namespaceNavigation) }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomFormsOverride
+metadata:
+ name: default-instances
+spec:
+ customizationId: "default-/{{ $instRes.apiGroup }}/{{ $instRes.apiVersion }}/{{ $instRes.resourceName }}"
+ hidden:
+ - - apiVersion
+ - - kind
+ - - status
+ - - spec
+ - compositeDeletePolicy
+ - - spec
+ - publishConnectionDetailsTo
+ - - spec
+ - compositionRef
+ - - spec
+ - compositionRevisionRef
+ - - spec
+ - compositionRevisionSelector
+ - - spec
+ - compositionSelector
+ - - spec
+ - compositionUpdatePolicy
+ - - spec
+ - resourceRef
+ - - spec
+ - writeConnectionSecretToRef
+ - - spec
+ - spi
+ - - spec
+ - chatid
+ - - metadata
+ - creationTimestamp
+ - - metadata
+ - namespace
+ - - metadata
+ - deletionGracePeriodSeconds
+ - - metadata
+ - deletionTimestamp
+ - - metadata
+ - finalizers
+ - - metadata
+ - generateName
+ - - metadata
+ - generation
+ - - metadata
+ - managedFields
+ - - metadata
+ - labels
+ - - metadata
+ - annotations
+ - - metadata
+ - ownerReferences
+ - - metadata
+ - resourceVersion
+ - - metadata
+ - selfLink
+ - - metadata
+ - uid
+ schema: {}
+ strategy: merge
+{{ end }}
diff --git a/templates/CustomFormOverride/projects.yaml b/templates/CustomFormOverride/projects.yaml
new file mode 100644
index 0000000..bc6c2a0
--- /dev/null
+++ b/templates/CustomFormOverride/projects.yaml
@@ -0,0 +1,69 @@
+{{ $projRes := .Values.projectResource }}
+
+{{ if and ($projRes.deployDefaultForms) (not .Values.namespaceNavigation) }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomFormsOverride
+metadata:
+ name: default-projects
+spec:
+ customizationId: "default-/{{ $projRes.apiGroup }}/{{ $projRes.apiVersion }}/{{ $projRes.resourceName }}"
+ hidden:
+ - - apiVersion
+ - - kind
+ - - status
+ - - spec
+ - claimRef
+ - - spec
+ - compositeDeletePolicy
+ - - spec
+ - publishConnectionDetailsTo
+ - - spec
+ - compositionRef
+ - - spec
+ - resourceRefs
+ - - spec
+ - compositionRevisionRef
+ - - spec
+ - compositionRevisionSelector
+ - - spec
+ - compositionSelector
+ - - spec
+ - compositionUpdatePolicy
+ - - spec
+ - resourceRef
+ - - spec
+ - writeConnectionSecretToRef
+ - - spec
+ - state
+ - - metadata
+ - creationTimestamp
+ - - metadata
+ - namespace
+ - - metadata
+ - deletionGracePeriodSeconds
+ - - metadata
+ - deletionTimestamp
+ - - metadata
+ - finalizers
+ - - metadata
+ - generateName
+ - - metadata
+ - generation
+ - - metadata
+ - managedFields
+ - - metadata
+ - labels
+ - - metadata
+ - annotations
+ - - metadata
+ - ownerReferences
+ - - metadata
+ - resourceVersion
+ - - metadata
+ - selfLink
+ - - metadata
+ - uid
+ schema: {}
+ strategy: merge
+{{ end }}
diff --git a/templates/CustomFormsPrefill/instances.yaml b/templates/CustomFormsPrefill/instances.yaml
new file mode 100644
index 0000000..b82860c
--- /dev/null
+++ b/templates/CustomFormsPrefill/instances.yaml
@@ -0,0 +1,20 @@
+{{ $instRes := .Values.instanceResource }}
+
+{{ if and ($instRes.deployDefaultForms) (not .Values.namespaceNavigation) }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomFormsPrefill
+metadata:
+ name: default-instances
+spec:
+ customizationId: "default-/{{ $instRes.apiGroup }}/{{ $instRes.apiVersion }}/{{ $instRes.resourceName }}"
+ values:
+ - path:
+ - metadata
+ - name
+ value: example
+ - path:
+ - spec
+ - description
+ value: Instance description
+{{ end }}
diff --git a/templates/CustomFormsPrefill/projects.yaml b/templates/CustomFormsPrefill/projects.yaml
new file mode 100644
index 0000000..b23a054
--- /dev/null
+++ b/templates/CustomFormsPrefill/projects.yaml
@@ -0,0 +1,28 @@
+{{ $projRes := .Values.projectResource }}
+
+{{ if and ($projRes.deployDefaultForms) (not .Values.namespaceNavigation) }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: CustomFormsPrefill
+metadata:
+ name: default-projects
+spec:
+ customizationId: "default-/{{ $projRes.apiGroup }}/{{ $projRes.apiVersion }}/{{ $projRes.resourceName }}"
+ values:
+ - path:
+ - metadata
+ - name
+ value: example
+ - path:
+ - spec
+ - businessName
+ value: Business name
+ - path:
+ - spec
+ - description
+ value: Project description
+ - path:
+ - spec
+ - prefix
+ value: prefix
+{{ end }}
diff --git a/templates/Factory/addons/argocd/argocd-application-details.yaml b/templates/Factory/addons/argocd/argocd-application-details.yaml
new file mode 100644
index 0000000..6836a6d
--- /dev/null
+++ b/templates/Factory/addons/argocd/argocd-application-details.yaml
@@ -0,0 +1,15 @@
+{{- if .Values.addons.argocd.enabled }}
+{{ include "incloud-web-resources.factory.manifets.argocd-application-details" (dict
+ "key" "argocd-application-details"
+ "resName" "{6}"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.argocd-application-details" (dict
+ "key" "instance-argocd-application-details"
+ "resName" "{7}"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
+{{- end }}
diff --git a/templates/Factory/addons/argocd/argocd-appproject-details.yaml b/templates/Factory/addons/argocd/argocd-appproject-details.yaml
new file mode 100644
index 0000000..61415b8
--- /dev/null
+++ b/templates/Factory/addons/argocd/argocd-appproject-details.yaml
@@ -0,0 +1,15 @@
+{{- if .Values.addons.argocd.enabled }}
+{{ include "incloud-web-resources.factory.manifets.argocd-appproject-details" (dict
+ "key" "argocd-appproject-details"
+ "resName" "{6}"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.argocd-appproject-details" (dict
+ "key" "instance-argocd-appproject-details"
+ "resName" "{7}"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
+{{- end }}
diff --git a/templates/Factory/addons/certmanager/certificate-details.yaml b/templates/Factory/addons/certmanager/certificate-details.yaml
new file mode 100644
index 0000000..86f7212
--- /dev/null
+++ b/templates/Factory/addons/certmanager/certificate-details.yaml
@@ -0,0 +1,13 @@
+{{ include "incloud-web-resources.factory.manifets.certificate-details" (dict
+ "key" "certificate-details"
+ "resName" "{6}"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.certificate-details" (dict
+ "key" "instance-certificate-details"
+ "resName" "{7}"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/clusterrole-details.yaml b/templates/Factory/clusterrole-details.yaml
index 1ba9127..035ff9f 100644
--- a/templates/Factory/clusterrole-details.yaml
+++ b/templates/Factory/clusterrole-details.yaml
@@ -5,7 +5,7 @@ metadata:
spec:
key: clusterrole-details
sidebarTags:
- - clusterrole-sidebar
+ - clusterrole-details
withScrollableMainContentCard: true
urlsToFetch:
- "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/clusterroles/{5}"
@@ -20,26 +20,15 @@ spec:
style:
marginBottom: 24px
children:
- # Service badge
- - type: antdText
+ # resource badge
+ - type: ResourceBadge
data:
- id: badge-service
- text: CR
- title: clusterroles
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
style:
fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#6ca100"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # Service name
+
+ # resource name
- type: parsedText
data:
id: service-name
@@ -120,6 +109,7 @@ spec:
children:
{{ include "incloud-web-resources.factory.labels" (dict
"endpoint" "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/clusterroles/{5}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=rbac.authorization.k8s.io~v1~clusterroles&labels="
) | nindent 34
}}
@@ -194,8 +184,7 @@ spec:
fetchUrl: "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/clusterroles/{5}"
clusterNamePartOfUrl: "{2}"
customizationId: factory-k8s-rbac-rules
- baseprefix: "/openapi-ui"
- withoutControls: true
+ baseprefix: "/{{ .Values.basePrefix }}"
pathToItems: ".rules"
# YAML tab
diff --git a/templates/Factory/clusterrolebinding-details.yaml b/templates/Factory/clusterrolebinding-details.yaml
index 58f32ba..652472b 100644
--- a/templates/Factory/clusterrolebinding-details.yaml
+++ b/templates/Factory/clusterrolebinding-details.yaml
@@ -5,7 +5,7 @@ metadata:
spec:
key: clusterrolebinding-details
sidebarTags:
- - clusterrolebinding-sidebar
+ - clusterrolebinding-details
withScrollableMainContentCard: true
urlsToFetch:
- "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{5}"
@@ -20,26 +20,15 @@ spec:
style:
marginBottom: 24px
children:
- # Service badge
- - type: antdText
+ # resource badge
+ - type: ResourceBadge
data:
- id: badge-service
- text: RB
- title: clusterrolebindings
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
style:
fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#6ca100"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # Service name
+
+ # resource name
- type: parsedText
data:
id: service-name
@@ -120,6 +109,7 @@ spec:
children:
{{ include "incloud-web-resources.factory.labels" (dict
"endpoint" "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{5}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=rbac.authorization.k8s.io~v1~clusterrolebindings&labels="
) | nindent 34
}}
@@ -220,6 +210,7 @@ spec:
"namespace" "{reqsJsonPath[0]['.metadata.namespace']}"
"jsonPath" ".roleRef.name"
"factory" "role-details"
+ "basePrefix" .Values.basePrefix
) | nindent 40
}}
@@ -238,6 +229,7 @@ spec:
"title" "ClusterRole"
"jsonPath" ".roleRef.name"
"factory" "clusterrole-details"
+ "basePrefix" .Values.basePrefix
) | nindent 40
}}
diff --git a/templates/Factory/configmap-details.yaml b/templates/Factory/configmap-details.yaml
index 18df05c..2dd86c4 100644
--- a/templates/Factory/configmap-details.yaml
+++ b/templates/Factory/configmap-details.yaml
@@ -1,225 +1,13 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: configmap-details
-spec:
- # Unique key for this factory configuration
- key: configmap-details
-
- # Sidebar category tags
- sidebarTags:
- - configmap-sidebar
-
- # Enable scrollable content card for main section
- withScrollableMainContentCard: true
-
- # API endpoint for fetching ConfigMap details
- urlsToFetch:
- - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/configmaps/{6}"
-
- data:
- # === HEADER ROW ===
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Badge with resource short name
- - type: antdText
- data:
- id: header-badge
- text: CM
- title: ConfigMap
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#b48c78ff"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
-
- # ConfigMap name
- - type: parsedText
- data:
- id: header-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # === MAIN TABS ===
- - type: antdTabs
- data:
- id: tabs-root
- defaultActiveKey: details
- items:
- # ------ DETAILS TAB ------
- - key: details
- label: Details
- children:
- # Main card container for details section
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- # Section title
- - type: antdText
- data:
- id: details-title
- text: ConfigMap details
- strong: true
- style:
- fontSize: 20px
- marginBottom: 12px
-
- # Spacer for visual separation
- - type: Spacer
- data:
- id: details-spacer
- $space: 16
-
- # Grid layout: left and right columns
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # LEFT COLUMN: Metadata and links
- - type: antdCol
- data:
- id: details-col-left
- span: 12
- children:
- - type: antdFlex
- data:
- id: left-stack
- vertical: true
- gap: 24
- children:
- # Resource name block
- - type: antdFlex
- data:
- id: field-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: field-name-label
- text: Name
- strong: true
- - type: parsedText
- data:
- id: field-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link block
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels display block
- - type: antdFlex
- data:
- id: labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/configmaps/{6}"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/configmaps/{6}"
- ) | nindent 34
- }}
-
- # Creation time block
- - type: antdFlex
- data:
- id: created-time-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 30
- }}
-
- # Owner information block
- # - type: antdFlex
- # data:
- # id: owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: owner-label
- # text: Owner
- # strong: true
- # - type: parsedText
- # data:
- # id: owner-value
- # strong: true
- # text: "No owner"
- # style:
- # color: red
-
- # ------ YAML TAB ------
- - key: yaml
- label: YAML
- children:
- # YAML editor for resource manifest
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: builtin
- typeName: configmaps
- prefillValuesRequestIndex: 0
- substractHeight: 400
+{{ include "incloud-web-resources.factory.manifets.configmap-details" (dict
+ "key" "configmap-details"
+ "resName" "{6}"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.configmap-details" (dict
+ "key" "instance-configmap-details"
+ "resName" "{7}"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/crd-details.yaml b/templates/Factory/crd-details.yaml
index e3a269a..fa8cae5 100644
--- a/templates/Factory/crd-details.yaml
+++ b/templates/Factory/crd-details.yaml
@@ -8,7 +8,7 @@ spec:
# Sidebar tag for grouping in UI
sidebarTags:
- - customresourcedefinitions-sidebar
+ - customresourcedefinitions-details
# URL for fetching CRD details
urlsToFetch:
@@ -28,24 +28,13 @@ spec:
marginBottom: 24px
children:
# CRD badge
- - type: antdText
+ - type: ResourceBadge
data:
- id: header-badge
- text: CRD
- title: CRD
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
style:
- backgroundColor: "#2b9af3"
- borderRadius: 20px
- color: "#fff"
- display: inline-block
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
fontSize: 20px
- fontWeight: 400
- lineHeight: 24px
- minWidth: 24
- padding: 0 9px
- textAlign: center
- whiteSpace: nowrap
+
# CRD name
- type: parsedText
data:
@@ -134,6 +123,7 @@ spec:
children:
{{ include "incloud-web-resources.factory.labels" (dict
"endpoint" "/api/clusters/{2}/k8s/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{5}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=apiextensions.k8s.io~v1~customresourcedefinitions&labels="
) | nindent 34
}}
@@ -271,8 +261,7 @@ spec:
fetchUrl: "/api/clusters/{2}/k8s/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{5}"
clusterNamePartOfUrl: "{2}"
customizationId: factory-status-conditions
- baseprefix: "/openapi-ui"
- withoutControls: true
+ baseprefix: "/{{ .Values.basePrefix }}"
pathToItems: ".status.conditions"
# Versions section
@@ -305,8 +294,7 @@ spec:
fetchUrl: "/api/clusters/{2}/k8s/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{5}"
clusterNamePartOfUrl: "{2}"
customizationId: versions-apiextensions.k8s.io.v1.customresourcedefinitions
- baseprefix: "/openapi-ui"
- withoutControls: true
+ baseprefix: "/{{ .Values.basePrefix }}"
pathToItems: ".spec.versions"
# --- YAML TAB ---
@@ -335,6 +323,13 @@ spec:
fetchUrl: "/api/clusters/{2}/k8s/apis/{reqsJsonPath[0]['.spec.group']['-']}/{reqsJsonPath[0]['.status.storedVersions[0]']['-']}/{reqsJsonPath[0]['.spec.names.plural']['-']}"
clusterNamePartOfUrl: "{2}"
customizationId: instances-crd
- baseprefix: "/openapi-ui"
- withoutControls: true
+ baseprefix: "/{{ .Values.basePrefix }}"
pathToItems: ".items"
+ dataForControls:
+ resource: "{reqsJsonPath[0]['.spec.names.plural']['-']}"
+ apiVersion: "{reqsJsonPath[0]['.status.storedVersions[0]']['-']}"
+ apiGroup: "{reqsJsonPath[0]['.spec.group']['-']}"
+ k8sResource:
+ resource: "{reqsJsonPath[0]['.spec.names.plural']['-']}"
+ apiVersion: "{reqsJsonPath[0]['.status.storedVersions[0]']['-']}"
+ apiGroup: "{reqsJsonPath[0]['.spec.group']['-']}"
diff --git a/templates/Factory/cronjob-details.yaml b/templates/Factory/cronjob-details.yaml
index da8eb14..d225c96 100644
--- a/templates/Factory/cronjob-details.yaml
+++ b/templates/Factory/cronjob-details.yaml
@@ -1,563 +1,17 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: cronjob-details
-spec:
- # Unique key for this factory configuration
- key: cronjob-details
-
- # Sidebar category tags
- sidebarTags:
- - cronjobs-sidebar
-
- # Enable scrollable content card for main section
- withScrollableMainContentCard: true
-
- # API endpoint for fetching CronJob details
- urlsToFetch:
- - "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
-
- data:
- # === HEADER ROW ===
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Badge with resource short name
- - type: antdText
- data:
- id: header-badge
- text: CJ
- title: cronjobs
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#009596"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
-
- # CronJob name
- - type: parsedText
- data:
- id: header-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # === MAIN TABS ===
- - type: antdTabs
- data:
- id: tabs-root
- defaultActiveKey: "details"
- items:
- # ------ DETAILS TAB ------
- - key: "details"
- label: "Details"
- children:
- # Main card container for details section
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- # Grid layout: left and right columns
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # LEFT COLUMN: Metadata, schedule, labels, etc.
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- # Section title
- - type: antdText
- data:
- id: cronjob-title
- text: "CronJob details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
-
- # Spacer for visual separation
- - type: Spacer
- data:
- id: spacer-main
- "$space": 16
-
- # Vertical stack of fields
- - type: antdFlex
- data:
- id: left-stack
- vertical: true
- gap: 24
- children:
- # Resource name block
- - type: antdFlex
- data:
- id: name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-name-label
- strong: true
- text: "Name"
- - type: parsedText
- data:
- id: meta-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels display block
- - type: antdFlex
- data:
- id: labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
- ) | nindent 34
- }}
-
- # Cron schedule string (crontab)
- - type: antdFlex
- data:
- id: schedule-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: schedule-label
- strong: true
- text: "Schedule"
- - type: parsedText
- data:
- id: schedule-value
- text: "{reqsJsonPath[0]['.spec.schedule']['-']}"
-
- # Suspend flag
- - type: antdFlex
- data:
- id: suspend-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: suspend-label
- strong: true
- text: "Suspend"
- - type: parsedText
- data:
- id: suspend-value
- text: "{reqsJsonPath[0]['.spec.suspend']['-']}"
-
- # Concurrency policy
- - type: antdFlex
- data:
- id: concurrency-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: concurrency-label
- strong: true
- text: "Concurrency policy"
- - type: parsedText
- data:
- id: concurrency-value
- text: "{reqsJsonPath[0]['.spec.concurrencyPolicy']['-']}"
-
- # StartingDeadlineSeconds
- - type: antdFlex
- data:
- id: starting-deadline-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: starting-deadline-label
- strong: true
- text: "Starting deadline seconds"
- - type: parsedText
- data:
- id: starting-deadline-value
- text: "{reqsJsonPath[0]['.spec.startingDeadlineSeconds']['Not configured']}"
-
- # Last schedule time (from status)
- - type: antdFlex
- data:
- id: last-schedule-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".status.lastScheduleTime"
- "text" "Last schedule time"
- ) | nindent 34
- }}
-
- # Creation timestamp
- - type: antdFlex
- data:
- id: created-time-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 34
- }}
-
- # Owner information block
- # - type: antdFlex
- # data:
- # id: owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: owner-label
- # strong: true
- # text: "Owner"
- # - type: parsedText
- # data:
- # id: owner-value
- # strong: true
- # text: "No owner"
- # style:
- # color: red
-
- # RIGHT COLUMN: Job template fields (completions, parallelism, deadlines)
- - type: antdCol
- data:
- id: col-right
- span: 12
- children:
- # Section title
- - type: antdText
- data:
- id: job-title
- text: "Job details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
-
- # Spacer for visual separation
- - type: Spacer
- data:
- id: spacer-job
- "$space": 16
-
- # Vertical stack of job fields
- - type: antdFlex
- data:
- id: right-stack
- vertical: true
- gap: 24
- children:
- # Desired completions
- - type: antdFlex
- data:
- id: desired-completions-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: desired-completions-label
- strong: true
- text: "Desired completions"
- - type: parsedText
- data:
- id: desired-completions-value
- text: "{reqsJsonPath[0]['.spec.jobTemplate.spec.completions']['-']}"
-
- # Parallelism
- - type: antdFlex
- data:
- id: parallelism-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: parallelism-label
- strong: true
- text: "Parallelism"
- - type: parsedText
- data:
- id: parallelism-value
- text: "{reqsJsonPath[0]['.spec.jobTemplate.spec.parallelism']['-']}"
-
- # ActiveDeadlineSeconds
- - type: antdFlex
- data:
- id: active-deadline-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: active-deadline-label
- strong: true
- text: "Active deadline seconds"
- - type: parsedText
- data:
- id: active-deadline-value
- text: "{reqsJsonPath[0]['.spec.activeDeadlineSeconds']['Not configured']}"
-
- # ---- VOLUMES SECTION ----
- # TODO to be done
- # - type: antdCol
- # data:
- # id: volumes-section
- # style:
- # marginTop: 10
- # padding: 10
- # children:
- # # Hide block if no volumes
- # - type: VisibilityContainer
- # data:
- # id: volumes-container
- # value: "{reqsJsonPath[0]['.spec.volumes']['-']}"
- # style:
- # margin: 0
- # padding: 0
- # children:
- # # Section title
- # - type: antdText
- # data:
- # id: volumes-title
- # text: "Volumes"
- # strong: true
- # style:
- # fontSize: 22
- # marginBottom: 32px
- # # Generic table rendering volumes list
- # - type: EnrichedTable
- # data:
- # id: volumes-table
- # fetchUrl: "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
- # clusterNamePartOfUrl: "{2}"
- # customizationId: factory-cronjob-details-volume-list
- # baseprefix: "/openapi-ui"
- # withoutControls: true
- # # Path inside CronJob manifest where volumes are located
- # pathToItems: ".spec.volumes"
-
- # ---- INIT CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: init-containers-section
- style:
- marginTop: 10
- padding: 10
- children:
- # Hide block if no init containers
- - type: VisibilityContainer
- data:
- id: init-containers-container
- value: "{reqsJsonPath[0]['.spec.jobTemplate.spec.template.spec.initContainers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Init containers"
- "customizationId" "container-spec-init-containers-list"
- "type" "init-containers"
- "apiGroup" "apis/batch/v1"
- "kind" "cronjobs"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.jobTemplate.spec.template.spec.initContainers"
- "pathToItems" "['spec','jobTemplate','spec','template','spec','initContainers']"
- ) | nindent 26
- }}
-
- # ---- CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: containers-section
- style:
- marginTop: 10
- padding: 10
- children:
- # Hide block if no containers
- - type: VisibilityContainer
- data:
- id: containers-container
- value: "{reqsJsonPath[0]['.spec.jobTemplate.spec.template.spec.containers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Containers"
- "customizationId" "container-spec-containers-list"
- "type" "containers"
- "apiGroup" "apis/batch/v1"
- "kind" "cronjobs"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.jobTemplate.spec.template.spec.containers"
- "pathToItems" "['spec','jobTemplate','spec','template','spec','containers']"
- ) | nindent 26
- }}
-
- # ---- CONDITIONS SECTION ----
- - type: antdCol
- data:
- id: conditions-section
- style:
- marginTop: 10
- padding: 10
- children:
- # Hide block if no status.conditions
- - type: VisibilityContainer
- data:
- id: conditions-container
- value: "{reqsJsonPath[0]['.status.conditions']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- # Section title
- - type: antdText
- data:
- id: conditions-title
- text: "Conditions"
- strong: true
- style:
- fontSize: 22
- # Table rendering .status.conditions
- - type: EnrichedTable
- data:
- id: conditions-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-status-conditions
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Path to conditions array
- pathToItems: ".status.conditions"
-
- # ------ YAML TAB ------
- - key: "yaml"
- label: "YAML"
- children:
- # YAML editor for resource manifest
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: "builtin"
- typeName: cronjobs
- prefillValuesRequestIndex: 0
- substractHeight: 400
-
- # ------ PODS TAB ------
- - key: pods
- label: Pods
- children:
- # Table of Pods that match CronJob's job template labels
- - type: EnrichedTable
- data:
- id: pods-table
- fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-/v1/pods
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from job template's pod labels
- labelsSelectorFull:
- reqIndex: 0
- pathToLabels: ".spec.jobTemplate.spec.template.metadata.labels"
- # Items path for Pods list
- pathToItems: ".items"
-
- # ------ JOBS TAB ------
- - key: jobs
- label: Jobs
- children:
- # Table of Jobs in the same namespace; filtered by CronJob's jobTemplate labels
- - type: EnrichedTable
- data:
- id: jobs-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-/batch/v1/jobs
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from CronJob's job template metadata.labels
- labelsSelectorFull:
- reqIndex: 0
- pathToLabels: ".spec.jobTemplate.metadata.labels"
- # Items path for Jobs list
- pathToItems: ".items"
+{{ include "incloud-web-resources.factory.manifets.cronjob-details" (dict
+ "key" "cronjob-details"
+ "resName" "{6}"
+ "jobFactoryName" "stock-namespace-/batch/v1/jobs"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.cronjob-details" (dict
+ "key" "instance-cronjob-details"
+ "resName" "{7}"
+ "jobFactoryName" "stock-namespace-/batch/v1/jobs"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/daemonset-details.yaml b/templates/Factory/daemonset-details.yaml
index ffd5714..1e334f2 100644
--- a/templates/Factory/daemonset-details.yaml
+++ b/templates/Factory/daemonset-details.yaml
@@ -1,470 +1,17 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: daemonset-details
-spec:
- # Unique key for this factory configuration
- key: daemonset-details
-
- # Sidebar category tags
- sidebarTags:
- - daemonset-sidebar
-
- # Enable scrollable content card for main section
- withScrollableMainContentCard: true
-
- # API endpoint for fetching DaemonSet details--
- urlsToFetch:
- - "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
-
- data:
- # === HEADER ROW ===
- - type: antdFlex
- data:
- id: ds-header
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Badge with resource short name
- - type: antdText
- data:
- id: ds-header-badge
- text: DS
- title: daemonset
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#004080"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
-
- # DaemonSet name
- - type: parsedText
- data:
- id: ds-header-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # === MAIN TABS ===
- - type: antdTabs
- data:
- id: ds-tabs
- defaultActiveKey: details
- items:
- # ------ DETAILS TAB ------
- - key: details
- label: Details
- children:
- # Main card container for details section
- - type: ContentCard
- data:
- id: ds-details-card
- style:
- marginBottom: 24px
- children:
- # Section title
- - type: antdText
- data:
- id: ds-details-title
- text: DaemonSet details
- strong: true
- style:
- fontSize: 20px
- marginBottom: 12px
-
- # Spacer for visual separation
- - type: Spacer
- data:
- id: ds-spacer
- $space: 16
-
- # Grid layout: left and right columns
- - type: antdRow
- data:
- id: ds-main-row
- gutter: [48, 12]
- children:
- # LEFT COLUMN: Metadata and selectors
- - type: antdCol
- data:
- id: ds-left-col
- span: 12
- children:
- - type: antdFlex
- data:
- id: ds-left-stack
- vertical: true
- gap: 24
- children:
- # Resource name block
- - type: antdFlex
- data:
- id: ds-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: ds-name-label
- text: Name
- strong: true
- - type: parsedText
- data:
- id: ds-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link block
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
- # Labels display block
- - type: antdFlex
- data:
- id: ds-labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
- ) | nindent 34
- }}
-
- # Node selector block
- - type: antdFlex
- data:
- id: ds-node-selector
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "node"
- "title" "Node selector"
- "jsonPath" ".spec.template.spec.nodeSelector"
- ) | nindent 34
- }}
-
- # Pod selector block
- - type: antdFlex
- data:
- id: ds-pod-selector
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "pod"
- "title" "Pod selector"
- "jsonPath" ".spec.template.metadata.labels"
- ) | nindent 34
- }}
-
- # Tolerations counter block
- - type: antdFlex
- data:
- id: ds-tolerations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.tolerations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
- "jsonPathToArray" ".spec.template.spec.tolerations"
- "pathToValue" "/spec/template/spec/tolerations"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
- ) | nindent 34
- }}
-
- # Creation time block
- - type: antdFlex
- data:
- id: ds-created-time
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 30
- }}
-
- # Owner information block
- # - type: antdFlex
- # data:
- # id: ds-owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: ds-owner-label
- # text: Owner
- # strong: true
- # - type: parsedText
- # data:
- # id: ds-owner-value
- # strong: true
- # text: "No owner"
- # style:
- # color: red
-
- # RIGHT COLUMN: Status counts
- - type: antdCol
- data:
- id: ds-right-col
- span: 12
- children:
- - type: antdFlex
- data:
- id: ds-right-stack
- vertical: true
- gap: 24
- children:
- # Current pods count
- - type: antdFlex
- data:
- id: ds-current-count
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: ds-current-count-label
- text: Current count
- strong: true
- - type: parsedText
- data:
- id: ds-current-count-value
- text: "{reqsJsonPath[0]['.status.currentNumberScheduled']['-']}"
-
- # Desired pods count
- - type: antdFlex
- data:
- id: ds-desired-count
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: ds-desired-count-label
- text: Desired count
- strong: true
- - type: parsedText
- data:
- id: ds-desired-count-value
- text: "{reqsJsonPath[0]['.status.desiredNumberScheduled']['-']}"
-
- # ---- VOLUMES SECTION ----
- # TODO to be done
- # - type: antdCol
- # data:
- # id: ds-volumes-col
- # style:
- # marginTop: 10
- # padding: 10
- # children:
- # - type: VisibilityContainer
- # data:
- # id: ds-volumes-container
- # value: "{reqsJsonPath[0]['.spec.template.spec.volumes']['-']}"
- # style:
- # margin: 0
- # padding: 0
- # children:
- # # Section title
- # - type: antdText
- # data:
- # id: ds-volumes-label
- # text: Volumes
- # strong: true
- # style:
- # fontSize: 22
- # marginBottom: 32px
- # # Table rendering volumes
- # - type: EnrichedTable
- # data:
- # id: ds-volumes-table
- # fetchUrl: "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
- # clusterNamePartOfUrl: "{2}"
- # customizationId: factory-daemonset-details-volume-list
- # baseprefix: "/openapi-ui"
- # withoutControls: true
- # pathToItems: ".spec.template.spec.volumes"
-
- # ---- INIT CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-init-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-init-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Init containers"
- "customizationId" "container-spec-init-containers-list"
- "type" "init-containers"
- "apiGroup" "apis/apps/v1"
- "kind" "daemonsets"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.initContainers"
- "pathToItems" "['spec','template','spec','initContainers']"
- ) | nindent 26
- }}
-
- # ---- CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Containers"
- "customizationId" "container-spec-containers-list"
- "type" "containers"
- "apiGroup" "apis/apps/v1"
- "kind" "daemonsets"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.containers"
- "pathToItems" "['spec','template','spec','containers']"
- ) | nindent 26
- }}
-
- # ------ YAML TAB ------
- - key: yaml
- label: YAML
- children:
- # YAML editor for DaemonSet manifest
- - type: YamlEditorSingleton
- data:
- id: ds-yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: apis
- apiGroup: apps
- apiVersion: v1
- typeName: daemonsets
- prefillValuesRequestIndex: 0
- substractHeight: 400
-
- # ------ PODS TAB ------
- - key: pods
- label: Pods
- children:
- # Table of Pods controlled by the DaemonSet
- - type: EnrichedTable
- data:
- id: ds-pods-table
- fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-/v1/pods
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from pod template labels
- labelsSelectorFull:
- reqIndex: 0
- pathToLabels: ".spec.template.metadata.labels"
- # Items path for Pods list
- pathToItems: ".items"
-
-{{- if .Values.addons.trivy.enabled }}
- # ------ PODS TAB ------
- - key: reports
- label: Reports
- children:
- - type: EnrichedTable
- data:
- id: ds-pods-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/vulnerabilityreports"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from pod template labels
- labelsSelector:
- trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']}"
- trivy-operator.container.name: "{reqsJsonPath[0]['.spec.template.spec.containers[0].name']}"
- # Items path for Pods list
- pathToItems: ".items[*].report.vulnerabilities"
-
- - key: cfg-reports
- label: CFG reports
- children:
- - type: EnrichedTable
- data:
- id: ds-pods-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/configauditreports"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-aquasecurity.github.io.v1alpha1.configauditreports
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from pod template labels
- labelsSelector:
- trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
- trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
- # Items path for Pods list
- pathToItems: ".items[*].report.checks"
-
-
-{{- end -}}
+{{ include "incloud-web-resources.factory.manifets.daemonset-details" (dict
+ "key" "daemonset-details"
+ "resName" "{6}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.daemonset-details" (dict
+ "key" "instance-daemonset-details"
+ "resName" "{7}"
+ "podFactoryName" "factory-instance-pods-details"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/deployment-details.yaml b/templates/Factory/deployment-details.yaml
index 84af6b2..1037bd5 100644
--- a/templates/Factory/deployment-details.yaml
+++ b/templates/Factory/deployment-details.yaml
@@ -1,564 +1,17 @@
-# Factory definition for Deployment details page
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: deployment-details
-spec:
- # Stable key used by the UI router/registry
- key: deployment-details
-
- # Sidebar categorization
- sidebarTags:
- - deployment-sidebar
-
- # API request used to fetch the target Deployment
- urlsToFetch:
- - /api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}
-
- # Enables scrollable main content area
- withScrollableMainContentCard: true
-
- # Root component tree
- data:
- # === Header with icon, name and high-level status ===
- - type: antdFlex
- data:
- id: header-flex
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Left: static "D" label for Deployment
- - type: antdText
- data:
- id: header-icon
- text: D
- title: Deployment
- style:
- backgroundColor: "#004080"
- borderRadius: 20px
- color: "#fff"
- display: inline-block
- fontFamily: RedHatDisplay, Overpass, helvetica, sans-serif
- fontSize: 20px
- fontWeight: 400
- lineHeight: 24px
- minWidth: 24
- padding: 0 9px
- textAlign: center
- whiteSpace: nowrap
-
- # Center: deployment name from the fetched object
- - type: parsedText
- data:
- id: header-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- - type: antdFlex
- data:
- id: status-header-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.statuses.deployment" . | nindent 12 }}
-
- # === Main content organized by tabs ===
- - type: antdTabs
- data:
- id: deployment-tabs
- defaultActiveKey: details
- items:
- # ------ DETAILS TAB ------
- - key: details
- label: Details
- children:
- # Card wrapper for details content
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- # Section title
- - type: antdText
- data:
- id: details-title
- text: Deployment details
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
-
- # Spacer for breathing room
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
-
- # Two-column layout for metadata and rollout settings
- - type: antdRow
- data:
- id: main-details-row
- gutter: [48, 12]
- children:
- # === LEFT COLUMN: Metadata & links ===
- - type: antdCol
- data:
- id: left-column
- span: 12
- children:
- - type: antdFlex
- data:
- id: left-column-flex
- vertical: true
- gap: 24
- children:
- # Name block
- - type: antdFlex
- data:
- id: name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: name-label
- text: Name
- strong: true
- - type: parsedText
- data:
- id: name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link block (rendered by include)
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels list (rendered by include)
- - type: antdFlex
- data:
- id: labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}"
- ) | nindent 34
- }}
-
- # Node selector key-value list (rendered by include)
- - type: antdFlex
- data:
- id: node-selector-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "node"
- "title" "Node selector"
- "jsonPath" ".spec.template.spec.nodeSelector"
- ) | nindent 34
- }}
-
-
- # Pod selector key-value list (rendered by include)
- - type: antdFlex
- data:
- id: pod-selector-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "pod"
- "title" "Pod selector"
- "jsonPath" ".spec.template.metadata.labels"
- ) | nindent 34
- }}
-
- # Tolerations counter (rendered by include)
- - type: antdFlex
- data:
- id: tolerations-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.tolerations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}"
- "jsonPathToArray" ".spec.template.spec.tolerations"
- "pathToValue" "/spec/template/spec/tolerations"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}"
- ) | nindent 34
- }}
-
- # Created timestamp (rendered by include)
- - type: antdFlex
- data:
- id: created-time-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 38
- }}
-
- # Owner reference (fallback text if no owner)
- # - type: antdFlex
- # data:
- # id: owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: owner-label
- # text: Owner
- # strong: true
- # - type: parsedText
- # data:
- # id: owner-value
- # strong: true
- # text: "No owner"
- # style:
- # color: red
-
- # === RIGHT COLUMN: Rollout and timing settings ===
- - type: antdCol
- data:
- id: right-column
- span: 12
- children:
- - type: antdFlex
- data:
- id: right-column-flex
- vertical: true
- gap: 24
- children:
- # Status block (mirrors header status)
- - type: antdFlex
- data:
- id: status-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: status-label
- text: Status
- strong: true
- - type: antdFlex
- data:
- id: status-header-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.statuses.deployment" . | nindent 38 }}
-
- # Rolling update strategy type
- - type: antdFlex
- data:
- id: update-strategy-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: update-strategy-label
- text: Update strategy
- strong: true
- - type: parsedText
- data:
- id: update-strategy-value
- text: "{reqsJsonPath[0]['.spec.strategy.type']['-']}"
-
- # MaxUnavailable value
- - type: antdFlex
- data:
- id: max-unavailable-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: max-unavailable-label
- text: Max unavailable
- strong: true
- - type: parsedText
- data:
- id: max-unavailable-value
- text: "{reqsJsonPath[0]['.spec.strategy.rollingUpdate.maxUnavailable']['-']}"
-
- # MaxSurge value
- - type: antdFlex
- data:
- id: max-surge-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: max-surge-label
- text: Max surge
- strong: true
- - type: parsedText
- data:
- id: max-surge-value
- text: "{reqsJsonPath[0]['.spec.strategy.rollingUpdate.maxSurge']['-']}"
-
- # ProgressDeadlineSeconds
- - type: antdFlex
- data:
- id: progress-deadline-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: progress-deadline-label
- text: Progress deadline seconds
- strong: true
- - type: parsedText
- data:
- id: progress-deadline-value
- text: "{reqsJsonPath[0]['.spec.progressDeadlineSeconds']['-']}"
-
- # MinReadySeconds
- - type: antdFlex
- data:
- id: min-ready-seconds-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: min-ready-seconds-label
- text: Min ready seconds
- strong: true
- - type: parsedText
- data:
- id: min-ready-seconds-value
- text: "{reqsJsonPath[0]['.spec.minReadySeconds']['-']}"
-
- # === Volumes table (visible only if volumes exist) ===
- # TODO to be done
- # - type: antdCol
- # data:
- # id: volumes-column
- # style:
- # marginTop: 16
- # padding: 10
- # children:
- # - type: VisibilityContainer
- # data:
- # id: volumes-container
- # value: "{reqsJsonPath[0]['.spec.template.spec.volumes']['-']}"
- # style:
- # margin: 0
- # padding: 0
- # children:
- # - type: antdText
- # data:
- # id: volumes-title
- # text: Volumes
- # strong: true
- # style:
- # fontSize: 22px
- # marginBottom: 16px
- # - type: EnrichedTable
- # data:
- # id: volumes-table
- # fetchUrl: /api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}
- # clusterNamePartOfUrl: "{2}"
- # customizationId: factory-deployment-details-volume-list
- # baseprefix: /openapi-ui
- # withoutControls: true
- # # Path in the fetched object to the volumes array
- # pathToItems: ".spec.template.spec.volumes"
-
- # ---- INIT CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-init-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-init-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Init containers"
- "customizationId" "container-spec-init-containers-list"
- "type" "init-containers"
- "apiGroup" "apis/apps/v1"
- "kind" "deployments"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.initContainers"
- "pathToItems" "['spec','template','spec','initContainers']"
- ) | nindent 26
- }}
-
- # ---- CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Containers"
- "customizationId" "container-spec-containers-list"
- "type" "containers"
- "apiGroup" "apis/apps/v1"
- "kind" "deployments"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.containers"
- "pathToItems" "['spec','template','spec','containers']"
- ) | nindent 26
- }}
-
- # === Conditions table (visible only if status.conditions exist) ===
- - type: antdCol
- data:
- id: conditions-column
- style:
- marginTop: 16
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: conditions-container
- value: "{reqsJsonPath[0]['.status.conditions']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- - type: antdText
- data:
- id: conditions-title
- text: Conditions
- strong: true
- style:
- fontSize: 22px
- marginBottom: 16px
- - type: EnrichedTable
- data:
- id: conditions-table
- fetchUrl: /api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-status-conditions
- baseprefix: /openapi-ui
- withoutControls: true
- # Path in the fetched object to the conditions array
- pathToItems: ".status.conditions"
-
- # ------ YAML TAB ------
- - key: yaml
- label: YAML
- children:
- # In-place editor bound to the same Deployment
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- apiGroup: apps
- apiVersion: v1
- cluster: "{2}"
- isNameSpaced: true
- prefillValuesRequestIndex: 0
- substractHeight: 400
- type: apis
- typeName: deployments
-
- # ------ REPLICASETS TAB ------
- - key: replicasets
- label: ReplicaSets
- children:
- # Table filtered by Deployment's Pod template labels
- - type: EnrichedTable
- data:
- id: replicasets-table
- fetchUrl: /api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets
- baseprefix: /openapi-ui
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-/apps/v1/replicasets
- labelsSelectorFull:
- reqIndex: 0
- pathToLabels: ".spec.template.metadata.labels"
- # Path to items list in the response
- pathToItems: ".items"
- withoutControls: true
-
- # ------ PODS TAB ------
- - key: pods
- label: Pods
- children:
- # Table filtered by Deployment's Pod template labels
- - type: EnrichedTable
- data:
- id: pods-table
- fetchUrl: /api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods
- baseprefix: /openapi-ui
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-/v1/pods
- labelsSelectorFull:
- reqIndex: 0
- pathToLabels: ".spec.template.metadata.labels"
- # Path to items list in the response
- pathToItems: ".items"
- withoutControls: true
+{{ include "incloud-web-resources.factory.manifets.deployment-details" (dict
+ "key" "deployment-details"
+ "resName" "{6}"
+ "rsFactoryName" "stock-namespace-/apps/v1/replicasets"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.deployment-details" (dict
+ "key" "instance-deployment-details"
+ "resName" "{7}"
+ "rsFactoryName" "stock-namespace-/apps/v1/replicasets"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/argocd-application-details.yaml b/templates/Factory/helpers/factories/argocd-application-details.tpl
similarity index 90%
rename from templates/Factory/argocd-application-details.yaml
rename to templates/Factory/helpers/factories/argocd-application-details.tpl
index 5609e76..29fe19e 100644
--- a/templates/Factory/argocd-application-details.yaml
+++ b/templates/Factory/helpers/factories/argocd-application-details.tpl
@@ -1,14 +1,18 @@
-{{- if .Values.addons.argocd.enabled }}
+{{- define "incloud-web-resources.factory.manifets.argocd-application-details" -}}
+{{- $key := (default "argocd-application-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
---
# Factory definition for ArgoCD Application details page
apiVersion: front.in-cloud.io/v1alpha1
kind: Factory
metadata:
- name: argocd-application-details
+ name: "{{ $key }}"
spec:
- key: argocd-application-details
+ key: "{{ $key }}"
sidebarTags:
- - argocd-applications-sidebar
+ - argocd-applications-details
withScrollableMainContentCard: true
urlsToFetch:
- "/api/clusters/{2}/k8s/apis/argoproj.io/v1alpha1/namespaces/{3}/applications/{6}"
@@ -23,24 +27,13 @@ spec:
style:
marginBottom: 24px
children:
- - type: antdText
+ # factory badge
+ - type: ResourceBadge
data:
- id: header-badge
- text: A
- title: argocd
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
style:
fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#009596"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- type: parsedText
data:
id: header-name
@@ -122,19 +115,25 @@ spec:
text: Namespace
strong: true
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
- type: antdFlex
data:
@@ -144,6 +143,7 @@ spec:
children:
{{ include "incloud-web-resources.factory.labels" (dict
"endpoint" "/api/clusters/{2}/k8s/apis/argoproj.io/v1alpha1/namespaces/{3}/applications/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=argoproj.io~v1alpha1~applications&labels="
) | nindent 34
}}
@@ -251,6 +251,7 @@ spec:
"title" "Project"
"jsonPath" ".spec.project"
"factory" "argocd-appproject-details"
+ "basePrefix" $basePrefix
"namespace" "{3}"
) | nindent 34
}}
@@ -312,8 +313,7 @@ spec:
fetchUrl: "/api/clusters/{2}/k8s/apis/argoproj.io/v1alpha1/namespaces/{3}/applications/{6}"
clusterNamePartOfUrl: "{2}"
customizationId: "factory-argocd-application-status-resources"
- baseprefix: "/openapi-ui"
- withoutControls: true
+ baseprefix: "/{{ $basePrefix }}"
pathToItems: ".status.resources"
# ------ SYNC RESOURCES TAB ------
@@ -454,13 +454,12 @@ spec:
fetchUrl: "/api/clusters/{2}/k8s/apis/argoproj.io/v1alpha1/namespaces/{3}/applications/{6}"
clusterNamePartOfUrl: "{2}"
customizationId: "factory-argocd-application-resources"
- baseprefix: "/openapi-ui"
- withoutControls: true
+ baseprefix: "/{{ $basePrefix }}"
pathToItems: ".status.operationState.syncResult.resources"
# ------ HISTORY TAB ------
- - key: "hystory"
- label: "Hystory"
+ - key: "history"
+ label: "History"
children:
- type: EnrichedTable
data:
@@ -468,8 +467,6 @@ spec:
fetchUrl: "/api/clusters/{2}/k8s/apis/argoproj.io/v1alpha1/namespaces/{3}/applications/{6}"
clusterNamePartOfUrl: "{2}"
customizationId: "factory-argocd-application-status-history"
- baseprefix: "/openapi-ui"
- withoutControls: true
+ baseprefix: "/{{ $basePrefix }}"
pathToItems: ".status.history"
-
-{{- end }}
\ No newline at end of file
+{{- end }}
diff --git a/templates/Factory/argocd-appproject-details.yaml b/templates/Factory/helpers/factories/argocd-appproject-details.tpl
similarity index 80%
rename from templates/Factory/argocd-appproject-details.yaml
rename to templates/Factory/helpers/factories/argocd-appproject-details.tpl
index b2abb5b..a488267 100644
--- a/templates/Factory/argocd-appproject-details.yaml
+++ b/templates/Factory/helpers/factories/argocd-appproject-details.tpl
@@ -1,11 +1,17 @@
+{{- define "incloud-web-resources.factory.manifets.argocd-appproject-details" -}}
+{{- $key := (default "argocd-appproject-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
apiVersion: front.in-cloud.io/v1alpha1
kind: Factory
metadata:
- name: argocd-appproject-details
+ name: "{{ $key }}"
spec:
- key: argocd-appproject-details
+ key: "{{ $key }}"
sidebarTags:
- - argocd-appprojects-sidebar
+ - argocd-appprojects-details
withScrollableMainContentCard: true
urlsToFetch:
- "/api/clusters/{2}/k8s/apis/argoproj.io/v1alpha1/namespaces/{3}/appprojects/{6}"
@@ -20,25 +26,14 @@ spec:
style:
marginBottom: 24px
children:
- # appprojects badge
- - type: antdText
+ # factory badge
+ - type: ResourceBadge
data:
- id: badge-appprojects
- text: S
- title: appprojects
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
style:
fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#c46100"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
+
# appprojects name
- type: parsedText
data:
@@ -129,19 +124,25 @@ spec:
text: Namespace
strong: true
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
# Labels
- type: antdFlex
@@ -152,6 +153,7 @@ spec:
children:
{{ include "incloud-web-resources.factory.labels" (dict
"endpoint" "/api/clusters/{2}/k8s/apis/argoproj.io/v1alpha1/namespaces/{3}/appprojects/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=argoproj.io~v1alpha1~appprojects&labels="
) | nindent 34
}}
@@ -219,3 +221,4 @@ spec:
typeName: appprojectss
prefillValuesRequestIndex: 0
substractHeight: 400
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/cert-manager.io.v1.certificates.tpl b/templates/Factory/helpers/factories/cert-manager.io.v1.certificates.tpl
new file mode 100644
index 0000000..3f4314c
--- /dev/null
+++ b/templates/Factory/helpers/factories/cert-manager.io.v1.certificates.tpl
@@ -0,0 +1,283 @@
+{{- define "incloud-web-resources.factory.manifets.certificate-details" -}}
+{{- $key := (default "certificate-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ sidebarTags:
+ - certificate-details
+ withScrollableMainContentCard: true
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/apis/cert-manager.io/v1/namespaces/{3}/certificates/{6}"
+
+ # Header row with badge and certificate name
+ data:
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # certificate name
+ - type: parsedText
+ data:
+ id: header-certificate-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # Tabs with Details and YAML
+ - type: antdTabs
+ data:
+ id: certificate-tabs
+ defaultActiveKey: "details"
+ items:
+ # Details tab with metadata and spec info
+ - key: "details"
+ label: "Details"
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ # Title
+ - type: antdText
+ data:
+ id: details-title
+ text: "Certificate details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ # Spacer
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+
+ # Two-column layout
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # Left column: metadata
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/certificates/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~certificates&labels="
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/certificates/{6}"
+ ) | nindent 34
+ }}
+
+ # Created timestamp
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 38
+ }}
+
+ # Right column: type info
+ - type: antdCol
+ data:
+ id: col-right
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: col-right-stack
+ vertical: true
+ gap: 24
+ children:
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: meta-secret-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-secret-name-label
+ strong: true
+ text: "Secret Name"
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Secret
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".spec.secretName"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ "factory" "secret-details"
+ "basePrefix" $basePrefix
+ ) | nindent 42
+ }}
+
+ - type: antdCol
+ data:
+ id: conditions-column
+ style:
+ marginTop: 16
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: conditions-container
+ value: "{reqsJsonPath[0]['.status.conditions']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ - type: antdText
+ data:
+ id: conditions-title
+ text: Conditions
+ strong: true
+ style:
+ fontSize: 22px
+ marginBottom: 16px
+ - type: EnrichedTable
+ data:
+ id: conditions-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/cert-manager.io/v1/namespaces/{3}/certificates/{6}"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-status-conditions
+ baseprefix: /{{ $basePrefix }}
+ # Path in the fetched object to the conditions array
+ pathToItems: ".status.conditions"
+
+ # YAML tab
+ - key: yaml
+ label: YAML
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: builtin
+ typeName: certificates
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+{{- end -}}
diff --git a/templates/Factory/namespace-details.yaml b/templates/Factory/helpers/factories/configmap-details.tpl
similarity index 62%
rename from templates/Factory/namespace-details.yaml
rename to templates/Factory/helpers/factories/configmap-details.tpl
index 2ff7b5f..b1a9bcb 100644
--- a/templates/Factory/namespace-details.yaml
+++ b/templates/Factory/helpers/factories/configmap-details.tpl
@@ -1,21 +1,27 @@
+{{- define "incloud-web-resources.factory.manifets.configmap-details" -}}
+{{- $key := (default "configmap-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
apiVersion: front.in-cloud.io/v1alpha1
kind: Factory
metadata:
- name: namespace-details
+ name: "{{ $key }}"
spec:
# Unique key for this factory configuration
- key: namespace-details
+ key: "{{ $key }}"
# Sidebar category tags
sidebarTags:
- - namespace-sidebar
+ - configmap-details
# Enable scrollable content card for main section
withScrollableMainContentCard: true
- # API endpoint for fetching Namespace details
+ # API endpoint for fetching ConfigMap details
urlsToFetch:
- - "/api/clusters/{2}/k8s/api/v1/namespaces/{5}"
+ - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/configmaps/{6}"
data:
# === HEADER ROW ===
@@ -27,27 +33,15 @@ spec:
style:
marginBottom: 24px
children:
- # Badge with resource short name
- - type: antdText
+ # factory badge
+ - type: ResourceBadge
data:
- id: header-badge
- text: "NS"
- title: Namespace
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
style:
fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#a25792ff"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # Namespace name
+ # ConfigMap name
- type: parsedText
data:
id: header-name
@@ -61,11 +55,11 @@ spec:
- type: antdTabs
data:
id: tabs-root
- defaultActiveKey: "details"
+ defaultActiveKey: details
items:
# ------ DETAILS TAB ------
- - key: "details"
- label: "Details"
+ - key: details
+ label: Details
children:
# Main card container for details section
- type: ContentCard
@@ -78,17 +72,17 @@ spec:
- type: antdText
data:
id: details-title
- text: "Namespace details"
+ text: ConfigMap details
strong: true
style:
- fontSize: 20
+ fontSize: 20px
marginBottom: 12px
# Spacer for visual separation
- type: Spacer
data:
id: details-spacer
- "$space": 16
+ $space: 16
# Grid layout: left and right columns
- type: antdRow
@@ -96,10 +90,10 @@ spec:
id: details-grid
gutter: [48, 12]
children:
- # LEFT COLUMN: metadata
+ # LEFT COLUMN: Metadata and links
- type: antdCol
data:
- id: col-left
+ id: details-col-left
span: 12
children:
- type: antdFlex
@@ -108,23 +102,56 @@ spec:
vertical: true
gap: 24
children:
- # Namespace name block
+ # Resource name block
- type: antdFlex
data:
- id: name-block
+ id: field-name-block
vertical: true
gap: 4
children:
- type: antdText
data:
- id: name-label
+ id: field-name-label
+ text: Name
strong: true
- text: "Name"
- type: parsedText
data:
- id: name-value
+ id: field-name-value
text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ # Namespace link block
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
# Labels display block
- type: antdFlex
data:
@@ -133,7 +160,8 @@ spec:
gap: 8
children:
{{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{5}"
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/configmaps/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~configmaps&labels="
) | nindent 34
}}
@@ -145,7 +173,7 @@ spec:
gap: 4
children:
{{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{5}"
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/configmaps/{6}"
) | nindent 34
}}
@@ -159,7 +187,7 @@ spec:
{{ include "incloud-web-resources.factory.time.create" (dict
"req" ".metadata.creationTimestamp"
"text" "Created"
- ) | nindent 38
+ ) | nindent 30
}}
# Owner information block
@@ -172,61 +200,28 @@ spec:
# - type: antdText
# data:
# id: owner-label
+ # text: Owner
# strong: true
- # text: "Owner"
- # - type: antdFlex
+ # - type: parsedText
# data:
- # id: owner-value-container
- # gap: 6
- # align: center
- # children:
- # - type: antdText
- # data:
- # id: owner-value
- # text: "No owner"
- # style:
- # color: "#FF0000"
-
- # RIGHT COLUMN: status
- - type: antdCol
- data:
- id: col-right
- span: 12
- children:
- - type: antdFlex
- data:
- id: right-stack
- vertical: true
- gap: 24
- children:
- # Namespace status phase
- - type: antdFlex
- data:
- id: status-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: status-label
- strong: true
- text: "Status"
- - type: parsedText
- data:
- id: status-value
- text: "{reqsJsonPath[0]['.status.phase']['-']}"
+ # id: owner-value
+ # strong: true
+ # text: "No owner"
+ # style:
+ # color: red
# ------ YAML TAB ------
- - key: "yaml"
- label: "YAML"
+ - key: yaml
+ label: YAML
children:
- # YAML editor for Namespace manifest
+ # YAML editor for resource manifest
- type: YamlEditorSingleton
data:
id: yaml-editor
cluster: "{2}"
- isNameSpaced: false
- type: "builtin"
- typeName: namespaces
+ isNameSpaced: true
+ type: builtin
+ typeName: configmaps
prefillValuesRequestIndex: 0
substractHeight: 400
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/cronjob-details.tpl b/templates/Factory/helpers/factories/cronjob-details.tpl
new file mode 100644
index 0000000..36b1b74
--- /dev/null
+++ b/templates/Factory/helpers/factories/cronjob-details.tpl
@@ -0,0 +1,589 @@
+{{- define "incloud-web-resources.factory.manifets.cronjob-details" -}}
+{{- $key := (default "cronjob-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $podFactoryName := (default "factory-/v1/pods" .podFactoryName) -}}
+{{- $jobFactoryName := (default "factory-/batch/v1/jobs" .jobFactoryName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ # Unique key for this factory configuration
+ key: "{{ $key }}"
+
+ # Sidebar category tags
+ sidebarTags:
+ - cronjobs-details
+
+ # Enable scrollable content card for main section
+ withScrollableMainContentCard: true
+
+ # API endpoint for fetching CronJob details
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
+
+ data:
+ # === HEADER ROW ===
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # CronJob name
+ - type: parsedText
+ data:
+ id: header-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # === MAIN TABS ===
+ - type: antdTabs
+ data:
+ id: tabs-root
+ defaultActiveKey: "details"
+ items:
+ # ------ DETAILS TAB ------
+ - key: "details"
+ label: "Details"
+ children:
+ # Main card container for details section
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ # Grid layout: left and right columns
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # LEFT COLUMN: Metadata, schedule, labels, etc.
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ # Section title
+ - type: antdText
+ data:
+ id: cronjob-title
+ text: "CronJob details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ # Spacer for visual separation
+ - type: Spacer
+ data:
+ id: spacer-main
+ "$space": 16
+
+ # Vertical stack of fields
+ - type: antdFlex
+ data:
+ id: left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Resource name block
+ - type: antdFlex
+ data:
+ id: name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels display block
+ - type: antdFlex
+ data:
+ id: labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=batch~v1~cronjobs&labels="
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
+ ) | nindent 34
+ }}
+
+ # Cron schedule string (crontab)
+ - type: antdFlex
+ data:
+ id: schedule-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: schedule-label
+ strong: true
+ text: "Schedule"
+ - type: parsedText
+ data:
+ id: schedule-value
+ text: "{reqsJsonPath[0]['.spec.schedule']['-']}"
+
+ # Suspend flag
+ - type: antdFlex
+ data:
+ id: suspend-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: suspend-label
+ strong: true
+ text: "Suspend"
+ - type: parsedText
+ data:
+ id: suspend-value
+ text: "{reqsJsonPath[0]['.spec.suspend']['-']}"
+
+ # Concurrency policy
+ - type: antdFlex
+ data:
+ id: concurrency-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: concurrency-label
+ strong: true
+ text: "Concurrency policy"
+ - type: parsedText
+ data:
+ id: concurrency-value
+ text: "{reqsJsonPath[0]['.spec.concurrencyPolicy']['-']}"
+
+ # StartingDeadlineSeconds
+ - type: antdFlex
+ data:
+ id: starting-deadline-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: starting-deadline-label
+ strong: true
+ text: "Starting deadline seconds"
+ - type: parsedText
+ data:
+ id: starting-deadline-value
+ text: "{reqsJsonPath[0]['.spec.startingDeadlineSeconds']['Not configured']}"
+
+ # Last schedule time (from status)
+ - type: antdFlex
+ data:
+ id: last-schedule-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".status.lastScheduleTime"
+ "text" "Last schedule time"
+ ) | nindent 34
+ }}
+
+ # Creation timestamp
+ - type: antdFlex
+ data:
+ id: created-time-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 34
+ }}
+
+ # Owner information block
+ # - type: antdFlex
+ # data:
+ # id: owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: owner-label
+ # strong: true
+ # text: "Owner"
+ # - type: parsedText
+ # data:
+ # id: owner-value
+ # strong: true
+ # text: "No owner"
+ # style:
+ # color: red
+
+ # RIGHT COLUMN: Job template fields (completions, parallelism, deadlines)
+ - type: antdCol
+ data:
+ id: col-right
+ span: 12
+ children:
+ # Section title
+ - type: antdText
+ data:
+ id: job-title
+ text: "Job details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ # Spacer for visual separation
+ - type: Spacer
+ data:
+ id: spacer-job
+ "$space": 16
+
+ # Vertical stack of job fields
+ - type: antdFlex
+ data:
+ id: right-stack
+ vertical: true
+ gap: 24
+ children:
+ # Desired completions
+ - type: antdFlex
+ data:
+ id: desired-completions-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: desired-completions-label
+ strong: true
+ text: "Desired completions"
+ - type: parsedText
+ data:
+ id: desired-completions-value
+ text: "{reqsJsonPath[0]['.spec.jobTemplate.spec.completions']['-']}"
+
+ # Parallelism
+ - type: antdFlex
+ data:
+ id: parallelism-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: parallelism-label
+ strong: true
+ text: "Parallelism"
+ - type: parsedText
+ data:
+ id: parallelism-value
+ text: "{reqsJsonPath[0]['.spec.jobTemplate.spec.parallelism']['-']}"
+
+ # ActiveDeadlineSeconds
+ - type: antdFlex
+ data:
+ id: active-deadline-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: active-deadline-label
+ strong: true
+ text: "Active deadline seconds"
+ - type: parsedText
+ data:
+ id: active-deadline-value
+ text: "{reqsJsonPath[0]['.spec.activeDeadlineSeconds']['Not configured']}"
+
+ # ---- VOLUMES SECTION ----
+ # TODO to be done
+ # - type: antdCol
+ # data:
+ # id: volumes-section
+ # style:
+ # marginTop: 10
+ # padding: 10
+ # children:
+ # # Hide block if no volumes
+ # - type: VisibilityContainer
+ # data:
+ # id: volumes-container
+ # value: "{reqsJsonPath[0]['.spec.volumes']['-']}"
+ # style:
+ # margin: 0
+ # padding: 0
+ # children:
+ # # Section title
+ # - type: antdText
+ # data:
+ # id: volumes-title
+ # text: "Volumes"
+ # strong: true
+ # style:
+ # fontSize: 22
+ # marginBottom: 32px
+ # # Generic table rendering volumes list
+ # - type: EnrichedTable
+ # data:
+ # id: volumes-table
+ # fetchUrl: "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
+ # clusterNamePartOfUrl: "{2}"
+ # customizationId: factory-cronjob-details-volume-list
+ # baseprefix: "/{{ $basePrefix }}"
+ # # Path inside CronJob manifest where volumes are located
+ # pathToItems: ".spec.volumes"
+
+ # ---- INIT CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: init-containers-section
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ # Hide block if no init containers
+ - type: VisibilityContainer
+ data:
+ id: init-containers-container
+ value: "{reqsJsonPath[0]['.spec.jobTemplate.spec.template.spec.initContainers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Init containers"
+ "customizationId" "container-spec-init-containers-list"
+ "type" "init-containers"
+ "apiGroup" "apis/batch/v1"
+ "kind" "cronjobs"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.jobTemplate.spec.template.spec.initContainers"
+ "pathToItems" "['spec','jobTemplate','spec','template','spec','initContainers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # ---- CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: containers-section
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ # Hide block if no containers
+ - type: VisibilityContainer
+ data:
+ id: containers-container
+ value: "{reqsJsonPath[0]['.spec.jobTemplate.spec.template.spec.containers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Containers"
+ "customizationId" "container-spec-containers-list"
+ "type" "containers"
+ "apiGroup" "apis/batch/v1"
+ "kind" "cronjobs"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.jobTemplate.spec.template.spec.containers"
+ "pathToItems" "['spec','jobTemplate','spec','template','spec','containers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # ---- CONDITIONS SECTION ----
+ - type: antdCol
+ data:
+ id: conditions-section
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ # Hide block if no status.conditions
+ - type: VisibilityContainer
+ data:
+ id: conditions-container
+ value: "{reqsJsonPath[0]['.status.conditions']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ # Section title
+ - type: antdText
+ data:
+ id: conditions-title
+ text: "Conditions"
+ strong: true
+ style:
+ fontSize: 22
+ # Table rendering .status.conditions
+ - type: EnrichedTable
+ data:
+ id: conditions-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/cronjobs/{6}"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-status-conditions
+ baseprefix: "/{{ $basePrefix }}"
+ # Path to conditions array
+ pathToItems: ".status.conditions"
+
+ # ------ YAML TAB ------
+ - key: "yaml"
+ label: "YAML"
+ children:
+ # YAML editor for resource manifest
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: "builtin"
+ typeName: cronjobs
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+
+ # ------ PODS TAB ------
+ - key: pods
+ label: Pods
+ children:
+ # Table of Pods that match CronJob's job template labels
+ - type: EnrichedTable
+ data:
+ id: pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "{{ $podFactoryName }}"
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from job template's pod labels
+ labelsSelectorFull:
+ reqIndex: 0
+ pathToLabels: ".spec.jobTemplate.spec.template.metadata.labels"
+ # Items path for Pods list
+ pathToItems: ".items"
+
+
+ # ------ JOBS TAB ------
+ - key: jobs
+ label: Jobs
+ children:
+ # Table of Jobs in the same namespace; filtered by CronJob's jobTemplate labels
+ - type: EnrichedTable
+ data:
+ id: jobs-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "{{ $jobFactoryName }}"
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from CronJob's job template metadata.labels
+ labelsSelectorFull:
+ reqIndex: 0
+ pathToLabels: ".spec.jobTemplate.metadata.labels"
+ # Items path for Jobs list
+ pathToItems: ".items"
+
+ - key: events
+ label: Events
+ children:
+ - type: Events
+ data:
+ id: events
+ baseprefix: "/openapi-ui"
+ clusterNamePartOfUrl: "{2}"
+ wsUrl: "/api/clusters/{2}/openapi-bff-ws/events/eventsWs"
+ pageSize: 50
+ substractHeight: 315
+ limit: 40
+ fieldSelector:
+ regarding.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ regarding.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ regarding.namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ regarding.apiVersion: "{reqsJsonPath[0]['.apiVersion']['-']}"
+ baseFactoryNamespacedAPIKey: base-factory-namespaced-api
+ baseFactoryClusterSceopedAPIKey: base-factory-clusterscoped-api
+ baseFactoryNamespacedBuiltinKey: base-factory-namespaced-builtin
+ baseFactoryClusterSceopedBuiltinKey: base-factory-clusterscoped-builtin
+ baseNamespaceFactoryKey: namespace-details
+
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/daemonset-details.tpl b/templates/Factory/helpers/factories/daemonset-details.tpl
new file mode 100644
index 0000000..e2e5f12
--- /dev/null
+++ b/templates/Factory/helpers/factories/daemonset-details.tpl
@@ -0,0 +1,511 @@
+{{- define "incloud-web-resources.factory.manifets.daemonset-details" -}}
+{{- $key := (default "daemonset-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $podFactoryName := (default "factory-/v1/pods" .podFactoryName) -}}
+{{- $trivyEnabled := (default false .trivyEnabled) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ # Unique key for this factory configuration
+ key: "{{ $key }}"
+
+ # Sidebar category tags
+ sidebarTags:
+ - daemonset-details
+
+ # Enable scrollable content card for main section
+ withScrollableMainContentCard: true
+
+ # API endpoint for fetching DaemonSet details--
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
+
+ data:
+ # === HEADER ROW ===
+ - type: antdFlex
+ data:
+ id: ds-header
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # DaemonSet name
+ - type: parsedText
+ data:
+ id: ds-header-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # === MAIN TABS ===
+ - type: antdTabs
+ data:
+ id: ds-tabs
+ defaultActiveKey: details
+ items:
+ # ------ DETAILS TAB ------
+ - key: details
+ label: Details
+ children:
+ # Main card container for details section
+ - type: ContentCard
+ data:
+ id: ds-details-card
+ style:
+ marginBottom: 24px
+ children:
+ # Section title
+ - type: antdText
+ data:
+ id: ds-details-title
+ text: DaemonSet details
+ strong: true
+ style:
+ fontSize: 20px
+ marginBottom: 12px
+
+ # Spacer for visual separation
+ - type: Spacer
+ data:
+ id: ds-spacer
+ $space: 16
+
+ # Grid layout: left and right columns
+ - type: antdRow
+ data:
+ id: ds-main-row
+ gutter: [48, 12]
+ children:
+ # LEFT COLUMN: Metadata and selectors
+ - type: antdCol
+ data:
+ id: ds-left-col
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: ds-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Resource name block
+ - type: antdFlex
+ data:
+ id: ds-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: ds-name-label
+ text: Name
+ strong: true
+ - type: parsedText
+ data:
+ id: ds-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link block
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+ # Labels display block
+ - type: antdFlex
+ data:
+ id: ds-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=apps~v1~daemonsets&labels="
+ ) | nindent 34
+ }}
+
+ # Node selector block
+ - type: antdFlex
+ data:
+ id: ds-node-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "node-selector"
+ text: "Node selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "node"
+ "jsonPath" ".spec.template.spec.nodeSelector"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~nodes&labels="
+ ) | nindent 34
+ }}
+
+ # Pod selector block
+ - type: antdFlex
+ data:
+ id: ds-pod-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "pod-selector"
+ text: "Pod selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&&labels="
+ ) | nindent 34
+ }}
+
+
+ # Tolerations counter block
+ - type: antdFlex
+ data:
+ id: ds-tolerations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.tolerations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
+ "jsonPathToArray" ".spec.template.spec.tolerations"
+ "pathToValue" "/spec/template/spec/tolerations"
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
+ ) | nindent 34
+ }}
+
+ # Creation time block
+ - type: antdFlex
+ data:
+ id: ds-created-time
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 30
+ }}
+
+ # Owner information block
+ # - type: antdFlex
+ # data:
+ # id: ds-owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: ds-owner-label
+ # text: Owner
+ # strong: true
+ # - type: parsedText
+ # data:
+ # id: ds-owner-value
+ # strong: true
+ # text: "No owner"
+ # style:
+ # color: red
+
+ # RIGHT COLUMN: Status counts
+ - type: antdCol
+ data:
+ id: ds-right-col
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: ds-right-stack
+ vertical: true
+ gap: 24
+ children:
+ # Current pods count
+ - type: antdFlex
+ data:
+ id: ds-current-count
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: ds-current-count-label
+ text: Current count
+ strong: true
+ - type: parsedText
+ data:
+ id: ds-current-count-value
+ text: "{reqsJsonPath[0]['.status.currentNumberScheduled']['-']}"
+
+ # Desired pods count
+ - type: antdFlex
+ data:
+ id: ds-desired-count
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: ds-desired-count-label
+ text: Desired count
+ strong: true
+ - type: parsedText
+ data:
+ id: ds-desired-count-value
+ text: "{reqsJsonPath[0]['.status.desiredNumberScheduled']['-']}"
+
+ # ---- VOLUMES SECTION ----
+ # TODO to be done
+ # - type: antdCol
+ # data:
+ # id: ds-volumes-col
+ # style:
+ # marginTop: 10
+ # padding: 10
+ # children:
+ # - type: VisibilityContainer
+ # data:
+ # id: ds-volumes-container
+ # value: "{reqsJsonPath[0]['.spec.template.spec.volumes']['-']}"
+ # style:
+ # margin: 0
+ # padding: 0
+ # children:
+ # # Section title
+ # - type: antdText
+ # data:
+ # id: ds-volumes-label
+ # text: Volumes
+ # strong: true
+ # style:
+ # fontSize: 22
+ # marginBottom: 32px
+ # # Table rendering volumes
+ # - type: EnrichedTable
+ # data:
+ # id: ds-volumes-table
+ # fetchUrl: "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/daemonsets/{6}"
+ # clusterNamePartOfUrl: "{2}"
+ # customizationId: factory-daemonset-details-volume-list
+ # baseprefix: "/{{ $basePrefix }}"
+ # pathToItems: ".spec.template.spec.volumes"
+
+ # ---- INIT CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-init-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-init-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Init containers"
+ "customizationId" "container-spec-init-containers-list"
+ "type" "init-containers"
+ "apiGroup" "apis/apps/v1"
+ "kind" "daemonsets"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.initContainers"
+ "pathToItems" "['spec','template','spec','initContainers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # ---- CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Containers"
+ "customizationId" "container-spec-containers-list"
+ "type" "containers"
+ "apiGroup" "apis/apps/v1"
+ "kind" "daemonsets"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.containers"
+ "pathToItems" "['spec','template','spec','containers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # ------ YAML TAB ------
+ - key: yaml
+ label: YAML
+ children:
+ # YAML editor for DaemonSet manifest
+ - type: YamlEditorSingleton
+ data:
+ id: ds-yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: apis
+ apiGroup: apps
+ apiVersion: v1
+ typeName: daemonsets
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+
+ # ------ PODS TAB ------
+ - key: pods
+ label: Pods
+ children:
+ # Table of Pods controlled by the DaemonSet
+ - type: EnrichedTable
+ data:
+ id: ds-pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "{{ $podFactoryName }}"
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from pod template labels
+ labelsSelectorFull:
+ reqIndex: 0
+ pathToLabels: ".spec.template.metadata.labels"
+ # Items path for Pods list
+ pathToItems: ".items"
+
+ - key: events
+ label: Events
+ children:
+ - type: Events
+ data:
+ id: events
+ baseprefix: "/openapi-ui"
+ clusterNamePartOfUrl: "{2}"
+ wsUrl: "/api/clusters/{2}/openapi-bff-ws/events/eventsWs"
+ pageSize: 50
+ substractHeight: 315
+ limit: 40
+ fieldSelector:
+ regarding.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ regarding.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ regarding.namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ regarding.apiVersion: "{reqsJsonPath[0]['.apiVersion']['-']}"
+ baseFactoryNamespacedAPIKey: base-factory-namespaced-api
+ baseFactoryClusterSceopedAPIKey: base-factory-clusterscoped-api
+ baseFactoryNamespacedBuiltinKey: base-factory-namespaced-builtin
+ baseFactoryClusterSceopedBuiltinKey: base-factory-clusterscoped-builtin
+ baseNamespaceFactoryKey: namespace-details
+
+ {{- if $trivyEnabled }}
+ # ------ PODS TAB ------
+ - key: reports
+ label: Reports
+ children:
+ - type: EnrichedTable
+ data:
+ id: ds-pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/vulnerabilityreports"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from pod template labels
+ labelsSelector:
+ trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']}"
+ trivy-operator.container.name: "{reqsJsonPath[0]['.spec.template.spec.containers[0].name']}"
+ # Items path for Pods list
+ pathToItems: ".items[*].report.vulnerabilities"
+
+ - key: config-reports
+ label: Config reports
+ children:
+ - type: EnrichedTable
+ data:
+ id: ds-pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/configauditreports"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-aquasecurity.github.io.v1alpha1.configauditreports
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from pod template labels
+ labelsSelector:
+ trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ # Items path for Pods list
+ pathToItems: ".items[*].report.checks"
+
+ {{- end -}}
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/deployment-details.tpl b/templates/Factory/helpers/factories/deployment-details.tpl
new file mode 100644
index 0000000..d347ca2
--- /dev/null
+++ b/templates/Factory/helpers/factories/deployment-details.tpl
@@ -0,0 +1,605 @@
+{{- define "incloud-web-resources.factory.manifets.deployment-details" -}}
+{{- $key := (default "deployment-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $rsFactoryName := (default "factory-/v1/pods" .rsFactoryName) -}}
+{{- $podFactoryName := (default "factory-/v1/pods" .podFactoryName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+# Factory definition for Deployment details page
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ # Stable key used by the UI router/registry
+ key: "{{ $key }}"
+
+ # Sidebar categorization
+ sidebarTags:
+ - deployment-details
+
+ # API request used to fetch the target Deployment
+ urlsToFetch:
+ - /api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}
+
+ # Enables scrollable main content area
+ withScrollableMainContentCard: true
+
+ # Root component tree
+ data:
+ # === Header with icon, name and high-level status ===
+ - type: antdFlex
+ data:
+ id: header-flex
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # Center: deployment name from the fetched object
+ - type: parsedText
+ data:
+ id: header-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ - type: antdFlex
+ data:
+ id: status-header-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.statuses.deployment" . | nindent 12 }}
+
+ # === Main content organized by tabs ===
+ - type: antdTabs
+ data:
+ id: deployment-tabs
+ defaultActiveKey: details
+ items:
+ # ------ DETAILS TAB ------
+ - key: details
+ label: Details
+ children:
+ # Card wrapper for details content
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ # Section title
+ - type: antdText
+ data:
+ id: details-title
+ text: Deployment details
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ # Spacer for breathing room
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+
+ # Two-column layout for metadata and rollout settings
+ - type: antdRow
+ data:
+ id: main-details-row
+ gutter: [48, 12]
+ children:
+ # === LEFT COLUMN: Metadata & links ===
+ - type: antdCol
+ data:
+ id: left-column
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: left-column-flex
+ vertical: true
+ gap: 24
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: name-label
+ text: Name
+ strong: true
+ - type: parsedText
+ data:
+ id: name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link block (rendered by include)
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels list (rendered by include)
+ - type: antdFlex
+ data:
+ id: labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}"
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=apps~v1~deployments&labels="
+ ) | nindent 34
+ }}
+
+ # Node selector block
+ - type: antdFlex
+ data:
+ id: ds-node-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "node-selector"
+ text: "Node selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "node"
+ "jsonPath" ".spec.template.spec.nodeSelector"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~nodes&labels="
+ ) | nindent 34
+ }}
+
+ # Pod selector block
+ - type: antdFlex
+ data:
+ id: ds-pod-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "pod-selector"
+ text: "Pod selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 34
+ }}
+
+
+ # Tolerations counter (rendered by include)
+ - type: antdFlex
+ data:
+ id: tolerations-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.tolerations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}"
+ "jsonPathToArray" ".spec.template.spec.tolerations"
+ "pathToValue" "/spec/template/spec/tolerations"
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}"
+ ) | nindent 34
+ }}
+
+ # Created timestamp (rendered by include)
+ - type: antdFlex
+ data:
+ id: created-time-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 38
+ }}
+
+ # Owner reference (fallback text if no owner)
+ # - type: antdFlex
+ # data:
+ # id: owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: owner-label
+ # text: Owner
+ # strong: true
+ # - type: parsedText
+ # data:
+ # id: owner-value
+ # strong: true
+ # text: "No owner"
+ # style:
+ # color: red
+
+ # === RIGHT COLUMN: Rollout and timing settings ===
+ - type: antdCol
+ data:
+ id: right-column
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: right-column-flex
+ vertical: true
+ gap: 24
+ children:
+ # Status block (mirrors header status)
+ - type: antdFlex
+ data:
+ id: status-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: status-label
+ text: Status
+ strong: true
+ - type: antdFlex
+ data:
+ id: status-header-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.statuses.deployment" . | nindent 38 }}
+
+ # Rolling update strategy type
+ - type: antdFlex
+ data:
+ id: update-strategy-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: update-strategy-label
+ text: Update strategy
+ strong: true
+ - type: parsedText
+ data:
+ id: update-strategy-value
+ text: "{reqsJsonPath[0]['.spec.strategy.type']['-']}"
+
+ # MaxUnavailable value
+ - type: antdFlex
+ data:
+ id: max-unavailable-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: max-unavailable-label
+ text: Max unavailable
+ strong: true
+ - type: parsedText
+ data:
+ id: max-unavailable-value
+ text: "{reqsJsonPath[0]['.spec.strategy.rollingUpdate.maxUnavailable']['-']}"
+
+ # MaxSurge value
+ - type: antdFlex
+ data:
+ id: max-surge-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: max-surge-label
+ text: Max surge
+ strong: true
+ - type: parsedText
+ data:
+ id: max-surge-value
+ text: "{reqsJsonPath[0]['.spec.strategy.rollingUpdate.maxSurge']['-']}"
+
+ # ProgressDeadlineSeconds
+ - type: antdFlex
+ data:
+ id: progress-deadline-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: progress-deadline-label
+ text: Progress deadline seconds
+ strong: true
+ - type: parsedText
+ data:
+ id: progress-deadline-value
+ text: "{reqsJsonPath[0]['.spec.progressDeadlineSeconds']['-']}"
+
+ # MinReadySeconds
+ - type: antdFlex
+ data:
+ id: min-ready-seconds-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: min-ready-seconds-label
+ text: Min ready seconds
+ strong: true
+ - type: parsedText
+ data:
+ id: min-ready-seconds-value
+ text: "{reqsJsonPath[0]['.spec.minReadySeconds']['-']}"
+
+ # === Volumes table (visible only if volumes exist) ===
+ # TODO to be done
+ # - type: antdCol
+ # data:
+ # id: volumes-column
+ # style:
+ # marginTop: 16
+ # padding: 10
+ # children:
+ # - type: VisibilityContainer
+ # data:
+ # id: volumes-container
+ # value: "{reqsJsonPath[0]['.spec.template.spec.volumes']['-']}"
+ # style:
+ # margin: 0
+ # padding: 0
+ # children:
+ # - type: antdText
+ # data:
+ # id: volumes-title
+ # text: Volumes
+ # strong: true
+ # style:
+ # fontSize: 22px
+ # marginBottom: 16px
+ # - type: EnrichedTable
+ # data:
+ # id: volumes-table
+ # fetchUrl: /api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}
+ # clusterNamePartOfUrl: "{2}"
+ # customizationId: factory-deployment-details-volume-list
+ # baseprefix: /{{ $basePrefix }}
+ # # Path in the fetched object to the volumes array
+ # pathToItems: ".spec.template.spec.volumes"
+
+ # ---- INIT CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-init-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-init-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Init containers"
+ "customizationId" "container-spec-init-containers-list"
+ "type" "init-containers"
+ "apiGroup" "apis/apps/v1"
+ "kind" "deployments"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.initContainers"
+ "pathToItems" "['spec','template','spec','initContainers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # ---- CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Containers"
+ "customizationId" "container-spec-containers-list"
+ "type" "containers"
+ "apiGroup" "apis/apps/v1"
+ "kind" "deployments"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.containers"
+ "pathToItems" "['spec','template','spec','containers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # === Conditions table (visible only if status.conditions exist) ===
+ - type: antdCol
+ data:
+ id: conditions-column
+ style:
+ marginTop: 16
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: conditions-container
+ value: "{reqsJsonPath[0]['.status.conditions']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ - type: antdText
+ data:
+ id: conditions-title
+ text: Conditions
+ strong: true
+ style:
+ fontSize: 22px
+ marginBottom: 16px
+ - type: EnrichedTable
+ data:
+ id: conditions-table
+ fetchUrl: /api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/deployments/{6}
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-status-conditions
+ baseprefix: /{{ $basePrefix }}
+ # Path in the fetched object to the conditions array
+ pathToItems: ".status.conditions"
+
+ # ------ YAML TAB ------
+ - key: yaml
+ label: YAML
+ children:
+ # In-place editor bound to the same Deployment
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ apiGroup: apps
+ apiVersion: v1
+ cluster: "{2}"
+ isNameSpaced: true
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+ type: apis
+ typeName: deployments
+
+ # ------ REPLICASETS TAB ------
+ - key: replicasets
+ label: ReplicaSets
+ children:
+ # Table filtered by Deployment's Pod template labels
+ - type: EnrichedTable
+ data:
+ id: replicasets-table
+ fetchUrl: /api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets
+ baseprefix: /{{ $basePrefix }}
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "{{ $rsFactoryName }}"
+ labelsSelectorFull:
+ reqIndex: 0
+ pathToLabels: ".spec.template.metadata.labels"
+ # Path to items list in the response
+ pathToItems: ".items"
+
+ # ------ PODS TAB ------
+ - key: pods
+ label: Pods
+ children:
+ # Table filtered by Deployment's Pod template labels
+ - type: EnrichedTable
+ data:
+ id: pods-table
+ fetchUrl: /api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods
+ baseprefix: /{{ $basePrefix }}
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "{{ $podFactoryName }}"
+ labelsSelectorFull:
+ reqIndex: 0
+ pathToLabels: ".spec.template.metadata.labels"
+ # Path to items list in the response
+ pathToItems: ".items"
+
+ - key: events
+ label: Events
+ children:
+ - type: Events
+ data:
+ id: events
+ baseprefix: "/openapi-ui"
+ clusterNamePartOfUrl: "{2}"
+ wsUrl: "/api/clusters/{2}/openapi-bff-ws/events/eventsWs"
+ pageSize: 50
+ substractHeight: 315
+ limit: 40
+ fieldSelector:
+ regarding.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ regarding.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ regarding.namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ regarding.apiVersion: "{reqsJsonPath[0]['.apiVersion']['-']}"
+ baseFactoryNamespacedAPIKey: base-factory-namespaced-api
+ baseFactoryClusterSceopedAPIKey: base-factory-clusterscoped-api
+ baseFactoryNamespacedBuiltinKey: base-factory-namespaced-builtin
+ baseFactoryClusterSceopedBuiltinKey: base-factory-clusterscoped-builtin
+ baseNamespaceFactoryKey: namespace-details
+
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/horizontalpodautoscalers-details.tpl b/templates/Factory/helpers/factories/horizontalpodautoscalers-details.tpl
new file mode 100644
index 0000000..cb0d2be
--- /dev/null
+++ b/templates/Factory/helpers/factories/horizontalpodautoscalers-details.tpl
@@ -0,0 +1,415 @@
+{{- define "incloud-web-resources.factory.manifets.horizontalpodautoscaler-details" -}}
+{{- $key := (default "horizontalpodautoscaler-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ withScrollableMainContentCard: true
+ sidebarTags:
+ - horizontalpodautoscaler-details
+ urlsToFetch:
+ # API call to fetch HPA details by cluster, namespace, and name
+ - "/api/clusters/{2}/k8s/apis/autoscaling/v2/namespaces/{3}/horizontalpodautoscalers/{6}"
+
+ data:
+ # --- Header section -----------------------------------------------------
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # Resource name
+ - type: parsedText
+ data:
+ id: horizontalpodautoscaler-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # --- Tabs section (Details, YAML, etc.) --------------------------------
+ - type: antdTabs
+ data:
+ id: horizontalpodautoscaler-tabs
+ defaultActiveKey: "details"
+ items:
+ # --- Details tab --------------------------------------------------
+ - key: "details"
+ label: "Details"
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # --- Left column: metadata & config -------------------
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: details-title
+ text: "HorizontalPodAutoscaler details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Resource name
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link (navigates to namespace details)
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels (key/value list with chips)
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/horizontalpodautoscalers/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=autoscaling~v2~horizontalpodautoscalers&labels="
+ ) | nindent 34
+ }}
+
+ # Annotations (counter with expandable view)
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/horizontalpodautoscalers/{6}"
+ ) | nindent 34
+ }}
+
+ # Creation timestamp
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 34
+ }}
+
+ # Owner section (commented, not yet implemented)
+ # Could show controller/parent resource
+
+ # --- Right column: scaling settings -------------------
+ - type: antdCol
+ data:
+ id: col-right
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: routing-title
+ text: "Settings"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ - type: Spacer
+ data:
+ id: routing-spacer
+ "$space": 16
+
+ - type: antdFlex
+ data:
+ id: col-right-stack
+ vertical: true
+ gap: 24
+ children:
+ # Scale target reference
+ # TODO ожидаем компонента, который может ссылаться по Kind/APIGroup/Name
+ # - type: antdFlex
+ # data:
+ # id: horizontalpodautoscaler-target-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: horizontalpodautoscaler-target-label
+ # strong: true
+ # text: "Scale Target"
+ # - type: parsedText
+ # data:
+ # id: horizontalpodautoscaler-hostname-value
+ # text: "{reqsJsonPath[0]['.spec.scaleTargetRef']['-']}"
+
+ # Minimum replicas
+ - type: antdFlex
+ data:
+ id: horizontalpodautoscaler-min-replicas-block
+ vertical: true
+ gap: 12
+ children:
+ - type: antdFlex
+ data:
+ id: min-replicas-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: min-replicas-label
+ strong: true
+ text: "Min replicas"
+ - type: parsedText
+ data:
+ id: min-replicas-value
+ text: "{reqsJsonPath[0]['.spec.minReplicas']['-']}"
+
+ # Maximum replicas
+ - type: antdFlex
+ data:
+ id: horizontalpodautoscaler-max-replicas-block
+ vertical: true
+ gap: 12
+ children:
+ - type: antdFlex
+ data:
+ id: max-replicas-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: max-replicas-label
+ strong: true
+ text: "Max replicas"
+ - type: parsedText
+ data:
+ id: max-replicas-value
+ text: "{reqsJsonPath[0]['.spec.maxReplicas']['-']}"
+
+ # Last scale time
+ - type: antdFlex
+ data:
+ id: horizontalpodautoscaler-last-scale-time-block
+ vertical: true
+ gap: 12
+ children:
+ - type: antdFlex
+ data:
+ id: last-scale-time-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: last-scale-time-label
+ strong: true
+ text: "Last scale time"
+ - type: parsedText
+ data:
+ id: last-scale-time-value
+ text: "{reqsJsonPath[0]['.status.lastScaleTime']['-']}"
+
+ # Current replicas
+ - type: antdFlex
+ data:
+ id: horizontalpodautoscaler-current-scale-time-block
+ vertical: true
+ gap: 12
+ children:
+ - type: antdFlex
+ data:
+ id: current-scale-time-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: current-scale-time-label
+ strong: true
+ text: "Current replicas"
+ - type: parsedText
+ data:
+ id: current-scale-time-value
+ text: "{reqsJsonPath[0]['.status.currentReplicas']['-']}"
+
+ # Desired replicas
+ - type: antdFlex
+ data:
+ id: horizontalpodautoscaler-desired-scale-time-block
+ vertical: true
+ gap: 12
+ children:
+ - type: antdFlex
+ data:
+ id: desired-scale-time-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: desired-scale-time-label
+ strong: true
+ text: "Desired replicas"
+ - type: parsedText
+ data:
+ id: desired-scale-time-value
+ text: "{reqsJsonPath[0]['.status.desiredReplicas']['-']}"
+
+
+ # === Conditions table ===
+ - type: antdCol
+ data:
+ id: conditions-column
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: conditions-container
+ value: "{reqsJsonPath[0]['.status.conditions']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ - type: antdText
+ data:
+ id: conditions-title
+ text: "Conditions"
+ strong: true
+ style:
+ fontSize: 22
+ - type: EnrichedTable
+ data:
+ id: conditions-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/autoscaling/v2/namespaces/{3}/horizontalpodautoscalers/{6}"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-status-conditions
+ baseprefix: "/{{ $basePrefix }}"
+ pathToItems: ".status.conditions"
+
+ # --- YAML tab -----------------------------------------------------
+ - key: "yaml"
+ label: "YAML"
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: "builtin"
+ typeName: horizontalpodautoscalers
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+
+ - key: events
+ label: Events
+ children:
+ - type: Events
+ data:
+ id: events
+ baseprefix: "/openapi-ui"
+ clusterNamePartOfUrl: "{2}"
+ wsUrl: "/api/clusters/{2}/openapi-bff-ws/events/eventsWs"
+ pageSize: 50
+ substractHeight: 315
+ limit: 40
+ fieldSelector:
+ regarding.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ regarding.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ regarding.namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ regarding.apiVersion: "{reqsJsonPath[0]['.apiVersion']['-']}"
+ baseFactoryNamespacedAPIKey: base-factory-namespaced-api
+ baseFactoryClusterSceopedAPIKey: base-factory-clusterscoped-api
+ baseFactoryNamespacedBuiltinKey: base-factory-namespaced-builtin
+ baseFactoryClusterSceopedBuiltinKey: base-factory-clusterscoped-builtin
+ baseNamespaceFactoryKey: namespace-details
+
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/job-details.tpl b/templates/Factory/helpers/factories/job-details.tpl
new file mode 100644
index 0000000..10cd2ed
--- /dev/null
+++ b/templates/Factory/helpers/factories/job-details.tpl
@@ -0,0 +1,575 @@
+{{- define "incloud-web-resources.factory.manifets.job-details" -}}
+{{- $key := (default "job-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $podFactoryName := (default "factory-/v1/pods" .podFactoryName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+# Factory definition for Job details page
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ # Unique key for this view
+ key: "{{ $key }}"
+
+ # Tags for sidebar navigation
+ sidebarTags:
+ - jobs-details
+
+ # Enables scrolling in the main content area
+ withScrollableMainContentCard: true
+
+ # API endpoint to fetch Job resource
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
+
+ data:
+ # === Header with icon, name, and job status ===
+ - type: antdFlex
+ data:
+ id: header-flex
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # Job name
+ - type: parsedText
+ data:
+ id: header-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ - type: antdFlex
+ data:
+ id: status-header-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.statuses.job" . | nindent 12 }}
+
+ # === Main content tabs ===
+ - type: antdTabs
+ data:
+ id: job-tabs
+ defaultActiveKey: "details"
+ items:
+ # ------ DETAILS TAB ------
+ - key: "details"
+ label: "Details"
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ - type: antdRow
+ data:
+ id: details-row
+ gutter: [48, 12]
+ children:
+ # === LEFT COLUMN: Job metadata ===
+ - type: antdCol
+ data:
+ id: left-column
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: job-details-title
+ text: "Job details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+
+ - type: antdFlex
+ data:
+ id: left-column-flex
+ vertical: true
+ gap: 24
+ children:
+ # Job name
+ - type: antdFlex
+ data:
+ id: name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels
+ - type: antdFlex
+ data:
+ id: labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=batch~v1~jobs&labels="
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
+ ) | nindent 34
+ }}
+
+ # Desired completions
+ - type: antdFlex
+ data:
+ id: completions-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: completions-label
+ strong: true
+ text: "Desired completions"
+ - type: parsedText
+ data:
+ id: completions-value
+ text: "{reqsJsonPath[0]['.spec.completions']['-']}"
+
+ # Parallelism
+ - type: antdFlex
+ data:
+ id: parallelism-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: parallelism-label
+ strong: true
+ text: "Parallelism"
+ - type: parsedText
+ data:
+ id: parallelism-value
+ text: "{reqsJsonPath[0]['.spec.parallelism']['-']}"
+
+ # Active deadline seconds
+ - type: antdFlex
+ data:
+ id: active-deadline-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: active-deadline-label
+ strong: true
+ text: "Active deadline seconds"
+ - type: parsedText
+ data:
+ id: active-deadline-value
+ text: "{reqsJsonPath[0]['.spec.activeDeadlineSeconds']['-']}"
+
+ # Created timestamp
+ - type: antdFlex
+ data:
+ id: created-time-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 34
+ }}
+
+ # Owner reference
+ # - type: antdFlex
+ # data:
+ # id: owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: owner-label
+ # strong: true
+ # text: "Owner"
+ # - type: parsedText
+ # data:
+ # id: owner-value
+ # strong: true
+ # text: "No owner"
+ # style:
+ # color: red
+
+ # === RIGHT COLUMN: Job status ===
+ - type: antdCol
+ data:
+ id: right-column
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: job-status-title
+ text: "Job status"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ - type: Spacer
+ data:
+ id: status-spacer
+ "$space": 16
+
+ - type: antdFlex
+ data:
+ id: right-column-flex
+ vertical: true
+ gap: 24
+ children:
+ # Status (Complete/Failed)
+ - type: antdFlex
+ data:
+ id: status-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: status-label
+ strong: true
+ text: "Status"
+ - type: antdFlex
+ data:
+ id: status-header-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.statuses.job" . | nindent 38 }}
+
+ # Start time
+ - type: antdFlex
+ data:
+ id: start-time-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".status.startTime"
+ "text" "Start time"
+ ) | nindent 34
+ }}
+
+ # Completion time
+ - type: antdFlex
+ data:
+ id: completion-time-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".status.completionTime"
+ "text" "Completion time"
+ ) | nindent 34
+ }}
+
+ # Succeeded pods count
+ - type: antdFlex
+ data:
+ id: succeeded-pods-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: succeeded-pods-label
+ strong: true
+ text: "Succeeded pods"
+ - type: parsedText
+ data:
+ id: succeeded-pods-value
+ text: "{reqsJsonPath[0]['.status.succeeded']['-']}"
+
+ # Active pods count
+ - type: antdFlex
+ data:
+ id: active-pods-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: active-pods-label
+ strong: true
+ text: "Active pods"
+ - type: parsedText
+ data:
+ id: active-pods-value
+ text: "{reqsJsonPath[0]['.status.active']['-']}"
+
+ # Failed pods count
+ - type: antdFlex
+ data:
+ id: failed-pods-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: failed-pods-label
+ strong: true
+ text: "Failed pods"
+ - type: parsedText
+ data:
+ id: failed-pods-value
+ text: "{reqsJsonPath[0]['.status.failed']['-']}"
+
+ # === Volumes table ===
+ # TODO to be done
+ # - type: antdCol
+ # data:
+ # id: volumes-column
+ # style:
+ # marginTop: 10
+ # padding: 10
+ # children:
+ # - type: VisibilityContainer
+ # data:
+ # id: volumes-container
+ # value: "{reqsJsonPath[0]['.spec.volumes']['-']}"
+ # style:
+ # margin: 0
+ # padding: 0
+ # children:
+ # - type: antdText
+ # data:
+ # id: volumes-title
+ # text: "Volumes"
+ # strong: true
+ # style:
+ # fontSize: 22
+ # marginBottom: 32px
+ # - type: EnrichedTable
+ # data:
+ # id: volumes-table
+ # fetchUrl: "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
+ # clusterNamePartOfUrl: "{2}"
+ # customizationId: factory-job-details-volume-list
+ # baseprefix: "/{{ $basePrefix }}"
+ #
+ # pathToItems: ".spec.template.spec.volumes"
+
+ # ---- INIT CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-init-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-init-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Init containers"
+ "customizationId" "container-spec-init-containers-list"
+ "type" "init-containers"
+ "apiGroup" "apis/batch/v1"
+ "kind" "jobs"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.initContainers"
+ "pathToItems" "['spec','template','spec','initContainers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # ---- CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Containers"
+ "customizationId" "container-spec-containers-list"
+ "type" "containers"
+ "apiGroup" "apis/batch/v1"
+ "kind" "jobs"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.containers"
+ "pathToItems" "['spec','template','spec','containers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+
+ # === Conditions table ===
+ - type: antdCol
+ data:
+ id: conditions-column
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: conditions-container
+ value: "{reqsJsonPath[0]['.status.conditions']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ - type: antdText
+ data:
+ id: conditions-title
+ text: "Conditions"
+ strong: true
+ style:
+ fontSize: 22
+ - type: EnrichedTable
+ data:
+ id: conditions-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-status-conditions
+ baseprefix: "/{{ $basePrefix }}"
+ pathToItems: ".status.conditions"
+
+ # ------ YAML TAB ------
+ - key: "yaml"
+ label: "YAML"
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: "builtin"
+ typeName: jobs
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+
+ # ------ PODS TAB ------
+ - key: pods
+ label: Pods
+ children:
+ - type: EnrichedTable
+ data:
+ id: pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "{{ $podFactoryName }}"
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from Job's pod template labels
+ labelsSelectorFull:
+ reqIndex: 0
+ pathToLabels: ".spec.template.metadata.labels"
+ pathToItems: ".items"
+
+ - key: events
+ label: Events
+ children:
+ - type: Events
+ data:
+ id: events
+ baseprefix: "/openapi-ui"
+ clusterNamePartOfUrl: "{2}"
+ wsUrl: "/api/clusters/{2}/openapi-bff-ws/events/eventsWs"
+ pageSize: 50
+ substractHeight: 315
+ limit: 40
+ fieldSelector:
+ regarding.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ regarding.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ regarding.namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ regarding.apiVersion: "{reqsJsonPath[0]['.apiVersion']['-']}"
+ baseFactoryNamespacedAPIKey: base-factory-namespaced-api
+ baseFactoryClusterSceopedAPIKey: base-factory-clusterscoped-api
+ baseFactoryNamespacedBuiltinKey: base-factory-namespaced-builtin
+ baseFactoryClusterSceopedBuiltinKey: base-factory-clusterscoped-builtin
+ baseNamespaceFactoryKey: namespace-details
+
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/networkpolicy-details.tpl b/templates/Factory/helpers/factories/networkpolicy-details.tpl
new file mode 100644
index 0000000..61dd188
--- /dev/null
+++ b/templates/Factory/helpers/factories/networkpolicy-details.tpl
@@ -0,0 +1,283 @@
+{{- define "incloud-web-resources.factory.manifets.networkpolicy-details" -}}
+{{- $key := (default "networkpolicy-details" .key) -}}
+{{- $trivyEnabled := (default false .trivyEnabled) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $podFactoryName := (default "factory-node-details-/v1/pods" .podFactoryName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ withScrollableMainContentCard: true
+ sidebarTags:
+ - networkpolicy-details
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/apis/networking.k8s.io/v1/namespaces/{3}/networkpolicies/{6}"
+
+ # Header row with badge and networkpolicy name
+ data:
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # networkpolicy name
+ - type: parsedText
+ data:
+ id: networkpolicy-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # Tabs with Details, YAML, and Pods
+ - type: antdTabs
+ data:
+ id: networkpolicy-tabs
+ defaultActiveKey: "details"
+ items:
+ # Details tab
+ - key: "details"
+ label: "Details"
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # Left column: metadata and config
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: details-title
+ text: "NetworkPolicy details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/networking.k8s.io/v1/namespaces/{3}/networkpolicies/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=networking.k8s.io~v1~networkpolicies&labels="
+ ) | nindent 34
+ }}
+
+ # Pod selector block
+ - type: antdFlex
+ data:
+ id: ds-pod-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "pod-selector"
+ text: "Pod selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.podSelector.matchLabels"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 34
+ }}
+
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/networkpolicys/{6}"
+ ) | nindent 34
+ }}
+
+ # Created timestamp
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 34
+ }}
+
+ # Owner
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-label
+ # strong: true
+ # text: "Owner"
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-flex
+ # gap: 6
+ # align: center
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-fallback
+ # text: "No owner"
+ # style:
+ # color: "#FF0000"
+
+ # Right column: routing and ports
+ # - type: antdCol
+ # data:
+ # id: col-right
+ # span: 12
+ # children:
+ # - type: antdText
+ # data:
+ # id: routing-title
+ # text: "networkpolicy rules"
+ # strong: true
+ # style:
+ # fontSize: 20
+ # marginBottom: 12px
+
+
+
+ # YAML tab
+ - key: "yaml"
+ label: "YAML"
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: "builtin"
+ typeName: networkpolicys
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+
+ # Pods tab
+ - key: "pods"
+ label: "Pod Selector"
+ children:
+ - type: VisibilityContainer
+ data:
+ id: networkpolicy-pod-serving-vis
+ value: "{reqsJsonPath[0]['.spec.podSelector.matchLabels']['-']}"
+ style: { margin: 0, padding: 0 }
+ children:
+ - type: EnrichedTable
+ data:
+ id: pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "{{ $podFactoryName }}"
+ baseprefix: "/{{ $basePrefix }}"
+ labelsSelectorFull:
+ reqIndex: 0
+ pathToLabels: ".spec.podSelector.matchLabels"
+ pathToItems: ".items"
+
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/pod-details.tpl b/templates/Factory/helpers/factories/pod-details.tpl
new file mode 100644
index 0000000..bfa0090
--- /dev/null
+++ b/templates/Factory/helpers/factories/pod-details.tpl
@@ -0,0 +1,611 @@
+{{- define "incloud-web-resources.factory.manifets.pod-details" -}}
+{{- $key := (default "pod-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $trivyEnabled := (default false .trivyEnabled) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ sidebarTags:
+ - pods-details
+ withScrollableMainContentCard: true
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
+
+ # Header row with badge, pod name, and status
+ data:
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # Pod name next to badge
+ - type: parsedText
+ data:
+ id: header-pod-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ - type: antdFlex
+ data:
+ id: status-header-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.statuses.pod" . | nindent 38 }}
+
+ # Tabs with Details, YAML, Logs, and Terminal views
+ - type: antdTabs
+ data:
+ id: pod-tabs
+ defaultActiveKey: "details"
+ items:
+ # Details tab with metadata and spec
+ - key: "details"
+ label: "Details"
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ # Title of the details section
+ - type: antdText
+ data:
+ id: details-title
+ text: "Pod details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+ # Spacer before grid
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+ # Two-column layout for metadata (left) and status/spec (right)
+
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # Left column: metadata, links, labels
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Display name label/value
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link (kept as include)
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+ # Labels list (kept as include)
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~pods&labels="
+ ) | nindent 34
+ }}
+
+ # Node selector block
+ - type: antdFlex
+ data:
+ id: ds-node-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "node-selector"
+ text: "Node selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "node"
+ "jsonPath" ".spec.template.spec.nodeSelector"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~nodes&labels="
+ ) | nindent 34
+ }}
+
+ # Tolerations counter (kept as include)
+ - type: antdFlex
+ data:
+ id: meta-tolerations-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.tolerations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
+ "jsonPathToArray" ".spec.tolerations"
+ "pathToValue" "/spec/tolerations"
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
+ ) | nindent 34
+ }}
+
+ # Created timestamp (kept as include)
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 38
+ }}
+
+ # Owner information (fallback when absent)
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-label
+ # strong: true
+ # text: "Owner"
+ # - type: parsedText
+ # data:
+ # id: meta-owner-fallback
+ # strong: true
+ # text: "No owner"
+ # style:
+ # color: red
+
+ # Right column: status and runtime info
+ - type: antdCol
+ data:
+ id: col-right
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: col-right-stack
+ vertical: true
+ gap: 24
+ children:
+ # Status block with readiness reason mapping
+ - type: antdFlex
+ data:
+ id: status-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: status-label
+ strong: true
+ text: "Status"
+ # Pod readiness/status indicator
+ - type: antdFlex
+ data:
+ id: status-label-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.statuses.pod" . | nindent 38 }}
+
+ # Restart policy
+ - type: antdFlex
+ data:
+ id: restart-policy-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: restart-policy-label
+ strong: true
+ text: "Restart policy"
+ - type: parsedText
+ data:
+ id: restart-policy-value
+ text: "{reqsJsonPath[0]['.spec.restartPolicy']['-']} restart"
+
+ # Active deadline seconds
+ - type: antdFlex
+ data:
+ id: active-deadline-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: active-deadline-label
+ strong: true
+ text: "Active deadline seconds"
+ - type: parsedText
+ data:
+ id: active-deadline-value
+ text: "{reqsJsonPath[0]['.spec.activeDeadlineSeconds']['-']}"
+
+ # Pod IP
+ - type: antdFlex
+ data:
+ id: pod-ip-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: pod-ip-label
+ strong: true
+ text: "Pod IP"
+ - type: parsedText
+ data:
+ id: pod-ip-value
+ text: "{reqsJsonPath[0]['.status.podIP']['-']}"
+
+ # Host IP
+ - type: antdFlex
+ data:
+ id: host-ip-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: host-ip-label
+ strong: true
+ text: "Host IP"
+ - type: parsedText
+ data:
+ id: host-ip-value
+ text: "{reqsJsonPath[0]['.status.hostIP']['-']}"
+
+ # Node details link (kept as include)
+ - type: antdFlex
+ data:
+ id: node-link-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-node
+ text: Node
+ strong: true
+ - type: antdFlex
+ data:
+ id: node-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: node-resource-badge
+ value: Node
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "name"
+ "jsonPath" ".spec.nodeName"
+ "factory" "node-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # QoS class
+ - type: antdFlex
+ data:
+ id: qos-class-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: qos-class-label
+ strong: true
+ text: "QOS class"
+ - type: parsedText
+ data:
+ id: qos-class-value
+ text: "{reqsJsonPath[0]['.status.qosClass']['-']}"
+
+ # Volumes section (table is hidden if no volumes)
+ # TODO to be done
+ # - type: antdCol
+ # data:
+ # id: volumes-col
+ # style:
+ # marginTop: 10
+ # padding: 10
+ # children:
+ # - type: VisibilityContainer
+ # data:
+ # id: volumes-visibility
+ # value: "{reqsJsonPath[0]['.spec.volumes']['-']}"
+ # style:
+ # margin: 0
+ # padding: 0
+ # children:
+ # # Volumes title
+ # - type: antdText
+ # data:
+ # id: volumes-title
+ # text: "Volumes"
+ # strong: true
+ # style:
+ # fontSize: 22
+ # marginBottom: 32px
+ # # Volumes table
+ # - type: EnrichedTable
+ # data:
+ # id: volumes-table
+ # fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
+ # clusterNamePartOfUrl: "{2}"
+ # customizationId: factory-pod-details-volume-list
+ # baseprefix: "/{{ $basePrefix }}"
+ # pathToItems: ".spec.volumes"
+
+
+ # Init containers section (hidden if none)
+ - type: antdCol
+ data:
+ id: init-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Init containers"
+ "customizationId" "container-status-init-containers-list"
+ "type" "init-containers"
+ "apiGroup" "api/v1"
+ "kind" "pods"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".status.initContainerStatuses"
+ "pathToItems" "['status','initContainerStatuses']"
+ "basePrefix" $basePrefix
+ ) | nindent 22
+ }}
+
+ # Containers section (hidden if none)
+ - type: antdCol
+ data:
+ id: containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Containers"
+ "customizationId" "container-status-containers-list"
+ "type" "containers"
+ "apiGroup" "api/v1"
+ "kind" "pods"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".status.containerStatuses"
+ "pathToItems" "['status','containerStatuses']"
+ "basePrefix" $basePrefix
+ ) | nindent 22
+ }}
+
+ # Conditions section (hidden if none)
+ - type: antdCol
+ data:
+ id: conditions-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: conditions-visibility
+ value: "{reqsJsonPath[0]['.status.conditions']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ # Conditions title
+ - type: antdText
+ data:
+ id: conditions-title
+ text: "Conditions"
+ strong: true
+ style:
+ fontSize: 22
+ # Conditions table
+ - type: EnrichedTable
+ data:
+ id: conditions-table
+ fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-status-conditions
+ baseprefix: "/{{ $basePrefix }}"
+
+ pathToItems: ".status.conditions"
+
+ # YAML tab with inline editor
+ - key: "yaml"
+ label: "YAML"
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: "builtin"
+ typeName: pods
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+
+ # Logs tab with live pod logs
+ - key: "logs"
+ label: "Logs"
+ children:
+ - type: PodLogs
+ data:
+ id: pod-logs
+ cluster: "{2}"
+ namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ podName: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ substractHeight: 400
+
+ # Terminal tab with exec into pod
+ - key: "terminal"
+ label: "Terminal"
+ children:
+ - type: PodTerminal
+ data:
+ id: pod-terminal
+ cluster: "{2}"
+ namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ podName: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ substractHeight: 400
+
+ - key: events
+ label: Events
+ children:
+ - type: Events
+ data:
+ id: events
+ baseprefix: "/openapi-ui"
+ clusterNamePartOfUrl: "{2}"
+ wsUrl: "/api/clusters/{2}/openapi-bff-ws/events/eventsWs"
+ pageSize: 50
+ substractHeight: 315
+ limit: 40
+ fieldSelector:
+ regarding.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ regarding.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ regarding.namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ regarding.apiVersion: "{reqsJsonPath[0]['.apiVersion']['-']}"
+ baseFactoryNamespacedAPIKey: base-factory-namespaced-api
+ baseFactoryClusterSceopedAPIKey: base-factory-clusterscoped-api
+ baseFactoryNamespacedBuiltinKey: base-factory-namespaced-builtin
+ baseFactoryClusterSceopedBuiltinKey: base-factory-clusterscoped-builtin
+ baseNamespaceFactoryKey: namespace-details
+
+ {{- if $trivyEnabled }}
+ # ------ PODS TAB ------
+ - key: reports
+ label: Reports
+ children:
+ - type: EnrichedTable
+ data:
+ id: ds-pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/vulnerabilityreports"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from pod template labels
+ labelsSelector:
+ trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ # Items path for Pods list
+ pathToItems: ".items[*].report.vulnerabilities"
+
+ - key: config-reports
+ label: Config reports
+ children:
+ - type: EnrichedTable
+ data:
+ id: ds-pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/configauditreports"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-aquasecurity.github.io.v1alpha1.configauditreports
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from pod template labels
+ labelsSelector:
+ trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ # Items path for Pods list
+ pathToItems: ".items[*].report.checks"
+
+ {{- end -}}
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/poddisruptionbudget-details.tpl b/templates/Factory/helpers/factories/poddisruptionbudget-details.tpl
new file mode 100644
index 0000000..013c8ca
--- /dev/null
+++ b/templates/Factory/helpers/factories/poddisruptionbudget-details.tpl
@@ -0,0 +1,317 @@
+{{- define "incloud-web-resources.factory.manifets.poddisruptionbudget-details" -}}
+{{- $key := (default "poddisruptionbudget-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ withScrollableMainContentCard: true
+ sidebarTags:
+ - poddisruptionbudget-details
+ urlsToFetch:
+ # API call to fetch HPA details by cluster, namespace, and name
+ - "/api/clusters/{2}/k8s/apis/policy/v1/namespaces/{3}/poddisruptionbudgets/{6}"
+
+ data:
+ # --- Header section -----------------------------------------------------
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # Resource name
+ - type: parsedText
+ data:
+ id: poddisruptionbudget-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # --- Tabs section (Details, YAML, etc.) --------------------------------
+ - type: antdTabs
+ data:
+ id: poddisruptionbudget-tabs
+ defaultActiveKey: "details"
+ items:
+ # --- Details tab --------------------------------------------------
+ - key: "details"
+ label: "Details"
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # --- Left column: metadata & config -------------------
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: details-title
+ text: "PodDisruptionBudget details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Resource name
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link (navigates to namespace details)
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels (key/value list with chips)
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/poddisruptionbudgets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=policy~v1~poddisruptionbudgets&labels="
+ ) | nindent 34
+ }}
+
+ # Pod selector block
+ - type: antdFlex
+ data:
+ id: ds-pod-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "pod-selector"
+ text: "Pod selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.selector.matchLabels"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 34
+ }}
+
+ # Annotations (counter with expandable view)
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/poddisruptionbudgets/{6}"
+ ) | nindent 34
+ }}
+
+ # Creation timestamp
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 34
+ }}
+
+ # Owner section (commented, not yet implemented)
+ # Could show controller/parent resource
+
+ # --- Right column: scaling settings -------------------
+ - type: antdCol
+ data:
+ id: col-right
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: routing-title
+ text: "Settings"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ - type: Spacer
+ data:
+ id: routing-spacer
+ "$space": 16
+
+ - type: antdFlex
+ data:
+ id: col-right-stack
+ vertical: true
+ gap: 24
+ children:
+ - type: antdFlex
+ data:
+ id: poddisruptionbudget-max-unavailable-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: poddisruptionbudget-max-unavailable-label
+ strong: true
+ text: "Max unavailable"
+ - type: parsedText
+ data:
+ id: poddisruptionbudget-max-unavailable-value
+ text: "{reqsJsonPath[0]['.spec.maxUnavailable']['-']}"
+
+ - type: antdFlex
+ data:
+ id: col-right-stack
+ vertical: true
+ gap: 24
+ children:
+ - type: antdFlex
+ data:
+ id: poddisruptionbudget-disruptions-allowed-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: poddisruptionbudget-disruptions-allowed-label
+ strong: true
+ text: "Max unavailable"
+ - type: parsedText
+ data:
+ id: poddisruptionbudget-disruptions-allowed-value
+ text: "{reqsJsonPath[0]['.status.disruptionsAllowed']['-']}"
+
+ # === Conditions table ===
+ - type: antdCol
+ data:
+ id: conditions-column
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: conditions-container
+ value: "{reqsJsonPath[0]['.status.conditions']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ - type: antdText
+ data:
+ id: conditions-title
+ text: "Conditions"
+ strong: true
+ style:
+ fontSize: 22
+ - type: EnrichedTable
+ data:
+ id: conditions-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/policy/v1/namespaces/{3}/poddisruptionbudgets/{6}"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-status-conditions
+ baseprefix: "/{{ $basePrefix }}"
+ pathToItems: ".status.conditions"
+
+ # --- YAML tab -----------------------------------------------------
+ - key: "yaml"
+ label: "YAML"
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: "builtin"
+ typeName: poddisruptionbudgets
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/replicaset-details.tpl b/templates/Factory/helpers/factories/replicaset-details.tpl
new file mode 100644
index 0000000..fd7d523
--- /dev/null
+++ b/templates/Factory/helpers/factories/replicaset-details.tpl
@@ -0,0 +1,520 @@
+{{- define "incloud-web-resources.factory.manifets.replicaset-details" -}}
+{{- $key := (default "replicaset-details" .key) -}}
+{{- $trivyEnabled := (default false .trivyEnabled) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $podFactoryName := (default "factory-/v1/pods" .podFactoryName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ sidebarTags:
+ - replicaset-details
+ withScrollableMainContentCard: true
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
+
+ # Header row with badge and ReplicaSet name
+ data:
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # ReplicaSet name
+ - type: parsedText
+ data:
+ id: rs-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # Tabs with Details, YAML, and Pods
+ - type: antdTabs
+ data:
+ id: rs-tabs
+ defaultActiveKey: details
+ items:
+ # Details tab with metadata and spec info
+ - key: details
+ label: Details
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ # Title
+ - type: antdText
+ data:
+ id: details-title
+ text: ReplicaSet details
+ strong: true
+ style:
+ fontSize: 20px
+ marginBottom: 12px
+
+ # Spacer
+ - type: Spacer
+ data:
+ id: details-spacer
+ $space: 16
+
+ # Two-column layout
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # Left column: metadata
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Name
+ strong: true
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=apps~v1~replicasets&labels="
+ ) | nindent 34
+ }}
+
+ # Node selector block
+ - type: antdFlex
+ data:
+ id: ds-node-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "node-selector"
+ text: "Node selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "node"
+ "jsonPath" ".spec.template.spec.nodeSelector"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~nodes&labels="
+ ) | nindent 34
+ }}
+
+ # Pod selector block
+ - type: antdFlex
+ data:
+ id: ds-pod-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "pod-selector"
+ text: "Pod selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 34
+ }}
+
+ # Tolerations
+ - type: antdFlex
+ data:
+ id: meta-tolerations-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.tolerations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
+ "jsonPathToArray" ".spec.tolerations"
+ "pathToValue" "/spec/tolerations"
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
+ ) | nindent 34
+ }}
+
+ # Created timestamp
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 38
+ }}
+
+ # Owner block
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-label
+ # text: Owner
+ # strong: true
+ # - type: parsedText
+ # data:
+ # id: meta-owner-fallback
+ # strong: true
+ # text: "No owner"
+ # style:
+ # color: red
+
+ # Right column: replica counts
+ - type: antdCol
+ data:
+ id: col-right
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: col-right-stack
+ vertical: true
+ gap: 24
+ children:
+ # Current replicas
+ - type: antdFlex
+ data:
+ id: replicas-current-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: replicas-current-label
+ text: Current count
+ strong: true
+ - type: parsedText
+ data:
+ id: replicas-current-value
+ text: "{reqsJsonPath[0]['.status.replicas']['-']}"
+
+ # Desired replicas
+ - type: antdFlex
+ data:
+ id: replicas-desired-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: replicas-desired-label
+ text: Desired count
+ strong: true
+ - type: parsedText
+ data:
+ id: replicas-desired-value
+ text: "{reqsJsonPath[0]['.spec.replicas']['-']}"
+
+ # Volumes section
+ # TODO to be done
+ # - type: antdCol
+ # data:
+ # id: volumes-col
+ # style:
+ # marginTop: 10
+ # padding: 10
+ # children:
+ # - type: VisibilityContainer
+ # data:
+ # id: volumes-visibility
+ # value: "{reqsJsonPath[0]['.spec.template.spec.volumes']['-']}"
+ # style:
+ # margin: 0
+ # padding: 0
+ # children:
+ # - type: antdText
+ # data:
+ # id: volumes-title
+ # text: Volumes
+ # strong: true
+ # style:
+ # fontSize: 22px
+ # marginBottom: 32px
+ # - type: EnrichedTable
+ # data:
+ # id: volumes-table
+ # fetchUrl: "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
+ # clusterNamePartOfUrl: "{2}"
+ # customizationId: factory-replicaset-details-volume-list
+ # baseprefix: "/{{ $basePrefix }}"
+ #
+ # pathToItems:
+ # - spec
+ # - template
+ # - spec
+ # - volumes
+
+
+ # ---- INIT CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-init-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-init-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Init containers"
+ "customizationId" "container-spec-init-containers-list"
+ "type" "init-containers"
+ "apiGroup" "apis/apps/v1"
+ "kind" "replicasets"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.initContainers"
+ "pathToItems" "['spec','template','spec','initContainers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # ---- CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Containers"
+ "customizationId" "container-spec-containers-list"
+ "type" "containers"
+ "apiGroup" "apis/apps/v1"
+ "kind" "replicasets"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.containers"
+ "pathToItems" "['spec','template','spec','containers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # YAML tab
+ - key: yaml
+ label: YAML
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: apis
+ apiGroup: apps
+ apiVersion: v1
+ typeName: replicasets
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+
+ # Pods tab
+ - key: pods
+ label: Pods
+ children:
+ - type: EnrichedTable
+ data:
+ id: pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "{{ $podFactoryName }}"
+ baseprefix: "/{{ $basePrefix }}"
+ labelsSelectorFull:
+ reqIndex: 0
+ pathToLabels: ".spec.template.metadata.labels"
+ pathToItems: ".items"
+
+ - key: events
+ label: Events
+ children:
+ - type: Events
+ data:
+ id: events
+ baseprefix: "/openapi-ui"
+ clusterNamePartOfUrl: "{2}"
+ wsUrl: "/api/clusters/{2}/openapi-bff-ws/events/eventsWs"
+ pageSize: 50
+ substractHeight: 315
+ limit: 40
+ fieldSelector:
+ regarding.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ regarding.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ regarding.namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ regarding.apiVersion: "{reqsJsonPath[0]['.apiVersion']['-']}"
+ baseFactoryNamespacedAPIKey: base-factory-namespaced-api
+ baseFactoryClusterSceopedAPIKey: base-factory-clusterscoped-api
+ baseFactoryNamespacedBuiltinKey: base-factory-namespaced-builtin
+ baseFactoryClusterSceopedBuiltinKey: base-factory-clusterscoped-builtin
+ baseNamespaceFactoryKey: namespace-details
+
+ {{- if $trivyEnabled }}
+ # ------ PODS TAB ------
+ - key: reports
+ label: Vuln reports
+ children:
+ - type: EnrichedTable
+ data:
+ id: ds-pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/vulnerabilityreports"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from pod template labels
+ labelsSelector:
+ trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ # Items path for Pods list
+ pathToItems: ".items[*].report.vulnerabilities"
+
+ - key: config-reports
+ label: Config reports
+ children:
+ - type: EnrichedTable
+ data:
+ id: ds-pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/configauditreports"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-aquasecurity.github.io.v1alpha1.configauditreports
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from pod template labels
+ labelsSelector:
+ trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ # Items path for Pods list
+ pathToItems: ".items[*].report.checks"
+
+ - key: sbom-reports
+ label: SBOM reports
+ children:
+ - type: EnrichedTable
+ data:
+ id: sbom-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/sbomreports"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-aquasecurity.github.io.v1alpha1.sbomreports
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from pod template labels
+ labelsSelector:
+ trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ # Items path for Pods list
+ pathToItems: ".items[*].report.components.components"
+
+ {{- end -}}
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/replicationcontroller-details.tpl b/templates/Factory/helpers/factories/replicationcontroller-details.tpl
new file mode 100644
index 0000000..df030fe
--- /dev/null
+++ b/templates/Factory/helpers/factories/replicationcontroller-details.tpl
@@ -0,0 +1,461 @@
+{{- define "incloud-web-resources.factory.manifets.replicationcontroller-details" -}}
+{{- $key := (default "replicationcontroller-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $podFactoryName := (default "factory-/v1/pods" .podFactoryName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ sidebarTags:
+ - replicationcontroller-details
+ withScrollableMainContentCard: true
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/replicationcontrollers/{6}"
+
+ # Header row with badge and ReplicationController name
+ data:
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # ReplicationController name
+ - type: parsedText
+ data:
+ id: rc-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # Tabs with Details, YAML, and Pods
+ - type: antdTabs
+ data:
+ id: rc-tabs
+ defaultActiveKey: details
+ items:
+ # Details tab with metadata and spec info
+ - key: details
+ label: Details
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ # Title
+ - type: antdText
+ data:
+ id: details-title
+ text: ReplicationController details
+ strong: true
+ style:
+ fontSize: 20px
+ marginBottom: 12px
+
+ # Spacer
+ - type: Spacer
+ data:
+ id: details-spacer
+ $space: 16
+
+ # Two-column layout
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # Left column: metadata
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Name
+ strong: true
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/replicationcontrollers/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~replicationcontrollers&labels="
+ ) | nindent 34
+ }}
+
+ # Node selector block
+ - type: antdFlex
+ data:
+ id: ds-node-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "node-selector"
+ text: "Node selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "node"
+ "jsonPath" ".spec.template.spec.nodeSelector"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~nodes&labels="
+ ) | nindent 34
+ }}
+
+ # Pod selector block
+ - type: antdFlex
+ data:
+ id: ds-pod-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "pod-selector"
+ text: "Pod selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 34
+ }}
+
+ # Tolerations
+ - type: antdFlex
+ data:
+ id: meta-tolerations-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.tolerations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/replicationcontrollers/{6}"
+ "jsonPathToArray" ".spec.template.spec.tolerations"
+ "pathToValue" "/spec/template/spec/tolerations"
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/replicationcontrollers/{6}"
+ ) | nindent 34
+ }}
+
+ # Created timestamp
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 38}}
+
+ # Owner block
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-label
+ # text: Owner
+ # strong: true
+ # - type: parsedText
+ # data:
+ # id: meta-owner-fallback
+ # strong: true
+ # text: "No owner"
+ # style:
+ # color: red
+
+ # Right column: replica counts
+ - type: antdCol
+ data:
+ id: col-right
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: col-right-stack
+ vertical: true
+ gap: 24
+ children:
+ # Current replicas
+ - type: antdFlex
+ data:
+ id: replicas-current-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: replicas-current-label
+ text: Current count
+ strong: true
+ - type: parsedText
+ data:
+ id: replicas-current-value
+ text: "{reqsJsonPath[0]['.status.replicas']['-']}"
+
+ # Desired replicas
+ - type: antdFlex
+ data:
+ id: replicas-desired-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: replicas-desired-label
+ text: Desired count
+ strong: true
+ - type: parsedText
+ data:
+ id: replicas-desired-value
+ text: "{reqsJsonPath[0]['.spec.replicas']['-']}"
+
+ # Volumes section
+ # TODO to be done
+ # - type: antdCol
+ # data:
+ # id: volumes-col
+ # style:
+ # marginTop: 10
+ # padding: 10
+ # children:
+ # - type: VisibilityContainer
+ # data:
+ # id: volumes-visibility
+ # value: "{reqsJsonPath[0]['.spec.template.spec.volumes']['-']}"
+ # style:
+ # margin: 0
+ # padding: 0
+ # children:
+ # - type: antdText
+ # data:
+ # id: volumes-title
+ # text: Volumes
+ # strong: true
+ # style:
+ # fontSize: 22px
+ # marginBottom: 32px
+ # - type: EnrichedTable
+ # data:
+ # id: volumes-table
+ # fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/replicationcontrollers/{6}"
+ # clusterNamePartOfUrl: "{2}"
+ # customizationId: factory-replicationcontroller-details-volume-list
+ # baseprefix: "/{{ $basePrefix }}"
+ # pathToItems:
+ # - spec
+ # - template
+ # - spec
+ # - volumes
+
+ # ---- INIT CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-init-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-init-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Init containers"
+ "customizationId" "container-spec-init-containers-list"
+ "type" "init-containers"
+ "apiGroup" "apis/apps/v1"
+ "kind" "replicationcontrollers"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.initContainers"
+ "pathToItems" "['spec','template','spec','initContainers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # ---- CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Containers"
+ "customizationId" "container-spec-containers-list"
+ "type" "containers"
+ "apiGroup" "api/v1"
+ "kind" "replicationcontrollers"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.containers"
+ "pathToItems" "['spec','template','spec','containers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+
+ # YAML tab
+ - key: yaml
+ label: YAML
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: builtin
+ typeName: replicationcontrollers
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+
+ # Pods tab
+ - key: pods
+ label: Pods
+ children:
+ - type: EnrichedTable
+ data:
+ id: pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "{{ $podFactoryName }}"
+ baseprefix: "/{{ $basePrefix }}"
+ labelsSelectorFull:
+ reqIndex: 0
+ pathToLabels: ".spec.template.metadata.labels"
+ pathToItems: ".items"
+
+ - key: events
+ label: Events
+ children:
+ - type: Events
+ data:
+ id: events
+ baseprefix: "/openapi-ui"
+ clusterNamePartOfUrl: "{2}"
+ wsUrl: "/api/clusters/{2}/openapi-bff-ws/events/eventsWs"
+ pageSize: 50
+ substractHeight: 315
+ limit: 40
+ fieldSelector:
+ regarding.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ regarding.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ regarding.namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ regarding.apiVersion: "{reqsJsonPath[0]['.apiVersion']['-']}"
+ baseFactoryNamespacedAPIKey: base-factory-namespaced-api
+ baseFactoryClusterSceopedAPIKey: base-factory-clusterscoped-api
+ baseFactoryNamespacedBuiltinKey: base-factory-namespaced-builtin
+ baseFactoryClusterSceopedBuiltinKey: base-factory-clusterscoped-builtin
+ baseNamespaceFactoryKey: namespace-details
+
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/role-details.tpl b/templates/Factory/helpers/factories/role-details.tpl
new file mode 100644
index 0000000..47684ff
--- /dev/null
+++ b/templates/Factory/helpers/factories/role-details.tpl
@@ -0,0 +1,242 @@
+{{- define "incloud-web-resources.factory.manifets.role-details" -}}
+{{- $key := (default "role-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ sidebarTags:
+ - role-details
+ withScrollableMainContentCard: true
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/roles/{6}"
+
+ # Header row with badge and role name
+ data:
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # role name
+ - type: parsedText
+ data:
+ id: role-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # Tabs with Details, YAML, and Pods
+ - type: antdTabs
+ data:
+ id: service-tabs
+ defaultActiveKey: "details"
+ items:
+ # Details tab
+ - key: "details"
+ label: "Details"
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # Left column: metadata and config
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: details-title
+ text: "Role details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link (kept as include)
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/roles/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=rbac.authorization.k8s.io~v1~roles&labels="
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/roles/{6}"
+ ) | nindent 34
+ }}
+
+ # Created timestamp
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 34
+ }}
+
+ # Owner
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-label
+ # strong: true
+ # text: "Owner"
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-flex
+ # gap: 6
+ # align: center
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-fallback
+ # text: "No owner"
+ # style:
+ # color: "#FF0000"
+
+ - type: antdCol
+ data:
+ id: rule-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: antdText
+ data:
+ id: rule-title
+ text: "Rules"
+ strong: true
+ style:
+ fontSize: 22
+ # Conditions table
+ - type: EnrichedTable
+ data:
+ id: conditions-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/roles/{6}"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-k8s-rbac-rules
+ baseprefix: "/{{ $basePrefix }}"
+ pathToItems: ".rules"
+
+ # YAML tab
+ - key: "yaml"
+ label: "YAML"
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: "builtin"
+ typeName: roles
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+{{- end -}}
\ No newline at end of file
diff --git a/templates/Factory/helpers/factories/rolebinding-details.tpl b/templates/Factory/helpers/factories/rolebinding-details.tpl
new file mode 100644
index 0000000..3d71544
--- /dev/null
+++ b/templates/Factory/helpers/factories/rolebinding-details.tpl
@@ -0,0 +1,289 @@
+{{- define "incloud-web-resources.factory.manifets.rolebinding-details" -}}
+{{- $key := (default "rolebinding-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ sidebarTags:
+ - rolebinding-details
+ withScrollableMainContentCard: true
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/rolebindings/{6}"
+
+ # Header row with badge and rolebinding name
+ data:
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # role binding name
+ - type: parsedText
+ data:
+ id: service-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # Tabs with Details, YAML, and Pods
+ - type: antdTabs
+ data:
+ id: service-tabs
+ defaultActiveKey: "details"
+ items:
+ # Details tab
+ - key: "details"
+ label: "Details"
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # Left column: metadata and config
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: details-title
+ text: "RoleBinding details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link (kept as include)
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/rolebindings/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=rbac.authorization.k8s.io~v1~rolebindings&labels="
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/rolebindings/{6}"
+ ) | nindent 34
+ }}
+
+ # Created timestamp
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 34
+ }}
+
+ # Owner
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-label
+ # strong: true
+ # text: "Owner"
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-flex
+ # gap: 6
+ # align: center
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-fallback
+ # text: "No owner"
+ # style:
+ # color: "#FF0000"
+
+
+ # Left column: metadata and config
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: details-title
+ text: "Role details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ # TODO не работает корректно
+ - type: VisibilityContainer
+ data:
+ id: conditions-visibility
+ value: "{reqsJsonPath[0]['.roleRef.kind']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.links.details" (dict
+ "reqIndex" 0
+ "type" "role"
+ "title" "TODO"
+ "namespace" "{reqsJsonPath[0]['.metadata.namespace']}"
+ "jsonPath" ".roleRef.name"
+ "factory" "role-details"
+ "basePrefix" $basePrefix
+ ) | nindent 40
+ }}
+
+ # TODO не работает корректно
+ - type: VisibilityContainer
+ data:
+ id: conditions-visibility
+ value: "{reqsJsonPath[0]['.roleRef.kind']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.links.details" (dict
+ "reqIndex" 0
+ "type" "cluster-role"
+ "title" "ClusterRole"
+ "jsonPath" ".roleRef.name"
+ "factory" "clusterrole-details"
+ "basePrefix" $basePrefix
+ ) | nindent 40
+ }}
+
+ # YAML tab
+ - key: "yaml"
+ label: "YAML"
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: "builtin"
+ typeName: rolebindings
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/secret-details.tpl b/templates/Factory/helpers/factories/secret-details.tpl
new file mode 100644
index 0000000..e4f8598
--- /dev/null
+++ b/templates/Factory/helpers/factories/secret-details.tpl
@@ -0,0 +1,272 @@
+{{- define "incloud-web-resources.factory.manifets.secret-details" -}}
+{{- $key := (default "secret-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ sidebarTags:
+ - secret-details
+ withScrollableMainContentCard: true
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/secrets/{6}"
+
+ # Header row with badge and Secret name
+ data:
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # Secret name
+ - type: parsedText
+ data:
+ id: header-secret-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # Tabs with Details and YAML
+ - type: antdTabs
+ data:
+ id: secret-tabs
+ defaultActiveKey: "details"
+ items:
+ # Details tab with metadata and spec info
+ - key: "details"
+ label: "Details"
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ # Title
+ - type: antdText
+ data:
+ id: details-title
+ text: "Secret details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ # Spacer
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+
+ # Two-column layout
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # Left column: metadata
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/secrets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~secrets&labels="
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/secrets/{6}"
+ ) | nindent 34
+ }}
+
+ # Created timestamp
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 38
+ }}
+
+ # Owner block
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-label
+ # strong: true
+ # text: "Owner"
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-flex
+ # gap: 6
+ # align: center
+ # children:
+ # - type: parsedText
+ # data:
+ # id: owner-value
+ # strong: true
+ # text: "No owner"
+ # style:
+ # color: red
+
+ # Right column: type info
+ - type: antdCol
+ data:
+ id: col-right
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: col-right-stack
+ vertical: true
+ gap: 24
+ children:
+ # Secret type
+ - type: antdFlex
+ data:
+ id: secret-type-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: secret-type-label
+ strong: true
+ text: "Type"
+ - type: parsedText
+ data:
+ id: secret-type-value
+ text: "{reqsJsonPath[0]['.type']['-']}"
+
+ # Secret SA
+ - type: antdFlex
+ data:
+ id: secret-sa-block
+ vertical: true
+ gap: 4
+ children:
+ # SA Link
+ {{ include "incloud-web-resources.factory.links.details" (dict
+ "reqIndex" 0
+ "type" "serviceaccount"
+ "title" "ServiceAccount"
+ "jsonPath" ".metadata.annotations['kubernetes.io/service-account.name']"
+ "namespace" "{3}"
+ "factory" "serviceaccount-details"
+ "basePrefix" $basePrefix
+ ) | nindent 34
+ }}
+
+ # YAML tab
+ - key: yaml
+ label: YAML
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: builtin
+ typeName: secrets
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/service-details.tpl b/templates/Factory/helpers/factories/service-details.tpl
new file mode 100644
index 0000000..e422bc7
--- /dev/null
+++ b/templates/Factory/helpers/factories/service-details.tpl
@@ -0,0 +1,437 @@
+{{- define "incloud-web-resources.factory.manifets.service-details" -}}
+{{- $key := (default "service-details" .key) -}}
+{{- $trivyEnabled := (default false .trivyEnabled) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $podFactoryName := (default "factory-node-details-/v1/pods" .podFactoryName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ withScrollableMainContentCard: true
+ sidebarTags:
+ - service-details
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
+
+ # Header row with badge and Service name
+ data:
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # Service name
+ - type: parsedText
+ data:
+ id: service-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # Tabs with Details, YAML, and Pods
+ - type: antdTabs
+ data:
+ id: service-tabs
+ defaultActiveKey: "details"
+ items:
+ # Details tab
+ - key: "details"
+ label: "Details"
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # Left column: metadata and config
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: details-title
+ text: "Service details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~services&labels="
+ ) | nindent 34
+ }}
+
+ # Pod selector block
+ - type: antdFlex
+ data:
+ id: ds-pod-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "pod-selector"
+ text: "Pod selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.selector"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 34
+ }}
+
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
+ ) | nindent 34
+ }}
+
+ # Session affinity
+ - type: antdFlex
+ data:
+ id: meta-session-affinity-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-session-affinity-label
+ strong: true
+ text: "Session affinity"
+ - type: parsedText
+ data:
+ id: meta-session-affinity-value
+ text: "{reqsJsonPath[0]['.spec.sessionAffinity']['Not configured']}"
+
+ # Created timestamp
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 34
+ }}
+
+ # Owner
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-label
+ # strong: true
+ # text: "Owner"
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-flex
+ # gap: 6
+ # align: center
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-fallback
+ # text: "No owner"
+ # style:
+ # color: "#FF0000"
+
+ # Right column: routing and ports
+ - type: antdCol
+ data:
+ id: col-right
+ span: 12
+ children:
+ - type: antdText
+ data:
+ id: routing-title
+ text: "Service routing"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+ - type: Spacer
+ data:
+ id: routing-spacer
+ "$space": 16
+ - type: antdFlex
+ data:
+ id: col-right-stack
+ vertical: true
+ gap: 24
+ children:
+ # Hostname
+ - type: antdFlex
+ data:
+ id: service-hostname-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: service-hostname-label
+ strong: true
+ text: "Hostname"
+ - type: parsedText
+ data:
+ id: service-hostname-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}.{reqsJsonPath[0]['.metadata.namespace']['-']}.svc.cluster.local"
+
+ # IP addresses block
+ - type: antdFlex
+ data:
+ id: service-ip-block
+ vertical: true
+ gap: 12
+ children:
+ # ClusterIP
+ - type: antdFlex
+ data:
+ id: clusterip-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: clusterip-label
+ strong: true
+ text: "ClusterIP address"
+ - type: parsedText
+ data:
+ id: clusterip-value
+ text: "{reqsJsonPath[0]['.spec.clusterIP']['-']}"
+
+ # LoadBalancerIP
+ - type: antdFlex
+ data:
+ id: loadbalancerip-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: loadbalancerip-label
+ strong: true
+ text: "LoadBalancerIP address"
+ - type: parsedText
+ data:
+ id: loadbalancerip-value
+ text: "{reqsJsonPath[0]['.status.loadBalancer.ingress[0].ip']['Not Configured']}"
+
+ # Service port mapping
+ - type: antdFlex
+ data:
+ id: service-port-mapping-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: service-port-mapping-label
+ strong: true
+ text: "Service port mapping"
+ - type: EnrichedTable
+ data:
+ id: service-port-mapping-table
+ fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "factory-service-details-port-mapping"
+ baseprefix: "/{{ $basePrefix }}"
+ pathToItems: ".spec.ports"
+
+ # Pod serving
+ - type: VisibilityContainer
+ data:
+ id: service-pod-serving-vis
+ value: "{reqsJsonPath[0]['.spec.selector']['-']}"
+ style: { margin: 0, padding: 0 }
+ children:
+ - type: antdFlex
+ data:
+ id: service-pod-serving-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: service-pod-serving-label
+ strong: true
+ text: "Pod serving"
+ - type: EnrichedTable
+ data:
+ id: service-pod-serving-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/discovery.k8s.io/v1/namespaces/{3}/endpointslices"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "factory-service-details-endpointslice"
+ baseprefix: "/{{ $basePrefix }}"
+ labelsSelector:
+ kubernetes.io/service-name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ pathToItems: ".items[*].endpoints"
+ # YAML tab
+ - key: "yaml"
+ label: "YAML"
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: "builtin"
+ typeName: services
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+
+ # Pods tab
+ - key: "pods"
+ label: "Pods"
+ children:
+ - type: VisibilityContainer
+ data:
+ id: service-pod-serving-vis
+ value: "{reqsJsonPath[0]['.spec.selector']['-']}"
+ style: { margin: 0, padding: 0 }
+ children:
+ - type: EnrichedTable
+ data:
+ id: pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "{{ $podFactoryName }}"
+ baseprefix: "/{{ $basePrefix }}"
+
+ labelsSelectorFull:
+ reqIndex: 0
+ # TODO требуется обработка нулевого значения
+ pathToLabels: ".spec.selector"
+ pathToItems: ".items"
+
+
+ {{- if $trivyEnabled }}
+ - key: config-reports
+ label: Config reports
+ children:
+ - type: EnrichedTable
+ data:
+ id: ds-pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/configauditreports"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-aquasecurity.github.io.v1alpha1.configauditreports
+ baseprefix: "/{{ $basePrefix }}"
+
+ # Build label selector from pod template labels
+ labelsSelector:
+ trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ # Items path for Pods list
+ pathToItems: ".items[*].report.checks"
+
+ {{- end -}}
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/serviceaccount-details.tpl b/templates/Factory/helpers/factories/serviceaccount-details.tpl
new file mode 100644
index 0000000..c285099
--- /dev/null
+++ b/templates/Factory/helpers/factories/serviceaccount-details.tpl
@@ -0,0 +1,261 @@
+{{- define "incloud-web-resources.factory.manifets.serviceaccount-details" -}}
+{{- $key := (default "serviceaccount-details" .key) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+ sidebarTags:
+ - serviceaccount-details
+ withScrollableMainContentCard: true
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/serviceaccounts/{6}"
+
+ # Header row with badge and serviceaccount name
+ data:
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # serviceaccount name
+ - type: parsedText
+ data:
+ id: header-serviceaccount-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # Tabs with Details and YAML
+ - type: antdTabs
+ data:
+ id: serviceaccount-tabs
+ defaultActiveKey: "details"
+ items:
+ # Details tab with metadata and spec info
+ - key: "details"
+ label: "Details"
+ children:
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ # Two-column layout
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # Left column: metadata
+ - type: antdCol
+ data:
+ id: col-left
+ span: 12
+ children:
+ # Title
+ - type: antdText
+ data:
+ id: details-title
+ text: "ServiceAccount details"
+ strong: true
+ style:
+ fontSize: 20
+ marginBottom: 12px
+
+ # Spacer
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+
+ - type: antdFlex
+ data:
+ id: col-left-stack
+ vertical: true
+ gap: 24
+ children:
+ # Name block
+ - type: antdFlex
+ data:
+ id: meta-name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ strong: true
+ text: "Name"
+ - type: parsedText
+ data:
+ id: meta-name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels
+ - type: antdFlex
+ data:
+ id: meta-labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/serviceaccounts/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~serviceaccounts&labels="
+ ) | nindent 34
+ }}
+
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/serviceaccounts/{6}"
+ ) | nindent 34
+ }}
+
+ # Created timestamp
+ - type: antdFlex
+ data:
+ id: meta-created-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 38
+ }}
+
+ # Owner block
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: meta-owner-label
+ # strong: true
+ # text: "Owner"
+ # - type: antdFlex
+ # data:
+ # id: meta-owner-flex
+ # gap: 6
+ # align: center
+ # children:
+ # - type: parsedText
+ # data:
+ # id: owner-value
+ # strong: true
+ # text: "No owner"
+ # style:
+ # color: red
+
+ - type: antdCol
+ data:
+ id: col-right
+ span: 12
+ children:
+ - type: VisibilityContainer
+ data:
+ id: secrets-visibility
+ value: "{reqsJsonPath[0]['.secrets']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ # Secrets title
+ - type: antdText
+ data:
+ id: secrets-title
+ text: "Secrets"
+ strong: true
+ style:
+ fontSize: 22
+ # Spacer
+ - type: Spacer
+ data:
+ id: details-spacer
+ "$space": 16
+ # Secrets table
+ - type: EnrichedTable
+ data:
+ id: secrets-table
+ fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/serviceaccounts/{6}"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-serviceaccount-secrets
+ baseprefix: "/{{ $basePrefix }}"
+ pathToItems: ".secrets"
+
+ # YAML tab
+ - key: yaml
+ label: YAML
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: builtin
+ typeName: serviceaccounts
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+{{- end -}}
diff --git a/templates/Factory/helpers/factories/statefulset-details.tpl b/templates/Factory/helpers/factories/statefulset-details.tpl
new file mode 100644
index 0000000..1074bfe
--- /dev/null
+++ b/templates/Factory/helpers/factories/statefulset-details.tpl
@@ -0,0 +1,481 @@
+{{- define "incloud-web-resources.factory.manifets.statefulset-details" -}}
+{{- $key := (default "statefulset-details" .key) -}}
+{{- $trivyEnabled := (default false .trivyEnabled) -}}
+{{- $resName := (default "{6}" .resName) -}}
+{{- $podFactoryName := (default "factory-/v1/pods" .podFactoryName) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: "{{ $key }}"
+spec:
+ key: "{{ $key }}"
+
+ sidebarTags:
+ - statefulset-details
+ withScrollableMainContentCard: true
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
+
+ data:
+ # Header section
+ - type: antdFlex
+ data:
+ id: header-row
+ gap: 6
+ align: center
+ style:
+ marginBottom: 24px
+ children:
+ # factory badge
+ - type: ResourceBadge
+ data:
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
+ style:
+ fontSize: 20px
+
+ # StatefulSet name
+ - type: parsedText
+ data:
+ id: header-name
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ style:
+ fontSize: 20px
+ lineHeight: 24px
+ fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
+
+ # Tabs section
+ - type: antdTabs
+ data:
+ id: main-tabs
+ defaultActiveKey: details
+ items:
+ # Details tab
+ - key: details
+ label: Details
+ children:
+ # Main info card
+ - type: ContentCard
+ data:
+ id: details-card
+ style:
+ marginBottom: 24px
+ children:
+ # Card title
+ - type: antdText
+ data:
+ id: details-title
+ text: StatefulSet details
+ strong: true
+ style:
+ fontSize: 20px
+ marginBottom: 12px
+
+ # Space under title
+ - type: Spacer
+ data:
+ id: details-spacer
+ $space: 16
+
+ # Two-column grid
+ - type: antdRow
+ data:
+ id: details-grid
+ gutter: [48, 12]
+ children:
+ # Left column
+ - type: antdCol
+ data:
+ id: left-col
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: left-col-stack
+ vertical: true
+ gap: 24
+ children:
+ # Name
+ - type: antdFlex
+ data:
+ id: name-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: name-label
+ text: Name
+ strong: true
+ - type: parsedText
+ data:
+ id: name-value
+ text: "{reqsJsonPath[0]['.metadata.name']['-']}"
+
+ # Namespace link block (include)
+ - type: antdFlex
+ data:
+ id: meta-namespace-block
+ vertical: true
+ gap: 8
+ children:
+ - type: antdText
+ data:
+ id: meta-name-label
+ text: Namespace
+ strong: true
+
+ - type: antdFlex
+ data:
+ id: namespace-badge-link-row
+ direction: row
+ align: center
+ gap: 6 # расстояние между иконкой и текстом
+ children:
+ - type: ResourceBadge
+ data:
+ id: namespace-resource-badge
+ value: Namespace
+ {{ include "incloud-web-resources.factory.linkblock" (dict
+ "reqIndex" 0
+ "type" "namespace"
+ "jsonPath" ".metadata.namespace"
+ "factory" "namespace-details"
+ "basePrefix" $basePrefix
+ ) | nindent 38
+ }}
+
+ # Labels block (include)
+ - type: antdFlex
+ data:
+ id: labels-block
+ vertical: true
+ gap: 8
+ children:
+ {{ include "incloud-web-resources.factory.labels" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=apps~v1~statefulsets&labels="
+ ) | nindent 34
+ }}
+
+ # Node selector block
+ - type: antdFlex
+ data:
+ id: ds-node-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "node-selector"
+ text: "Node selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "node"
+ "jsonPath" ".spec.template.spec.nodeSelector"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~nodes&labels="
+ ) | nindent 34
+ }}
+
+ # Pod selector block
+ - type: antdFlex
+ data:
+ id: ds-pod-selector
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: "node-selector"
+ text: "Node selector"
+ strong: true
+ style:
+ fontSize: 14
+ {{ include "incloud-web-resources.factory.labels.base.selector" (dict
+ "type" "pod"
+ "jsonPath" ".spec.template.metadata.labels"
+ "basePrefix" $basePrefix
+ "linkPrefix" "/openapi-ui/{2}/{3}/search?kinds=~v1~pods&labels="
+ ) | nindent 34
+ }}
+
+ # Tolerations counter (include)
+ - type: antdFlex
+ data:
+ id: tolerations-counter-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.tolerations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
+ "jsonPathToArray" ".spec.template.spec.tolerations"
+ "pathToValue" "/spec/template/spec/tolerations"
+ ) | nindent 34
+ }}
+
+ # Annotations counter block
+ - type: antdFlex
+ data:
+ id: ds-annotations
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.annotations.block" (dict
+ "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
+ ) | nindent 34
+ }}
+
+ # Created time (include)
+ - type: antdFlex
+ data:
+ id: created-time-block
+ vertical: true
+ gap: 4
+ children:
+ {{ include "incloud-web-resources.factory.time.create" (dict
+ "req" ".metadata.creationTimestamp"
+ "text" "Created"
+ ) | nindent 34
+ }}
+
+ # Owner (fallback when missing)
+ # - type: antdFlex
+ # data:
+ # id: owner-block
+ # vertical: true
+ # gap: 4
+ # children:
+ # - type: antdText
+ # data:
+ # id: owner-label
+ # text: Owner
+ # strong: true
+ # - type: parsedText
+ # data:
+ # id: owner-value
+ # text: "No owner"
+ # style:
+ # color: red
+
+ # Right column
+ - type: antdCol
+ data:
+ id: right-col
+ span: 12
+ children:
+ - type: antdFlex
+ data:
+ id: right-col-stack
+ vertical: true
+ gap: 24
+ children:
+ # Current replicas
+ - type: antdFlex
+ data:
+ id: current-count-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: current-count-label
+ text: Current count
+ strong: true
+ - type: parsedText
+ data:
+ id: current-count-value
+ text: "{reqsJsonPath[0]['.status.replicas']['-']}"
+ # Desired replicas
+ - type: antdFlex
+ data:
+ id: desired-count-block
+ vertical: true
+ gap: 4
+ children:
+ - type: antdText
+ data:
+ id: desired-count-label
+ text: Desired count
+ strong: true
+ - type: parsedText
+ data:
+ id: desired-count-value
+ text: "{reqsJsonPath[0]['.spec.replicas']['-']}"
+
+ # Volumes section
+ # TODO to be done
+ # - type: antdCol
+ # data:
+ # id: volumes-section-col
+ # style:
+ # marginTop: 10
+ # padding: 10
+ # children:
+ # - type: VisibilityContainer
+ # data:
+ # id: volumes-visibility
+ # value: "{reqsJsonPath[0]['.spec.template.spec.volumes']['-']}"
+ # style:
+ # margin: 0
+ # padding: 0
+ # children:
+ # - type: antdText
+ # data:
+ # id: volumes-title
+ # text: Volumes
+ # strong: true
+ # style:
+ # fontSize: 22px
+ # marginBottom: 32px
+ # - type: EnrichedTable
+ # data:
+ # id: volumes-table
+ # fetchUrl: "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
+ # clusterNamePartOfUrl: "{2}"
+ # customizationId: factory-statefulset-details-volume-list
+ # baseprefix: "{{ $basePrefix }}"
+ # pathToItems: ".spec.template.spec.volumes"
+
+
+ # ---- INIT CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-init-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-init-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Init containers"
+ "customizationId" "container-spec-init-containers-list"
+ "type" "init-containers"
+ "apiGroup" "apis/apps/v1"
+ "kind" "statefulsets"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.initContainers"
+ "pathToItems" "['spec','template','spec','initContainers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # ---- CONTAINERS SECTION ----
+ - type: antdCol
+ data:
+ id: ds-containers-col
+ style:
+ marginTop: 10
+ padding: 10
+ children:
+ - type: VisibilityContainer
+ data:
+ id: ds-containers-container
+ value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
+ style:
+ margin: 0
+ padding: 0
+ children:
+ {{ include "incloud-web-resources.factory.containers.table" (dict
+ "title" "Containers"
+ "customizationId" "container-spec-containers-list"
+ "type" "containers"
+ "apiGroup" "apis/apps/v1"
+ "kind" "statefulsets"
+ "resourceName" $resName
+ "namespace" "{3}"
+ "jsonPath" ".spec.template.spec.containers"
+ "pathToItems" "['spec','template','spec','containers']"
+ "basePrefix" $basePrefix
+ ) | nindent 26
+ }}
+
+ # YAML tab
+ - key: yaml
+ label: YAML
+ children:
+ - type: YamlEditorSingleton
+ data:
+ id: yaml-editor
+ cluster: "{2}"
+ isNameSpaced: true
+ type: apis
+ apiGroup: apps
+ apiVersion: v1
+ typeName: statefulsets
+ prefillValuesRequestIndex: 0
+ substractHeight: 400
+
+ # Pods tab
+ - key: pods
+ label: Pods
+ children:
+ - type: EnrichedTable
+ data:
+ id: pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: "{{ $podFactoryName }}"
+ labelsSelectorFull:
+ reqIndex: 0
+ pathToLabels: ".spec.template.metadata.labels"
+ pathToItems: ".items"
+
+ - key: events
+ label: Events
+ children:
+ - type: Events
+ data:
+ id: events
+ baseprefix: "/openapi-ui"
+ clusterNamePartOfUrl: "{2}"
+ wsUrl: "/api/clusters/{2}/openapi-bff-ws/events/eventsWs"
+ pageSize: 50
+ substractHeight: 315
+ limit: 40
+ fieldSelector:
+ regarding.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ regarding.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ regarding.namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
+ regarding.apiVersion: "{reqsJsonPath[0]['.apiVersion']['-']}"
+ baseFactoryNamespacedAPIKey: base-factory-namespaced-api
+ baseFactoryClusterSceopedAPIKey: base-factory-clusterscoped-api
+ baseFactoryNamespacedBuiltinKey: base-factory-namespaced-builtin
+ baseFactoryClusterSceopedBuiltinKey: base-factory-clusterscoped-builtin
+ baseNamespaceFactoryKey: namespace-details
+
+ {{- if $trivyEnabled }}
+ # ------ PODS TAB ------
+ - key: reports
+ label: Reports
+ children:
+ - type: EnrichedTable
+ data:
+ id: ds-pods-table
+ fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/clusterinfraassessmentreports"
+ clusterNamePartOfUrl: "{2}"
+ customizationId: factory-aquasecurity.github.io.v1alpha1.clusterinfraassessmentreports
+ baseprefix: "/{{ $basePrefix }}"
+ # Build label selector from pod template labels
+ labelsSelector:
+ trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ # Items path for Pods list
+ pathToItems: ".items[*].report.checks"
+
+
+ {{- end -}}
+{{- end -}}
diff --git a/templates/Factory/helpers/labels.tpl b/templates/Factory/helpers/labels.tpl
index 9fe7afb..e0a489d 100644
--- a/templates/Factory/helpers/labels.tpl
+++ b/templates/Factory/helpers/labels.tpl
@@ -13,6 +13,7 @@
{{- $modalDescriptionText := (default "" .modalDescriptionText) -}}
{{- $inputLabel := (default "" .inputLabel) -}}
{{- $containerMarginTop := (default "-30px" .containerMarginTop) -}}
+{{- $linkPrefix := (default "" .linkPrefix) -}}
- type: antdText
data:
id: {{ printf "%s-title" $type }}
@@ -39,6 +40,7 @@
pathToValue: "{{ $pathToValue }}"
editModalWidth: 650
paddingContainerEnd: "24px"
+ linkPrefix: "{{ $linkPrefix }}"
{{- end -}}
{{- define "incloud-web-resources.factory.labels.base.selector" -}}
@@ -46,19 +48,13 @@
{{- $type := (default "pod-selector" .type) -}}
{{- $title := (default "Pod selector" .title) -}}
{{- $jsonPath := (default ".spec.template.metadata.labels" .jsonPath) -}}
-- type: antdText
- data:
- id: {{ printf "%s-selector" $type }}
- text: "{{ $title }}"
- strong: true
- style:
- fontSize: 14
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
- type: LabelsToSearchParams
data:
id: {{ printf "%s-to-search-params" $type }}
reqIndex: {{$i}}
jsonPathToLabels: "{{ $jsonPath }}"
- linkPrefix: "{{ .linkPrefix | default "/openapi-ui/{2}/search" }}"
- errorText: "-"
+ linkPrefix: "{{ .linkPrefix | default "/{{ $basePrefix }}/{2}/search" }}"
+ errorText: "No selector"
+ # textLink: Search
{{- end -}}
-
diff --git a/templates/Factory/helpers/links.tpl b/templates/Factory/helpers/links.tpl
index 7bfa602..fea3342 100644
--- a/templates/Factory/helpers/links.tpl
+++ b/templates/Factory/helpers/links.tpl
@@ -1,15 +1,20 @@
{{- define "incloud-web-resources.factory.links.details" -}}
-{{- $i := (default 0 .reqIndex) -}}
-{{- $type := (default "" .type) -}}
-{{- $title := (default "" .title) -}}
-{{- $jsonPath := (default "" .jsonPath) -}}
-{{- $factory := (default "" .factory) -}}
-{{- $ns := (default "" .namespace) -}}
+{{- $i := (default 0 .reqIndex) -}}
+{{- $type := (default "" .type) -}}
+{{- $title := (default "" .title) -}}
+{{- $jsonPath := (default "" .jsonPath) -}}
+{{- $factory := (default "" .factory) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+{{- $ns := (default "" .namespace) -}}
+{{- $proj := (default "" .project) -}}
{{- $nsPart := "" -}}
{{- if ne $ns "" }}
{{- $nsPart = printf "%s/" $ns -}}
{{- end }}
+{{- if ne $proj "" }}
+ {{- $nsPart = printf "%s%s/" $nsPart $proj -}}
+{{- end }}
- type: parsedText
data:
id: {{ printf "%s-title" $type }}
@@ -21,23 +26,29 @@
data:
id: {{ printf "%s-link" $type }}
text: "{reqsJsonPath[{{$i}}]['{{ $jsonPath }}']['-']}"
- href: "/openapi-ui/{2}/{{$nsPart}}factory/{{ $factory }}/{reqsJsonPath[{{$i}}]['{{ $jsonPath }}']['-']}"
+ href: "/{{ $basePrefix }}/{2}/{{$nsPart}}factory/{{ $factory }}/{reqsJsonPath[{{$i}}]['{{ $jsonPath }}']['-']}"
{{- end -}}
{{- define "incloud-web-resources.factory.linkblock" -}}
-{{- $i := (default 0 .reqIndex) -}}
-{{- $type := (default "" .type) -}}
-{{- $jsonPath := (default "" .jsonPath) -}}
-{{- $factory := (default "" .factory) -}}
-{{- $ns := (default "" .namespace) -}}
+{{- $i := (default 0 .reqIndex) -}}
+{{- $type := (default "" .type) -}}
+{{- $jsonPath := (default "" .jsonPath) -}}
+{{- $factory := (default "" .factory) -}}
+{{- $basePrefix := (default "openapi-ui" .basePrefix) -}}
+{{- $ns := (default "" .namespace) -}}
+{{- $proj := (default "" .project) -}}
{{- $nsPart := "" -}}
{{- if ne $ns "" }}
{{- $nsPart = printf "%s/" $ns -}}
{{- end }}
+ {{- if ne $proj "" }}
+ {{- $nsPart = printf "%s%s/" $nsPart $proj -}}
+ {{- end }}
+
- type: antdLink
data:
id: {{ printf "%s-link" $type }}
text: "{reqsJsonPath[{{$i}}]['{{ $jsonPath }}']['-']}"
- href: "/openapi-ui/{2}/{{$nsPart}}factory/{{ $factory }}/{reqsJsonPath[{{$i}}]['{{ $jsonPath }}']['-']}"
+ href: "/{{ $basePrefix }}/{2}/{{$nsPart}}factory/{{ $factory }}/{reqsJsonPath[{{$i}}]['{{ $jsonPath }}']['-']}"
{{- end -}}
diff --git a/templates/Factory/helpers/tables.tpl b/templates/Factory/helpers/tables.tpl
index a8e211c..f234812 100644
--- a/templates/Factory/helpers/tables.tpl
+++ b/templates/Factory/helpers/tables.tpl
@@ -1,14 +1,15 @@
{{- define "incloud-web-resources.factory.containers.table" -}}
- {{- $i := (default 0 .reqIndex) -}}
- {{- $type := (default "" .type) -}}
- {{- $title := (default "Init containers" .title) -}}
- {{- $jsonPath := (default "" .jsonPath) -}}
- {{- $pathToItems := (default "" .pathToItems) -}}
- {{- $apiGroup := (default "" .apiGroup) -}}
- {{- $kind := (default "" .kind) -}}
- {{- $resourceName := (default "" .resourceName) -}}
- {{- $namespace := (default "" .namespace) -}}
- {{- $namespacePart := "" -}}
+ {{- $i := (default 0 .reqIndex) -}}
+ {{- $type := (default "" .type) -}}
+ {{- $title := (default "Init containers" .title) -}}
+ {{- $jsonPath := (default "" .jsonPath) -}}
+ {{- $pathToItems := (default "" .pathToItems) -}}
+ {{- $apiGroup := (default "" .apiGroup) -}}
+ {{- $kind := (default "" .kind) -}}
+ {{- $resourceName := (default "" .resourceName) -}}
+ {{- $basePrefix := (default "" .basePrefix) -}}
+ {{- $namespace := (default "" .namespace) -}}
+ {{- $namespacePart := "" -}}
{{- if ne $namespace "" }}
{{- $namespacePart = printf "namespaces/%s/" $namespace -}}
{{- end }}
@@ -34,7 +35,7 @@
fetchUrl: "/api/clusters/{2}/k8s/{{ $apiGroup }}/{{$namespacePart}}{{ $kind }}/{{$resourceName}}"
clusterNamePartOfUrl: "{2}"
customizationId: {{ .customizationId | default ("") }}
- baseprefix: "/openapi-ui"
+ baseprefix: "/{{ $basePrefix }}"
withoutControls: {{ default true .withoutControls }}
pathToItems: {{ $pathToItems }}
{{- end -}}
diff --git a/templates/Factory/horizontalpodautoscalers-details.yaml b/templates/Factory/horizontalpodautoscalers-details.yaml
index 4fd89b1..3a16343 100644
--- a/templates/Factory/horizontalpodautoscalers-details.yaml
+++ b/templates/Factory/horizontalpodautoscalers-details.yaml
@@ -1,390 +1,13 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: horizontalpodautoscaler-details
-spec:
- key: horizontalpodautoscaler-details
- withScrollableMainContentCard: true
- sidebarTags:
- - horizontalpodautoscaler-sidebar
- urlsToFetch:
- # API call to fetch HPA details by cluster, namespace, and name
- - "/api/clusters/{2}/k8s/apis/autoscaling/v2/namespaces/{3}/horizontalpodautoscalers/{6}"
-
- data:
- # --- Header section -----------------------------------------------------
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Badge for HorizontalPodAutoscaler
- - type: antdText
- data:
- id: badge-horizontalpodautoscaler
- text: HPA
- title: horizontalpodautoscalers
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#6ca100"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
-
- # Resource name
- - type: parsedText
- data:
- id: horizontalpodautoscaler-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # --- Tabs section (Details, YAML, etc.) --------------------------------
- - type: antdTabs
- data:
- id: horizontalpodautoscaler-tabs
- defaultActiveKey: "details"
- items:
- # --- Details tab --------------------------------------------------
- - key: "details"
- label: "Details"
- children:
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # --- Left column: metadata & config -------------------
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- - type: antdText
- data:
- id: details-title
- text: "HorizontalPodAutoscaler details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
-
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
-
- - type: antdFlex
- data:
- id: col-left-stack
- vertical: true
- gap: 24
- children:
- # Resource name
- - type: antdFlex
- data:
- id: meta-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-name-label
- strong: true
- text: "Name"
- - type: parsedText
- data:
- id: meta-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link (navigates to namespace details)
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels (key/value list with chips)
- - type: antdFlex
- data:
- id: meta-labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/horizontalpodautoscalers/{6}"
- ) | nindent 34
- }}
-
- # Annotations (counter with expandable view)
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/horizontalpodautoscalers/{6}"
- ) | nindent 34
- }}
-
- # Creation timestamp
- - type: antdFlex
- data:
- id: meta-created-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 34
- }}
-
- # Owner section (commented, not yet implemented)
- # Could show controller/parent resource
-
- # --- Right column: scaling settings -------------------
- - type: antdCol
- data:
- id: col-right
- span: 12
- children:
- - type: antdText
- data:
- id: routing-title
- text: "Settings"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
-
- - type: Spacer
- data:
- id: routing-spacer
- "$space": 16
-
- - type: antdFlex
- data:
- id: col-right-stack
- vertical: true
- gap: 24
- children:
- # Scale target reference
- # TODO ожидаем компонента, который может ссылаться по Kind/APIGroup/Name
- # - type: antdFlex
- # data:
- # id: horizontalpodautoscaler-target-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: horizontalpodautoscaler-target-label
- # strong: true
- # text: "Scale Target"
- # - type: parsedText
- # data:
- # id: horizontalpodautoscaler-hostname-value
- # text: "{reqsJsonPath[0]['.spec.scaleTargetRef']['-']}"
-
- # Minimum replicas
- - type: antdFlex
- data:
- id: horizontalpodautoscaler-min-replicas-block
- vertical: true
- gap: 12
- children:
- - type: antdFlex
- data:
- id: min-replicas-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: min-replicas-label
- strong: true
- text: "Min replicas"
- - type: parsedText
- data:
- id: min-replicas-value
- text: "{reqsJsonPath[0]['.spec.minReplicas']['-']}"
-
- # Maximum replicas
- - type: antdFlex
- data:
- id: horizontalpodautoscaler-max-replicas-block
- vertical: true
- gap: 12
- children:
- - type: antdFlex
- data:
- id: max-replicas-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: max-replicas-label
- strong: true
- text: "Max replicas"
- - type: parsedText
- data:
- id: max-replicas-value
- text: "{reqsJsonPath[0]['.spec.maxReplicas']['-']}"
-
- # Last scale time
- - type: antdFlex
- data:
- id: horizontalpodautoscaler-last-scale-time-block
- vertical: true
- gap: 12
- children:
- - type: antdFlex
- data:
- id: last-scale-time-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: last-scale-time-label
- strong: true
- text: "Last scale time"
- - type: parsedText
- data:
- id: last-scale-time-value
- text: "{reqsJsonPath[0]['.status.lastScaleTime']['-']}"
-
- # Current replicas
- - type: antdFlex
- data:
- id: horizontalpodautoscaler-current-scale-time-block
- vertical: true
- gap: 12
- children:
- - type: antdFlex
- data:
- id: current-scale-time-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: current-scale-time-label
- strong: true
- text: "Current replicas"
- - type: parsedText
- data:
- id: current-scale-time-value
- text: "{reqsJsonPath[0]['.status.currentReplicas']['-']}"
-
- # Desired replicas
- - type: antdFlex
- data:
- id: horizontalpodautoscaler-desired-scale-time-block
- vertical: true
- gap: 12
- children:
- - type: antdFlex
- data:
- id: desired-scale-time-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: desired-scale-time-label
- strong: true
- text: "Desired replicas"
- - type: parsedText
- data:
- id: desired-scale-time-value
- text: "{reqsJsonPath[0]['.status.desiredReplicas']['-']}"
-
-
- # === Conditions table ===
- - type: antdCol
- data:
- id: conditions-column
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: conditions-container
- value: "{reqsJsonPath[0]['.status.conditions']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- - type: antdText
- data:
- id: conditions-title
- text: "Conditions"
- strong: true
- style:
- fontSize: 22
- - type: EnrichedTable
- data:
- id: conditions-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/autoscaling/v2/namespaces/{3}/horizontalpodautoscalers/{6}"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-status-conditions
- baseprefix: "/openapi-ui"
- withoutControls: true
- pathToItems: ".status.conditions"
-
- # --- YAML tab -----------------------------------------------------
- - key: "yaml"
- label: "YAML"
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: "builtin"
- typeName: horizontalpodautoscalers
- prefillValuesRequestIndex: 0
- substractHeight: 400
+{{ include "incloud-web-resources.factory.manifets.horizontalpodautoscaler-details" (dict
+ "key" "horizontalpodautoscaler-details"
+ "resName" "{6}"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.horizontalpodautoscaler-details" (dict
+ "key" "instance-horizontalpodautoscaler-details"
+ "resName" "{7}"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/job-details.yaml b/templates/Factory/job-details.yaml
index 825b0f7..7a0c636 100644
--- a/templates/Factory/job-details.yaml
+++ b/templates/Factory/job-details.yaml
@@ -1,548 +1,15 @@
-# Factory definition for Job details page
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: job-details
-spec:
- # Unique key for this view
- key: job-details
-
- # Tags for sidebar navigation
- sidebarTags:
- - jobs-sidebar
-
- # Enables scrolling in the main content area
- withScrollableMainContentCard: true
-
- # API endpoint to fetch Job resource
- urlsToFetch:
- - "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
-
- data:
- # === Header with icon, name, and job status ===
- - type: antdFlex
- data:
- id: header-flex
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Job icon
- - type: antdText
- data:
- id: header-icon
- text: J
- title: jobs
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#009596"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
-
- # Job name
- - type: parsedText
- data:
- id: header-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- - type: antdFlex
- data:
- id: status-header-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.statuses.job" . | nindent 12 }}
-
- # === Main content tabs ===
- - type: antdTabs
- data:
- id: job-tabs
- defaultActiveKey: "details"
- items:
- # ------ DETAILS TAB ------
- - key: "details"
- label: "Details"
- children:
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- - type: antdRow
- data:
- id: details-row
- gutter: [48, 12]
- children:
- # === LEFT COLUMN: Job metadata ===
- - type: antdCol
- data:
- id: left-column
- span: 12
- children:
- - type: antdText
- data:
- id: job-details-title
- text: "Job details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
-
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
-
- - type: antdFlex
- data:
- id: left-column-flex
- vertical: true
- gap: 24
- children:
- # Job name
- - type: antdFlex
- data:
- id: name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: name-label
- strong: true
- text: "Name"
- - type: parsedText
- data:
- id: name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels
- - type: antdFlex
- data:
- id: labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
- ) | nindent 34
- }}
-
- # Desired completions
- - type: antdFlex
- data:
- id: completions-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: completions-label
- strong: true
- text: "Desired completions"
- - type: parsedText
- data:
- id: completions-value
- text: "{reqsJsonPath[0]['.spec.completions']['-']}"
-
- # Parallelism
- - type: antdFlex
- data:
- id: parallelism-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: parallelism-label
- strong: true
- text: "Parallelism"
- - type: parsedText
- data:
- id: parallelism-value
- text: "{reqsJsonPath[0]['.spec.parallelism']['-']}"
-
- # Active deadline seconds
- - type: antdFlex
- data:
- id: active-deadline-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: active-deadline-label
- strong: true
- text: "Active deadline seconds"
- - type: parsedText
- data:
- id: active-deadline-value
- text: "{reqsJsonPath[0]['.spec.activeDeadlineSeconds']['-']}"
-
- # Created timestamp
- - type: antdFlex
- data:
- id: created-time-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 34
- }}
-
- # Owner reference
- # - type: antdFlex
- # data:
- # id: owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: owner-label
- # strong: true
- # text: "Owner"
- # - type: parsedText
- # data:
- # id: owner-value
- # strong: true
- # text: "No owner"
- # style:
- # color: red
-
- # === RIGHT COLUMN: Job status ===
- - type: antdCol
- data:
- id: right-column
- span: 12
- children:
- - type: antdText
- data:
- id: job-status-title
- text: "Job status"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
-
- - type: Spacer
- data:
- id: status-spacer
- "$space": 16
-
- - type: antdFlex
- data:
- id: right-column-flex
- vertical: true
- gap: 24
- children:
- # Status (Complete/Failed)
- - type: antdFlex
- data:
- id: status-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: status-label
- strong: true
- text: "Status"
- - type: antdFlex
- data:
- id: status-header-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.statuses.job" . | nindent 38 }}
-
- # Start time
- - type: antdFlex
- data:
- id: start-time-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".status.startTime"
- "text" "Start time"
- ) | nindent 34
- }}
-
- # Completion time
- - type: antdFlex
- data:
- id: completion-time-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".status.completionTime"
- "text" "Completion time"
- ) | nindent 34
- }}
-
- # Succeeded pods count
- - type: antdFlex
- data:
- id: succeeded-pods-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: succeeded-pods-label
- strong: true
- text: "Succeeded pods"
- - type: parsedText
- data:
- id: succeeded-pods-value
- text: "{reqsJsonPath[0]['.status.succeeded']['-']}"
-
- # Active pods count
- - type: antdFlex
- data:
- id: active-pods-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: active-pods-label
- strong: true
- text: "Active pods"
- - type: parsedText
- data:
- id: active-pods-value
- text: "{reqsJsonPath[0]['.status.active']['-']}"
-
- # Failed pods count
- - type: antdFlex
- data:
- id: failed-pods-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: failed-pods-label
- strong: true
- text: "Failed pods"
- - type: parsedText
- data:
- id: failed-pods-value
- text: "{reqsJsonPath[0]['.status.failed']['-']}"
-
- # === Volumes table ===
- # TODO to be done
- # - type: antdCol
- # data:
- # id: volumes-column
- # style:
- # marginTop: 10
- # padding: 10
- # children:
- # - type: VisibilityContainer
- # data:
- # id: volumes-container
- # value: "{reqsJsonPath[0]['.spec.volumes']['-']}"
- # style:
- # margin: 0
- # padding: 0
- # children:
- # - type: antdText
- # data:
- # id: volumes-title
- # text: "Volumes"
- # strong: true
- # style:
- # fontSize: 22
- # marginBottom: 32px
- # - type: EnrichedTable
- # data:
- # id: volumes-table
- # fetchUrl: "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
- # clusterNamePartOfUrl: "{2}"
- # customizationId: factory-job-details-volume-list
- # baseprefix: "/openapi-ui"
- # withoutControls: true
- # pathToItems: ".spec.template.spec.volumes"
-
- # ---- INIT CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-init-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-init-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Init containers"
- "customizationId" "container-spec-init-containers-list"
- "type" "init-containers"
- "apiGroup" "apis/batch/v1"
- "kind" "jobs"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.initContainers"
- "pathToItems" "['spec','template','spec','initContainers']"
- ) | nindent 26
- }}
-
- # ---- CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Containers"
- "customizationId" "container-spec-containers-list"
- "type" "containers"
- "apiGroup" "apis/batch/v1"
- "kind" "jobs"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.containers"
- "pathToItems" "['spec','template','spec','containers']"
- ) | nindent 26
- }}
-
-
- # === Conditions table ===
- - type: antdCol
- data:
- id: conditions-column
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: conditions-container
- value: "{reqsJsonPath[0]['.status.conditions']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- - type: antdText
- data:
- id: conditions-title
- text: "Conditions"
- strong: true
- style:
- fontSize: 22
- - type: EnrichedTable
- data:
- id: conditions-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/batch/v1/namespaces/{3}/jobs/{6}"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-status-conditions
- baseprefix: "/openapi-ui"
- withoutControls: true
- pathToItems: ".status.conditions"
-
- # ------ YAML TAB ------
- - key: "yaml"
- label: "YAML"
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: "builtin"
- typeName: jobs
- prefillValuesRequestIndex: 0
- substractHeight: 400
-
- # ------ PODS TAB ------
- - key: pods
- label: Pods
- children:
- - type: EnrichedTable
- data:
- id: pods-table
- fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-/v1/pods
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from Job's pod template labels
- labelsSelectorFull:
- reqIndex: 0
- pathToLabels: ".spec.template.metadata.labels"
- pathToItems: ".items"
+{{ include "incloud-web-resources.factory.manifets.job-details" (dict
+ "key" "job-details"
+ "resName" "{6}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.job-details" (dict
+ "key" "instance-job-details"
+ "resName" "{7}"
+ "podFactoryName" "factory-instance-pods-details"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/networkpoliciy-details.yaml b/templates/Factory/networkpoliciy-details.yaml
new file mode 100644
index 0000000..3c93354
--- /dev/null
+++ b/templates/Factory/networkpoliciy-details.yaml
@@ -0,0 +1,17 @@
+{{ include "incloud-web-resources.factory.manifets.networkpolicy-details" (dict
+ "key" "networkpolicy-details"
+ "resName" "{6}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.networkpolicy-details" (dict
+ "key" "instance-networkpolicy-details"
+ "resName" "{7}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/node-details.yaml b/templates/Factory/node-details.yaml
index a1001a7..3ccc9ad 100644
--- a/templates/Factory/node-details.yaml
+++ b/templates/Factory/node-details.yaml
@@ -8,7 +8,7 @@ spec:
# Sidebar category tags
sidebarTags:
- - node-sidebar
+ - node-details
# Enable scrollable content card for main section
withScrollableMainContentCard: true
@@ -27,25 +27,13 @@ spec:
style:
marginBottom: 24px
children:
- # Badge with resource short name
- - type: antdText
+ # factory badge
+ - type: ResourceBadge
data:
- id: header-badge
- text: "N"
- title: nodes
+ id: factory-resource-badge
+ value: "{reqsJsonPath[0]['.kind']['-']}"
style:
fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#8476d1"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
# Node name
- type: parsedText
@@ -205,6 +193,7 @@ spec:
children:
{{ include "incloud-web-resources.factory.labels" (dict
"endpoint" "/api/clusters/{2}/k8s/api/v1/nodes/{5}"
+ "linkPrefix" "/openapi-ui/{2}/search?kinds=~v1~nodes&labels="
) | nindent 34
}}
@@ -436,8 +425,7 @@ spec:
fetchUrl: "/api/clusters/{2}/k8s/api/v1/nodes/{5}"
clusterNamePartOfUrl: "{2}"
customizationId: "factory-status-conditions"
- baseprefix: "/openapi-ui"
- withoutControls: true
+ baseprefix: "/{{ .Values.basePrefix }}"
pathToItems: ".status.conditions"
# IMAGES SECTION
@@ -461,8 +449,8 @@ spec:
fetchUrl: "/api/clusters/{2}/k8s/api/v1/nodes/{5}"
clusterNamePartOfUrl: "{2}"
customizationId: "factory-node-images"
- baseprefix: "/openapi-ui"
- withoutControls: true
+ baseprefix: "/{{ .Values.basePrefix }}"
+
pathToItems: ".status.images"
# ------ YAML TAB ------
@@ -491,8 +479,7 @@ spec:
fetchUrl: "/api/clusters/{2}/k8s/api/v1/pods"
clusterNamePartOfUrl: "{2}"
customizationId: "factory-node-details-/v1/pods"
- baseprefix: "/openapi-ui"
- withoutControls: true
+ baseprefix: "/{{ .Values.basePrefix }}"
fieldSelector:
fieldName: "spec.nodeName"
parsedText: "{reqsJsonPath[0]['.metadata.name']['-']}"
@@ -510,10 +497,32 @@ spec:
nodeName: "{reqsJsonPath[0]['.metadata.name']['-']}"
substractHeight: 400
+ - key: events
+ label: Events
+ children:
+ - type: Events
+ data:
+ id: events
+ baseprefix: "/openapi-ui"
+ clusterNamePartOfUrl: "{2}"
+ wsUrl: "/api/clusters/{2}/openapi-bff-ws/events/eventsWs"
+ pageSize: 50
+ substractHeight: 315
+ limit: 40
+ fieldSelector:
+ regarding.kind: "{reqsJsonPath[0]['.kind']['-']}"
+ regarding.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
+ regarding.apiVersion: "{reqsJsonPath[0]['.apiVersion']['-']}"
+ baseFactoryNamespacedAPIKey: base-factory-namespaced-api
+ baseFactoryClusterSceopedAPIKey: base-factory-clusterscoped-api
+ baseFactoryNamespacedBuiltinKey: base-factory-namespaced-builtin
+ baseFactoryClusterSceopedBuiltinKey: base-factory-clusterscoped-builtin
+ baseNamespaceFactoryKey: namespace-details
+
{{- if .Values.addons.trivy.enabled }}
# ------ PODS TAB ------
- - key: cfg-reports
- label: CFG reports
+ - key: config-reports
+ label: Config reports
children:
- type: EnrichedTable
data:
@@ -521,8 +530,7 @@ spec:
fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/clusterinfraassessmentreports"
clusterNamePartOfUrl: "{2}"
customizationId: factory-aquasecurity.github.io.v1alpha1.clusterinfraassessmentreports
- baseprefix: "/openapi-ui"
- withoutControls: true
+ baseprefix: "/{{ .Values.basePrefix }}"
# Build label selector from pod template labels
labelsSelector:
trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
@@ -530,4 +538,5 @@ spec:
# Items path for Pods list
pathToItems: ".items[*].report.checks"
+
{{- end -}}
\ No newline at end of file
diff --git a/templates/Factory/pod-details.yaml b/templates/Factory/pod-details.yaml
index f80a48e..ae823e8 100644
--- a/templates/Factory/pod-details.yaml
+++ b/templates/Factory/pod-details.yaml
@@ -1,572 +1,15 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: pod-details
-spec:
- key: pod-details
- sidebarTags:
- - pods-sidebar
- withScrollableMainContentCard: true
- urlsToFetch:
- - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
-
- # Header row with badge, pod name, and status
- data:
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Pod badge
- - type: antdText
- data:
- id: header-badge
- text: P
- title: Pods
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#009596"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # Pod name next to badge
- - type: parsedText
- data:
- id: header-pod-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- - type: antdFlex
- data:
- id: status-header-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.statuses.pod" . | nindent 38 }}
-
- # Tabs with Details, YAML, Logs, and Terminal views
- - type: antdTabs
- data:
- id: pod-tabs
- defaultActiveKey: "details"
- items:
- # Details tab with metadata and spec
- - key: "details"
- label: "Details"
- children:
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- # Title of the details section
- - type: antdText
- data:
- id: details-title
- text: "Pod details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
- # Spacer before grid
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
- # Two-column layout for metadata (left) and status/spec (right)
-
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # Left column: metadata, links, labels
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- - type: antdFlex
- data:
- id: col-left-stack
- vertical: true
- gap: 24
- children:
- # Display name label/value
- - type: antdFlex
- data:
- id: meta-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-name-label
- strong: true
- text: "Name"
- - type: parsedText
- data:
- id: meta-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link (kept as include)
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
- # Labels list (kept as include)
- - type: antdFlex
- data:
- id: meta-labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
- ) | nindent 34
- }}
-
- # Node selector chips (kept as include)
- - type: antdFlex
- data:
- id: meta-node-selector-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "node"
- "title" "Node selector"
- "jsonPath" ".spec.nodeSelector"
- ) | nindent 34
- }}
-
- # Tolerations counter (kept as include)
- - type: antdFlex
- data:
- id: meta-tolerations-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.tolerations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
- "jsonPathToArray" ".spec.tolerations"
- "pathToValue" "/spec/tolerations"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
- ) | nindent 34
- }}
-
- # Created timestamp (kept as include)
- - type: antdFlex
- data:
- id: meta-created-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 38
- }}
-
- # Owner information (fallback when absent)
- # - type: antdFlex
- # data:
- # id: meta-owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: meta-owner-label
- # strong: true
- # text: "Owner"
- # - type: parsedText
- # data:
- # id: meta-owner-fallback
- # strong: true
- # text: "No owner"
- # style:
- # color: red
-
- # Right column: status and runtime info
- - type: antdCol
- data:
- id: col-right
- span: 12
- children:
- - type: antdFlex
- data:
- id: col-right-stack
- vertical: true
- gap: 24
- children:
- # Status block with readiness reason mapping
- - type: antdFlex
- data:
- id: status-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: status-label
- strong: true
- text: "Status"
- # Pod readiness/status indicator
- - type: antdFlex
- data:
- id: status-label-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.statuses.pod" . | nindent 38 }}
-
- # Restart policy
- - type: antdFlex
- data:
- id: restart-policy-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: restart-policy-label
- strong: true
- text: "Restart policy"
- - type: parsedText
- data:
- id: restart-policy-value
- text: "{reqsJsonPath[0]['.spec.restartPolicy']['-']} restart"
-
- # Active deadline seconds
- - type: antdFlex
- data:
- id: active-deadline-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: active-deadline-label
- strong: true
- text: "Active deadline seconds"
- - type: parsedText
- data:
- id: active-deadline-value
- text: "{reqsJsonPath[0]['.spec.activeDeadlineSeconds']['-']}"
-
- # Pod IP
- - type: antdFlex
- data:
- id: pod-ip-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: pod-ip-label
- strong: true
- text: "Pod IP"
- - type: parsedText
- data:
- id: pod-ip-value
- text: "{reqsJsonPath[0]['.status.podIP']['-']}"
-
- # Host IP
- - type: antdFlex
- data:
- id: host-ip-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: host-ip-label
- strong: true
- text: "Host IP"
- - type: parsedText
- data:
- id: host-ip-value
- text: "{reqsJsonPath[0]['.status.hostIP']['-']}"
-
- # Node details link (kept as include)
- - type: antdFlex
- data:
- id: node-link-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-node
- text: Node
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "N"
- "title" "node"
- "backgroundColor" "#8476d1"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "name"
- "jsonPath" ".spec.nodeName"
- "factory" "node-details"
- ) | nindent 38
- }}
-
- # QoS class
- - type: antdFlex
- data:
- id: qos-class-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: qos-class-label
- strong: true
- text: "QOS class"
- - type: parsedText
- data:
- id: qos-class-value
- text: "{reqsJsonPath[0]['.status.qosClass']['-']}"
-
- # Volumes section (table is hidden if no volumes)
- # TODO to be done
- # - type: antdCol
- # data:
- # id: volumes-col
- # style:
- # marginTop: 10
- # padding: 10
- # children:
- # - type: VisibilityContainer
- # data:
- # id: volumes-visibility
- # value: "{reqsJsonPath[0]['.spec.volumes']['-']}"
- # style:
- # margin: 0
- # padding: 0
- # children:
- # # Volumes title
- # - type: antdText
- # data:
- # id: volumes-title
- # text: "Volumes"
- # strong: true
- # style:
- # fontSize: 22
- # marginBottom: 32px
- # # Volumes table
- # - type: EnrichedTable
- # data:
- # id: volumes-table
- # fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
- # clusterNamePartOfUrl: "{2}"
- # customizationId: factory-pod-details-volume-list
- # baseprefix: "/openapi-ui"
- # withoutControls: true
- # pathToItems: ".spec.volumes"
-
-
- # Init containers section (hidden if none)
- - type: antdCol
- data:
- id: init-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Init containers"
- "customizationId" "container-status-init-containers-list"
- "type" "init-containers"
- "apiGroup" "api/v1"
- "kind" "pods"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".status.initContainerStatuses"
- "pathToItems" "['status','initContainerStatuses']"
- ) | nindent 22
- }}
-
- # Containers section (hidden if none)
- - type: antdCol
- data:
- id: containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Containers"
- "customizationId" "container-status-containers-list"
- "type" "containers"
- "apiGroup" "api/v1"
- "kind" "pods"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".status.containerStatuses"
- "pathToItems" "['status','containerStatuses']"
- ) | nindent 22
- }}
-
- # Conditions section (hidden if none)
- - type: antdCol
- data:
- id: conditions-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: conditions-visibility
- value: "{reqsJsonPath[0]['.status.conditions']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- # Conditions title
- - type: antdText
- data:
- id: conditions-title
- text: "Conditions"
- strong: true
- style:
- fontSize: 22
- # Conditions table
- - type: EnrichedTable
- data:
- id: conditions-table
- fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods/{6}"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-status-conditions
- baseprefix: "/openapi-ui"
- withoutControls: true
- pathToItems: ".status.conditions"
-
- # YAML tab with inline editor
- - key: "yaml"
- label: "YAML"
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: "builtin"
- typeName: pods
- prefillValuesRequestIndex: 0
- substractHeight: 400
-
- # Logs tab with live pod logs
- - key: "logs"
- label: "Logs"
- children:
- - type: PodLogs
- data:
- id: pod-logs
- cluster: "{2}"
- namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- podName: "{reqsJsonPath[0]['.metadata.name']['-']}"
- substractHeight: 400
-
- # Terminal tab with exec into pod
- - key: "terminal"
- label: "Terminal"
- children:
- - type: PodTerminal
- data:
- id: pod-terminal
- cluster: "{2}"
- namespace: "{reqsJsonPath[0]['.metadata.namespace']['-']}"
- podName: "{reqsJsonPath[0]['.metadata.name']['-']}"
- substractHeight: 400
-
-{{- if .Values.addons.trivy.enabled }}
- # ------ PODS TAB ------
- - key: reports
- label: Reports
- children:
- - type: EnrichedTable
- data:
- id: ds-pods-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/vulnerabilityreports"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from pod template labels
- labelsSelector:
- trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
- trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
- # Items path for Pods list
- pathToItems: ".items[*].report.vulnerabilities"
-
- - key: cfg-reports
- label: CFG reports
- children:
- - type: EnrichedTable
- data:
- id: ds-pods-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/configauditreports"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-aquasecurity.github.io.v1alpha1.configauditreports
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from pod template labels
- labelsSelector:
- trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
- trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
- # Items path for Pods list
- pathToItems: ".items[*].report.checks"
-{{- end -}}
+{{ include "incloud-web-resources.factory.manifets.pod-details" (dict
+ "key" "pod-details"
+ "resName" "{6}"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.pod-details" (dict
+ "key" "instance-pod-details"
+ "resName" "{7}"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/poddisruptionbudget-details.yaml b/templates/Factory/poddisruptionbudget-details.yaml
index 81db989..202740a 100644
--- a/templates/Factory/poddisruptionbudget-details.yaml
+++ b/templates/Factory/poddisruptionbudget-details.yaml
@@ -1,308 +1,13 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: poddisruptionbudget-details
-spec:
- key: poddisruptionbudget-details
- withScrollableMainContentCard: true
- sidebarTags:
- - poddisruptionbudget-sidebar
- urlsToFetch:
- # API call to fetch HPA details by cluster, namespace, and name
- - "/api/clusters/{2}/k8s/apis/policy/v1/namespaces/{3}/poddisruptionbudgets/{6}"
-
- data:
- # --- Header section -----------------------------------------------------
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Badge for poddisruptionbudget
- - type: antdText
- data:
- id: badge-poddisruptionbudget
- text: PDB
- title: poddisruptionbudgets
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#2b9af3"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
-
- # Resource name
- - type: parsedText
- data:
- id: poddisruptionbudget-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # --- Tabs section (Details, YAML, etc.) --------------------------------
- - type: antdTabs
- data:
- id: poddisruptionbudget-tabs
- defaultActiveKey: "details"
- items:
- # --- Details tab --------------------------------------------------
- - key: "details"
- label: "Details"
- children:
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # --- Left column: metadata & config -------------------
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- - type: antdText
- data:
- id: details-title
- text: "PodDisruptionBudget details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
-
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
-
- - type: antdFlex
- data:
- id: col-left-stack
- vertical: true
- gap: 24
- children:
- # Resource name
- - type: antdFlex
- data:
- id: meta-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-name-label
- strong: true
- text: "Name"
- - type: parsedText
- data:
- id: meta-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link (navigates to namespace details)
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels (key/value list with chips)
- - type: antdFlex
- data:
- id: meta-labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/poddisruptionbudgets/{6}"
- ) | nindent 34
- }}
-
- # Pod selector
- - type: antdFlex
- data:
- id: meta-pod-selector-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "pod"
- "title" "Pod selector"
- "jsonPath" ".spec.selector.matchLabels"
- ) | nindent 34
- }}
-
- # Annotations (counter with expandable view)
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/poddisruptionbudgets/{6}"
- ) | nindent 34
- }}
-
- # Creation timestamp
- - type: antdFlex
- data:
- id: meta-created-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 34
- }}
-
- # Owner section (commented, not yet implemented)
- # Could show controller/parent resource
-
- # --- Right column: scaling settings -------------------
- - type: antdCol
- data:
- id: col-right
- span: 12
- children:
- - type: antdText
- data:
- id: routing-title
- text: "Settings"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
-
- - type: Spacer
- data:
- id: routing-spacer
- "$space": 16
-
- - type: antdFlex
- data:
- id: col-right-stack
- vertical: true
- gap: 24
- children:
- - type: antdFlex
- data:
- id: poddisruptionbudget-max-unavailable-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: poddisruptionbudget-max-unavailable-label
- strong: true
- text: "Max unavailable"
- - type: parsedText
- data:
- id: poddisruptionbudget-max-unavailable-value
- text: "{reqsJsonPath[0]['.spec.maxUnavailable']['-']}"
-
- - type: antdFlex
- data:
- id: col-right-stack
- vertical: true
- gap: 24
- children:
- - type: antdFlex
- data:
- id: poddisruptionbudget-disruptions-allowed-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: poddisruptionbudget-disruptions-allowed-label
- strong: true
- text: "Max unavailable"
- - type: parsedText
- data:
- id: poddisruptionbudget-disruptions-allowed-value
- text: "{reqsJsonPath[0]['.status.disruptionsAllowed']['-']}"
-
- # === Conditions table ===
- - type: antdCol
- data:
- id: conditions-column
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: conditions-container
- value: "{reqsJsonPath[0]['.status.conditions']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- - type: antdText
- data:
- id: conditions-title
- text: "Conditions"
- strong: true
- style:
- fontSize: 22
- - type: EnrichedTable
- data:
- id: conditions-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/policy/v1/namespaces/{3}/poddisruptionbudgets/{6}"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-status-conditions
- baseprefix: "/openapi-ui"
- withoutControls: true
- pathToItems: ".status.conditions"
-
- # --- YAML tab -----------------------------------------------------
- - key: "yaml"
- label: "YAML"
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: "builtin"
- typeName: poddisruptionbudgets
- prefillValuesRequestIndex: 0
- substractHeight: 400
+{{ include "incloud-web-resources.factory.manifets.poddisruptionbudget-details" (dict
+ "key" "poddisruptionbudget-details"
+ "resName" "{6}"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.poddisruptionbudget-details" (dict
+ "key" "instance-poddisruptionbudget-details"
+ "resName" "{7}"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/project-details.yaml b/templates/Factory/project-details.yaml
new file mode 100644
index 0000000..70667f2
--- /dev/null
+++ b/templates/Factory/project-details.yaml
@@ -0,0 +1,166 @@
+{{ $projRes := .Values.projectResource }}
+{{ $instRes := .Values.instanceResource }}
+{{ $frontApiGroup := "front.in-cloud.io" }}
+{{ $frontApiVersion := "v1alpha1" }}
+{{ $mpName := "marketplacepanels" }}
+{{ $mpKind := "MarketplacePanel" }}
+{{ $factory := .Values.projectResource.factory }}
+
+{{ if and ($projRes.deployDefaultForms) (not .Values.namespaceNavigation) }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Factory
+metadata:
+ name: project-details
+spec:
+ key: project-details
+ sidebarTags:
+ - clusterrole-details
+ withScrollableMainContentCard: true
+ urlsToFetch:
+ - "/api/clusters/{2}/k8s/apis/{{ $projRes.apiGroup }}/{{ $projRes.apiVersion }}/{{ $projRes.resourceName }}/{3}"
+
+ # Header row with badge and project name
+ data:
+ - type: antdRow
+ data:
+ id: 1
+ gutter: [24, 24]
+ style:
+ flexGrow: 1
+ children:
+ - type: antdCol
+ data:
+ id: project-column
+ title: ""
+ span: 14
+ style:
+ flexShrink: 0
+ children:
+ - type: ContentCard
+ data:
+ id: project-card
+ title: ""
+ style:
+ flexShrink: 0
+ children:
+ - type: ProjectInfoCard
+ data:
+ id: 211
+ clusterNamePartOfUrl: "{2}"
+ namespacePartOfUrl: "{3}"
+ baseApiGroup: "{{ $frontApiGroup }}"
+ baseApiVersion: "{{ $frontApiVersion }}"
+ baseProjectApiGroup: "{{ $projRes.apiGroup }}"
+ baseProjectVersion: "{{ $projRes.apiVersion }}"
+ projectResourceName: "{{ $projRes.resourceName }}"
+ mpResourceName: "{{ $mpName }}"
+ baseprefix: "{{ .Values.basePrefix }}"
+ accessGroups:
+ {{ $factory.accessGroups | toYaml | nindent 22 }}
+ children:
+ # Business name
+ - type: antdFlex
+ data:
+ id: business-name-section
+ vertical: true
+ gap: 12
+ style:
+ marginBottom: 24px
+ flexShrink: 0
+ children:
+ - type: antdText
+ data:
+ id: business-name-label
+ text: "Business name"
+ style:
+ fontSize: 14px
+ - type: parsedText
+ data:
+ id: business-name-value
+ strong: true
+ text: "{reqsJsonPath[0]['.spec.businessName']['No business name']}"
+ style:
+ fontSize: 36px
+ fontWeight: 700
+
+ # Description
+ - type: antdFlex
+ data:
+ id: description-section
+ vertical: true
+ style:
+ marginBottom: 24px
+ flexShrink: 0
+ children:
+ - type: parsedText
+ data:
+ id: desc-value
+ text: "{reqsJsonPath[0]['.spec.description']['No description provided']}"
+ style:
+ fontSize: 16px
+
+ # Developer tools section
+ - type: antdFlex
+ data:
+ id: toolkit-section
+ vertical: true
+ style:
+ marginTop: "auto"
+ flexShrink: 0
+ children:
+ - type: antdText
+ data:
+ id: toolkit-title
+ text: "Dev toolkit"
+ style:
+ fontSize: 14px
+ - type: antdFlex
+ data:
+ id: toolkit-buttons
+ wrap: true
+ gap: 8
+ style:
+ flexShrink: 0
+ children:
+ {{- range $i := $factory.devTools }}
+ - type: antdButton
+ data:
+ id: "{{ $i.name | lower }}-button"
+ text: "{{ $i.name }}"
+ type: default
+ href: {{ $i.link }}
+ target: "_blank"
+ size: middle
+ {{- end }}
+
+ - type: antdCol
+ data:
+ id: project-column
+ title: ""
+ span: 10
+ style:
+ flexShrink: 0
+ children:
+ - type: ContentCard
+ data:
+ id: 21
+ title: "Marketplace Dashboard"
+ style:
+ flexGrow: 1
+ children:
+ - type: antdCol
+ data:
+ id: 3
+ children:
+ - type: MarketplaceCard
+ data:
+ id: 311
+ clusterNamePartOfUrl: "{2}"
+ namespacePartOfUrl: "{3}"
+ baseApiGroup: "{{ $frontApiGroup }}"
+ baseApiVersion: "{{ $frontApiVersion }}"
+ mpResourceName: "{{ $mpName }}"
+ mpResourceKind: "{{ $mpKind }}"
+ baseprefix: "{{ .Values.basePrefix }}"
+{{ end }}
diff --git a/templates/Factory/replicaset-details.yaml b/templates/Factory/replicaset-details.yaml
index 58bd8db..e5bdcdd 100644
--- a/templates/Factory/replicaset-details.yaml
+++ b/templates/Factory/replicaset-details.yaml
@@ -1,462 +1,17 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: replicaset-details
-spec:
- key: replicaset-details
- sidebarTags:
- - replicaset-sidebar
- withScrollableMainContentCard: true
- urlsToFetch:
- - "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
-
- # Header row with badge and ReplicaSet name
- data:
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # ReplicaSet badge
- - type: antdText
- data:
- id: badge-rs
- text: RS
- title: ReplicaSet
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#004080"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # ReplicaSet name
- - type: parsedText
- data:
- id: rs-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # Tabs with Details, YAML, and Pods
- - type: antdTabs
- data:
- id: rs-tabs
- defaultActiveKey: details
- items:
- # Details tab with metadata and spec info
- - key: details
- label: Details
- children:
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- # Title
- - type: antdText
- data:
- id: details-title
- text: ReplicaSet details
- strong: true
- style:
- fontSize: 20px
- marginBottom: 12px
-
- # Spacer
- - type: Spacer
- data:
- id: details-spacer
- $space: 16
-
- # Two-column layout
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # Left column: metadata
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- - type: antdFlex
- data:
- id: col-left-stack
- vertical: true
- gap: 24
- children:
- # Name block
- - type: antdFlex
- data:
- id: meta-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Name
- strong: true
- - type: parsedText
- data:
- id: meta-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels
- - type: antdFlex
- data:
- id: meta-labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
- ) | nindent 34
- }}
-
-
- # Node selector
- - type: antdFlex
- data:
- id: meta-node-selector-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "node"
- "title" "Node selector"
- "jsonPath" ".spec.template.spec.nodeSelector"
- ) | nindent 34
- }}
-
-
- # Pod selector
- - type: antdFlex
- data:
- id: meta-pod-selector-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "pod"
- "title" "Pod selector"
- "jsonPath" ".spec.template.metadata.labels"
- ) | nindent 34
- }}
-
- # Tolerations
- - type: antdFlex
- data:
- id: meta-tolerations-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.tolerations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
- "jsonPathToArray" ".spec.tolerations"
- "pathToValue" "/spec/tolerations"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
- ) | nindent 34
- }}
-
- # Created timestamp
- - type: antdFlex
- data:
- id: meta-created-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 38
- }}
-
- # Owner block
- # - type: antdFlex
- # data:
- # id: meta-owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: meta-owner-label
- # text: Owner
- # strong: true
- # - type: parsedText
- # data:
- # id: meta-owner-fallback
- # strong: true
- # text: "No owner"
- # style:
- # color: red
-
- # Right column: replica counts
- - type: antdCol
- data:
- id: col-right
- span: 12
- children:
- - type: antdFlex
- data:
- id: col-right-stack
- vertical: true
- gap: 24
- children:
- # Current replicas
- - type: antdFlex
- data:
- id: replicas-current-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: replicas-current-label
- text: Current count
- strong: true
- - type: parsedText
- data:
- id: replicas-current-value
- text: "{reqsJsonPath[0]['.status.replicas']['-']}"
-
- # Desired replicas
- - type: antdFlex
- data:
- id: replicas-desired-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: replicas-desired-label
- text: Desired count
- strong: true
- - type: parsedText
- data:
- id: replicas-desired-value
- text: "{reqsJsonPath[0]['.spec.replicas']['-']}"
-
- # Volumes section
- # TODO to be done
- # - type: antdCol
- # data:
- # id: volumes-col
- # style:
- # marginTop: 10
- # padding: 10
- # children:
- # - type: VisibilityContainer
- # data:
- # id: volumes-visibility
- # value: "{reqsJsonPath[0]['.spec.template.spec.volumes']['-']}"
- # style:
- # margin: 0
- # padding: 0
- # children:
- # - type: antdText
- # data:
- # id: volumes-title
- # text: Volumes
- # strong: true
- # style:
- # fontSize: 22px
- # marginBottom: 32px
- # - type: EnrichedTable
- # data:
- # id: volumes-table
- # fetchUrl: "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/replicasets/{6}"
- # clusterNamePartOfUrl: "{2}"
- # customizationId: factory-replicaset-details-volume-list
- # baseprefix: "/openapi-ui"
- # withoutControls: true
- # pathToItems:
- # - spec
- # - template
- # - spec
- # - volumes
-
-
- # ---- INIT CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-init-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-init-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Init containers"
- "customizationId" "container-spec-init-containers-list"
- "type" "init-containers"
- "apiGroup" "apis/apps/v1"
- "kind" "replicasets"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.initContainers"
- "pathToItems" "['spec','template','spec','initContainers']"
- ) | nindent 26
- }}
-
- # ---- CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Containers"
- "customizationId" "container-spec-containers-list"
- "type" "containers"
- "apiGroup" "apis/apps/v1"
- "kind" "replicasets"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.containers"
- "pathToItems" "['spec','template','spec','containers']"
- ) | nindent 26
- }}
-
- # YAML tab
- - key: yaml
- label: YAML
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: apis
- apiGroup: apps
- apiVersion: v1
- typeName: replicasets
- prefillValuesRequestIndex: 0
- substractHeight: 400
-
- # Pods tab
- - key: pods
- label: Pods
- children:
- - type: EnrichedTable
- data:
- id: pods-table
- fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-/v1/pods
- baseprefix: "/openapi-ui"
- withoutControls: true
- labelsSelectorFull:
- reqIndex: 0
- pathToLabels: ".spec.template.metadata.labels"
- pathToItems: ".items"
-
-{{- if .Values.addons.trivy.enabled }}
- # ------ PODS TAB ------
- - key: reports
- label: Vuln reports
- children:
- - type: EnrichedTable
- data:
- id: ds-pods-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/vulnerabilityreports"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-aquasecurity.github.io.v1alpha1.vulnerabilityreports
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from pod template labels
- labelsSelector:
- trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
- trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
- # Items path for Pods list
- pathToItems: ".items[*].report.vulnerabilities"
-
- - key: cfg-reports
- label: CFG reports
- children:
- - type: EnrichedTable
- data:
- id: ds-pods-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/configauditreports"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-aquasecurity.github.io.v1alpha1.configauditreports
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from pod template labels
- labelsSelector:
- trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
- trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
- # Items path for Pods list
- pathToItems: ".items[*].report.checks"
-
-{{- end -}}
+{{ include "incloud-web-resources.factory.manifets.replicaset-details" (dict
+ "key" "replicaset-details"
+ "resName" "{6}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.replicaset-details" (dict
+ "key" "instance-replicaset-details"
+ "resName" "{7}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/replicationcontroller-details.yaml b/templates/Factory/replicationcontroller-details.yaml
index 5c4ce9a..688ecb4 100644
--- a/templates/Factory/replicationcontroller-details.yaml
+++ b/templates/Factory/replicationcontroller-details.yaml
@@ -1,417 +1,15 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: replicationcontroller-details
-spec:
- key: replicationcontroller-details
- sidebarTags:
- - replicationcontroller-sidebar
- withScrollableMainContentCard: true
- urlsToFetch:
- - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/replicationcontrollers/{6}"
-
- # Header row with badge and ReplicationController name
- data:
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # ReplicationController badge
- - type: antdText
- data:
- id: badge-rc
- text: RC
- title: replicationcontroller
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#004080"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # ReplicationController name
- - type: parsedText
- data:
- id: rc-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # Tabs with Details, YAML, and Pods
- - type: antdTabs
- data:
- id: rc-tabs
- defaultActiveKey: details
- items:
- # Details tab with metadata and spec info
- - key: details
- label: Details
- children:
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- # Title
- - type: antdText
- data:
- id: details-title
- text: ReplicationController details
- strong: true
- style:
- fontSize: 20px
- marginBottom: 12px
-
- # Spacer
- - type: Spacer
- data:
- id: details-spacer
- $space: 16
-
- # Two-column layout
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # Left column: metadata
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- - type: antdFlex
- data:
- id: col-left-stack
- vertical: true
- gap: 24
- children:
- # Name block
- - type: antdFlex
- data:
- id: meta-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Name
- strong: true
- - type: parsedText
- data:
- id: meta-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels
- - type: antdFlex
- data:
- id: meta-labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/replicationcontrollers/{6}"
- ) | nindent 34
- }}
-
- # Node selector
- - type: antdFlex
- data:
- id: meta-node-selector-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "node"
- "title" "Node selector"
- "jsonPath" ".spec.template.spec.nodeSelector"
- ) | nindent 34
- }}
-
- # Pod selector
- - type: antdFlex
- data:
- id: meta-pod-selector-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "pod"
- "title" "Pod selector"
- "jsonPath" ".spec.template.metadata.labels"
- ) | nindent 34
- }}
-
- # Tolerations
- - type: antdFlex
- data:
- id: meta-tolerations-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.tolerations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/replicationcontrollers/{6}"
- "jsonPathToArray" ".spec.template.spec.tolerations"
- "pathToValue" "/spec/template/spec/tolerations"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/replicationcontrollers/{6}"
- ) | nindent 34
- }}
-
- # Created timestamp
- - type: antdFlex
- data:
- id: meta-created-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 38}}
-
- # Owner block
- # - type: antdFlex
- # data:
- # id: meta-owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: meta-owner-label
- # text: Owner
- # strong: true
- # - type: parsedText
- # data:
- # id: meta-owner-fallback
- # strong: true
- # text: "No owner"
- # style:
- # color: red
-
- # Right column: replica counts
- - type: antdCol
- data:
- id: col-right
- span: 12
- children:
- - type: antdFlex
- data:
- id: col-right-stack
- vertical: true
- gap: 24
- children:
- # Current replicas
- - type: antdFlex
- data:
- id: replicas-current-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: replicas-current-label
- text: Current count
- strong: true
- - type: parsedText
- data:
- id: replicas-current-value
- text: "{reqsJsonPath[0]['.status.replicas']['-']}"
-
- # Desired replicas
- - type: antdFlex
- data:
- id: replicas-desired-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: replicas-desired-label
- text: Desired count
- strong: true
- - type: parsedText
- data:
- id: replicas-desired-value
- text: "{reqsJsonPath[0]['.spec.replicas']['-']}"
-
- # Volumes section
- # TODO to be done
- # - type: antdCol
- # data:
- # id: volumes-col
- # style:
- # marginTop: 10
- # padding: 10
- # children:
- # - type: VisibilityContainer
- # data:
- # id: volumes-visibility
- # value: "{reqsJsonPath[0]['.spec.template.spec.volumes']['-']}"
- # style:
- # margin: 0
- # padding: 0
- # children:
- # - type: antdText
- # data:
- # id: volumes-title
- # text: Volumes
- # strong: true
- # style:
- # fontSize: 22px
- # marginBottom: 32px
- # - type: EnrichedTable
- # data:
- # id: volumes-table
- # fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/replicationcontrollers/{6}"
- # clusterNamePartOfUrl: "{2}"
- # customizationId: factory-replicationcontroller-details-volume-list
- # baseprefix: "/openapi-ui"
- # withoutControls: true
- # pathToItems:
- # - spec
- # - template
- # - spec
- # - volumes
-
- # ---- INIT CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-init-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-init-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Init containers"
- "customizationId" "container-spec-init-containers-list"
- "type" "init-containers"
- "apiGroup" "apis/apps/v1"
- "kind" "replicationcontrollers"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.initContainers"
- "pathToItems" "['spec','template','spec','initContainers']"
- ) | nindent 26
- }}
-
- # ---- CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Containers"
- "customizationId" "container-spec-containers-list"
- "type" "containers"
- "apiGroup" "api/v1"
- "kind" "replicationcontrollers"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.containers"
- "pathToItems" "['spec','template','spec','containers']"
- ) | nindent 26
- }}
-
-
- # YAML tab
- - key: yaml
- label: YAML
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: builtin
- typeName: replicationcontrollers
- prefillValuesRequestIndex: 0
- substractHeight: 400
-
- # Pods tab
- - key: pods
- label: Pods
- children:
- - type: EnrichedTable
- data:
- id: pods-table
- fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-/v1/pods
- baseprefix: "/openapi-ui"
- withoutControls: true
- labelsSelectorFull:
- reqIndex: 0
- pathToLabels: ".spec.template.metadata.labels"
- pathToItems: ".items"
+{{ include "incloud-web-resources.factory.manifets.replicationcontroller-details" (dict
+ "key" "replicationcontroller-details"
+ "resName" "{6}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.replicationcontroller-details" (dict
+ "key" "instance-replicationcontroller-details"
+ "resName" "{7}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/role-details.yaml b/templates/Factory/role-details.yaml
index e164037..4563121 100644
--- a/templates/Factory/role-details.yaml
+++ b/templates/Factory/role-details.yaml
@@ -1,240 +1,13 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: role-details
-spec:
- key: role-details
- sidebarTags:
- - role-sidebar
- withScrollableMainContentCard: true
- urlsToFetch:
- - "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/roles/{6}"
-
- # Header row with badge and role name
- data:
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Service badge
- - type: antdText
- data:
- id: badge-service
- text: R
- title: roles
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#6ca100"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # Service name
- - type: parsedText
- data:
- id: service-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # Tabs with Details, YAML, and Pods
- - type: antdTabs
- data:
- id: service-tabs
- defaultActiveKey: "details"
- items:
- # Details tab
- - key: "details"
- label: "Details"
- children:
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # Left column: metadata and config
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- - type: antdText
- data:
- id: details-title
- text: "Role details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
- - type: antdFlex
- data:
- id: col-left-stack
- vertical: true
- gap: 24
- children:
- # Name block
- - type: antdFlex
- data:
- id: meta-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-name-label
- strong: true
- text: "Name"
- - type: parsedText
- data:
- id: meta-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link (kept as include)
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels
- - type: antdFlex
- data:
- id: meta-labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/roles/{6}"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/roles/{6}"
- ) | nindent 34
- }}
-
- # Created timestamp
- - type: antdFlex
- data:
- id: meta-created-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 34
- }}
-
- # Owner
- # - type: antdFlex
- # data:
- # id: meta-owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: meta-owner-label
- # strong: true
- # text: "Owner"
- # - type: antdFlex
- # data:
- # id: meta-owner-flex
- # gap: 6
- # align: center
- # children:
- # - type: antdText
- # data:
- # id: meta-owner-fallback
- # text: "No owner"
- # style:
- # color: "#FF0000"
-
- - type: antdCol
- data:
- id: rule-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: antdText
- data:
- id: rule-title
- text: "Rules"
- strong: true
- style:
- fontSize: 22
- # Conditions table
- - type: EnrichedTable
- data:
- id: conditions-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/roles/{6}"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-k8s-rbac-rules
- baseprefix: "/openapi-ui"
- withoutControls: true
- pathToItems: ".rules"
-
- # YAML tab
- - key: "yaml"
- label: "YAML"
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: "builtin"
- typeName: roles
- prefillValuesRequestIndex: 0
- substractHeight: 400
+{{ include "incloud-web-resources.factory.manifets.role-details" (dict
+ "key" "role-details"
+ "resName" "{6}"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.role-details" (dict
+ "key" "instance-role-details"
+ "resName" "{7}"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/rolebinding-details.yaml b/templates/Factory/rolebinding-details.yaml
index 50a8416..51c0d26 100644
--- a/templates/Factory/rolebinding-details.yaml
+++ b/templates/Factory/rolebinding-details.yaml
@@ -1,284 +1,13 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: rolebinding-details
-spec:
- key: rolebinding-details
- sidebarTags:
- - rolebinding-sidebar
- withScrollableMainContentCard: true
- urlsToFetch:
- - "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/rolebindings/{6}"
-
- # Header row with badge and rolebinding name
- data:
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Service badge
- - type: antdText
- data:
- id: badge-service
- text: RB
- title: rolebindings
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#6ca100"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # Service name
- - type: parsedText
- data:
- id: service-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # Tabs with Details, YAML, and Pods
- - type: antdTabs
- data:
- id: service-tabs
- defaultActiveKey: "details"
- items:
- # Details tab
- - key: "details"
- label: "Details"
- children:
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # Left column: metadata and config
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- - type: antdText
- data:
- id: details-title
- text: "RoleBinding details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
- - type: antdFlex
- data:
- id: col-left-stack
- vertical: true
- gap: 24
- children:
- # Name block
- - type: antdFlex
- data:
- id: meta-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-name-label
- strong: true
- text: "Name"
- - type: parsedText
- data:
- id: meta-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link (kept as include)
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels
- - type: antdFlex
- data:
- id: meta-labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/rolebindings/{6}"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/rbac.authorization.k8s.io/v1/namespaces/{3}/rolebindings/{6}"
- ) | nindent 34
- }}
-
- # Created timestamp
- - type: antdFlex
- data:
- id: meta-created-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 34
- }}
-
- # Owner
- # - type: antdFlex
- # data:
- # id: meta-owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: meta-owner-label
- # strong: true
- # text: "Owner"
- # - type: antdFlex
- # data:
- # id: meta-owner-flex
- # gap: 6
- # align: center
- # children:
- # - type: antdText
- # data:
- # id: meta-owner-fallback
- # text: "No owner"
- # style:
- # color: "#FF0000"
-
-
- # Left column: metadata and config
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- - type: antdText
- data:
- id: details-title
- text: "Role details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
- - type: antdFlex
- data:
- id: col-left-stack
- vertical: true
- gap: 24
- children:
- # Name block
- - type: antdFlex
- data:
- id: meta-name-block
- vertical: true
- gap: 4
- children:
- # TODO не работает корректно
- - type: VisibilityContainer
- data:
- id: conditions-visibility
- value: "{reqsJsonPath[0]['.roleRef.kind']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.links.details" (dict
- "reqIndex" 0
- "type" "role"
- "title" "TODO"
- "namespace" "{reqsJsonPath[0]['.metadata.namespace']}"
- "jsonPath" ".roleRef.name"
- "factory" "role-details"
- ) | nindent 40
- }}
-
- # TODO не работает корректно
- - type: VisibilityContainer
- data:
- id: conditions-visibility
- value: "{reqsJsonPath[0]['.roleRef.kind']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.links.details" (dict
- "reqIndex" 0
- "type" "cluster-role"
- "title" "ClusterRole"
- "jsonPath" ".roleRef.name"
- "factory" "clusterrole-details"
- ) | nindent 40
- }}
-
- # YAML tab
- - key: "yaml"
- label: "YAML"
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: "builtin"
- typeName: rolebindings
- prefillValuesRequestIndex: 0
- substractHeight: 400
+{{ include "incloud-web-resources.factory.manifets.rolebinding-details" (dict
+ "key" "rolebinding-details"
+ "resName" "{6}"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.rolebinding-details" (dict
+ "key" "instance-rolebinding-details"
+ "resName" "{7}"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/secret-details.yaml b/templates/Factory/secret-details.yaml
index 5d54e82..a953e0d 100644
--- a/templates/Factory/secret-details.yaml
+++ b/templates/Factory/secret-details.yaml
@@ -1,268 +1,13 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: secret-details
-spec:
- key: secret-details
- sidebarTags:
- - secret-sidebar
- withScrollableMainContentCard: true
- urlsToFetch:
- - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/secrets/{6}"
-
- # Header row with badge and Secret name
- data:
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Secret badge
- - type: antdText
- data:
- id: badge-secret
- text: S
- title: secret
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#c46100"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # Secret name
- - type: parsedText
- data:
- id: header-secret-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # Tabs with Details and YAML
- - type: antdTabs
- data:
- id: secret-tabs
- defaultActiveKey: "details"
- items:
- # Details tab with metadata and spec info
- - key: "details"
- label: "Details"
- children:
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- # Title
- - type: antdText
- data:
- id: details-title
- text: "Secret details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
-
- # Spacer
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
-
- # Two-column layout
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # Left column: metadata
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- - type: antdFlex
- data:
- id: col-left-stack
- vertical: true
- gap: 24
- children:
- # Name block
- - type: antdFlex
- data:
- id: meta-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-name-label
- strong: true
- text: "Name"
- - type: parsedText
- data:
- id: meta-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels
- - type: antdFlex
- data:
- id: meta-labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/secrets/{6}"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/secrets/{6}"
- ) | nindent 34
- }}
-
- # Created timestamp
- - type: antdFlex
- data:
- id: meta-created-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 38
- }}
-
- # Owner block
- # - type: antdFlex
- # data:
- # id: meta-owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: meta-owner-label
- # strong: true
- # text: "Owner"
- # - type: antdFlex
- # data:
- # id: meta-owner-flex
- # gap: 6
- # align: center
- # children:
- # - type: parsedText
- # data:
- # id: owner-value
- # strong: true
- # text: "No owner"
- # style:
- # color: red
-
- # Right column: type info
- - type: antdCol
- data:
- id: col-right
- span: 12
- children:
- - type: antdFlex
- data:
- id: col-right-stack
- vertical: true
- gap: 24
- children:
- # Secret type
- - type: antdFlex
- data:
- id: secret-type-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: secret-type-label
- strong: true
- text: "Type"
- - type: parsedText
- data:
- id: secret-type-value
- text: "{reqsJsonPath[0]['.type']['-']}"
-
- # Secret SA
- - type: antdFlex
- data:
- id: secret-sa-block
- vertical: true
- gap: 4
- children:
- # SA Link
- {{ include "incloud-web-resources.factory.links.details" (dict
- "reqIndex" 0
- "type" "serviceaccount"
- "title" "ServiceAccount"
- "jsonPath" ".metadata.annotations['kubernetes.io/service-account.name']"
- "namespace" "{3}"
- "factory" "serviceaccount-details"
- ) | nindent 34
- }}
-
- # YAML tab
- - key: yaml
- label: YAML
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: builtin
- typeName: secrets
- prefillValuesRequestIndex: 0
- substractHeight: 400
+{{ include "incloud-web-resources.factory.manifets.secret-details" (dict
+ "key" "secret-details"
+ "resName" "{6}"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.secret-details" (dict
+ "key" "instance-secret-details"
+ "resName" "{7}"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/service-details.yaml b/templates/Factory/service-details.yaml
index accfc4c..e03debc 100644
--- a/templates/Factory/service-details.yaml
+++ b/templates/Factory/service-details.yaml
@@ -1,424 +1,17 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: service-details
-spec:
- key: service-details
- withScrollableMainContentCard: true
- sidebarTags:
- - service-sidebar
- urlsToFetch:
- - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
-
- # Header row with badge and Service name
- data:
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Service badge
- - type: antdText
- data:
- id: badge-service
- text: S
- title: services
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#6ca100"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # Service name
- - type: parsedText
- data:
- id: service-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # Tabs with Details, YAML, and Pods
- - type: antdTabs
- data:
- id: service-tabs
- defaultActiveKey: "details"
- items:
- # Details tab
- - key: "details"
- label: "Details"
- children:
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # Left column: metadata and config
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- - type: antdText
- data:
- id: details-title
- text: "Service details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
- - type: antdFlex
- data:
- id: col-left-stack
- vertical: true
- gap: 24
- children:
- # Name block
- - type: antdFlex
- data:
- id: meta-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-name-label
- strong: true
- text: "Name"
- - type: parsedText
- data:
- id: meta-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels
- - type: antdFlex
- data:
- id: meta-labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
- ) | nindent 34
- }}
-
- # Pod selector
- - type: antdFlex
- data:
- id: meta-pod-selector-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "pod"
- "title" "Pod selector"
- "jsonPath" ".spec.template.metadata.labels"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
- ) | nindent 34
- }}
-
- # Session affinity
- - type: antdFlex
- data:
- id: meta-session-affinity-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-session-affinity-label
- strong: true
- text: "Session affinity"
- - type: parsedText
- data:
- id: meta-session-affinity-value
- text: "{reqsJsonPath[0]['.spec.sessionAffinity']['Not configured']}"
-
- # Created timestamp
- - type: antdFlex
- data:
- id: meta-created-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 34
- }}
-
- # Owner
- # - type: antdFlex
- # data:
- # id: meta-owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: meta-owner-label
- # strong: true
- # text: "Owner"
- # - type: antdFlex
- # data:
- # id: meta-owner-flex
- # gap: 6
- # align: center
- # children:
- # - type: antdText
- # data:
- # id: meta-owner-fallback
- # text: "No owner"
- # style:
- # color: "#FF0000"
-
- # Right column: routing and ports
- - type: antdCol
- data:
- id: col-right
- span: 12
- children:
- - type: antdText
- data:
- id: routing-title
- text: "Service routing"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
- - type: Spacer
- data:
- id: routing-spacer
- "$space": 16
- - type: antdFlex
- data:
- id: col-right-stack
- vertical: true
- gap: 24
- children:
- # Hostname
- - type: antdFlex
- data:
- id: service-hostname-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: service-hostname-label
- strong: true
- text: "Hostname"
- - type: parsedText
- data:
- id: service-hostname-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}.{reqsJsonPath[0]['.metadata.namespace']['-']}.svc.cluster.local"
-
- # IP addresses block
- - type: antdFlex
- data:
- id: service-ip-block
- vertical: true
- gap: 12
- children:
- # ClusterIP
- - type: antdFlex
- data:
- id: clusterip-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: clusterip-label
- strong: true
- text: "ClusterIP address"
- - type: parsedText
- data:
- id: clusterip-value
- text: "{reqsJsonPath[0]['.spec.clusterIP']['-']}"
-
- # LoadBalancerIP
- - type: antdFlex
- data:
- id: loadbalancerip-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: loadbalancerip-label
- strong: true
- text: "LoadBalancerIP address"
- - type: parsedText
- data:
- id: loadbalancerip-value
- text: "{reqsJsonPath[0]['.status.loadBalancer.ingress[0].ip']['Not Configured']}"
-
- # Service port mapping
- - type: antdFlex
- data:
- id: service-port-mapping-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: service-port-mapping-label
- strong: true
- text: "Service port mapping"
- - type: EnrichedTable
- data:
- id: service-port-mapping-table
- fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/services/{6}"
- clusterNamePartOfUrl: "{2}"
- customizationId: "factory-service-details-port-mapping"
- baseprefix: "/openapi-ui"
- withoutControls: true
- pathToItems: ".spec.ports"
-
- # Pod serving
- - type: VisibilityContainer
- data:
- id: service-pod-serving-vis
- value: "{reqsJsonPath[0]['.spec.selector']['-']}"
- style: { margin: 0, padding: 0 }
- children:
- - type: antdFlex
- data:
- id: service-pod-serving-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: service-pod-serving-label
- strong: true
- text: "Pod serving"
- - type: EnrichedTable
- data:
- id: service-pod-serving-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/discovery.k8s.io/v1/namespaces/{3}/endpointslices"
- clusterNamePartOfUrl: "{2}"
- customizationId: "factory-service-details-endpointslice"
- baseprefix: "/openapi-ui"
- withoutControls: true
- labelsSelector:
- kubernetes.io/service-name: "{reqsJsonPath[0]['.metadata.name']['-']}"
- pathToItems: ".items[*].endpoints"
-
- # YAML tab
- - key: "yaml"
- label: "YAML"
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: "builtin"
- typeName: services
- prefillValuesRequestIndex: 0
- substractHeight: 400
-
- # Pods tab
- - key: "pods"
- label: "Pods"
- children:
- - type: VisibilityContainer
- data:
- id: service-pod-serving-vis
- value: "{reqsJsonPath[0]['.spec.selector']['-']}"
- style: { margin: 0, padding: 0 }
- children:
- - type: EnrichedTable
- data:
- id: pods-table
- fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
- clusterNamePartOfUrl: "{2}"
- customizationId: "factory-node-details-/v1/pods"
- baseprefix: "/openapi-ui"
- withoutControls: false
- labelsSelectorFull:
- reqIndex: 0
- # TODO требуется обработка нулевого значения
- pathToLabels: ".spec.selector"
- pathToItems: ".items"
-
-{{- if .Values.addons.trivy.enabled }}
- - key: cfg-reports
- label: CFG reports
- children:
- - type: EnrichedTable
- data:
- id: ds-pods-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/namespaces/{3}/configauditreports"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-aquasecurity.github.io.v1alpha1.configauditreports
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from pod template labels
- labelsSelector:
- trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
- trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
- # Items path for Pods list
- pathToItems: ".items[*].report.checks"
-{{- end -}}
+{{ include "incloud-web-resources.factory.manifets.service-details" (dict
+ "key" "service-details"
+ "resName" "{6}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.service-details" (dict
+ "key" "instance-service-details"
+ "resName" "{7}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/serviceaccount-details.yaml b/templates/Factory/serviceaccount-details.yaml
index db03040..5b97bef 100644
--- a/templates/Factory/serviceaccount-details.yaml
+++ b/templates/Factory/serviceaccount-details.yaml
@@ -1,259 +1,13 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: serviceaccount-details
-spec:
- key: serviceaccount-details
- sidebarTags:
- - serviceaccount-sidebar
- withScrollableMainContentCard: true
- urlsToFetch:
- - "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/serviceaccounts/{6}"
-
- # Header row with badge and serviceaccount name
- data:
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # serviceaccount badge
- - type: antdText
- data:
- id: badge-serviceaccount
- text: SA
- title: serviceaccount
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#b48c78ff"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # serviceaccount name
- - type: parsedText
- data:
- id: header-serviceaccount-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # Tabs with Details and YAML
- - type: antdTabs
- data:
- id: serviceaccount-tabs
- defaultActiveKey: "details"
- items:
- # Details tab with metadata and spec info
- - key: "details"
- label: "Details"
- children:
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- # Two-column layout
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # Left column: metadata
- - type: antdCol
- data:
- id: col-left
- span: 12
- children:
- # Title
- - type: antdText
- data:
- id: details-title
- text: "ServiceAccount details"
- strong: true
- style:
- fontSize: 20
- marginBottom: 12px
-
- # Spacer
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
-
- - type: antdFlex
- data:
- id: col-left-stack
- vertical: true
- gap: 24
- children:
- # Name block
- - type: antdFlex
- data:
- id: meta-name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: meta-name-label
- strong: true
- text: "Name"
- - type: parsedText
- data:
- id: meta-name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels
- - type: antdFlex
- data:
- id: meta-labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/serviceaccounts/{6}"
- ) | nindent 34
- }}
-
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/serviceaccounts/{6}"
- ) | nindent 34
- }}
-
- # Created timestamp
- - type: antdFlex
- data:
- id: meta-created-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 38
- }}
-
- # Owner block
- # - type: antdFlex
- # data:
- # id: meta-owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: meta-owner-label
- # strong: true
- # text: "Owner"
- # - type: antdFlex
- # data:
- # id: meta-owner-flex
- # gap: 6
- # align: center
- # children:
- # - type: parsedText
- # data:
- # id: owner-value
- # strong: true
- # text: "No owner"
- # style:
- # color: red
-
- - type: antdCol
- data:
- id: col-right
- span: 12
- children:
- - type: VisibilityContainer
- data:
- id: secrets-visibility
- value: "{reqsJsonPath[0]['.secrets']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- # Secrets title
- - type: antdText
- data:
- id: secrets-title
- text: "Secrets"
- strong: true
- style:
- fontSize: 22
- # Spacer
- - type: Spacer
- data:
- id: details-spacer
- "$space": 16
- # Secrets table
- - type: EnrichedTable
- data:
- id: secrets-table
- fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/serviceaccounts/{6}"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-serviceaccount-secrets
- baseprefix: "/openapi-ui"
- withoutControls: true
- pathToItems: ".secrets"
-
- # YAML tab
- - key: yaml
- label: YAML
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: builtin
- typeName: serviceaccounts
- prefillValuesRequestIndex: 0
- substractHeight: 400
+{{ include "incloud-web-resources.factory.manifets.serviceaccount-details" (dict
+ "key" "serviceaccount-details"
+ "resName" "{6}"
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.serviceaccount-details" (dict
+ "key" "instance-serviceaccount-details"
+ "resName" "{7}"
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/Factory/statefulset-details.yaml b/templates/Factory/statefulset-details.yaml
index 434cb23..0c43e34 100644
--- a/templates/Factory/statefulset-details.yaml
+++ b/templates/Factory/statefulset-details.yaml
@@ -1,439 +1,17 @@
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Factory
-metadata:
- name: statefulset-details
-spec:
- key: statefulset-details
-
- sidebarTags:
- - statefulset-sidebar
- withScrollableMainContentCard: true
- urlsToFetch:
- - "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
-
- data:
- # Header section
- - type: antdFlex
- data:
- id: header-row
- gap: 6
- align: center
- style:
- marginBottom: 24px
- children:
- # Resource type badge
- - type: antdText
- data:
- id: header-badge
- text: SS
- title: StatefulSet
- style:
- fontSize: 20px
- lineHeight: 24px
- padding: "0 9px"
- borderRadius: "20px"
- minWidth: 24
- display: inline-block
- textAlign: center
- whiteSpace: nowrap
- color: "#fff"
- backgroundColor: "#2b9af3"
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
- fontWeight: 400
- # StatefulSet name
- - type: parsedText
- data:
- id: header-name
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
- style:
- fontSize: 20px
- lineHeight: 24px
- fontFamily: RedHatDisplay, Overpass, overpass, helvetica, arial, sans-serif
-
- # Tabs section
- - type: antdTabs
- data:
- id: main-tabs
- defaultActiveKey: details
- items:
- # Details tab
- - key: details
- label: Details
- children:
- # Main info card
- - type: ContentCard
- data:
- id: details-card
- style:
- marginBottom: 24px
- children:
- # Card title
- - type: antdText
- data:
- id: details-title
- text: StatefulSet details
- strong: true
- style:
- fontSize: 20px
- marginBottom: 12px
-
- # Space under title
- - type: Spacer
- data:
- id: details-spacer
- $space: 16
-
- # Two-column grid
- - type: antdRow
- data:
- id: details-grid
- gutter: [48, 12]
- children:
- # Left column
- - type: antdCol
- data:
- id: left-col
- span: 12
- children:
- - type: antdFlex
- data:
- id: left-col-stack
- vertical: true
- gap: 24
- children:
- # Name
- - type: antdFlex
- data:
- id: name-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: name-label
- text: Name
- strong: true
- - type: parsedText
- data:
- id: name-value
- text: "{reqsJsonPath[0]['.metadata.name']['-']}"
-
- # Namespace link block (include)
- - type: antdFlex
- data:
- id: meta-namespace-block
- vertical: true
- gap: 8
- children:
- - type: antdText
- data:
- id: meta-name-label
- text: Namespace
- strong: true
-
- {{ include "incloud-web-resources.icon" (dict
- "text" "NS"
- "title" "namespace"
- "backgroundColor" "#a25792ff"
- )| nindent 34
- }}
- {{ include "incloud-web-resources.factory.linkblock" (dict
- "reqIndex" 0
- "type" "namespace"
- "jsonPath" ".metadata.namespace"
- "factory" "namespace-details"
- ) | nindent 38
- }}
-
- # Labels block (include)
- - type: antdFlex
- data:
- id: labels-block
- vertical: true
- gap: 8
- children:
- {{ include "incloud-web-resources.factory.labels" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
- ) | nindent 34
- }}
-
- # Node selector block (include)
- - type: antdFlex
- data:
- id: node-selector-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "node"
- "title" "Node selector"
- "jsonPath" ".spec.template.spec.nodeSelector"
- ) | nindent 34
- }}
-
-
- # Pod selector block (include)
- - type: antdFlex
- data:
- id: pod-selector-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.labels.base.selector" (dict
- "type" "pod"
- "title" "Pod selector"
- "jsonPath" ".spec.template.metadata.labels"
- ) | nindent 34
- }}
-
- # Tolerations counter (include)
- - type: antdFlex
- data:
- id: tolerations-counter-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.tolerations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
- "jsonPathToArray" ".spec.template.spec.tolerations"
- "pathToValue" "/spec/template/spec/tolerations"
- ) | nindent 34
- }}
-
- # Annotations counter block
- - type: antdFlex
- data:
- id: ds-annotations
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.annotations.block" (dict
- "endpoint" "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
- ) | nindent 34
- }}
-
- # Created time (include)
- - type: antdFlex
- data:
- id: created-time-block
- vertical: true
- gap: 4
- children:
- {{ include "incloud-web-resources.factory.time.create" (dict
- "req" ".metadata.creationTimestamp"
- "text" "Created"
- ) | nindent 34
- }}
-
- # Owner (fallback when missing)
- # - type: antdFlex
- # data:
- # id: owner-block
- # vertical: true
- # gap: 4
- # children:
- # - type: antdText
- # data:
- # id: owner-label
- # text: Owner
- # strong: true
- # - type: parsedText
- # data:
- # id: owner-value
- # text: "No owner"
- # style:
- # color: red
-
- # Right column
- - type: antdCol
- data:
- id: right-col
- span: 12
- children:
- - type: antdFlex
- data:
- id: right-col-stack
- vertical: true
- gap: 24
- children:
- # Current replicas
- - type: antdFlex
- data:
- id: current-count-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: current-count-label
- text: Current count
- strong: true
- - type: parsedText
- data:
- id: current-count-value
- text: "{reqsJsonPath[0]['.status.replicas']['-']}"
- # Desired replicas
- - type: antdFlex
- data:
- id: desired-count-block
- vertical: true
- gap: 4
- children:
- - type: antdText
- data:
- id: desired-count-label
- text: Desired count
- strong: true
- - type: parsedText
- data:
- id: desired-count-value
- text: "{reqsJsonPath[0]['.spec.replicas']['-']}"
-
- # Volumes section
- # TODO to be done
- # - type: antdCol
- # data:
- # id: volumes-section-col
- # style:
- # marginTop: 10
- # padding: 10
- # children:
- # - type: VisibilityContainer
- # data:
- # id: volumes-visibility
- # value: "{reqsJsonPath[0]['.spec.template.spec.volumes']['-']}"
- # style:
- # margin: 0
- # padding: 0
- # children:
- # - type: antdText
- # data:
- # id: volumes-title
- # text: Volumes
- # strong: true
- # style:
- # fontSize: 22px
- # marginBottom: 32px
- # - type: EnrichedTable
- # data:
- # id: volumes-table
- # fetchUrl: "/api/clusters/{2}/k8s/apis/apps/v1/namespaces/{3}/statefulsets/{6}"
- # clusterNamePartOfUrl: "{2}"
- # customizationId: factory-statefulset-details-volume-list
- # baseprefix: "/openapi-ui"
- # withoutControls: true
- # pathToItems: ".spec.template.spec.volumes"
-
-
- # ---- INIT CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-init-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-init-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.initContainers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Init containers"
- "customizationId" "container-spec-init-containers-list"
- "type" "init-containers"
- "apiGroup" "apis/apps/v1"
- "kind" "statefulsets"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.initContainers"
- "pathToItems" "['spec','template','spec','initContainers']"
- ) | nindent 26
- }}
-
- # ---- CONTAINERS SECTION ----
- - type: antdCol
- data:
- id: ds-containers-col
- style:
- marginTop: 10
- padding: 10
- children:
- - type: VisibilityContainer
- data:
- id: ds-containers-container
- value: "{reqsJsonPath[0]['.spec.template.spec.containers']['-']}"
- style:
- margin: 0
- padding: 0
- children:
- {{ include "incloud-web-resources.factory.containers.table" (dict
- "title" "Containers"
- "customizationId" "container-spec-containers-list"
- "type" "containers"
- "apiGroup" "apis/apps/v1"
- "kind" "statefulsets"
- "resourceName" "{6}"
- "namespace" "{3}"
- "jsonPath" ".spec.template.spec.containers"
- "pathToItems" "['spec','template','spec','containers']"
- ) | nindent 26
- }}
-
- # YAML tab
- - key: yaml
- label: YAML
- children:
- - type: YamlEditorSingleton
- data:
- id: yaml-editor
- cluster: "{2}"
- isNameSpaced: true
- type: apis
- apiGroup: apps
- apiVersion: v1
- typeName: statefulsets
- prefillValuesRequestIndex: 0
- substractHeight: 400
-
- # Pods tab
- - key: pods
- label: Pods
- children:
- - type: EnrichedTable
- data:
- id: pods-table
- fetchUrl: "/api/clusters/{2}/k8s/api/v1/namespaces/{3}/pods"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-/v1/pods
- baseprefix: "/openapi-ui"
- withoutControls: true
- labelsSelectorFull:
- reqIndex: 0
- pathToLabels: ".spec.template.metadata.labels"
- pathToItems: ".items"
-
-{{- if .Values.addons.trivy.enabled }}
- # ------ PODS TAB ------
- - key: reports
- label: Reports
- children:
- - type: EnrichedTable
- data:
- id: ds-pods-table
- fetchUrl: "/api/clusters/{2}/k8s/apis/aquasecurity.github.io/v1alpha1/clusterinfraassessmentreports"
- clusterNamePartOfUrl: "{2}"
- customizationId: factory-aquasecurity.github.io.v1alpha1.clusterinfraassessmentreports
- baseprefix: "/openapi-ui"
- withoutControls: true
- # Build label selector from pod template labels
- labelsSelector:
- trivy-operator.resource.name: "{reqsJsonPath[0]['.metadata.name']['-']}"
- trivy-operator.resource.kind: "{reqsJsonPath[0]['.kind']['-']}"
- # Items path for Pods list
- pathToItems: ".items[*].report.checks"
-
-{{- end -}}
+{{ include "incloud-web-resources.factory.manifets.statefulset-details" (dict
+ "key" "statefulset-details"
+ "resName" "{6}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+
+{{- if not .Values.namespaceNavigation }}
+{{ include "incloud-web-resources.factory.manifets.statefulset-details" (dict
+ "key" "instance-statefulset-details"
+ "resName" "{7}"
+ "podFactoryName" "stock-namespace-/v1/pods"
+ "trivyEnabled" .Values.addons.trivy.enabled
+ "basePrefix" .Values.basePrefix
+) }}
+{{- end }}
diff --git a/templates/MarketplacePanel/instance.yaml b/templates/MarketplacePanel/instance.yaml
new file mode 100644
index 0000000..f641503
--- /dev/null
+++ b/templates/MarketplacePanel/instance.yaml
@@ -0,0 +1,22 @@
+{{ $instRes := .Values.instanceResource }}
+
+{{ if and ($instRes.deployDefaultForms) (not .Values.namespaceNavigation) }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: MarketplacePanel
+metadata:
+ name: instance
+spec:
+ apiGroup: "{{ $instRes.apiGroup }}"
+ apiVersion: "{{ $instRes.apiVersion }}"
+ description: Изолированное окружение для ресурсов в Kubernetes.
+ disabled: false
+ hidden: false
+ icon: PHN2ZyB3aWR0aD0nODAwJyBoZWlnaHQ9JzgwMCcgdmlld0JveD0nMCAtMTAuNDQgNzIyLjg0NiA3MjIuODQ2JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J00zNTguOTg2IDEwLjA2YTQ2LjcyNSA0Ni4zNDIgMCAwIDAtMTcuOTA2IDQuNTMxTDk2LjczNiAxMzEuMzQxYTQ2LjcyNSA0Ni4zNDIgMCAwIDAtMjUuMjggMzEuNDM4bC02MC4yODIgMjYyLjI1YTQ2LjcyNSA0Ni4zNDIgMCAwIDAgNi4zNDQgMzUuNTMxIDQ2LjcyNSA0Ni4zNDIgMCAwIDAgMi42NTYgMy42ODhsMTY5LjEyNSAyMTAuMjhhNDYuNzI1IDQ2LjM0MiAwIDAgMCAzNi41MzEgMTcuNDM4bDI3MS4yMTktLjA2MmE0Ni43MjUgNDYuMzQyIDAgMCAwIDM2LjUzMS0xNy40MDZsMTY5LjA2My0yMTAuMzEzYTQ2LjcyNSA0Ni4zNDIgMCAwIDAgOS4wMy0zOS4yMTlMNjUxLjMgMTYyLjcxNmE0Ni43MjUgNDYuMzQyIDAgMCAwLTI1LjI4MS0zMS40MzdMMzgxLjY0MyAxNC41OWE0Ni43MjUgNDYuMzQyIDAgMCAwLTIyLjY1Ny00LjUzeicgZmlsbD0nIzMyNmNlNScvPjxwYXRoIGQ9J00zNjEuNDA4IDk5LjMwN2MtOC4wNzcuMDAxLTE0LjYyNiA3LjI3Ni0xNC42MjUgMTYuMjUgMCAuMTM4LjAyOC4yNy4wMy40MDYtLjAxMSAxLjIyLS4wNyAyLjY4OS0uMDMgMy43NS4xOTIgNS4xNzYgMS4zMiA5LjEzOCAyIDEzLjkwNyAxLjIzIDEwLjIwNiAyLjI2IDE4LjY2NyAxLjYyNSAyNi41MzEtLjYyIDIuOTY1LTIuODAzIDUuNjc3LTQuNzUgNy41NjJsLS4zNDQgNi4xODhhMTkwLjMzNyAxOTAuMzM3IDAgMCAwLTI2LjQzOCA0LjA2MmMtMzcuOTc0IDguNjIzLTcwLjY3IDI4LjE4NC05NS41NjIgNTQuNTk0YTI0NS4xNjcgMjQ1LjE2NyAwIDAgMS01LjI4MS0zLjc1Yy0yLjYxMi4zNTMtNS4yNSAxLjE1OS04LjY4OC0uODQ0LTYuNTQ1LTQuNDA1LTEyLjUwNi0xMC40ODYtMTkuNzE5LTE3LjgxMi0zLjMwNS0zLjUwNC01LjY5OC02Ljg0MS05LjYyNS0xMC4yMTktLjg5MS0uNzY3LTIuMjUyLTEuODA0LTMuMjUtMi41OTQtMy4wNy0yLjQ0Ny02LjY5LTMuNzI0LTEwLjE4Ny0zLjg0My00LjQ5Ni0uMTU0LTguODI0IDEuNjA0LTExLjY1NiA1LjE1Ni01LjAzNiA2LjMxNS0zLjQyNCAxNS45NjggMy41OTMgMjEuNTYyLjA3MS4wNTcuMTQ3LjEwMS4yMTkuMTU3Ljk2NC43ODEgMi4xNDUgMS43ODMgMy4wMzEgMi40MzcgNC4xNjcgMy4wNzcgNy45NzMgNC42NTIgMTIuMTI1IDcuMDk0IDguNzQ3IDUuNDAyIDE1Ljk5OSA5Ljg4IDIxLjc1IDE1LjI4MSAyLjI0NiAyLjM5NCAyLjYzOSA2LjYxMyAyLjkzOCA4LjQzOGw0LjY4NyA0LjE4N2MtMjUuMDkzIDM3Ljc2NC0zNi43MDcgODQuNDEtMjkuODQzIDEzMS45MzhsLTYuMTI1IDEuNzgxYy0xLjYxNSAyLjA4NS0zLjg5NiA1LjM2NS02LjI4MiA2LjM0NC03LjUyNSAyLjM3LTE1Ljk5NCAzLjI0LTI2LjIxOCA0LjMxMi00LjguNC04Ljk0My4xNjEtMTQuMDMyIDEuMTI1LTEuMTIuMjEyLTIuNjguNjE5LTMuOTA2LjkwNmwtLjEyNS4wMzJjLS4wNjcuMDE1LS4xNTUuMDQ4LS4yMTkuMDYyLTguNjIgMi4wODMtMTQuMTU3IDEwLjAwNi0xMi4zNzUgMTcuODEzIDEuNzgzIDcuODA4IDEwLjIwMyAxMi41NTYgMTguODc1IDEwLjY4Ny4wNjMtLjAxNC4xNTQtLjAxNy4yMTktLjAzMS4wOTgtLjAyMi4xODQtLjA3LjI4MS0uMDk0IDEuMjEtLjI2NSAyLjcyNC0uNTYgMy43ODItLjg0MyA1LjAwMy0xLjM0IDguNjI2LTMuMzA4IDEzLjEyNS01LjAzMiA5LjY3Ni0zLjQ3IDE3LjY5MS02LjM3IDI1LjUtNy41IDMuMjYtLjI1NSA2LjY5NyAyLjAxMiA4LjQwNiAyLjk2OWw2LjM3NS0xLjA5NGMxNC42NyA0NS40ODMgNDUuNDE0IDgyLjI0NSA4NC4zNDQgMTA1LjMxM2wtMi42NTcgNi4zNzVjLjk1OCAyLjQ3NSAyLjAxNCA1LjgyNCAxLjMgOC4yNy0yLjgzOCA3LjM2LTcuNyAxNS4xMy0xMy4yMzcgMjMuNzkyLTIuNjgxIDQuMDAyLTUuNDI1IDcuMTA4LTcuODQ0IDExLjY4OC0uNTc5IDEuMDk2LTEuMzE2IDIuNzgtMS44NzUgMy45MzctMy43NTkgOC4wNDMtMS4wMDIgMTcuMzA1IDYuMjE5IDIwLjc4MiA3LjI2NiAzLjQ5NyAxNi4yODQtLjE5MiAyMC4xODctOC4yNS4wMDYtLjAxMi4wMjYtLjAyLjAzMS0uMDMyLjAwNC0uMDA5LS4wMDQtLjAyMiAwLS4wMy41NTYtMS4xNDMgMS4zNDQtMi42NDUgMS44MTMtMy43MiAyLjA3Mi00Ljc0NyAyLjc2Mi04LjgxNSA0LjIxOS0xMy40MDYgMy44Ny05LjcyIDUuOTk1LTE5LjkxOSAxMS4zMjItMjYuMjc0IDEuNDU5LTEuNzQgMy44MzctMi40MSA2LjMwMy0zLjA3bDMuMzEyLTZjMzMuOTM4IDEzLjAyNyA3MS45MjcgMTYuNTIzIDEwOS44NzUgNy45MDdhMTg5Ljc3IDE4OS43NyAwIDAgMCAyNS4wOTQtNy41NjNjLjkzIDEuNjUxIDIuNjYxIDQuODI2IDMuMTI1IDUuNjI1IDIuNTA2LjgxNSA1LjI0IDEuMjM2IDcuNDY5IDQuNTMxIDMuOTg1IDYuODEgNi43MSAxNC44NjUgMTAuMDMxIDI0LjU5NCAxLjQ1NyA0LjU5MSAyLjE3OCA4LjY2IDQuMjUgMTMuNDA2LjQ3MiAxLjA4MiAxLjI1NiAyLjYwNSAxLjgxMiAzLjc1IDMuODk1IDguMDg1IDEyLjk0MyAxMS43ODcgMjAuMjIgOC4yODIgNy4yMTktMy40NzggOS45NzktMTIuNzQgNi4yMTgtMjAuNzgyLS41NTktMS4xNTgtMS4zMjctMi44NDEtMS45MDYtMy45MzctMi40Mi00LjU4LTUuMTYzLTcuNjU1LTcuODQ0LTExLjY1Ni01LjUzNy04LjY2Mi0xMC4xMy0xNS44NTgtMTIuOTY5LTIzLjIyLTEuMTg3LTMuNzk2LjItNi4xNTcgMS4xMjUtOC42MjQtLjU1NC0uNjM1LTEuNzM5LTQuMjItMi40MzctNS45MDYgNDAuNDU3LTIzLjg4OSA3MC4yOTgtNjIuMDIyIDg0LjMxMi0xMDYuMDYzIDEuODkzLjI5OCA1LjE4Mi44OCA2LjI1IDEuMDk0IDIuMi0xLjQ1IDQuMjIyLTMuMzQ0IDguMTg4LTMuMDMxIDcuODA4IDEuMTI5IDE1LjgyMyA0LjAzIDI1LjUgNy41IDQuNDk4IDEuNzIzIDguMTIxIDMuNzIzIDEzLjEyNSA1LjA2MiAxLjA1Ny4yODMgMi41NzIuNTQ3IDMuNzgxLjgxMy4wOTcuMDIzLjE4My4wNzEuMjgxLjA5My4wNjYuMDE1LjE1Ni4wMTcuMjE5LjAzMiA4LjY3MiAxLjg2NiAxNy4wOTQtMi44OCAxOC44NzUtMTAuNjg4IDEuNzgtNy44MDctMy43NTQtMTUuNzMyLTEyLjM3NS0xNy44MTItMS4yNTQtLjI4Ni0zLjAzMi0uNzctNC4yNS0xLTUuMDktLjk2NC05LjIzMS0uNzI3LTE0LjAzMS0xLjEyNS0xMC4yMjUtMS4wNzItMTguNjk0LTEuOTQzLTI2LjIxOS00LjMxMy0zLjA2OC0xLjE5LTUuMjUxLTQuODQxLTYuMzEzLTYuMzQ0bC01LjkwNi0xLjcxOGMzLjA2Mi0yMi4xNTUgMi4yMzctNDUuMjEyLTMuMDYyLTY4LjI4Mi01LjM0OS0yMy4yODQtMTQuOC00NC41OC0yNy40MDctNjMuMzQzIDEuNTE1LTEuMzc4IDQuMzc3LTMuOTExIDUuMTg4LTQuNjU3LjIzNy0yLjYyNC4wMzMtNS4zNzUgMi43NS04LjI4MSA1Ljc1MS01LjQgMTMuMDAzLTkuODc5IDIxLjc1LTE1LjI4MSA0LjE1Mi0yLjQ0MyA3Ljk5LTQuMDE3IDEyLjE1Ni03LjA5NC45NDItLjY5NiAyLjIzLTEuNzk4IDMuMjE5LTIuNTk0IDcuMDE1LTUuNTk2IDguNjMtMTUuMjQ4IDMuNTk0LTIxLjU2Mi01LjAzNy02LjMxNC0xNC43OTctNi45MS0yMS44MTMtMS4zMTMtLjk5OC43OTEtMi4zNTMgMS44MjMtMy4yNSAyLjU5NC0zLjkyNiAzLjM3OC02LjM1MSA2LjcxNC05LjY1NiAxMC4yMTktNy4yMTMgNy4zMjYtMTMuMTc0IDEzLjQzOC0xOS43MTkgMTcuODQ0LTIuODM2IDEuNjUtNi45OSAxLjA4LTguODc1Ljk2OGwtNS41NjIgMy45NjljLTMxLjcyLTMzLjI2LTc0LjkwNS01NC41MjUtMTIxLjQwNi01OC42NTYtLjEzLTEuOTQ5LS4zLTUuNDcxLS4zNDQtNi41MzItMS45MDQtMS44MjEtNC4yMDQtMy4zNzYtNC43ODEtNy4zMTItLjYzNy03Ljg2NC40MjYtMTYuMzI1IDEuNjU2LTI2LjUzMS42NzktNC43NjkgMS44MDctOC43MyAyLTEzLjkwNy4wNDQtMS4xNzYtLjAyNy0yLjg4NC0uMDMxLTQuMTU2LS4wMDEtOC45NzQtNi41NDgtMTYuMjUtMTQuNjI1LTE2LjI1em0tMTguMzEzIDExMy40MzgtNC4zNDQgNzYuNzE4LS4zMTIuMTU3Yy0uMjkyIDYuODYzLTUuOTQgMTIuMzQzLTEyLjg3NSAxMi4zNDMtMi44NDEgMC01LjQ2My0uOTEyLTcuNTk0LTIuNDY4bC0uMTI1LjA2Mi02Mi45MDYtNDQuNTk0YzE5LjMzMy0xOS4wMSA0NC4wNjMtMzMuMDYgNzIuNTYyLTM5LjUzYTE1NC4xMjUgMTU0LjEyNSAwIDAgMSAxNS41OTQtMi42ODh6bTM2LjY1NiAwYzMzLjI3NCA0LjA5MiA2NC4wNDUgMTkuMTU5IDg3LjYyNSA0Mi4yNWwtNjIuNSA0NC4zMTItLjIxOC0uMDkzYy01LjU0OCA0LjA1MS0xMy4zNjQgMy4wNDYtMTcuNjg4LTIuMzc1YTEyLjgwNyAxMi44MDcgMCAwIDEtMi44MTItNy40N2wtLjA2My0uMDN6TTIzMi4xMjYgMjgzLjYybDU3LjQzOCA1MS4zNzUtLjA2My4zMTJjNS4xODUgNC41MDcgNS45NSAxMi4zMjggMS42MjUgMTcuNzVhMTIuODkyIDEyLjg5MiAwIDAgMS02LjY4NyA0LjQwNmwtLjA2My4yNS03My42MjUgMjEuMjVjLTMuNzQ3LTM0LjI2NSA0LjMyOS02Ny41NzMgMjEuMzc1LTk1LjM0M3ptMjU4LjE1Ny4wM2M4LjUzNCAxMy44MzMgMTQuOTk2IDI5LjI4MyAxOC44NDMgNDYuMDMyIDMuODAxIDE2LjU0OCA0Ljc1NSAzMy4wNjcgMy4xODggNDkuMDMxbC03NC0yMS4zMTItLjA2My0uMzEzYy02LjYyNi0xLjgxLTEwLjY5OS04LjU1MS05LjE1Ni0xNS4zMTJhMTIuNzg2IDEyLjc4NiAwIDAgMSA0LjA5NC02Ljg0NGwtLjAzMS0uMTU2IDU3LjEyNS01MS4xMjV6bS0xNDAuNjU3IDU1LjMxM2gyMy41MzJsMTQuNjI1IDE4LjI4Mi01LjI1IDIyLjgxMi0yMS4xMjUgMTAuMTU2LTIxLjE4OC0xMC4xODctNS4yNS0yMi44MTN6bTc1LjQzOCA2Mi41NjNjMS0uMDUgMS45OTUuMDQgMi45NjkuMjE5bC4xMjUtLjE1NyA3Ni4xNTYgMTIuODc1Yy0xMS4xNDYgMzEuMzE0LTMyLjQ3MyA1OC40NC02MC45NjkgNzYuNTk0bC0yOS41NjItNzEuNDA2LjA5My0uMTI1Yy0yLjcxNS02LjMxLjAwMi0xMy43MSA2LjI1LTE2LjcxOSAxLjYtLjc3IDMuMjcxLTEuMTk3IDQuOTM4LTEuMjgxem0tMTI3LjkwNi4zMTJjNS44MTEuMDgyIDExLjAyNCA0LjExNiAxMi4zNzUgMTAuMDMyLjYzMiAyLjc3LjMyNCA1LjUxMy0uNzIgNy45MzdsLjIyLjI4MS0yOS4yNSA3MC42ODhjLTI3LjM0OC0xNy41NDktNDkuMTMtNDMuODI0LTYwLjc4Mi03Ni4wNjNsNzUuNS0xMi44MTIuMTI1LjE1NmMuODQ1LS4xNTUgMS43MDEtLjIzIDIuNTMyLS4yMTl6bTYzLjc4IDMwLjk3YTEyLjc2NCAxMi43NjQgMCAwIDEgNi4wMzIgMS4yOGMyLjU2IDEuMjMzIDQuNTM3IDMuMTc0IDUuNzgxIDUuNWguMjgybDM3LjIxOCA2Ny4yNWExNTQuMjU2IDE1NC4yNTYgMCAwIDEtMTQuODc1IDQuMTU3Yy0yOC40NjQgNi40NjMtNTYuODM4IDQuNTA0LTgyLjUzLTQuMjVsMzcuMTI0LTY3LjEyNWguMDYzYTEyLjkxIDEyLjkxIDAgMCAxIDEwLjkwNi02LjgxM3onIHN0eWxlPSd0ZXh0LWluZGVudDowO3RleHQtYWxpZ246c3RhcnQ7bGluZS1oZWlnaHQ6bm9ybWFsO3RleHQtdHJhbnNmb3JtOm5vbmU7YmxvY2stcHJvZ3Jlc3Npb246dGI7bWFya2VyOm5vbmU7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpTYW5zJyBmb250LXdlaWdodD0nNDAwJyBjb2xvcj0nIzAwMCcgZmlsbD0nI2ZmZicgc3Ryb2tlPScjZmZmJyBzdHJva2Utd2lkdGg9Jy4yNScgb3ZlcmZsb3c9J3Zpc2libGUnIGZvbnQtZmFtaWx5PSdTYW5zJy8+PC9zdmc+
+ name: "{{ $instRes.resourceName | title }}"
+ tags:
+ - instance
+ - namespace
+ type: nonCrd
+ typeName: "{{ $instRes.resourceName }}"
+{{ end }}
diff --git a/templates/Navigation/navigation.yaml b/templates/Navigation/navigation.yaml
new file mode 100644
index 0000000..346941e
--- /dev/null
+++ b/templates/Navigation/navigation.yaml
@@ -0,0 +1,35 @@
+{{ $projRes := .Values.projectResource }}
+{{ $instRes := .Values.instanceResource }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Navigation
+metadata:
+ name: navigation
+spec:
+{{ if .Values.namespaceNavigation }}
+ projects:
+ clear: "/{{ .Values.basePrefix }}/{selectedCluster}/builtin-table/pods"
+ change: "/{{ .Values.basePrefix }}/{selectedCluster}/{value}/builtin-table/pods"
+ instances:
+ clear: "/{{ .Values.basePrefix }}/{selectedCluster}/builtin-table/pods"
+ change: "/{{ .Values.basePrefix }}/{selectedCluster}/{value}/builtin-table/pods"
+ namespaces:
+ clear: "/{{ .Values.basePrefix }}/{selectedCluster}/builtin-table/pods"
+ change: "/{{ .Values.basePrefix }}/{selectedCluster}/{value}/builtin-table/pods"
+{{ else }}
+ projects:
+ clear: "/{{ .Values.basePrefix }}/clusters/{selectedCluster}"
+ {{ if $projRes.deployDefaultForms }}
+ change: "/{{ .Values.basePrefix }}/{selectedCluster}/{value}/factory/project-details/{value}"
+ {{ else }}
+ change: "/{{ .Values.basePrefix }}/{selectedCluster}/{value}/api-table/{{ $instRes.apiGroup }}/{{ $instRes.apiVersion }}/{{ $instRes.resourceName }}"
+ {{ end }}
+ instances:
+ clear: "/{{ .Values.basePrefix }}/{selectedCluster}/{selectedProject}/api-table/{{ $instRes.apiGroup }}/{{ $instRes.apiVersion }}/{{ $instRes.resourceName }}"
+ change: "/{{ .Values.basePrefix }}/{selectedCluster}/{value}/{selectedProject}/api-table/apps/v1/deployments"
+ mapOptionsPattern: "{{ .Values.instanceResource.instanceNamespaceNavigationPattern }}"
+ namespaces:
+ clear: "/{{ .Values.basePrefix }}/clusters/{selectedCluster}"
+ change: "/{{ .Values.basePrefix }}/clusters/{selectedCluster}/{{ $projRes.resourceName }}/{value}"
+{{ end }}
diff --git a/templates/Sidebar/default/stock-cluster-factory-base-factory-clusterscoped-api.yaml b/templates/Sidebar/default/stock-cluster-factory-base-factory-clusterscoped-api.yaml
new file mode 100644
index 0000000..afa1e22
--- /dev/null
+++ b/templates/Sidebar/default/stock-cluster-factory-base-factory-clusterscoped-api.yaml
@@ -0,0 +1,91 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: stock-cluster-factory-base-factory-clusterscoped-api
+spec:
+ id: stock-cluster-factory-base-factory-clusterscoped-api
+ keysAndTags:
+ {{- if .Values.addons.hbf.enabled }}
+ hbf-hosts:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hosts"
+ hbf-hostbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hostbindings"
+ hbf-networks:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networks"
+ hbf-addressgroups:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroups"
+ hbf-networkbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networkbindings"
+ hbf-services:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/services"
+ hbf-addressgroupbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupbindings"
+ hbf-svcsvcrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcsvcrules"
+ hbf-svcfqdnrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcfqdnrules"
+ hbf-addressgroupportmappings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupportmappings"
+ {{- end }}
+ keysAndTags:
+ search:
+ - search
+ pods:
+ - v1/pods
+ deployments:
+ - apps/v1/deployments
+ statefulsets:
+ - apps/v1/statefulsets
+ secrets:
+ - v1/secrets
+ configmaps:
+ - v1/configmaps
+ cronjobs:
+ - batch/v1/cronjobs
+ jobs:
+ - batch/v1/jobs
+ daemonsets:
+ - apps/v1/daemonsets
+ replicasets:
+ - apps/v1/replicasets
+ replicationcontrollers:
+ - v1/replicationcontrollers
+ horizontalpodautoscalers:
+ - autoscaling/v2/horizontalpodautoscalers
+ poddisruptionbudgets:
+ - policy/v1/poddisruptionbudgets
+ services:
+ - v1/services
+ networkpolicies:
+ - networking.k8s.io/v1/networkpolicies
+ ingresses:
+ - networking.k8s.io/v1/ingresses
+ persistentvolumes:
+ - v1/persistentvolumes
+ persistentvolumeclaims:
+ - v1/persistentvolumeclaims
+ storageclasses:
+ - storage.k8s.io/v1/storageclasses
+ nodes:
+ - v1/nodes
+ serviceaccounts:
+ - v1/serviceaccounts
+ roles:
+ - rbac.authorization.k8s.io/v1/roles
+ rolebindings:
+ - rbac.authorization.k8s.io/v1/rolebindings
+ clusterroles:
+ - rbac.authorization.k8s.io/v1/clusterroles
+ clusterrolebindings:
+ - rbac.authorization.k8s.io/v1/clusterrolebindings
+ namespaces:
+ - v1/namespaces
+ limitranges:
+ - v1/limitranges
+ resourcequotas:
+ - v1/resourcequotas
+ customresourcedefinitions:
+ - apiextensions.k8s.io/v1/customresourcedefinitions
+ menuItems:
+ {{ include "incloud-web-resources.sidebar.menu.items.cluster" . | nindent 4 }}
\ No newline at end of file
diff --git a/templates/Sidebar/default/stock-cluster-factory-base-factory-clusterscoped-builtin.yaml b/templates/Sidebar/default/stock-cluster-factory-base-factory-clusterscoped-builtin.yaml
new file mode 100644
index 0000000..10bd743
--- /dev/null
+++ b/templates/Sidebar/default/stock-cluster-factory-base-factory-clusterscoped-builtin.yaml
@@ -0,0 +1,92 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: stock-cluster-factory-base-factory-clusterscoped-builtin
+spec:
+ id: stock-cluster-factory-base-factory-clusterscoped-builtin
+ keysAndTags:
+ {{- if .Values.addons.hbf.enabled }}
+ hbf-hosts:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hosts"
+ hbf-hostbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hostbindings"
+ hbf-networks:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networks"
+ hbf-addressgroups:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroups"
+ hbf-networkbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networkbindings"
+ hbf-servicealiases:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/servicealiases"
+ hbf-services:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/services"
+ hbf-addressgroupbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupbindings"
+ hbf-svcsvcrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcsvcrules"
+ hbf-svcfqdnrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcfqdnrules"
+ hbf-addressgroupportmappings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupportmappings"
+ {{- end }}
+ search:
+ - search
+ pods:
+ - v1/pods
+ deployments:
+ - apps/v1/deployments
+ statefulsets:
+ - apps/v1/statefulsets
+ secrets:
+ - v1/secrets
+ configmaps:
+ - v1/configmaps
+ cronjobs:
+ - batch/v1/cronjobs
+ jobs:
+ - batch/v1/jobs
+ daemonsets:
+ - apps/v1/daemonsets
+ replicasets:
+ - apps/v1/replicasets
+ replicationcontrollers:
+ - v1/replicationcontrollers
+ horizontalpodautoscalers:
+ - autoscaling/v2/horizontalpodautoscalers
+ poddisruptionbudgets:
+ - policy/v1/poddisruptionbudgets
+ services:
+ - v1/services
+ networkpolicies:
+ - networking.k8s.io/v1/networkpolicies
+ ingresses:
+ - networking.k8s.io/v1/ingresses
+ persistentvolumes:
+ - v1/persistentvolumes
+ persistentvolumeclaims:
+ - v1/persistentvolumeclaims
+ storageclasses:
+ - storage.k8s.io/v1/storageclasses
+ nodes:
+ - v1/nodes
+ serviceaccounts:
+ - v1/serviceaccounts
+ roles:
+ - rbac.authorization.k8s.io/v1/roles
+ rolebindings:
+ - rbac.authorization.k8s.io/v1/rolebindings
+ clusterroles:
+ - rbac.authorization.k8s.io/v1/clusterroles
+ clusterrolebindings:
+ - rbac.authorization.k8s.io/v1/clusterrolebindings
+ namespaces:
+ - v1/namespaces
+ limitranges:
+ - v1/limitranges
+ resourcequotas:
+ - v1/resourcequotas
+ customresourcedefinitions:
+ - apiextensions.k8s.io/v1/customresourcedefinitions
+ menuItems:
+ {{ include "incloud-web-resources.sidebar.menu.items.cluster" . | nindent 4 }}
\ No newline at end of file
diff --git a/templates/Sidebar/default/stock-project-factory-base-factory-namespaced-api.yaml b/templates/Sidebar/default/stock-project-factory-base-factory-namespaced-api.yaml
new file mode 100644
index 0000000..180690a
--- /dev/null
+++ b/templates/Sidebar/default/stock-project-factory-base-factory-namespaced-api.yaml
@@ -0,0 +1,94 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: stock-project-factory-base-factory-namespaced-api
+spec:
+ id: stock-project-factory-base-factory-namespaced-api
+ keysAndTags:
+ {{- if .Values.addons.hbf.enabled }}
+ hbf-hosts:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hosts"
+ hbf-hostbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hostbindings"
+ hbf-networks:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networks"
+ hbf-addressgroups:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroups"
+ hbf-networkbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networkbindings"
+ hbf-servicealiases:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/servicealiases"
+ hbf-services:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/services"
+ hbf-addressgroupbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupbindings"
+ hbf-svcsvcrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcsvcrules"
+ hbf-svcfqdnrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcfqdnrules"
+ hbf-addressgroupportmappings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupportmappings"
+ hbf-ieagagrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/ieagagrules"
+ {{- end }}
+ search:
+ - search
+ pods:
+ - v1/pods
+ deployments:
+ - apps/v1/deployments
+ statefulsets:
+ - apps/v1/statefulsets
+ secrets:
+ - v1/secrets
+ configmaps:
+ - v1/configmaps
+ cronjobs:
+ - batch/v1/cronjobs
+ jobs:
+ - batch/v1/jobs
+ daemonsets:
+ - apps/v1/daemonsets
+ replicasets:
+ - apps/v1/replicasets
+ replicationcontrollers:
+ - v1/replicationcontrollers
+ horizontalpodautoscalers:
+ - autoscaling/v2/horizontalpodautoscalers
+ poddisruptionbudgets:
+ - policy/v1/poddisruptionbudgets
+ services:
+ - v1/services
+ networkpolicies:
+ - networking.k8s.io/v1/networkpolicies
+ ingresses:
+ - networking.k8s.io/v1/ingresses
+ persistentvolumes:
+ - v1/persistentvolumes
+ persistentvolumeclaims:
+ - v1/persistentvolumeclaims
+ storageclasses:
+ - storage.k8s.io/v1/storageclasses
+ nodes:
+ - v1/nodes
+ serviceaccounts:
+ - v1/serviceaccounts
+ roles:
+ - rbac.authorization.k8s.io/v1/roles
+ rolebindings:
+ - rbac.authorization.k8s.io/v1/rolebindings
+ clusterroles:
+ - rbac.authorization.k8s.io/v1/clusterroles
+ clusterrolebindings:
+ - rbac.authorization.k8s.io/v1/clusterrolebindings
+ namespaces:
+ - v1/namespaces
+ limitranges:
+ - v1/limitranges
+ resourcequotas:
+ - v1/resourcequotas
+ customresourcedefinitions:
+ - apiextensions.k8s.io/v1/customresourcedefinitions
+ menuItems:
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/default/stock-project-factory-base-factory-namespaced-builtin.yaml b/templates/Sidebar/default/stock-project-factory-base-factory-namespaced-builtin.yaml
new file mode 100644
index 0000000..8e2e507
--- /dev/null
+++ b/templates/Sidebar/default/stock-project-factory-base-factory-namespaced-builtin.yaml
@@ -0,0 +1,94 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: stock-project-factory-base-factory-namespaced-builtin
+spec:
+ id: stock-project-factory-base-factory-namespaced-builtin
+ keysAndTags:
+ {{- if .Values.addons.hbf.enabled }}
+ hbf-hosts:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hosts"
+ hbf-hostbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hostbindings"
+ hbf-networks:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networks"
+ hbf-addressgroups:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroups"
+ hbf-networkbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networkbindings"
+ hbf-servicealiases:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/servicealiases"
+ hbf-services:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/services"
+ hbf-addressgroupbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupbindings"
+ hbf-svcsvcrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcsvcrules"
+ hbf-svcfqdnrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcfqdnrules"
+ hbf-addressgroupportmappings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupportmappings"
+ hbf-ieagagrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/ieagagrules"
+ {{- end }}
+ search:
+ - search
+ pods:
+ - v1/pods
+ deployments:
+ - apps/v1/deployments
+ statefulsets:
+ - apps/v1/statefulsets
+ secrets:
+ - v1/secrets
+ configmaps:
+ - v1/configmaps
+ cronjobs:
+ - batch/v1/cronjobs
+ jobs:
+ - batch/v1/jobs
+ daemonsets:
+ - apps/v1/daemonsets
+ replicasets:
+ - apps/v1/replicasets
+ replicationcontrollers:
+ - v1/replicationcontrollers
+ horizontalpodautoscalers:
+ - autoscaling/v2/horizontalpodautoscalers
+ poddisruptionbudgets:
+ - policy/v1/poddisruptionbudgets
+ services:
+ - v1/services
+ networkpolicies:
+ - networking.k8s.io/v1/networkpolicies
+ ingresses:
+ - networking.k8s.io/v1/ingresses
+ persistentvolumes:
+ - v1/persistentvolumes
+ persistentvolumeclaims:
+ - v1/persistentvolumeclaims
+ storageclasses:
+ - storage.k8s.io/v1/storageclasses
+ nodes:
+ - v1/nodes
+ serviceaccounts:
+ - v1/serviceaccounts
+ roles:
+ - rbac.authorization.k8s.io/v1/roles
+ rolebindings:
+ - rbac.authorization.k8s.io/v1/rolebindings
+ clusterroles:
+ - rbac.authorization.k8s.io/v1/clusterroles
+ clusterrolebindings:
+ - rbac.authorization.k8s.io/v1/clusterrolebindings
+ namespaces:
+ - v1/namespaces
+ limitranges:
+ - v1/limitranges
+ resourcequotas:
+ - v1/resourcequotas
+ customresourcedefinitions:
+ - apiextensions.k8s.io/v1/customresourcedefinitions
+ menuItems:
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/inside-cluster.yaml b/templates/Sidebar/inside-cluster.yaml
index 874cdb3..7a76053 100644
--- a/templates/Sidebar/inside-cluster.yaml
+++ b/templates/Sidebar/inside-cluster.yaml
@@ -37,23 +37,3 @@ spec:
id: inside-cluster-builtin-table
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.cluster" . | nindent 4 }}
-
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Sidebar
-metadata:
- name: inside-cluster-crd-form
-spec:
- id: inside-cluster-crd-form
- menuItems:
- {{ include "incloud-web-resources.sidebar.menu.items.cluster" . | nindent 4 }}
-
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Sidebar
-metadata:
- name: inside-cluster-crd-table
-spec:
- id: inside-cluster-crd-table
- menuItems:
- {{ include "incloud-web-resources.sidebar.menu.items.cluster" . | nindent 4 }}
diff --git a/templates/Sidebar/inside-namespace.yaml b/templates/Sidebar/inside-namespace.yaml
index 39c3ede..c7c710c 100644
--- a/templates/Sidebar/inside-namespace.yaml
+++ b/templates/Sidebar/inside-namespace.yaml
@@ -37,23 +37,3 @@ spec:
id: inside-namespace-builtin-table
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
-
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Sidebar
-metadata:
- name: inside-namespace-crd-form
-spec:
- id: inside-namespace-crd-form
- menuItems:
- {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
-
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Sidebar
-metadata:
- name: inside-namespace-crd-table
-spec:
- id: inside-namespace-crd-table
- menuItems:
- {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/sidebar-cluster.tpl b/templates/Sidebar/sidebar-cluster.tpl
index b843903..c931681 100644
--- a/templates/Sidebar/sidebar-cluster.tpl
+++ b/templates/Sidebar/sidebar-cluster.tpl
@@ -1,165 +1,386 @@
-{{- define "incloud-web-resources.sidebar.menu.items.cluster" -}}
-{{- if .Values.addons.argocd.enabled -}}
+# return [] if sidebebar items are empty
+{{ define "incloud-web-resources.sidebar.menu.items.cluster" }}
+{{ if (include "incloud-web-resources.sidebar.menu.items.cluster-items" . | trim) }}
+{{ include "incloud-web-resources.sidebar.menu.items.cluster-items" . }}
+{{ else }}
+[]
+{{ end }}
+{{ end }}
+
+{{ define "incloud-web-resources.sidebar.menu.items.cluster-items" }}
+{{ $sidebars := .Values.sidebars.cluster }}
+{{ $projRes := .Values.projectResource }}
+{{ $instRes := .Values.instanceResource }}
+
+{{- if $sidebars.customItems -}}
+ {{- range $sidebars.customItems }}
+{{ $sidebars.customItems | toYaml }}
+ {{- end }}
+{{- end -}}
+
+{{ with $sidebars.search }}
+ {{ if .enabled }}
- children:
+ - key: search
+ label: Search
+ link: /openapi-ui/{clusterName}/search
+ key: home
+ label: Home
+ {{ end }}
+{{ end }}
+
+{{ if not .Values.namespaceNavigation }}
+{{ with $sidebars.projects }}
+ {{ if .enabled }}
+- children:
+ - key: projects
+ label: Projects
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/{{ $projRes.apiGroup }}/{{ $projRes.apiVersion }}/{{ $projRes.resourceName }}
+ key: projects
+ label: Projects
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.instances }}
+ {{ if .enabled }}
+- children:
+ - key: instances
+ label: Instances
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/{{ $instRes.apiGroup }}/{{ $instRes.apiVersion }}/{{ $instRes.resourceName }}
+ key: instances
+ label: Instances
+ {{ end }}
+{{ end }}
+{{ end }}
+
+{{ if .Values.addons.argocd.enabled }}
+{{ with $sidebars.argocd }}
+ {{ if .enabled }}
+- children:
+ {{ if .items.argocdlink }}
- key: argocd-web
label: ArgoCD
link: /argocd
+ {{ end }}
+ {{ if .items.applications }}
- key: argocd-application
label: Applications
- link: /openapi-ui/{clusterName}/api-table/argoproj.io/v1alpha1/applications
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/argoproj.io/v1alpha1/applications
+ {{ end }}
+ {{ if .items.applicationset }}
- key: argocd-applicationset
label: ApplicationSets
- link: /openapi-ui/{clusterName}/api-table/argoproj.io/v1alpha1/applicationsets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/argoproj.io/v1alpha1/applicationsets
+ {{ end }}
+ {{ if .items.appprojects }}
- key: argocd-appprojects
label: Projects
- link: /openapi-ui/{clusterName}/api-table/argoproj.io/v1alpha1/appprojects
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/argoproj.io/v1alpha1/appprojects
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: argocd
label: Argocd
-{{- end }}
+ {{ end }}
+{{ end }}
+{{ end }}
-{{- if .Values.addons.grafana.enabled -}}
+{{ if .Values.addons.grafana.enabled }}
+{{ with $sidebars.monitoring }}
+ {{ if .enabled }}
- children:
+ {{ if .items.grafana }}
- key: grafana
label: Grafana
link: /grafana
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: monitoring
label: Monitoring
-{{- end }}
+ {{ end }}
+{{ end }}
+{{ end }}
-{{- if .Values.addons.hbf.enabled }}
+{{ if .Values.addons.hbf.enabled }}
+{{ with $sidebars.hbf }}
+ {{ if .enabled }}
- key: hbf
label: HBF
children:
+ {{ if .items.hosts }}
+ - key: hbf-hosts
+ label: Hosts
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/hosts"
+ {{ end }}
+ {{ if .items.networks }}
- key: hbf-networks
label: Networks
- link: "/openapi-ui/{clusterName}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networks"
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/networks"
+ {{ end }}
+ {{ if .items.addressgroups }}
- key: hbf-addressgroups
label: AddressGroups
- link: "/openapi-ui/{clusterName}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroups"
- - key: hbf-networkbindings
- label: NetworkBindings
- link: "/openapi-ui/{clusterName}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networkbindings"
- - key: hbf-ieagagrules
- label: RuleAG2AG
- link: "/openapi-ui/{clusterName}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/ieagagrules"
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/addressgroups"
+ {{ end }}
+ {{ if .items.services }}
- key: hbf-services
label: Services
- link: "/openapi-ui/{clusterName}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/services"
- - key: hbf-servicealiases
- label: ServiceAliases
- link: "/openapi-ui/{clusterName}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/servicealiases"
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/services"
+ {{ end }}
+ {{ if .items.svcsvcrules }}
+ - key: hbf-svcsvcrules
+ label: SvcSvcRules
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/svcsvcrules"
+ {{ end }}
+ {{ if .items.svcfqdnrules }}
+ - key: hbf-svcfqdnrules
+ label: SvcFqdnRules
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/svcfqdnrules"
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.hbfSystem }}
+ {{ if .enabled }}
+- key: hbfsystem
+ label: HBF System
+ children:
+ {{ if .items.hostbindings }}
+ - key: hbf-hostbindings
+ label: HostBindings
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/hostbindings"
+ {{ end }}
+ {{ if .items.networkbindings }}
+ - key: hbf-networkbindings
+ label: NetworkBindings
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/networkbindings"
+ {{ end }}
+ {{ if .items.addressgroupbindings }}
- key: hbf-addressgroupbindings
label: AddressGroupBindings
- link: "/openapi-ui/{clusterName}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupbindings"
- - key: hbf-rules2ses
- label: RuleS2S
- link: "/openapi-ui/{clusterName}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/rules2s"
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/addressgroupbindings"
+ {{ end }}
+ {{ if .items.addressgroupportmappings }}
- key: hbf-addressgroupportmappings
label: AddressGroupPortMappings
- link: "/openapi-ui/{clusterName}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupportmappings"
-{{- end }}
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/addressgroupportmappings"
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ {{ end }}
+{{ end }}
+{{ end }}
+{{ with $sidebars.workloads }}
+ {{ if .enabled }}
- children:
+ {{ if .items.pods }}
- key: pods
label: Pods
- link: /openapi-ui/{clusterName}/builtin-table/pods
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/pods
+ {{ end }}
+ {{ if .items.deployments }}
- key: deployments
label: Deployments
- link: /openapi-ui/{clusterName}/api-table/apps/v1/deployments
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/apps/v1/deployments
+ {{ end }}
+ {{ if .items.statefulsets }}
- key: statefulsets
label: Statefulsets
- link: /openapi-ui/{clusterName}/api-table/apps/v1/statefulsets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/apps/v1/statefulsets
+ {{ end }}
+ {{ if .items.secrets }}
- key: secrets
label: Secrets
- link: /openapi-ui/{clusterName}/builtin-table/secrets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/secrets
+ {{ end }}
+ {{ if .items.configmaps }}
- key: configmaps
label: ConfigMaps
- link: /openapi-ui/{clusterName}/builtin-table/configmaps
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/configmaps
+ {{ end }}
+ {{ if .items.cronjobs }}
- key: cronjobs
label: CronJobs
- link: /openapi-ui/{clusterName}/api-table/batch/v1/cronjobs
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/batch/v1/cronjobs
+ {{ end }}
+ {{ if .items.jobs }}
- key: jobs
label: Jobs
- link: /openapi-ui/{clusterName}/api-table/batch/v1/jobs
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/batch/v1/jobs
+ {{ end }}
+ {{ if .items.daemonsets }}
- key: daemonsets
label: Daemonsets
- link: /openapi-ui/{clusterName}/api-table/apps/v1/daemonsets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/apps/v1/daemonsets
+ {{ end }}
+ {{ if .items.replicasets }}
- key: replicasets
label: ReplicaSets
- link: /openapi-ui/{clusterName}/api-table/apps/v1/replicasets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/apps/v1/replicasets
+ {{ end }}
+ {{ if .items.replicationcontrollers }}
- key: replicationcontrollers
label: ReplicationControllers
- link: /openapi-ui/{clusterName}/builtin-table/replicationcontrollers
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/replicationcontrollers
+ {{ end }}
+ {{ if .items.horizontalpodautoscalers }}
- key: horizontalpodautoscalers
label: HorizontalPodAutoscalers
- link: /openapi-ui/{clusterName}/api-table/autoscaling/v2/horizontalpodautoscalers
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/autoscaling/v2/horizontalpodautoscalers
+ {{ end }}
+ {{ if .items.poddisruptionbudgets }}
- key: poddisruptionbudgets
label: PodDisruptionBudgets
- link: /openapi-ui/{clusterName}/api-table/policy/v1/poddisruptionbudgets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/policy/v1/poddisruptionbudgets
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: workloads
label: Workloads
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.networking }}
+ {{ if .enabled }}
- children:
+ {{ if .items.services }}
- key: services
label: Services
- link: /openapi-ui/{clusterName}/builtin-table/services
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/services
+ {{ end }}
+ {{ if .items.networkpolicies }}
- key: networkpolicies
label: NetworkPolicies
- link: /openapi-ui/{clusterName}/api-table/networking.k8s.io/v1/networkpolicies
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/networking.k8s.io/v1/networkpolicies
+ {{ end }}
+ {{ if .items.ingresses }}
- key: ingresses
label: Ingresses
- link: /openapi-ui/{clusterName}/api-table/networking.k8s.io/v1/ingresses
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/networking.k8s.io/v1/ingresses
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: networking
label: Networking
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.storage }}
+ {{ if .enabled }}
- children:
+ {{ if .items.persistentvolumes }}
- key: persistentvolumes
label: PersistentVolumes
- link: /openapi-ui/{clusterName}/builtin-table/persistentvolumes
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/persistentvolumes
+ {{ end }}
+ {{ if .items.persistentvolumeclaims }}
- key: persistentvolumeclaims
label: PersistentVolumeClaims
- link: /openapi-ui/{clusterName}/builtin-table/persistentvolumeclaims
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/persistentvolumeclaims
+ {{ end }}
+ {{ if .items.storageclasses }}
- key: storageclasses
label: StorageClasses
- link: /openapi-ui/{clusterName}/api-table/storage.k8s.io/v1/storageclasses
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/storage.k8s.io/v1/storageclasses
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: storage
label: Storage
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.compute }}
+ {{ if .enabled }}
- children:
+ {{ if .items.nodes }}
- key: nodes
label: Nodes
- link: /openapi-ui/{clusterName}/builtin-table/nodes
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/nodes
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: compute
label: Compute
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.usermanagement }}
+ {{ if .enabled }}
- children:
- - key: groups
+ {{ if .items.serviceaccounts }}
+ - key: serviceaccounts
label: ServiceAccounts
- link: /openapi-ui/{clusterName}/builtin-table/serviceaccounts
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/serviceaccounts
+ {{ end }}
+ {{ if .items.roles }}
- key: roles
label: Roles
- link: /openapi-ui/{clusterName}/api-table/rbac.authorization.k8s.io/v1/roles
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/rbac.authorization.k8s.io/v1/roles
+ {{ end }}
+ {{ if .items.rolebindings }}
- key: rolebindings
label: RoleBindings
- link: /openapi-ui/{clusterName}/api-table/rbac.authorization.k8s.io/v1/rolebindings
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/rbac.authorization.k8s.io/v1/rolebindings
+ {{ end }}
+ {{ if .items.clusterroles }}
- key: clusterroles
label: ClusterRoles
- link: /openapi-ui/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterroles
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterroles
+ {{ end }}
+ {{ if .items.clusterrolebindings }}
- key: clusterrolebindings
label: ClusterRoleBindings
- link: /openapi-ui/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterrolebindings
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterrolebindings
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: usermanagement
label: User Management
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.administration }}
+ {{ if .enabled }}
- children:
+ {{ if .items.namespaces }}
- key: namespaces
label: Namespaces
- link: /openapi-ui/{clusterName}/builtin-table/namespaces
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/namespaces
+ {{ end }}
+ {{ if .items.limitranges }}
- key: limitranges
label: LimitRanges
- link: /openapi-ui/{clusterName}/builtin-table/limitranges
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/limitranges
+ {{ end }}
+ {{ if .items.resourcequotas }}
- key: resourcequotas
label: ResourceQuotas
- link: /openapi-ui/{clusterName}/builtin-table/resourcequotas
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/resourcequotas
+ {{ end }}
+ {{ if .items.customresourcedefinitions }}
- key: customresourcedefinitions
label: CustomResourceDefinitions
- link: /openapi-ui/{clusterName}/api-table/apiextensions.k8s.io/v1/customresourcedefinitions
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/apiextensions.k8s.io/v1/customresourcedefinitions
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: administration
label: Administration
-
-{{- end }}
+ {{ end }}
+{{ end }}
+{{ end }}
diff --git a/templates/Sidebar/sidebar-instance.tpl b/templates/Sidebar/sidebar-instance.tpl
new file mode 100644
index 0000000..dd136c2
--- /dev/null
+++ b/templates/Sidebar/sidebar-instance.tpl
@@ -0,0 +1,362 @@
+{{ define "incloud-web-resources.sidebar.menu.items.instance" }}
+{{ if (include "incloud-web-resources.sidebar.menu.items.instance-items" . | trim) }}
+{{ include "incloud-web-resources.sidebar.menu.items.instance-items" . }}
+{{ else }}
+[]
+{{ end }}
+{{ end }}
+
+{{ define "incloud-web-resources.sidebar.menu.items.instance-items" }}
+{{ $sidebars := .Values.sidebars.instance }}
+{{ $projRes := .Values.projectResource }}
+{{ $instRes := .Values.instanceResource }}
+
+{{- if $sidebars.customItems -}}
+ {{- range $sidebars.customItems }}
+{{ $sidebars.customItems | toYaml }}
+ {{- end }}
+{{- end -}}
+
+{{ with $sidebars.search }}
+ {{ if .enabled }}
+- children:
+ - key: search
+ label: Search
+ link: /openapi-ui/{clusterName}/search
+ key: home
+ label: Home
+ {{ end }}
+{{ end }}
+
+{{ if not .Values.namespaceNavigation }}
+{{ with $sidebars.projects }}
+ {{ if .enabled }}
+- children:
+ - key: projects
+ label: Projects
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{{ $projRes.apiGroup }}/{{ $projRes.apiVersion }}/{{ $projRes.resourceName }}
+ key: projects
+ label: Projects
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.instances }}
+ {{ if .enabled }}
+- children:
+ - key: instances
+ label: Instances
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/{{ $instRes.apiGroup }}/{{ $instRes.apiVersion }}/{{ $instRes.resourceName }}
+ key: instances
+ label: Instances
+ {{ end }}
+{{ end }}
+{{ end }}
+
+{{ if .Values.addons.argocd.enabled }}
+{{ with $sidebars.argocd }}
+ {{ if .enabled }}
+- children:
+ {{ if .items.applications }}
+ - key: argocd-application
+ label: Applications
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/argoproj.io/v1alpha1/applications
+ {{ end }}
+ {{ if .items.applicationset }}
+ - key: argocd-applicationset
+ label: ApplicationSets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/argoproj.io/v1alpha1/applicationsets
+ {{ end }}
+ {{ if .items.appprojects }}
+ - key: argocd-appprojects
+ label: Projects
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/argoproj.io/v1alpha1/appprojects
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ key: argocd
+ label: Argocd
+ {{ end }}
+{{ end }}
+{{ end }}
+
+{{ if .Values.addons.hbf.enabled }}
+{{ with $sidebars.hbf }}
+ {{ if .enabled }}
+- key: hbf
+ label: HBF
+ children:
+ {{ if .items.hosts }}
+ - key: hbf-hosts
+ label: Hosts
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/hosts"
+ {{ end }}
+ {{ if .items.networks }}
+ - key: hbf-networks
+ label: Networks
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/networks"
+ {{ end }}
+ {{ if .items.addressgroups }}
+ - key: hbf-addressgroups
+ label: AddressGroups
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/addressgroups"
+ {{ end }}
+ {{ if .items.services }}
+ - key: hbf-services
+ label: Services
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/services"
+ {{ end }}
+ {{ if .items.svcsvcrules }}
+ - key: hbf-svcsvcrules
+ label: SvcSvcRules
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/svcsvcrules"
+ {{ end }}
+ {{ if .items.svcfqdnrules }}
+ - key: hbf-svcfqdnrules
+ label: SvcFqdnRules
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/svcfqdnrules"
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.hbfSystem }}
+ {{ if .enabled }}
+- key: hbfsystem
+ label: HBF System
+ children:
+ {{ if .items.hostbindings }}
+ - key: hbf-hostbindings
+ label: HostBindings
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/hostbindings"
+ {{ end }}
+ {{ if .items.networkbindings }}
+ - key: hbf-networkbindings
+ label: NetworkBindings
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/networkbindings"
+ {{ end }}
+ {{ if .items.addressgroupbindings }}
+ - key: hbf-addressgroupbindings
+ label: AddressGroupBindings
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/addressgroupbindings"
+ {{ end }}
+ {{ if .items.addressgroupportmappings }}
+ - key: hbf-addressgroupportmappings
+ label: AddressGroupPortMappings
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/addressgroupportmappings"
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ {{ end }}
+{{ end }}
+{{ end }}
+
+{{ with $sidebars.workloads }}
+ {{ if .enabled }}
+- children:
+ {{ if .items.pods }}
+ - key: pods
+ label: Pods
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/pods
+ {{ end }}
+ {{ if .items.deployments }}
+ - key: deployments
+ label: Deployments
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/apps/v1/deployments
+ {{ end }}
+ {{ if .items.statefulsets }}
+ - key: statefulsets
+ label: Statefulsets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/apps/v1/statefulsets
+ {{ end }}
+ {{ if .items.secrets }}
+ - key: secrets
+ label: Secrets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/secrets
+ {{ end }}
+ {{ if .items.configmaps }}
+ - key: configmaps
+ label: ConfigMaps
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/configmaps
+ {{ end }}
+ {{ if .items.cronjobs }}
+ - key: cronjobs
+ label: CronJobs
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/batch/v1/cronjobs
+ {{ end }}
+ {{ if .items.jobs }}
+ - key: jobs
+ label: Jobs
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/batch/v1/jobs
+ {{ end }}
+ {{ if .items.daemonsets }}
+ - key: daemonsets
+ label: Daemonsets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/apps/v1/daemonsets
+ {{ end }}
+ {{ if .items.replicasets }}
+ - key: replicasets
+ label: ReplicaSets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/apps/v1/replicasets
+ {{ end }}
+ {{ if .items.replicationcontrollers }}
+ - key: replicationcontrollers
+ label: ReplicationControllers
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/replicationcontrollers
+ {{ end }}
+ {{ if .items.horizontalpodautoscalers }}
+ - key: horizontalpodautoscalers
+ label: HorizontalPodAutoscalers
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/autoscaling/v2/horizontalpodautoscalers
+ {{ end }}
+ {{ if .items.poddisruptionbudgets }}
+ - key: poddisruptionbudgets
+ label: PodDisruptionBudgets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/policy/v1/poddisruptionbudgets
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ key: workloads
+ label: Workloads
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.networking }}
+ {{ if .enabled }}
+- children:
+ {{ if .items.services }}
+ - key: services
+ label: Services
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/services
+ {{ end }}
+ {{ if .items.networkpolicies }}
+ - key: networkpolicies
+ label: NetworkPolicies
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/networking.k8s.io/v1/networkpolicies
+ {{ end }}
+ {{ if .items.ingresses }}
+ - key: ingresses
+ label: Ingresses
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/networking.k8s.io/v1/ingresses
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ key: networking
+ label: Networking
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.storage }}
+ {{ if .enabled }}
+- children:
+ {{ if .items.persistentvolumes }}
+ - key: persistentvolumes
+ label: PersistentVolumes
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/persistentvolumes
+ {{ end }}
+ {{ if .items.persistentvolumeclaims }}
+ - key: persistentvolumeclaims
+ label: PersistentVolumeClaims
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/persistentvolumeclaims
+ {{ end }}
+ {{ if .items.storageclasses }}
+ - key: storageclasses
+ label: StorageClasses
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/storage.k8s.io/v1/storageclasses
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ key: storage
+ label: Storage
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.compute }}
+ {{ if .enabled }}
+- children:
+ {{ if .items.nodes }}
+ - key: nodes
+ label: Nodes
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/nodes
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ key: compute
+ label: Compute
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.usermanagement }}
+ {{ if .enabled }}
+- children:
+ {{ if .items.serviceaccounts }}
+ - key: serviceaccounts
+ label: ServiceAccounts
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/serviceaccounts
+ {{ end }}
+ {{ if .items.roles }}
+ - key: roles
+ label: Roles
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/rbac.authorization.k8s.io/v1/roles
+ {{ end }}
+ {{ if .items.rolebindings }}
+ - key: rolebindings
+ label: RoleBindings
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/api-table/rbac.authorization.k8s.io/v1/rolebindings
+ {{ end }}
+ {{ if .items.clusterroles }}
+ - key: clusterroles
+ label: ClusterRoles
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterroles
+ {{ end }}
+ {{ if .items.clusterrolebindings }}
+ - key: clusterrolebindings
+ label: ClusterRoleBindings
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterrolebindings
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ key: usermanagement
+ label: User Management
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.administration }}
+ {{ if .enabled }}
+- children:
+ {{ if .items.namespaces }}
+ - key: namespaces
+ label: Namespaces
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/namespaces
+ {{ end }}
+ {{ if .items.limitranges }}
+ - key: limitranges
+ label: LimitRanges
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/limitranges
+ {{ end }}
+ {{ if .items.resourcequotas }}
+ - key: resourcequotas
+ label: ResourceQuotas
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{syntheticProject}/builtin-table/resourcequotas
+ {{ end }}
+ {{ if .items.customresourcedefinitions }}
+ - key: customresourcedefinitions
+ label: CustomResourceDefinitions
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/apiextensions.k8s.io/v1/customresourcedefinitions
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ key: administration
+ label: Administration
+ {{ end }}
+{{ end }}
+{{ end }}
diff --git a/templates/Sidebar/sidebar-namespaced.tpl b/templates/Sidebar/sidebar-namespaced.tpl
index def96a8..6e69508 100644
--- a/templates/Sidebar/sidebar-namespaced.tpl
+++ b/templates/Sidebar/sidebar-namespaced.tpl
@@ -1,154 +1,363 @@
-{{- define "incloud-web-resources.sidebar.menu.items.namespaced" -}}
-{{- if .Values.addons.argocd.enabled -}}
+# return [] if sidebebar items are empty
+{{ define "incloud-web-resources.sidebar.menu.items.namespaced" }}
+{{ if (include "incloud-web-resources.sidebar.menu.items.namespaced-items" . | trim) }}
+{{ include "incloud-web-resources.sidebar.menu.items.namespaced-items" . }}
+{{ else }}
+[]
+{{ end }}
+{{ end }}
+
+{{ define "incloud-web-resources.sidebar.menu.items.namespaced-items" }}
+{{ $sidebars := .Values.sidebars.namespaced }}
+{{ $projRes := .Values.projectResource }}
+{{ $instRes := .Values.instanceResource }}
+
+{{- if $sidebars.customItems -}}
+ {{- range $sidebars.customItems }}
+{{ $sidebars.customItems | toYaml }}
+ {{- end }}
+{{- end -}}
+
+{{ with $sidebars.search }}
+ {{ if .enabled }}
+- children:
+ - key: search
+ label: Search
+ link: /openapi-ui/{clusterName}/search
+ key: home
+ label: Home
+ {{ end }}
+{{ end }}
+
+{{ if not .Values.namespaceNavigation }}
+{{ with $sidebars.projects }}
+ {{ if .enabled }}
+- children:
+ - key: projects
+ label: Projects
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/{{ $projRes.apiGroup }}/{{ $projRes.apiVersion }}/{{ $projRes.resourceName }}
+ key: projects
+ label: Projects
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.instances }}
+ {{ if .enabled }}
+- children:
+ - key: instances
+ label: Instances
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/{{ $instRes.apiGroup }}/{{ $instRes.apiVersion }}/{{ $instRes.resourceName }}
+ key: instances
+ label: Instances
+ {{ end }}
+{{ end }}
+{{ end }}
+
+{{ if .Values.addons.argocd.enabled }}
+{{ with $sidebars.argocd }}
+ {{ if .enabled }}
- children:
+ {{ if .items.applications }}
- key: argocd-application
label: Applications
- link: /openapi-ui/{clusterName}/{namespace}/api-table/argoproj.io/v1alpha1/applications
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/argoproj.io/v1alpha1/applications
+ {{ end }}
+ {{ if .items.applicationset }}
- key: argocd-applicationset
label: ApplicationSets
- link: /openapi-ui/{clusterName}/{namespace}/api-table/argoproj.io/v1alpha1/applicationsets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/argoproj.io/v1alpha1/applicationsets
+ {{ end }}
+ {{ if .items.appprojects }}
- key: argocd-appprojects
label: Projects
- link: /openapi-ui/{clusterName}/{namespace}/api-table/argoproj.io/v1alpha1/appprojects
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/argoproj.io/v1alpha1/appprojects
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: argocd
label: Argocd
-{{- end }}
+ {{ end }}
+{{ end }}
+{{ end }}
-{{- if .Values.addons.hbf.enabled }}
+{{ if .Values.addons.hbf.enabled }}
+{{ with $sidebars.hbf }}
+ {{ if .enabled }}
- key: hbf
label: HBF
children:
+ {{ if .items.hosts }}
+ - key: hbf-hosts
+ label: Hosts
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/hosts"
+ {{ end }}
+ {{ if .items.networks }}
- key: hbf-networks
label: Networks
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networks"
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/networks"
+ {{ end }}
+ {{ if .items.addressgroups }}
- key: hbf-addressgroups
label: AddressGroups
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroups"
- - key: hbf-networkbindings
- label: NetworkBindings
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networkbindings"
- - key: hbf-ieagagrules
- label: RuleAG2AG
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/ieagagrules"
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/addressgroups"
+ {{ end }}
+ {{ if .items.services }}
- key: hbf-services
label: Services
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/services"
- - key: hbf-servicealiases
- label: ServiceAliases
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/servicealiases"
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/services"
+ {{ end }}
+ {{ if .items.svcsvcrules }}
+ - key: hbf-svcsvcrules
+ label: SvcSvcRules
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/svcsvcrules"
+ {{ end }}
+ {{ if .items.svcfqdnrules }}
+ - key: hbf-svcfqdnrules
+ label: SvcFqdnRules
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/svcfqdnrules"
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.hbfSystem }}
+ {{ if .enabled }}
+- key: hbfSystem
+ label: HBF System
+ children:
+ {{ if .items.hostbindings }}
+ - key: hbf-hostbindings
+ label: HostBindings
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/hostbindings"
+ {{ end }}
+ {{ if .items.networkbindings }}
+ - key: hbf-networkbindings
+ label: NetworkBindings
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/networkbindings"
+ {{ end }}
+ {{ if .items.addressgroupbindings }}
- key: hbf-addressgroupbindings
label: AddressGroupBindings
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupbindings"
- - key: hbf-rules2ses
- label: RuleS2S
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/rules2s"
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/addressgroupbindings"
+ {{ end }}
+ {{ if .items.addressgroupportmappings }}
- key: hbf-addressgroupportmappings
label: AddressGroupPortMappings
- link: "/openapi-ui/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupportmappings"
-{{- end }}
-
+ link: "/{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/netguard.sgroups.io/{{ $.Values.addons.hbf.apiVersion }}/addressgroupportmappings"
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
+ {{ end }}
+{{ end }}
+{{ end }}
+{{ with $sidebars.workloads }}
+ {{ if .enabled }}
- children:
+ {{ if .items.pods }}
- key: pods
label: Pods
- link: /openapi-ui/{clusterName}/{namespace}/builtin-table/pods
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/pods
+ {{ end }}
+ {{ if .items.deployments }}
- key: deployments
label: Deployments
- link: /openapi-ui/{clusterName}/{namespace}/api-table/apps/v1/deployments
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/apps/v1/deployments
+ {{ end }}
+ {{ if .items.statefulsets }}
- key: statefulsets
label: Statefulsets
- link: /openapi-ui/{clusterName}/{namespace}/api-table/apps/v1/statefulsets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/apps/v1/statefulsets
+ {{ end }}
+ {{ if .items.secrets }}
- key: secrets
label: Secrets
- link: /openapi-ui/{clusterName}/{namespace}/builtin-table/secrets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/secrets
+ {{ end }}
+ {{ if .items.configmaps }}
- key: configmaps
label: ConfigMaps
- link: /openapi-ui/{clusterName}/{namespace}/builtin-table/configmaps
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/configmaps
+ {{ end }}
+ {{ if .items.cronjobs }}
- key: cronjobs
label: CronJobs
- link: /openapi-ui/{clusterName}/{namespace}/api-table/batch/v1/cronjobs
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/batch/v1/cronjobs
+ {{ end }}
+ {{ if .items.jobs }}
- key: jobs
label: Jobs
- link: /openapi-ui/{clusterName}/{namespace}/api-table/batch/v1/jobs
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/batch/v1/jobs
+ {{ end }}
+ {{ if .items.daemonsets }}
- key: daemonsets
label: Daemonsets
- link: /openapi-ui/{clusterName}/{namespace}/api-table/apps/v1/daemonsets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/apps/v1/daemonsets
+ {{ end }}
+ {{ if .items.replicasets }}
- key: replicasets
label: ReplicaSets
- link: /openapi-ui/{clusterName}/{namespace}/api-table/apps/v1/replicasets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/apps/v1/replicasets
+ {{ end }}
+ {{ if .items.replicationcontrollers }}
- key: replicationcontrollers
label: ReplicationControllers
- link: /openapi-ui/{clusterName}/{namespace}/builtin-table/replicationcontrollers
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/replicationcontrollers
+ {{ end }}
+ {{ if .items.horizontalpodautoscalers }}
- key: horizontalpodautoscalers
label: HorizontalPodAutoscalers
- link: /openapi-ui/{clusterName}/{namespace}/api-table/autoscaling/v2/horizontalpodautoscalers
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/autoscaling/v2/horizontalpodautoscalers
+ {{ end }}
+ {{ if .items.poddisruptionbudgets }}
- key: poddisruptionbudgets
label: PodDisruptionBudgets
- link: /openapi-ui/{clusterName}/{namespace}/api-table/policy/v1/poddisruptionbudgets
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/policy/v1/poddisruptionbudgets
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: workloads
label: Workloads
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.networking }}
+ {{ if .enabled }}
- children:
+ {{ if .items.services }}
- key: services
label: Services
- link: /openapi-ui/{clusterName}/{namespace}/builtin-table/services
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/services
+ {{ end }}
+ {{ if .items.networkpolicies }}
- key: networkpolicies
label: NetworkPolicies
- link: /openapi-ui/{clusterName}/{namespace}/api-table/networking.k8s.io/v1/networkpolicies
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/networking.k8s.io/v1/networkpolicies
+ {{ end }}
+ {{ if .items.ingresses }}
- key: ingresses
label: Ingresses
- link: /openapi-ui/{clusterName}/{namespace}/api-table/networking.k8s.io/v1/ingresses
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/networking.k8s.io/v1/ingresses
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: networking
label: Networking
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.storage }}
+ {{ if .enabled }}
- children:
+ {{ if .items.persistentvolumes }}
- key: persistentvolumes
label: PersistentVolumes
- link: /openapi-ui/{clusterName}/builtin-table/persistentvolumes
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/persistentvolumes
+ {{ end }}
+ {{ if .items.persistentvolumeclaims }}
- key: persistentvolumeclaims
label: PersistentVolumeClaims
- link: /openapi-ui/{clusterName}/{namespace}/builtin-table/persistentvolumeclaims
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/persistentvolumeclaims
+ {{ end }}
+ {{ if .items.storageclasses }}
- key: storageclasses
label: StorageClasses
- link: /openapi-ui/{clusterName}/api-table/storage.k8s.io/v1/storageclasses
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/storage.k8s.io/v1/storageclasses
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: storage
label: Storage
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.compute }}
+ {{ if .enabled }}
- children:
+ {{ if .items.nodes }}
- key: nodes
label: Nodes
- link: /openapi-ui/{clusterName}/builtin-table/nodes
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/nodes
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: compute
label: Compute
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.usermanagement }}
+ {{ if .enabled }}
- children:
- - key: groups
+ {{ if .items.serviceaccounts }}
+ - key: serviceaccounts
label: ServiceAccounts
- link: /openapi-ui/{clusterName}/{namespace}/builtin-table/serviceaccounts
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/serviceaccounts
+ {{ end }}
+ {{ if .items.roles }}
- key: roles
label: Roles
- link: /openapi-ui/{clusterName}/{namespace}/api-table/rbac.authorization.k8s.io/v1/roles
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/rbac.authorization.k8s.io/v1/roles
+ {{ end }}
+ {{ if .items.rolebindings }}
- key: rolebindings
label: RoleBindings
- link: /openapi-ui/{clusterName}/{namespace}/api-table/rbac.authorization.k8s.io/v1/rolebindings
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/api-table/rbac.authorization.k8s.io/v1/rolebindings
+ {{ end }}
+ {{ if .items.clusterroles }}
- key: clusterroles
label: ClusterRoles
- link: /openapi-ui/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterroles
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterroles
+ {{ end }}
+ {{ if .items.clusterrolebindings }}
- key: clusterrolebindings
label: ClusterRoleBindings
- link: /openapi-ui/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterrolebindings
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/rbac.authorization.k8s.io/v1/clusterrolebindings
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: usermanagement
label: User Management
+ {{ end }}
+{{ end }}
+
+{{ with $sidebars.administration }}
+ {{ if .enabled }}
- children:
+ {{ if .items.namespaces }}
- key: namespaces
label: Namespaces
- link: /openapi-ui/{clusterName}/builtin-table/namespaces
+ link: /{{ $.Values.basePrefix }}/{clusterName}/builtin-table/namespaces
+ {{ end }}
+ {{ if .items.limitranges }}
- key: limitranges
label: LimitRanges
- link: /openapi-ui/{clusterName}/{namespace}/builtin-table/limitranges
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/limitranges
+ {{ end }}
+ {{ if .items.resourcequotas }}
- key: resourcequotas
label: ResourceQuotas
- link: /openapi-ui/{clusterName}/{namespace}/builtin-table/resourcequotas
+ link: /{{ $.Values.basePrefix }}/{clusterName}/{namespace}/builtin-table/resourcequotas
+ {{ end }}
+ {{ if .items.customresourcedefinitions }}
- key: customresourcedefinitions
label: CustomResourceDefinitions
- link: /openapi-ui/{clusterName}/api-table/apiextensions.k8s.io/v1/customresourcedefinitions
+ link: /{{ $.Values.basePrefix }}/{clusterName}/api-table/apiextensions.k8s.io/v1/customresourcedefinitions
+ {{ end }}
+ {{ with .extraItems }}
+ {{ . | toYaml | nindent 4 }}
+ {{ end }}
key: administration
label: Administration
-
-{{- end }}
+ {{ end }}
+{{ end }}
+{{ end }}
diff --git a/templates/Sidebar/stock-cluster-factory/clusterrole-details.yaml b/templates/Sidebar/stock-cluster-factory/clusterrole-details.yaml
index 96dcc29..e105e15 100644
--- a/templates/Sidebar/stock-cluster-factory/clusterrole-details.yaml
+++ b/templates/Sidebar/stock-cluster-factory/clusterrole-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-cluster-factory-clusterrole-details
keysAndTags:
clusterroles:
- - clusterrole-sidebar
+ - clusterrole-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.cluster" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-cluster-factory/clusterrolebinding-details.yaml b/templates/Sidebar/stock-cluster-factory/clusterrolebinding-details.yaml
index 733337d..a4b079a 100644
--- a/templates/Sidebar/stock-cluster-factory/clusterrolebinding-details.yaml
+++ b/templates/Sidebar/stock-cluster-factory/clusterrolebinding-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-cluster-factory-clusterrolebinding-details
keysAndTags:
clusterrolebindings:
- - clusterrolebinding-sidebar
+ - clusterrolebinding-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-cluster-factory/crd-details.yaml b/templates/Sidebar/stock-cluster-factory/crd-details.yaml
index 06d8766..7357264 100644
--- a/templates/Sidebar/stock-cluster-factory/crd-details.yaml
+++ b/templates/Sidebar/stock-cluster-factory/crd-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-cluster-factory-crd-details
keysAndTags:
customresourcedefinitions:
- - customresourcedefinitions-sidebar
+ - customresourcedefinitions-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.cluster" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-cluster-factory/namespace-details.yaml b/templates/Sidebar/stock-cluster-factory/namespace-details.yaml
index dcadf9e..d3d9887 100644
--- a/templates/Sidebar/stock-cluster-factory/namespace-details.yaml
+++ b/templates/Sidebar/stock-cluster-factory/namespace-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-cluster-factory-namespace-details
keysAndTags:
namespaces:
- - namespace-sidebar
+ - namespace-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.cluster" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-cluster-factory/node-details.yaml b/templates/Sidebar/stock-cluster-factory/node-details.yaml
index 497a25a..dd71c3f 100644
--- a/templates/Sidebar/stock-cluster-factory/node-details.yaml
+++ b/templates/Sidebar/stock-cluster-factory/node-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-cluster-factory-node-details
keysAndTags:
nodes:
- - node-sidebar
+ - node-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.cluster" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-cluster-factory/project-details.yaml b/templates/Sidebar/stock-cluster-factory/project-details.yaml
new file mode 100644
index 0000000..f6c0e4d
--- /dev/null
+++ b/templates/Sidebar/stock-cluster-factory/project-details.yaml
@@ -0,0 +1,11 @@
+{{ if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: stock-cluster-factory-project-details
+spec:
+ id: stock-cluster-factory-project-details
+ menuItems:
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+{{ end }}
diff --git a/templates/Sidebar/stock-cluster.yaml b/templates/Sidebar/stock-cluster.yaml
index ae96ad4..fbedec2 100644
--- a/templates/Sidebar/stock-cluster.yaml
+++ b/templates/Sidebar/stock-cluster.yaml
@@ -7,27 +7,64 @@ spec:
id: stock-cluster-api-form
keysAndTags:
{{- if .Values.addons.hbf.enabled }}
+ hbf-hosts:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hosts"
+ hbf-hostbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hostbindings"
hbf-networks:
- - netguard.sgroups.io/v1beta1/networks
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networks"
hbf-addressgroups:
- - netguard.sgroups.io/v1beta1/addressgroups
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroups"
hbf-networkbindings:
- - netguard.sgroups.io/v1beta1/networkbindings
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networkbindings"
hbf-servicealiases:
- - netguard.sgroups.io/v1beta1/servicealiases
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/servicealiases"
hbf-services:
- - netguard.sgroups.io/v1beta1/services
- hbf-networks:
- - netguard.sgroups.io/v1beta1/networks
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/services"
hbf-addressgroupbindings:
- - netguard.sgroups.io/v1beta1/addressgroupbindings
- hbf-rules2ses:
- - netguard.sgroups.io/v1beta1/rules2s
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupbindings"
+ hbf-svcsvcrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcsvcrules"
+ hbf-svcfqdnrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcfqdnrules"
hbf-addressgroupportmappings:
- - netguard.sgroups.io/v1beta1/addressgroupportmappings
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupportmappings"
hbf-ieagagrules:
- - netguard.sgroups.io/v1beta1/ieagagrules
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/ieagagrules"
{{- end }}
+ deployments:
+ - apps/v1/deployments
+ statefulsets:
+ - apps/v1/statefulsets
+ daemonsets:
+ - apps/v1/daemonsets
+ cronjobs:
+ - batch/v1/cronjobs
+ jobs:
+ - batch/v1/jobs
+ replicasets:
+ - apps/v1/replicasets
+ horizontalpodautoscalers:
+ - autoscaling/v1/horizontalpodautoscalers
+ poddisruptionbudgets:
+ - policy/v1/poddisruptionbudgets
+ networkpolicies:
+ - networking.k8s.io/v1/networkpolicies
+ ingresses:
+ - networking.k8s.io/v1/ingresses
+ storageclasses:
+ - storage.k8s.io/v1/storageclasses
+ roles:
+ - rbac.authorization.k8s.io/v1/roles
+ rolebindings:
+ - rbac.authorization.k8s.io/v1/rolebindings
+ clusterroles:
+ - rbac.authorization.k8s.io/v1/clusterroles
+ clusterrolebindings:
+ - rbac.authorization.k8s.io/v1/clusterrolebindings
+ customresourcedefinitions:
+ - apiextensions.k8s.io/v1/customresourcedefinitions
+
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.cluster" . | nindent 4 }}
@@ -71,6 +108,8 @@ spec:
- serviceaccounts
services:
- services
+ replicationcontrollers:
+ - replicationcontrollers
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.cluster" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-instance-factory/argocd-application-details.yaml b/templates/Sidebar/stock-instance-factory/argocd-application-details.yaml
new file mode 100644
index 0000000..0460f7f
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/argocd-application-details.yaml
@@ -0,0 +1,23 @@
+{{- if .Values.addons.argocd.enabled }}
+{{- $factoryID := "instance-argocd-application-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "argocd-application-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ argocd-application:
+ - argocd-applications-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
+{{- end }}
diff --git a/templates/Sidebar/stock-instance-factory/argocd-approject-details.yaml b/templates/Sidebar/stock-instance-factory/argocd-approject-details.yaml
new file mode 100644
index 0000000..08486d1
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/argocd-approject-details.yaml
@@ -0,0 +1,23 @@
+{{- if .Values.addons.argocd.enabled }}
+{{- $factoryID := "instance-argocd-appproject-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "argocd-appproject-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ argocd-appprojects:
+ - argocd-appprojects-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
+{{- end }}
diff --git a/templates/Sidebar/stock-instance-factory/certificate-details.yaml b/templates/Sidebar/stock-instance-factory/certificate-details.yaml
new file mode 100644
index 0000000..3364ec1
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/certificate-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-certificate-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "certificate-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ # keysAndTags:
+ # certificates:
+ # - '{reqsJsonPath[0][".apiVersion"]["-"]}/{reqsJsonPath[0][".kind"]["-"]}'
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/configmap-details.yaml b/templates/Sidebar/stock-instance-factory/configmap-details.yaml
new file mode 100644
index 0000000..27f2cdb
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/configmap-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-configmap-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "configmap-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ configmaps:
+ - configmap-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/cronjob-details.yaml b/templates/Sidebar/stock-instance-factory/cronjob-details.yaml
new file mode 100644
index 0000000..8830a2f
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/cronjob-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-cronjob-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "cronjob-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ cronjobs:
+ - cronjobs-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/daemonset-details.yaml b/templates/Sidebar/stock-instance-factory/daemonset-details.yaml
new file mode 100644
index 0000000..a26cb43
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/daemonset-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-daemonset-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "daemonset-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ daemonsets:
+ - daemonset-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/deployment-details.yaml b/templates/Sidebar/stock-instance-factory/deployment-details.yaml
new file mode 100644
index 0000000..c3fdc74
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/deployment-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-deployment-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "deployment-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ deployments:
+ - deployment-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/horizontalpodautoscalers-details.yaml b/templates/Sidebar/stock-instance-factory/horizontalpodautoscalers-details.yaml
new file mode 100644
index 0000000..928437d
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/horizontalpodautoscalers-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-horizontalpodautoscaler-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "horizontalpodautoscaler-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ horizontalpodautoscalers:
+ - horizontalpodautoscaler-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/job-details.yaml b/templates/Sidebar/stock-instance-factory/job-details.yaml
new file mode 100644
index 0000000..ea2fc2b
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/job-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-job-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "job-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ jobs:
+ - job-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/networkpolicy-details.yaml b/templates/Sidebar/stock-instance-factory/networkpolicy-details.yaml
new file mode 100644
index 0000000..55d27d5
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/networkpolicy-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-networkpolicy-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "service-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ networkpolicies:
+ - networkpolicy-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/pod-details.yaml b/templates/Sidebar/stock-instance-factory/pod-details.yaml
new file mode 100644
index 0000000..69dff5a
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/pod-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-pod-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "pod-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ pods:
+ - pods-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/poddisruptionbudget-details.yaml b/templates/Sidebar/stock-instance-factory/poddisruptionbudget-details.yaml
new file mode 100644
index 0000000..0587266
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/poddisruptionbudget-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-poddisruptionbudget-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "poddisruptionbudget-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ poddisruptionbudgets:
+ - poddisruptionbudget-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/replicaset-details.yaml b/templates/Sidebar/stock-instance-factory/replicaset-details.yaml
new file mode 100644
index 0000000..7c7b654
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/replicaset-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-replicaset-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "replicaset-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ replicasets:
+ - replicaset-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/replicationcontroller-details.yaml b/templates/Sidebar/stock-instance-factory/replicationcontroller-details.yaml
new file mode 100644
index 0000000..4d48b25
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/replicationcontroller-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-replicationcontroller-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "replicationcontroller-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ replicationcontrollers:
+ - replicationcontroller-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/role-details.yaml b/templates/Sidebar/stock-instance-factory/role-details.yaml
new file mode 100644
index 0000000..8de643f
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/role-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-role-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "role-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ roles:
+ - role-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/rolebinding-details.yaml b/templates/Sidebar/stock-instance-factory/rolebinding-details.yaml
new file mode 100644
index 0000000..326d800
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/rolebinding-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-rolebinding-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "rolebinding-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ rolebindings:
+ - rolebinding-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/secret-details.yaml b/templates/Sidebar/stock-instance-factory/secret-details.yaml
new file mode 100644
index 0000000..7a5c729
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/secret-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-secret-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "secret-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ secrets:
+ - secret-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/service-details.yaml b/templates/Sidebar/stock-instance-factory/service-details.yaml
new file mode 100644
index 0000000..5a9f4f9
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/service-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-service-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "service-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ services:
+ - service-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/serviceaccount-details.yaml b/templates/Sidebar/stock-instance-factory/serviceaccount-details.yaml
new file mode 100644
index 0000000..32731f8
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/serviceaccount-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-serviceaccount-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "serviceaccount-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ serviceaccounts:
+ - serviceaccount-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance-factory/statefulset-details.yaml b/templates/Sidebar/stock-instance-factory/statefulset-details.yaml
new file mode 100644
index 0000000..5fe3e49
--- /dev/null
+++ b/templates/Sidebar/stock-instance-factory/statefulset-details.yaml
@@ -0,0 +1,21 @@
+{{- $factoryID := "instance-statefulset-details" -}}
+{{ if .Values.namespaceNavigation }}
+ {{- $factoryID = "statefulset-details" -}}
+{{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-instance-factory-{{ $factoryID }}"
+spec:
+ id: "stock-instance-factory-{{ $factoryID }}"
+ keysAndTags:
+ statefulsets:
+ - statefulset-details
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-instance.yaml b/templates/Sidebar/stock-instance.yaml
index f755f4a..aa5b1dc 100644
--- a/templates/Sidebar/stock-instance.yaml
+++ b/templates/Sidebar/stock-instance.yaml
@@ -7,29 +7,63 @@ spec:
id: stock-instance-api-form
keysAndTags:
{{- if .Values.addons.hbf.enabled }}
+ hbf-hosts:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hosts"
+ hbf-hostbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hostbindings"
hbf-networks:
- - netguard.sgroups.io/v1beta1/networks
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networks"
hbf-addressgroups:
- - netguard.sgroups.io/v1beta1/addressgroups
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroups"
hbf-networkbindings:
- - netguard.sgroups.io/v1beta1/networkbindings
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networkbindings"
hbf-servicealiases:
- - netguard.sgroups.io/v1beta1/servicealiases
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/servicealiases"
hbf-services:
- - netguard.sgroups.io/v1beta1/services
- hbf-networks:
- - netguard.sgroups.io/v1beta1/networks
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/services"
hbf-addressgroupbindings:
- - netguard.sgroups.io/v1beta1/addressgroupbindings
- hbf-rules2ses:
- - netguard.sgroups.io/v1beta1/rules2s
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupbindings"
+ hbf-svcsvcrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcsvcrules"
+ hbf-svcfqdnrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcfqdnrules"
hbf-addressgroupportmappings:
- - netguard.sgroups.io/v1beta1/addressgroupportmappings
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupportmappings"
hbf-ieagagrules:
- - netguard.sgroups.io/v1beta1/ieagagrules
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/ieagagrules"
{{- end }}
+ deployments:
+ - apps/v1/deployments
+ statefulsets:
+ - apps/v1/statefulsets
+ daemonsets:
+ - apps/v1/daemonsets
+ cronjobs:
+ - batch/v1/cronjobs
+ jobs:
+ - batch/v1/jobs
+ replicasets:
+ - apps/v1/replicasets
+ horizontalpodautoscalers:
+ - autoscaling/v1/horizontalpodautoscalers
+ poddisruptionbudgets:
+ - policy/v1/poddisruptionbudgets
+ networkpolicies:
+ - networking.k8s.io/v1/networkpolicies
+ ingresses:
+ - networking.k8s.io/v1/ingresses
+ storageclasses:
+ - storage.k8s.io/v1/storageclasses
+ roles:
+ - rbac.authorization.k8s.io/v1/roles
+ rolebindings:
+ - rbac.authorization.k8s.io/v1/rolebindings
menuItems:
+ {{ if .Values.namespaceNavigation }}
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
---
apiVersion: front.in-cloud.io/v1alpha1
@@ -38,9 +72,12 @@ metadata:
name: stock-instance-api-table
spec:
id: stock-instance-api-table
-
menuItems:
+ {{ if .Values.namespaceNavigation }}
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
---
apiVersion: front.in-cloud.io/v1alpha1
@@ -72,8 +109,14 @@ spec:
- serviceaccounts
services:
- services
+ replicationcontrollers:
+ - replicationcontrollers
menuItems:
+ {{ if .Values.namespaceNavigation }}
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
---
apiVersion: front.in-cloud.io/v1alpha1
@@ -83,4 +126,75 @@ metadata:
spec:
id: stock-instance-builtin-table
menuItems:
+ {{ if .Values.namespaceNavigation }}
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: stock-instance-factory
+spec:
+ id: stock-instance-factory
+ keysAndTags:
+ {{- if .Values.addons.hbf.enabled }}
+ hbf-hosts:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hosts"
+ hbf-hostbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hostbindings"
+ hbf-networks:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networks"
+ hbf-addressgroups:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroups"
+ hbf-networkbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networkbindings"
+ hbf-servicealiases:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/servicealiases"
+ hbf-services:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/services"
+ hbf-addressgroupbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupbindings"
+ hbf-svcsvcrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcsvcrules"
+ hbf-svcfqdnrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcfqdnrules"
+ hbf-addressgroupportmappings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupportmappings"
+ hbf-ieagagrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/ieagagrules"
+ {{- end }}
+ deployments:
+ - apps/v1/deployments
+ statefulsets:
+ - apps/v1/statefulsets
+ daemonsets:
+ - apps/v1/daemonsets
+ cronjobs:
+ - batch/v1/cronjobs
+ jobs:
+ - batch/v1/jobs
+ replicasets:
+ - apps/v1/replicasets
+ horizontalpodautoscalers:
+ - autoscaling/v1/horizontalpodautoscalers
+ poddisruptionbudgets:
+ - policy/v1/poddisruptionbudgets
+ networkpolicies:
+ - networking.k8s.io/v1/networkpolicies
+ ingresses:
+ - networking.k8s.io/v1/ingresses
+ storageclasses:
+ - storage.k8s.io/v1/storageclasses
+ roles:
+ - rbac.authorization.k8s.io/v1/roles
+ rolebindings:
+ - rbac.authorization.k8s.io/v1/rolebindings
+ menuItems:
+ {{ if .Values.namespaceNavigation }}
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+ {{ else }}
+ {{ include "incloud-web-resources.sidebar.menu.items.instance" . | nindent 4 }}
+ {{ end }}
diff --git a/templates/Sidebar/stock-project-factory/argocd-application-details.yaml b/templates/Sidebar/stock-project-factory/argocd-application-details.yaml
index 81beb75..4e87551 100644
--- a/templates/Sidebar/stock-project-factory/argocd-application-details.yaml
+++ b/templates/Sidebar/stock-project-factory/argocd-application-details.yaml
@@ -8,7 +8,7 @@ spec:
id: stock-project-factory-argocd-application-details
keysAndTags:
argocd-application:
- - argocd-applications-sidebar
+ - argocd-applications-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
{{- end }}
diff --git a/templates/Sidebar/stock-project-factory/argocd-approject-details.yaml b/templates/Sidebar/stock-project-factory/argocd-approject-details.yaml
index aca24bd..5f7ce8b 100644
--- a/templates/Sidebar/stock-project-factory/argocd-approject-details.yaml
+++ b/templates/Sidebar/stock-project-factory/argocd-approject-details.yaml
@@ -8,7 +8,7 @@ spec:
id: stock-project-factory-argocd-appproject-details
keysAndTags:
argocd-appprojects:
- - argocd-appprojects-sidebar
+ - argocd-appprojects-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
{{- end }}
diff --git a/templates/Sidebar/stock-project-factory/certificate-details.yaml b/templates/Sidebar/stock-project-factory/certificate-details.yaml
new file mode 100644
index 0000000..a94a9b5
--- /dev/null
+++ b/templates/Sidebar/stock-project-factory/certificate-details.yaml
@@ -0,0 +1,12 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: stock-project-factory-certificate-details
+spec:
+ id: stock-project-factory-certificate-details
+ keysAndTags:
+ certificates:
+ - certificate-details
+ menuItems:
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/configmap-details.yaml b/templates/Sidebar/stock-project-factory/configmap-details.yaml
index 650d9af..5fe6a9c 100644
--- a/templates/Sidebar/stock-project-factory/configmap-details.yaml
+++ b/templates/Sidebar/stock-project-factory/configmap-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-configmap-details
keysAndTags:
configmaps:
- - configmap-sidebar
+ - configmap-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/cronjob-details.yaml b/templates/Sidebar/stock-project-factory/cronjob-details.yaml
index 68ddea3..bd4288f 100644
--- a/templates/Sidebar/stock-project-factory/cronjob-details.yaml
+++ b/templates/Sidebar/stock-project-factory/cronjob-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-cronjob-details
keysAndTags:
cronjobs:
- - cronjobs-sidebar
+ - cronjobs-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/daemonset-details.yaml b/templates/Sidebar/stock-project-factory/daemonset-details.yaml
index b4c118b..12d6991 100644
--- a/templates/Sidebar/stock-project-factory/daemonset-details.yaml
+++ b/templates/Sidebar/stock-project-factory/daemonset-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-daemonset-details
keysAndTags:
daemonsets:
- - daemonset-sidebar
+ - daemonset-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/deployment-details.yaml b/templates/Sidebar/stock-project-factory/deployment-details.yaml
index 676a2cf..841dcbc 100644
--- a/templates/Sidebar/stock-project-factory/deployment-details.yaml
+++ b/templates/Sidebar/stock-project-factory/deployment-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-deployment-details
keysAndTags:
deployments:
- - deployment-sidebar
+ - deployment-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/horizontalpodautoscalers-details.yaml b/templates/Sidebar/stock-project-factory/horizontalpodautoscalers-details.yaml
index 0e7e530..cbe1ebe 100644
--- a/templates/Sidebar/stock-project-factory/horizontalpodautoscalers-details.yaml
+++ b/templates/Sidebar/stock-project-factory/horizontalpodautoscalers-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-horizontalpodautoscaler-details
keysAndTags:
horizontalpodautoscalers:
- - horizontalpodautoscaler-sidebar
+ - horizontalpodautoscaler-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/job-details.yaml b/templates/Sidebar/stock-project-factory/job-details.yaml
index d5f6231..c0d9fbb 100644
--- a/templates/Sidebar/stock-project-factory/job-details.yaml
+++ b/templates/Sidebar/stock-project-factory/job-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-job-details
keysAndTags:
jobs:
- - job-sidebar
+ - job-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/networkpolicy-details.yaml b/templates/Sidebar/stock-project-factory/networkpolicy-details.yaml
new file mode 100644
index 0000000..a66efb9
--- /dev/null
+++ b/templates/Sidebar/stock-project-factory/networkpolicy-details.yaml
@@ -0,0 +1,12 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: "stock-project-factory-networkpolicy-details"
+spec:
+ id: "stock-project-factory-networkpolicy-details"
+ keysAndTags:
+ networkpolicies:
+ - networkpolicy-details
+ menuItems:
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/pod-details.yaml b/templates/Sidebar/stock-project-factory/pod-details.yaml
index b74cb75..1e3b8c0 100644
--- a/templates/Sidebar/stock-project-factory/pod-details.yaml
+++ b/templates/Sidebar/stock-project-factory/pod-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-pod-details
keysAndTags:
pods:
- - pods-sidebar
+ - pods-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/poddisruptionbudget-details.yaml b/templates/Sidebar/stock-project-factory/poddisruptionbudget-details.yaml
index 6ae1ed1..1ae82c8 100644
--- a/templates/Sidebar/stock-project-factory/poddisruptionbudget-details.yaml
+++ b/templates/Sidebar/stock-project-factory/poddisruptionbudget-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-poddisruptionbudget-details
keysAndTags:
poddisruptionbudgets:
- - poddisruptionbudget-sidebar
+ - poddisruptionbudget-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/project-details.yaml b/templates/Sidebar/stock-project-factory/project-details.yaml
new file mode 100644
index 0000000..6f2c7ff
--- /dev/null
+++ b/templates/Sidebar/stock-project-factory/project-details.yaml
@@ -0,0 +1,11 @@
+{{ if not .Values.namespaceNavigation }}
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: stock-project-factory-project-details
+spec:
+ id: stock-project-factory-project-details
+ menuItems:
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
+{{ end }}
diff --git a/templates/Sidebar/stock-project-factory/replicaset-details.yaml b/templates/Sidebar/stock-project-factory/replicaset-details.yaml
index 0c0f5bb..d2154cc 100644
--- a/templates/Sidebar/stock-project-factory/replicaset-details.yaml
+++ b/templates/Sidebar/stock-project-factory/replicaset-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-replicaset-details
keysAndTags:
replicasets:
- - replicaset-sidebar
+ - replicaset-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/replicationcontroller-details.yaml b/templates/Sidebar/stock-project-factory/replicationcontroller-details.yaml
index 9cf3512..84e253e 100644
--- a/templates/Sidebar/stock-project-factory/replicationcontroller-details.yaml
+++ b/templates/Sidebar/stock-project-factory/replicationcontroller-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-replicationcontroller-details
keysAndTags:
replicationcontrollers:
- - replicationcontroller-sidebar
+ - replicationcontroller-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/role-details.yaml b/templates/Sidebar/stock-project-factory/role-details.yaml
index db3b31d..d213eb1 100644
--- a/templates/Sidebar/stock-project-factory/role-details.yaml
+++ b/templates/Sidebar/stock-project-factory/role-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-role-details
keysAndTags:
roles:
- - role-sidebar
+ - role-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/rolebinding-details.yaml b/templates/Sidebar/stock-project-factory/rolebinding-details.yaml
index 55decd8..b5ae835 100644
--- a/templates/Sidebar/stock-project-factory/rolebinding-details.yaml
+++ b/templates/Sidebar/stock-project-factory/rolebinding-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-rolebinding-details
keysAndTags:
rolebindings:
- - rolebinding-sidebar
+ - rolebinding-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/secret-details.yaml b/templates/Sidebar/stock-project-factory/secret-details.yaml
index 4e03c06..89cb4e4 100644
--- a/templates/Sidebar/stock-project-factory/secret-details.yaml
+++ b/templates/Sidebar/stock-project-factory/secret-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-secret-details
keysAndTags:
secrets:
- - secret-sidebar
+ - secret-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/service-details.yaml b/templates/Sidebar/stock-project-factory/service-details.yaml
index 961bce3..e72a2aa 100644
--- a/templates/Sidebar/stock-project-factory/service-details.yaml
+++ b/templates/Sidebar/stock-project-factory/service-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-service-details
keysAndTags:
services:
- - service-sidebar
+ - service-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/serviceaccount-details.yaml b/templates/Sidebar/stock-project-factory/serviceaccount-details.yaml
index 09e744f..6eb64bd 100644
--- a/templates/Sidebar/stock-project-factory/serviceaccount-details.yaml
+++ b/templates/Sidebar/stock-project-factory/serviceaccount-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-serviceaccount-details
keysAndTags:
serviceaccounts:
- - serviceaccount-sidebar
+ - serviceaccount-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-project-factory/statefulset-details.yaml b/templates/Sidebar/stock-project-factory/statefulset-details.yaml
index 5c67084..114870f 100644
--- a/templates/Sidebar/stock-project-factory/statefulset-details.yaml
+++ b/templates/Sidebar/stock-project-factory/statefulset-details.yaml
@@ -7,6 +7,6 @@ spec:
id: stock-project-factory-statefulset-details
keysAndTags:
statefulsets:
- - statefulset-sidebar
+ - statefulset-details
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
\ No newline at end of file
diff --git a/templates/Sidebar/stock-project.yaml b/templates/Sidebar/stock-project.yaml
index 1028f4a..8971fff 100644
--- a/templates/Sidebar/stock-project.yaml
+++ b/templates/Sidebar/stock-project.yaml
@@ -7,27 +7,57 @@ spec:
id: stock-project-api-form
keysAndTags:
{{- if .Values.addons.hbf.enabled }}
+ hbf-hosts:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hosts"
+ hbf-hostbindings:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/hostbindings"
hbf-networks:
- - netguard.sgroups.io/v1beta1/networks
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networks"
hbf-addressgroups:
- - netguard.sgroups.io/v1beta1/addressgroups
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroups"
hbf-networkbindings:
- - netguard.sgroups.io/v1beta1/networkbindings
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/networkbindings"
hbf-servicealiases:
- - netguard.sgroups.io/v1beta1/servicealiases
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/servicealiases"
hbf-services:
- - netguard.sgroups.io/v1beta1/services
- hbf-networks:
- - netguard.sgroups.io/v1beta1/networks
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/services"
hbf-addressgroupbindings:
- - netguard.sgroups.io/v1beta1/addressgroupbindings
- hbf-rules2ses:
- - netguard.sgroups.io/v1beta1/rules2s
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupbindings"
+ hbf-svcsvcrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcsvcrules"
+ hbf-svcfqdnrules:
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/svcfqdnrules"
hbf-addressgroupportmappings:
- - netguard.sgroups.io/v1beta1/addressgroupportmappings
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/addressgroupportmappings"
hbf-ieagagrules:
- - netguard.sgroups.io/v1beta1/ieagagrules
+ - "netguard.sgroups.io/{{ .Values.addons.hbf.apiVersion }}/ieagagrules"
{{- end }}
+ deployments:
+ - apps/v1/deployments
+ statefulsets:
+ - apps/v1/statefulsets
+ daemonsets:
+ - apps/v1/daemonsets
+ cronjobs:
+ - batch/v1/cronjobs
+ jobs:
+ - batch/v1/jobs
+ replicasets:
+ - apps/v1/replicasets
+ horizontalpodautoscalers:
+ - autoscaling/v1/horizontalpodautoscalers
+ poddisruptionbudgets:
+ - policy/v1/poddisruptionbudgets
+ networkpolicies:
+ - networking.k8s.io/v1/networkpolicies
+ ingresses:
+ - networking.k8s.io/v1/ingresses
+ storageclasses:
+ - storage.k8s.io/v1/storageclasses
+ roles:
+ - rbac.authorization.k8s.io/v1/roles
+ rolebindings:
+ - rbac.authorization.k8s.io/v1/rolebindings
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
@@ -71,6 +101,8 @@ spec:
- serviceaccounts
services:
- services
+ replicationcontrollers:
+ - replicationcontrollers
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
@@ -83,23 +115,3 @@ spec:
id: stock-project-builtin-table
menuItems:
{{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
-
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Sidebar
-metadata:
- name: stock-project-crd-form
-spec:
- id: stock-project-crd-form
- menuItems:
- {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
-
----
-apiVersion: front.in-cloud.io/v1alpha1
-kind: Sidebar
-metadata:
- name: stock-project-crd-table
-spec:
- id: stock-project-crd-table
- menuItems:
- {{ include "incloud-web-resources.sidebar.menu.items.namespaced" . | nindent 4 }}
diff --git a/templates/Sidebar/stock-search.yaml b/templates/Sidebar/stock-search.yaml
new file mode 100644
index 0000000..14e2b6f
--- /dev/null
+++ b/templates/Sidebar/stock-search.yaml
@@ -0,0 +1,22 @@
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: stock-cluster-search-page
+spec:
+ id: stock-cluster-search-page
+ menuItems:
+ {{ include "incloud-web-resources.sidebar.menu.items.cluster-items" . | nindent 4 }}
+
+---
+apiVersion: front.in-cloud.io/v1alpha1
+kind: Sidebar
+metadata:
+ name: stock-namespace-search-page
+spec:
+ id: stock-namespace-search-page
+ keysAndTags:
+ search:
+ - search
+ menuItems:
+ {{ include "incloud-web-resources.sidebar.menu.items.namespaced-items" . | nindent 4 }}
diff --git a/templates/TableUriMapping/apiextensions.k8s.io.v1.crd.yaml b/templates/TableUriMapping/apiextensions.k8s.io.v1.crd.yaml
deleted file mode 100644
index 70672c0..0000000
--- a/templates/TableUriMapping/apiextensions.k8s.io.v1.crd.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-crd-details
-# spec:
-# keysToParse: ".metadata.name"
-# id: "stock-cluster-/apiextensions.k8s.io/v1/customresourcedefinitions"
-# pathToNavigate: "/openapi-ui/{clusterName}/factory/crd-details/~recordValue~"
diff --git a/templates/TableUriMapping/apps.v1.daemonset.yaml b/templates/TableUriMapping/apps.v1.daemonset.yaml
deleted file mode 100644
index a7d6f99..0000000
--- a/templates/TableUriMapping/apps.v1.daemonset.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-apps.v1.daemonsets
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/apps/v1/daemonsets"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/daemonset-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-apps.v1.daemonsets
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/apps/v1/daemonsets"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/daemonset-details/~recordValue~"
-
diff --git a/templates/TableUriMapping/apps.v1.deployments.yaml b/templates/TableUriMapping/apps.v1.deployments.yaml
deleted file mode 100644
index 065e251..0000000
--- a/templates/TableUriMapping/apps.v1.deployments.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-apps.v1.deployments
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/apps/v1/deployments"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/deployment-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-apps.v1.deployments
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/apps/v1/deployments"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/deployment-details/~recordValue~"
diff --git a/templates/TableUriMapping/apps.v1.replicaset.yaml b/templates/TableUriMapping/apps.v1.replicaset.yaml
deleted file mode 100644
index 3ab791a..0000000
--- a/templates/TableUriMapping/apps.v1.replicaset.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-apps.v1.replicasets
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/apps/v1/replicasets"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/replicaset-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-apps.v1.replicasets
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/apps/v1/replicasets"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/replicaset-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: factory-apps.v1.replicasets
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "factory-/apps/v1/replicasets"
-# pathToNavigate: "/openapi-ui/{2}/~recordValueSecond~/factory/replicaset-details/~recordValue~"
diff --git a/templates/TableUriMapping/apps.v1.replicationcontroller.yaml b/templates/TableUriMapping/apps.v1.replicationcontroller.yaml
deleted file mode 100644
index 4b69635..0000000
--- a/templates/TableUriMapping/apps.v1.replicationcontroller.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-apps.v1.replicationcontrollers
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/v1/replicationcontrollers"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/replicationcontroller-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-apps.v1.replicationcontrollers
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/v1/replicationcontrollers"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/replicationcontroller-details/~recordValue~"
diff --git a/templates/TableUriMapping/apps.v1.statefulsets.yaml b/templates/TableUriMapping/apps.v1.statefulsets.yaml
deleted file mode 100644
index 807a169..0000000
--- a/templates/TableUriMapping/apps.v1.statefulsets.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-apps.v1.statefulsets
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/apps/v1/statefulsets"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/statefulset-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-apps.v1.statefulsets
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/apps/v1/statefulsets"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/statefulset-details/~recordValue~"
diff --git a/templates/TableUriMapping/argoproj.io.v1alpha1.applications.yaml b/templates/TableUriMapping/argoproj.io.v1alpha1.applications.yaml
deleted file mode 100644
index d73f55c..0000000
--- a/templates/TableUriMapping/argoproj.io.v1alpha1.applications.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-# {{- if .Values.addons.argocd.enabled }}
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: "stock-cluster-default-argoproj.io.v1alpha1.applications"
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/argoproj.io/v1alpha1/applications"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/argocd-application-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: "stock-namespace-default-argoproj.io.v1alpha1.applications"
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/argoproj.io/v1alpha1/applications"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/argocd-application-details/~recordValue~"
-# {{- end }}
\ No newline at end of file
diff --git a/templates/TableUriMapping/argoproj.io.v1alpha1.projects.yaml b/templates/TableUriMapping/argoproj.io.v1alpha1.projects.yaml
deleted file mode 100644
index c15954e..0000000
--- a/templates/TableUriMapping/argoproj.io.v1alpha1.projects.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-# {{- if .Values.addons.argocd.enabled }}
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: "stock-cluster-default-argoproj.io.v1alpha1.appprojects"
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/argoproj.io/v1alpha1/appprojects"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/argocd-appproject-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: "stock-namespace-default-argoproj.io.v1alpha1.appprojects"
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/argoproj.io/v1alpha1/appprojects"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/argocd-appproject-details/~recordValue~"
-# {{- end -}}
\ No newline at end of file
diff --git a/templates/TableUriMapping/batch.v1.cronjobs.yaml b/templates/TableUriMapping/batch.v1.cronjobs.yaml
deleted file mode 100644
index ab878c7..0000000
--- a/templates/TableUriMapping/batch.v1.cronjobs.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-batch.v1.cronjobs
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/batch/v1/cronjobs"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/cronjob-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-batch.v1.cronjobs
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/batch/v1/cronjobs"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/cronjob-details/~recordValue~"
diff --git a/templates/TableUriMapping/batch.v1.jobs.yaml b/templates/TableUriMapping/batch.v1.jobs.yaml
deleted file mode 100644
index c61fcfa..0000000
--- a/templates/TableUriMapping/batch.v1.jobs.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-batch.v1.jobs
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/batch/v1/jobs"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/job-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-batch.v1.jobs
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/batch/v1/jobs"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/job-details/~recordValue~"
diff --git a/templates/TableUriMapping/v1.services.yaml b/templates/TableUriMapping/example.yaml
similarity index 67%
rename from templates/TableUriMapping/v1.services.yaml
rename to templates/TableUriMapping/example.yaml
index 59f677b..f2e6f38 100644
--- a/templates/TableUriMapping/v1.services.yaml
+++ b/templates/TableUriMapping/example.yaml
@@ -7,7 +7,7 @@
# keysToParse: ".metadata.name"
# keysToParseSecond: ".metadata.namespace"
# id: "stock-cluster-/v1/services"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/service-details/~recordValue~"
+# pathToNavigate: "/{{ .Values.basePrefix }}/{clusterName}/~recordValueSecond~/factory/service-details/~recordValue~"
# ---
# apiVersion: front.in-cloud.io/v1alpha1
@@ -18,4 +18,4 @@
# keysToParse: ".metadata.name"
# keysToParseSecond: ".metadata.namespace"
# id: "stock-namespace-/v1/services"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/service-details/~recordValue~"
+# pathToNavigate: "/{{ .Values.basePrefix }}/{clusterName}/~recordValueSecond~/factory/service-details/~recordValue~"
diff --git a/templates/TableUriMapping/rbac.authorization.k8s.io.v1.clusterrolebindings.yaml b/templates/TableUriMapping/rbac.authorization.k8s.io.v1.clusterrolebindings.yaml
deleted file mode 100644
index 785a305..0000000
--- a/templates/TableUriMapping/rbac.authorization.k8s.io.v1.clusterrolebindings.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-clusterrolebinding-details
-# spec:
-# keysToParse: ".metadata.name"
-# id: "stock-cluster-/rbac.authorization.k8s.io/v1/clusterrolebindings"
-# pathToNavigate: "/openapi-ui/{clusterName}/factory/clusterrolebinding-details/~recordValue~"
diff --git a/templates/TableUriMapping/rbac.authorization.k8s.io.v1.clusterroles.yaml b/templates/TableUriMapping/rbac.authorization.k8s.io.v1.clusterroles.yaml
deleted file mode 100644
index caf6a21..0000000
--- a/templates/TableUriMapping/rbac.authorization.k8s.io.v1.clusterroles.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-clusterrole-details
-# spec:
-# keysToParse: ".metadata.name"
-# id: "stock-cluster-/rbac.authorization.k8s.io/v1/clusterroles"
-# pathToNavigate: "/openapi-ui/{clusterName}/factory/clusterrole-details/~recordValue~"
diff --git a/templates/TableUriMapping/rbac.authorization.k8s.io.v1.rolebindings.yaml b/templates/TableUriMapping/rbac.authorization.k8s.io.v1.rolebindings.yaml
deleted file mode 100644
index c904be2..0000000
--- a/templates/TableUriMapping/rbac.authorization.k8s.io.v1.rolebindings.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-rolebinding-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/rbac.authorization.k8s.io/v1/rolebindings"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/rolebinding-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-rolebinding-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/rbac.authorization.k8s.io/v1/rolebindings"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/rolebinding-details/~recordValue~"
diff --git a/templates/TableUriMapping/rbac.authorization.k8s.io.v1.roles.yaml b/templates/TableUriMapping/rbac.authorization.k8s.io.v1.roles.yaml
deleted file mode 100644
index 9e91a94..0000000
--- a/templates/TableUriMapping/rbac.authorization.k8s.io.v1.roles.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-role-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/rbac.authorization.k8s.io/v1/roles"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/role-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-role-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/rbac.authorization.k8s.io/v1/roles"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/role-details/~recordValue~"
diff --git a/templates/TableUriMapping/v1.configmaps.yaml b/templates/TableUriMapping/v1.configmaps.yaml
deleted file mode 100644
index 910347e..0000000
--- a/templates/TableUriMapping/v1.configmaps.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-configmap-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/v1/configmaps"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/configmap-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-configmap-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/v1/configmaps"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/configmap-details/~recordValue~"
diff --git a/templates/TableUriMapping/v1.namespaces.yaml b/templates/TableUriMapping/v1.namespaces.yaml
deleted file mode 100644
index 425524c..0000000
--- a/templates/TableUriMapping/v1.namespaces.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-namespace-details
-# spec:
-# keysToParse: ".metadata.name"
-# id: "stock-cluster-/v1/namespaces"
-# pathToNavigate: "/openapi-ui/{clusterName}/factory/namespace-details/~recordValue~"
diff --git a/templates/TableUriMapping/v1.nodes.yaml b/templates/TableUriMapping/v1.nodes.yaml
deleted file mode 100644
index 01eabfd..0000000
--- a/templates/TableUriMapping/v1.nodes.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-node-details
-# spec:
-# keysToParse: ".metadata.name"
-# id: "stock-cluster-/v1/nodes"
-# pathToNavigate: "/openapi-ui/{clusterName}/factory/node-details/~recordValue~"
diff --git a/templates/TableUriMapping/v1.pods.yaml b/templates/TableUriMapping/v1.pods.yaml
deleted file mode 100644
index f2d6b67..0000000
--- a/templates/TableUriMapping/v1.pods.yaml
+++ /dev/null
@@ -1,54 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-pod-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/v1/pods"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/pod-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-pod-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/v1/pods"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/pod-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: factory-node-details-table-pods
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "factory-node-details-/v1/pods"
-# pathToNavigate: "/openapi-ui/{2}/~recordValueSecond~/factory/pod-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: factory-service-details-endpointslice
-# spec:
-# keysToParse: ".targetRef.name"
-# keysToParseSecond: ".targetRef.namespace"
-# id: "factory-service-details-endpointslice"
-# pathToNavigate: "/openapi-ui/{2}/~recordValueSecond~/factory/pod-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: "factory-v1.pods"
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "factory-/v1/pods"
-# pathToNavigate: "/openapi-ui/{2}/~recordValueSecond~/factory/pod-details/~recordValue~"
diff --git a/templates/TableUriMapping/v1.secrets.yaml b/templates/TableUriMapping/v1.secrets.yaml
deleted file mode 100644
index 26781e9..0000000
--- a/templates/TableUriMapping/v1.secrets.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-secret-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/v1/secrets"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/secret-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-secret-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/v1/secrets"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/secret-details/~recordValue~"
diff --git a/templates/TableUriMapping/v1.serviceaccounts.yaml b/templates/TableUriMapping/v1.serviceaccounts.yaml
deleted file mode 100644
index 9d1c12a..0000000
--- a/templates/TableUriMapping/v1.serviceaccounts.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-cluster-serviceaccount-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-cluster-/v1/serviceaccounts"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/serviceaccount-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: stock-namespace-serviceaccount-details
-# spec:
-# keysToParse: ".metadata.name"
-# keysToParseSecond: ".metadata.namespace"
-# id: "stock-namespace-/v1/serviceaccounts"
-# pathToNavigate: "/openapi-ui/{clusterName}/~recordValueSecond~/factory/serviceaccount-details/~recordValue~"
-
-# ---
-# apiVersion: front.in-cloud.io/v1alpha1
-# kind: TableUriMapping
-# metadata:
-# name: factory-serviceaccount-secrets
-# spec:
-# keysToParse: ".metadata.name"
-# id: "factory-serviceaccount-secrets"
-# pathToNavigate: "/openapi-ui/{2}/{3}/factory/secret-details/~recordValue~"
diff --git a/values.yaml b/values.yaml
index 20ef0d9..b91153f 100644
--- a/values.yaml
+++ b/values.yaml
@@ -1,10 +1,504 @@
+# In-Cloud Web Interface Helm Chart Values
+# This file configures the In-Cloud web interface for Kubernetes resource management
+# The interface supports two navigation modes: classic namespace-based and project/instance-based
+
+# Base URL prefix configured for the incloud-web application
+# This prefix will be used in all application routes
+basePrefix: openapi-ui
+
+# Navigation mode selection for the In-Cloud interface
+# true: Classic namespace-based navigation (Cluster/Namespace resources)
+# false: Project/Instance based navigation (Project as parent resource, Instance as child resource)
+# When using project/instance mode, instances create namespaces with matching names
+namespaceNavigation: true
+
+# Project resource configuration
+# Defines the custom resource definition for Projects when using project/instance mode
+projectResource:
+ # API group for the Project custom resource
+ apiGroup: in-cloud.io
+ # API version for the Project custom resource
+ apiVersion: v1alpha1
+ # Plural resource name for the Project custom resource
+ resourceName: projects
+ # Enable deployment of frontend forms for Project resource navigation
+ # When true, the UI will provide default forms for Project management
+ # Required resource structure for custom resources:
+ # - metadata.name: Project name
+ # - spec.businessName: Business display name
+ # - spec.description: Project description
+ # - spec.prefix: Short project identifier
+ deployDefaultForms: true
+ # Factory settings for Project creation and management pages
+ factory:
+ # List of available OIDC groups for user access management
+ # These groups are used for configuring user permissions within projects
+ accessGroups:
+ - group-1
+ - group-2
+ - group-3
+ # Developer tools links displayed in the project interface
+ # Each tool provides quick access to development infrastructure components
+ devTools:
+ - name: ArgoCD
+ link: "/argocd"
+ - name: Nexus
+ link: "/nexus"
+ - name: Monitoring
+ link: "/grafana"
+ - name: Gitlab
+ link: "/gitlab"
+ - name: Harbor
+ link: "/harbor"
+ - name: OpenSearch
+ link: "/opensearch"
+ - name: Vault
+ link: "/vault"
+
+# Instance resource configuration
+# Defines the custom resource definition for Instances when using project/instance mode
+# Instances are child resources of Projects and create corresponding namespaces
+instanceResource:
+ # API group for the Instance custom resource
+ apiGroup: in-cloud.io
+ # API version for the Instance custom resource
+ apiVersion: v1alpha1
+ # Plural resource name for the Instance custom resource
+ resourceName: instances
+ # Enable deployment of frontend forms for Instance resource navigation
+ # When true, the UI will provide default forms for Instance management
+ # Required resource structure for custom resources:
+ # - metadata.name: Instance name
+ # - spec.description: Instance description
+ deployDefaultForms: true
+ # Namespace naming pattern for instances
+ # Defines how instance namespaces are generated when using project/instance mode
+ # Default pattern: {projectName}-{instanceName}
+ # Supports JSONPath expressions for dynamic namespace generation
+ instanceNamespaceNavigationPattern: "{reqsJsonPath[0]['.metadata.namespace']}-{reqsJsonPath[0]['.metadata.name']}"
+
+# Addons configuration
+# Enable/disable and configure additional integrated tools and features
addons:
+ # ArgoCD - GitOps continuous delivery tool
+ # Provides management for Applications, ApplicationSets, and Projects
argocd:
enabled: false
+ # HostBase Firewall (HBF) - Network security management
+ # See more: https://h-bf.prorobotech.ru
hbf:
enabled: false
apiVersion: v1beta1
+ # Trivy - Vulnerability scanner for container images
+ # Provides security scanning and reporting capabilities
trivy:
enabled: false
+ # Grafana - Monitoring and observability dashboard
+ # Provides links to monitoring infrastructure
grafana:
- enabled: false
\ No newline at end of file
+ enabled: false
+
+# Sidebar navigation configuration
+# Controls the visibility and content of navigation sidebars at different hierarchy levels
+sidebars:
+ # Cluster-level sidebar (when no namespace/project context is selected)
+ # Displays global cluster resources and overview
+ cluster:
+ # Configuration for custom sidebar navigation items
+ # customItems allows you to define additional sidebar sections with custom structure
+ #
+ # Each item should be structured as:
+ # - key: unique-identifier # Unique key for the sidebar section
+ # label: "Display Name" # Display text (supports URL templating)
+ # children: # Optional nested items array
+ # - key: child-unique-id
+ # label: "Child Name"
+ # link: /openapi-ui/{clusterName}/api-table/apiGroup/apiVersion/resourceName
+ # - key: child-unique-id
+ # label: "Child Name"
+ # link: /openapi-ui/{2}/api-table/apiGroup/apiVersion/resourceName
+ # URL Templating in labels:
+ # Use {n} pattern to insert URL path segments, where n is the segment index (1-based)
+ # Example paths:
+ # /openapi-ui/cluster-name/builtin-table/namespaces
+ # {1} = "openapi-ui", {2} = "cluster-name", {3} = "builtin-table", {4} = "namespaces"
+ # {clusterName} = "cluster-name"
+ customItems: []
+ # Search sidebar section
+ search:
+ enabled: true
+ # Built-in sidebar sections configuration
+ clusters:
+ enabled: false
+ projects:
+ enabled: true
+ instances:
+ enabled: false
+
+ # ArgoCD sidebar section and sub-items
+ argocd:
+ enabled: true
+ items:
+ argocdlink: false # Link to ArgoCD UI
+ applications: true # ArgoCD Applications
+ applicationset: true # ArgoCD ApplicationSets
+ appprojects: true # ArgoCD Projects
+ extraItems: [] # Additional custom ArgoCD items
+
+ # Monitoring tools section
+ monitoring:
+ enabled: true
+ items:
+ grafana: true # Grafana dashboard links
+ extraItems: []
+
+ # HostBase Firewall management section
+ hbf:
+ enabled: true
+ items:
+ hosts: true
+ networks: true
+ addressgroups: true
+ services: true
+ svcsvcrules: true
+ svcfqdnrules: true
+ extraItems: []
+
+ # HBF system configuration section
+ hbfSystem:
+ enabled: true
+ items:
+ hostbindings: true
+ networkbindings: true
+ addressgroupbindings: true
+ addressgroupportmappings: true
+ extraItems: []
+
+ # Workloads management section
+ workloads:
+ enabled: true
+ items:
+ pods: true
+ deployments: true
+ statefulsets: true
+ secrets: true
+ configmaps: true
+ cronjobs: true
+ jobs: true
+ daemonsets: true
+ replicasets: true
+ replicationcontrollers: true
+ horizontalpodautoscalers: true # HPA configurations
+ poddisruptionbudgets: true # PDB configurations
+ extraItems: []
+
+ # Networking resources section
+ networking:
+ enabled: true
+ items:
+ services: true
+ networkpolicies: true
+ ingresses: true
+ extraItems: []
+
+ # Storage resources section
+ storage:
+ enabled: true
+ items:
+ persistentvolumes: true # Cluster-wide PVs
+ persistentvolumeclaims: true # Namespace-scoped PVCs
+ storageclasses: true # Storage classes
+ extraItems: []
+
+ # Compute resources section
+ compute:
+ enabled: true
+ items:
+ nodes: true # Cluster nodes
+ extraItems: []
+
+ # User and access management section
+ usermanagement:
+ enabled: true
+ items:
+ serviceaccounts: true # Namespace-scoped service accounts
+ roles: true # Namespace-scoped roles
+ rolebindings: true # Namespace-scoped role bindings
+ clusterroles: true # Cluster-wide roles
+ clusterrolebindings: true # Cluster-wide role bindings
+ extraItems: []
+
+ # Cluster administration section
+ administration:
+ enabled: true
+ items:
+ namespaces: true # Namespace management
+ limitranges: true # Resource limits
+ resourcequotas: true # Resource quotas
+ customresourcedefinitions: true # CRD management
+ extraItems: []
+
+ # Namespaced-level sidebar (when namespace or project context is selected)
+ # Displays resources scoped to the selected namespace/project
+ namespaced:
+ # Configuration for custom sidebar navigation items
+ # customItems allows you to define additional sidebar sections with custom structure
+ #
+ # Each item should be structured as:
+ # - key: unique-identifier # Unique key for the sidebar section
+ # label: "Display Name" # Display text (supports URL templating)
+ # children: # Optional nested items array
+ # - key: child-unique-id
+ # label: "Child Name"
+ # link: /openapi-ui/{clusterName}/{namespace}/api-table/apiGroup/apiVersion/resourceName
+ # - key: child-unique-id
+ # label: "Child Name"
+ # link: /openapi-ui/{2}/{3}/api-table/apiGroup/apiVersion/resourceName
+ # URL Templating in labels:
+ # Use {n} pattern to insert URL path segments, where n is the segment index (1-based)
+ # Example paths:
+ # /openapi-ui/cluster-name/namespace/builtin-table/pods
+ # {1} = "openapi-ui", {2} = "cluster-name", {3} = "namespace", etc.
+ # {clusterName} = "cluster-name"
+ # {namespace} = "namespace"
+ customItems: []
+ # Search sidebar section
+ search:
+ enabled: true
+
+ # Built-in sidebar sections for namespaced context
+ projects:
+ enabled: false
+
+ instances:
+ enabled: true
+
+ # ArgoCD resources within the namespace/project
+ argocd:
+ enabled: true
+ items:
+ applications: true
+ applicationset: true
+ appprojects: true
+ extraItems: []
+
+ # HBF resources within the namespace
+ hbf:
+ enabled: true
+ items:
+ hosts: true
+ networks: true
+ addressgroups: true
+ services: true
+ svcsvcrules: true
+ svcfqdnrules: true
+ extraItems: []
+
+ # HBF system resources within the namespace
+ hbfSystem:
+ enabled: true
+ items:
+ hostbindings: true
+ networkbindings: true
+ ieagagrules: true
+ servicealiases: true
+ addressgroupbindings: true
+ addressgroupportmappings: true
+ extraItems: []
+
+ # Workloads within the namespace
+ workloads:
+ enabled: true
+ items:
+ pods: true
+ deployments: true
+ statefulsets: true
+ secrets: true
+ configmaps: true
+ cronjobs: true
+ jobs: true
+ daemonsets: true
+ replicasets: true
+ replicationcontrollers: true
+ horizontalpodautoscalers: true
+ poddisruptionbudgets: true
+ extraItems: []
+
+ # Networking within the namespace
+ networking:
+ enabled: true
+ items:
+ services: true
+ networkpolicies: true
+ ingresses: true
+ extraItems: []
+
+ # Storage resources within the namespace
+ storage:
+ enabled: true
+ items:
+ persistentvolumes: true
+ persistentvolumeclaims: true # Namespace-scoped PVCs
+ storageclasses: true
+ extraItems: []
+
+ # Compute resources (typically cluster-scoped, but visible in context)
+ compute:
+ enabled: true
+ items:
+ nodes: true
+ extraItems: []
+
+ # User management within the namespace
+ usermanagement:
+ enabled: true
+ items:
+ serviceaccounts: true # Namespace-scoped service accounts
+ roles: true # Namespace-scoped roles
+ rolebindings: true # Namespace-scoped role bindings
+ clusterroles: true # Cluster-wide roles (visible in context)
+ clusterrolebindings: true # Cluster-wide bindings (visible in context)
+ extraItems: []
+
+ # Administration within the namespace
+ administration:
+ enabled: true
+ items:
+ namespaces: true # Current namespace management
+ limitranges: true # Namespace resource limits
+ resourcequotas: true # Namespace resource quotas
+ customresourcedefinitions: true # CRDs (cluster-wide but visible)
+ extraItems: []
+
+ # Instance-level sidebar (when instance context is selected)
+ # Displays resources specific to the selected instance and its namespace
+ instance:
+ # Configuration for custom sidebar navigation items
+ # customItems allows you to define additional sidebar sections with custom structure
+ #
+ # Each item should be structured as:
+ # - key: unique-identifier # Unique key for the sidebar section
+ # label: "Display Name" # Display text (supports URL templating)
+ # children: # Optional nested items array
+ # - key: child-unique-id
+ # label: "Child Name"
+ # link: /openapi-ui/{clusterName}/{namespace}/{syntheticProject}/api-table/apiGroup/apiVersion/resourceName
+ # - key: child-unique-id
+ # label: "Child Name"
+ # link: /openapi-ui/{2}/{3}/{4}/api-table/apiGroup/apiVersion/resourceName
+ # URL Templating in labels:
+ # Use {n} pattern to insert URL path segments, where n is the segment index (1-based)
+ # Example paths:
+ # /openapi-ui/cluster-name/namespace/project-name/builtin-table/pods
+ # {1} = "openapi-ui", {2} = "cluster-name", {3} = "namespace", etc.
+ # {clusterName} = "cluster-name"
+ # {namespace} = "namespace"
+ # {syntheticProject} = "project-name"
+ customItems: []
+ # Search sidebar section
+ search:
+ enabled: true
+
+ # Built-in sidebar sections for instance context
+ projects:
+ enabled: false
+
+ instances:
+ enabled: false
+
+ # ArgoCD resources for the instance
+ argocd:
+ enabled: true
+ items:
+ applications: true
+ applicationset: true
+ appprojects: true
+ extraItems: []
+
+ # HBF resources for the instance
+ hbf:
+ enabled: true
+ items:
+ hosts: true
+ networks: true
+ addressgroups: true
+ services: true
+ svcsvcrules: true
+ svcfqdnrules: true
+ extraItems: []
+
+ # HBF system resources for the instance
+ hbfSystem:
+ enabled: true
+ items:
+ hostbindings: true
+ networkbindings: true
+ ieagagrules: true
+ servicealiases: true
+ addressgroupbindings: true
+ addressgroupportmappings: true
+ extraItems: []
+
+ # Workloads within the instance namespace
+ workloads:
+ enabled: true
+ items:
+ pods: true
+ deployments: true
+ statefulsets: true
+ secrets: true
+ configmaps: true
+ cronjobs: true
+ jobs: true
+ daemonsets: true
+ replicasets: true
+ replicationcontrollers: true
+ horizontalpodautoscalers: true
+ poddisruptionbudgets: true
+ extraItems: []
+
+ # Networking within the instance namespace
+ networking:
+ enabled: true
+ items:
+ services: true
+ networkpolicies: true
+ ingresses: true
+ extraItems: []
+
+ # Storage resources for the instance
+ storage:
+ enabled: true
+ items:
+ persistentvolumes: true # Typically cluster-scoped
+ persistentvolumeclaims: true # Instance namespace PVCs
+ storageclasses: true # Typically cluster-scoped
+ extraItems: []
+
+ # Compute resources (cluster-scoped but visible)
+ compute:
+ enabled: true
+ items:
+ nodes: true
+ extraItems: []
+
+ # User management for the instance namespace
+ usermanagement:
+ enabled: true
+ items:
+ serviceaccounts: true # Instance namespace service accounts
+ roles: true # Instance namespace roles
+ rolebindings: true # Instance namespace role bindings
+ clusterroles: true # Typically not instance-scoped
+ clusterrolebindings: true # Typically not instance-scoped
+ extraItems: []
+
+ # Administration for the instance namespace
+ administration:
+ enabled: true
+ items:
+ namespaces: true # Instance uses existing namespace
+ limitranges: true # Instance namespace limits
+ resourcequotas: true # Instance namespace quotas
+ customresourcedefinitions: true # Typically cluster-scoped
+ extraItems: []
diff --git a/web.yml b/web.yml
new file mode 100644
index 0000000..46d635a
--- /dev/null
+++ b/web.yml
@@ -0,0 +1,47 @@
+---
+apiVersion: argoproj.io/v1alpha1
+kind: Application
+metadata:
+ name: incloud-web
+ namespace: incloud-argocd
+spec:
+ project: default
+ source:
+ repoURL: https://github.com/PRO-Robotech/incloud-web-chart.git
+ targetRevision: dev
+ path: .
+ helm:
+ values: |-
+ incloud-web-resources:
+ enabled: false
+ destination:
+ server: https://kubernetes.default.svc
+ namespace: incloud-web
+ syncPolicy:
+ syncOptions:
+ - CreateNamespace=true
+
+---
+apiVersion: argoproj.io/v1alpha1
+kind: Application
+metadata:
+ name: incloud-web-resources
+ namespace: incloud-argocd
+spec:
+ project: default
+ source:
+ repoURL: https://github.com/PRO-Robotech/incloud-web-resources.git
+ targetRevision: dev
+ path: .
+ helm:
+ values: |-
+ addons:
+ hbf:
+ enabled: true
+ apiVersion: v1beta1
+ destination:
+ server: https://kubernetes.default.svc
+ namespace: incloud-web
+ syncPolicy:
+ syncOptions:
+ - CreateNamespace=true
\ No newline at end of file