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