From 1883f7735c30a9e4eeda25ef46e57918c8ad87f8 Mon Sep 17 00:00:00 2001 From: Arnob Kumar Saha Date: Wed, 20 May 2026 11:55:37 +0600 Subject: [PATCH 1/9] cassandra Signed-off-by: Arnob Kumar Saha --- .../kubedb.com/v1alpha2/cassandras.yaml | 105 +++++++++++++ .../kubedb.com/v1alpha2/cassandras.yaml | 19 ++- .../kubedb.com/v1alpha2/cassandras.yaml | 68 +++++++++ .../v1alpha2/kubedb/cassandras.yaml | 30 ++-- plan.md | 144 ++++++++++++++++++ 5 files changed, 344 insertions(+), 22 deletions(-) create mode 100644 hub/resourceblockdefinitions/kubedb.com/v1alpha2/cassandras.yaml create mode 100644 hub/resourceoutlines/kubedb.com/v1alpha2/cassandras.yaml create mode 100644 plan.md diff --git a/hub/resourceblockdefinitions/kubedb.com/v1alpha2/cassandras.yaml b/hub/resourceblockdefinitions/kubedb.com/v1alpha2/cassandras.yaml new file mode 100644 index 000000000..f1cb8fa9c --- /dev/null +++ b/hub/resourceblockdefinitions/kubedb.com/v1alpha2/cassandras.yaml @@ -0,0 +1,105 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceBlockDefinition +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Cassandra + k8s.io/resource: cassandras + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-cassandras +spec: + blocks: + - actions: + create: Never + displayMode: List + kind: Connection + name: Client Connections + query: + byLabel: connect_via + type: GraphQL + ref: + group: appcatalog.appscode.com + kind: AppBinding + - actions: + create: Never + displayMode: List + kind: Connection + name: Cassandra Version + query: + byLabel: catalog + type: GraphQL + ref: + group: catalog.kubedb.com + kind: CassandraVersion + - actions: + create: Never + displayMode: List + kind: Connection + name: PetSets + query: + byLabel: offshoot + type: GraphQL + ref: + group: apps.k8s.appscode.com + kind: PetSet + - actions: + create: Never + displayMode: List + kind: Connection + name: Pods + query: + byLabel: offshoot + type: GraphQL + ref: + group: "" + kind: Pod + - actions: + create: Never + displayMode: List + kind: Connection + name: Services + query: + byLabel: exposed_by + type: GraphQL + ref: + group: "" + kind: Service + - actions: + create: Never + displayMode: List + kind: Connection + name: Secrets + query: + byLabel: config + type: GraphQL + ref: + group: "" + kind: Secret + - actions: + create: Never + displayMode: List + kind: Connection + name: PersistentVolumeClaims + query: + byLabel: storage + type: GraphQL + ref: + group: "" + kind: PersistentVolumeClaim + - actions: + create: Never + displayMode: List + kind: Connection + name: Pod Disruption Budgets + query: + byLabel: policy + type: GraphQL + ref: + group: policy + kind: PodDisruptionBudget + resource: + group: kubedb.com + kind: Cassandra + name: cassandras + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/cassandras.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/cassandras.yaml index 97477c78c..c2631cc6f 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/cassandras.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/cassandras.yaml @@ -127,7 +127,7 @@ spec: name: Scale Storage operationId: scale-storage - disabledTemplate: | - {{ not (hasKey .spec "topology")}} + {{ not (gt .spec.replicas 1) }} editor: name: opskubedbcom-cassandraopsrequest-editor sourceRef: @@ -238,6 +238,23 @@ spec: name: Monitoring operationId: edit-self-monitoring name: Security & Monitoring + - items: + - editor: + name: kubedbcom-cassandra-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-edit + icon: streamline-ultimate:server-share + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: Expose via Gateway + operationId: edit-self-binding + name: Extras editor: name: kubedbcom-cassandra-editor sourceRef: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/cassandras.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/cassandras.yaml new file mode 100644 index 000000000..ff9dae016 --- /dev/null +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/cassandras.yaml @@ -0,0 +1,68 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceOutline +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Cassandra + k8s.io/resource: cassandras + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-cassandras +spec: + defaultLayout: true + pages: + - icon: hugeicons:book-open-01 + name: Overview + sections: + - blocks: + - kind: Block + name: kubedb.com-v1alpha2-cassandras + - name: Monitoring + sections: + - blocks: + - kind: Block + name: monitoring.coreos.com-v1-kubedb-monitoring + - icon: hugeicons:database-locked + name: Security + sections: + - blocks: + - kind: Custom + name: CVE Report + name: CVE Report + requiredFeatureSets: + opscenter-security: + - scanner + - blocks: + - kind: Block + name: rbac.authorization.k8s.io-v1-accesscontrols + name: Access Control + - blocks: + - kind: Block + name: cert-manager.io-v1-tls + name: TLS + requiredFeatureSets: + opscenter-security: + - cert-manager + - blocks: + - kind: Block + name: policy-v1-policies + name: Policies + requiredFeatureSets: + opscenter-policy-management: + - gatekeeper + - gatekeeper-templates + - gatekeeper-constraints + - gatekeeper-grafana-dashboards + - blocks: + - kind: Block + name: falco.appscode.com-v1alpha1-falcoevents-app + name: Runtime Security + requiredFeatureSets: + opscenter-security: + - falco + - falco-ui-server + resource: + group: kubedb.com + kind: Cassandra + name: cassandras + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/cassandras.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/cassandras.yaml index a55f70d88..9367d5a03 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/cassandras.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/cassandras.yaml @@ -170,27 +170,15 @@ spec: sort: fieldName: Age order: Ascending - - actions: - create: Never - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb - sort: - fieldName: Age - order: Ascending + - icon: carbon:data-backup + name: Backup + requiredFeatureSets: + opscenter-backup: + - kubestash + sections: + - blocks: + - kind: Block + name: core.kubestash.com-v1alpha1-kubedb-backup - icon: hugeicons:database-locked name: Security sections: diff --git a/plan.md b/plan.md new file mode 100644 index 000000000..aeee38514 --- /dev/null +++ b/plan.md @@ -0,0 +1,144 @@ +# Improved Hub YAML Sync Prompt + +## Improved Prompt + +```markdown +## Task +Sync all hub YAML files for **** to match its feature set. + +## Step 1 — Gather context +Read @/Users/arnobkumarsaha/yamls/prompts/db_features.yaml and extract the feature map for . +Read @/Users/arnobkumarsaha/yamls/prompts/db-api-versions.txt and determine: +- `v1+v1alpha2` → version folder is `v1` (canonical), also update `v1alpha2` if it exists +- `v1alpha2-only` → version folder is `v1alpha2` + +Derive names from (examples use Postgres / MSSQLServer): +| Variable | Postgres example | MSSQLServer example | +|------------------|---------------------------------------------|--------------------------------------------------| +| kind | `Postgres` | `MSSQLServer` | +| plural | `postgreses` | `mssqlservers` | +| singular | `postgres` | `mssqlserver` | +| ops plural | `postgresopsrequests` | `mssqlserveropsrequests` | +| editor chart | `kubedbcom-postgres-editor` | `kubedbcom-mssqlserver-editor` | +| ops editor chart | `opskubedbcom-postgresopsrequest-editor` | `opskubedbcom-mssqlserveropsrequest-editor` | +| role resource | `postgresroles` | n/a | + +## Step 2 — Reference templates +- v1 DB → copy from `hub/.../v1/postgreses.yaml` (Postgres) +- v1alpha2-only DB → copy from `hub/.../v1alpha2/mssqlservers.yaml` (MSSQLServer) + +## Step 3 — resourceeditors (feature-aware) +File: `hub/resourceeditors/kubedb.com//.yaml` + +Copy reference editor. Include/exclude action groups by feature: + +| Action group / item | Include when | +|------------------------------------------------------------|-------------------------------------------| +| **Backups** (Configure Backup, Instant Backup, Restore) | `Backup/Restore: yes` | +| **Operations** (Update Version, Restart, Reconfigure) | always | +| Scaling → Horizontal Scale item | `Horizontal: yes` | +| Scaling → Vertical Scale item | `Vertical: yes` | +| Scaling → Expand Volume item | `VolumeExpansion: yes` | +| **Autoscaling** → Compute | `Compute: yes` | +| **Autoscaling** → Storage | `Storage: yes` AND `VolumeExpansion: yes` | +| **Security & Monitoring** | always | +| **Extras** (Expose via Gateway) | `Binding: yes` | + +`disabledTemplate` for Horizontal Scale — DB-specific logic: +- Postgres-like (standby mode): `{{ not (hasKey .spec "standbyMode") }}` +- MongoDB-like (shard/replicaset): `{{ not (or (hasKey .spec "shardTopology") (hasKey .spec "replicaSet")) }}` +- Most v1alpha2 DBs (replicas field): `{{ not (gt .spec.replicas 1) }}` +- If `Horizontal: no` → omit the Horizontal Scale item entirely (no disabledTemplate needed) + +## Step 4 — resourceoutlines (feature-aware) +File: `hub/resourceoutlines/kubedb.com//.yaml` + +Copy reference outline. Include/exclude pages and blocks per feature: + +| Page / block | Include when | +|----------------------------------------|--------------------------| +| **Overview** | always | +| **Users** page | `Binding: yes` | +| Users → `Roles` block | inside Users (same rule) | +| Users → VaultServer / SecretEngine blocks | always inside Users (conditional at runtime via requiredFeatureSets) | +| **Operations** page | always | +| Operations → Recent Operations block | always | +| Operations → Recommendations block | `Recommendation: yes` | +| **Backup** page (KubeStash) | `Backup/Restore: yes` | +| **Backup (Legacy)** page (Stash) | `Backup/Restore: yes` | +| **Monitoring** page | always | +| **Security** page (all subsections) | always | + +In the Users page, the roles block references `Roles` (e.g. `PostgresRoles`, `MySQLRoles`). +VaultServer/SecretEngine/Role blocks inside Users are always included — the UI hides them at runtime +via `requiredFeatureSets: opscenter-secret-management/kubevault`. + +## Step 5 — All other files (copy + name replace) +For each file below, copy the corresponding reference file and do global text replacement: + +| Find (Postgres ref) | Replace with | +|-----------------------|-----------------| +| `postgreses` | `` | +| `Postgres` | `` | +| `postgres` | `` | +| `v1` (in metadata/resource fields) | `` | +| `postgresopsrequests` | `` | + +Files to copy+replace: +- `hub/resourceblockdefinitions/kubedb.com//.yaml` +- `hub/resourcedashboards/kubedb.com//.yaml` +- `hub/resourcedescriptors/kubedb.com//.yaml` +- `hub/resourcetabledefinitions/kubedb.com//.yaml` +- `hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/.yaml` +- `hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb/podviews-.yaml` + +## Step 6 — Verify +Run `make fmt` — executes `check-edge-label` and `resource-fmt` which validate and +canonicalize hub YAML. Fix any reported issues before marking the task done. + +## Gotchas (lessons learned — check these before starting) + +### 1. Discover existing files with `find`, not `ls | grep` +Run this first to get a clean inventory: +```bash +find hub -name "**" -o -name "**" | sort +``` +Merged grep output from multiple `ls` commands is ambiguous and wastes tokens resolving confusion. + +### 2. There are TWO outline files per DB — both need attention +- `hub/resourceoutlines/kubedb.com//.yaml` — simple, defaultLayout: true (Overview, Monitoring, Security only for v1alpha2) +- `hub/resourceoutlines/kubedb.com//kubedb/.yaml` — richer layout (Overview+Insights+Operations+Backup+Security+Manifests), defaultLayout: false + +The plan's Step 4 table applies to the **kubedb/** subfolder outline, not the top-level one. +The top-level v1alpha2 outline always contains only: Overview, Monitoring, Security. + +### 3. The kubedb/ outline may already exist and need fixing, not creation +Before creating, read the existing file and diff against MSSQLServer reference. Common issues found: +- Missing Backup page even when `Backup/Restore: yes` +- Recommendations block present even when `Recommendation: no` + +### 4. resourcedashboards uses singular filenames for some DBs +Files like `cassandra.yaml`, `mssqlserver.yaml` use singular despite the plan saying `.yaml`. +`resource-fmt` does not enforce this. Match the naming convention already used for that DB — don't rename. + +### 5. `make fmt` requires Docker — fall back to direct Go commands +```bash +go run -mod=vendor ./cmd/check-edge-label/... +go run -mod=vendor ./cmd/resource-fmt/... +``` +Both exit 0 on success with no output. + +### 6. MSSQLServer's kubedb outline may itself be inconsistent +MSSQLServer has `Recommendation: no` but its kubedb outline still includes the Recommendations block. +Follow the feature map, not MSSQLServer's actual content, when adding/removing blocks. + +## Scope — only touch these folders +- hub/resourceblockdefinitions/kubedb.com +- hub/resourcedashboards/kubedb.com +- hub/resourcedescriptors/kubedb.com +- hub/resourceeditors/kubedb.com +- hub/resourceoutlines/kubedb.com +- hub/resourcetabledefinitions/kubedb.com +- hub/resourcetabledefinitions/ops.kubedb.com +- hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb +``` From 83fa779349170dee662f6778c4d4660674c23f84 Mon Sep 17 00:00:00 2001 From: Arnob Kumar Saha Date: Wed, 20 May 2026 12:12:21 +0600 Subject: [PATCH 2/9] clickhouse & db2 Signed-off-by: Arnob Kumar Saha --- .../kubedb.com/v1alpha2/clickhouse.yaml | 24 ++- .../kubedb.com/v1alpha2/db2s.yaml | 22 +-- .../kubedb.com/v1alpha2/clickhouses.yaml | 47 +++++ .../kubedb.com/v1alpha2/db2s.yaml | 171 ++++++++++++++++++ .../v1alpha1/db2opsrequests.yaml | 30 +++ .../kubedb.com/v1alpha2/clickhouse.yaml | 147 --------------- .../kubedb.com/v1alpha2/db2s.yaml | 33 ---- .../v1alpha2/kubedb/clickhouses.yaml | 9 + .../kubedb.com/v1alpha2/kubedb/db2s.yaml | 72 -------- .../v1alpha1/db2opsrequests.yaml | 17 ++ plan.md | 47 ++++- 11 files changed, 341 insertions(+), 278 deletions(-) create mode 100644 hub/resourceeditors/ops.kubedb.com/v1alpha1/db2opsrequests.yaml create mode 100644 hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/db2opsrequests.yaml diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/clickhouse.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/clickhouse.yaml index c1fcde0e8..9a56c5722 100644 --- a/hub/resourcedashboards/kubedb.com/v1alpha2/clickhouse.yaml +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/clickhouse.yaml @@ -4,15 +4,33 @@ metadata: labels: k8s.io/group: kubedb.com k8s.io/kind: ClickHouse - k8s.io/resource: cliickhouses + k8s.io/resource: clickhouses k8s.io/version: v1alpha2 name: kubedb.com-v1alpha2-clickhouses spec: - dashboards: null + dashboards: + - title: KubeDB / ClickHouse / Summary + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' + - title: KubeDB / ClickHouse / Database + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' + - title: KubeDB / ClickHouse / Pod + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' provider: Grafana resource: group: kubedb.com kind: ClickHouse - name: cliickhouses + name: clickhouses scope: Namespaced version: v1alpha2 diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/db2s.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/db2s.yaml index ad89a82e6..0935439fe 100644 --- a/hub/resourcedashboards/kubedb.com/v1alpha2/db2s.yaml +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/db2s.yaml @@ -8,27 +8,7 @@ metadata: k8s.io/version: v1alpha2 name: kubedb.com-v1alpha2-db2s spec: - dashboards: - - title: KubeDB / DB2 / Summary - vars: - - name: namespace - value: '{{ .metadata.namespace }}' - - name: app - value: '{{ .metadata.name }}' - - if: - condition: '{{- if or (hasKey .spec "replicaSet") (hasKey .spec "shardTopology") }}true{{ else }}false{{ end -}}' - title: KubeDB / DB2 / Database / ReplicaSet - vars: - - name: namespace - value: '{{ .metadata.namespace }}' - - name: app - value: '{{ .metadata.name }}' - - title: KubeDB / DB2 / Pod - vars: - - name: namespace - value: '{{ .metadata.namespace }}' - - name: app - value: '{{ .metadata.name }}' + dashboards: null provider: Grafana resource: group: kubedb.com diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/clickhouses.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/clickhouses.yaml index 11686225a..7bcf9da3c 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/clickhouses.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/clickhouses.yaml @@ -21,6 +21,53 @@ spec: version: v1alpha2 ui: actions: + - items: + - editor: + name: kubedbcom-clickhouse-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-edit + icon: material-symbols-light:backup-outline + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure-backup.svg + type: image/svg+xml + name: Configure Backup + operationId: edit-self-backupconfiguration + - editor: + name: corekubestashcom-backupsession-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: carbon:ibm-cloud-backup-and-recovery + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/instant-backup.svg + type: image/svg+xml + name: Instant Backup + operationId: create-instant-backup + - editor: + name: corekubestashcom-restoresession-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: mdi:backup-restore + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restore.svg + type: image/svg+xml + name: Restore + operationId: create-restoresession + name: Backups - items: - editor: name: opskubedbcom-clickhouseopsrequest-editor diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/db2s.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/db2s.yaml index a0308f67a..66d1dd65e 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/db2s.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/db2s.yaml @@ -20,6 +20,177 @@ spec: scope: Namespaced version: v1alpha2 ui: + actions: + - items: + - editor: + name: opskubedbcom-db2opsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: qlementine-icons:version-control-16 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-db2opsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:redo + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-db2opsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:settings-05 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - enforceQuota: false + flow: "" + icon: hugeicons:vertical-resize + name: Scale Vertically + operationId: scale-vertically + - enforceQuota: false + flow: "" + icon: hugeicons:arrow-expand + name: Scale Storage + operationId: scale-storage + - disabledTemplate: | + {{ not (gt .spec.replicas 1) }} + editor: + name: opskubedbcom-db2opsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icon: hugeicons:horizontal-resize + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-db2opsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + partOf: Scale Vertically + - editor: + name: opskubedbcom-db2opsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + partOf: Scale Storage + name: Scaling + - items: + - editor: + name: kubedbcom-db2-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/compute.svg + type: image/svg+xml + name: Compute + operationId: edit-self-compute-autoscaler + partOf: Scale Vertically + - editor: + name: kubedbcom-db2-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/storage.svg + type: image/svg+xml + name: Storage + operationId: edit-self-storage-autoscaler + partOf: Scale Storage + name: Autoscaling + - items: + - editor: + name: opskubedbcom-db2opsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:security-check + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls + - editor: + name: kubedbcom-db2-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-edit + icon: hugeicons:presentation-line-chart-01 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring editor: name: kubedbcom-db2-editor sourceRef: diff --git a/hub/resourceeditors/ops.kubedb.com/v1alpha1/db2opsrequests.yaml b/hub/resourceeditors/ops.kubedb.com/v1alpha1/db2opsrequests.yaml new file mode 100644 index 000000000..bbb774d08 --- /dev/null +++ b/hub/resourceeditors/ops.kubedb.com/v1alpha1/db2opsrequests.yaml @@ -0,0 +1,30 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceEditor +metadata: + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: DB2OpsRequest + k8s.io/resource: db2opsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-db2opsrequests +spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/ops.kubedb.com/db2opsrequests.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/ops.kubedb.com/db2opsrequests.png + type: image/png + resource: + group: ops.kubedb.com + kind: DB2OpsRequest + name: db2opsrequests + scope: Namespaced + version: v1alpha1 + ui: + editor: + name: opskubedbcom-db2opsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/clickhouse.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/clickhouse.yaml index e5ec461eb..1d0b284de 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/clickhouse.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/clickhouse.yaml @@ -16,153 +16,6 @@ spec: - blocks: - kind: Block name: kubedb.com-v1alpha2-clickhouses - - icon: hugeicons:user-03 - name: Users - sections: - - blocks: - - actions: - create: Never - displayMode: List - kind: Connection - name: Root User - query: - byLabel: auth_secret - type: GraphQL - ref: - group: "" - kind: Secret - - actions: - create: Never - displayMode: List - kind: Connection - name: AppBinding - query: - byLabel: connect_via - type: GraphQL - ref: - group: appcatalog.appscode.com - kind: AppBinding - requiredFeatureSets: - opscenter-datastore: - - kubedb - - actions: - create: Never - displayMode: List - kind: Connection - name: VaultServers - query: - raw: |- - query Find($src: String!, $targetGroup: String!, $targetKind: String!) { - find(oid: $src) { - authz(group: "engine.kubevault.com", kind: "SecretEngine") { - refs: offshoot(group: $targetGroup, kind: $targetKind) { - namespace - name - } - } - } - } - type: GraphQL - ref: - group: kubevault.com - kind: VaultServer - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - actions: - create: Never - displayMode: List - kind: Connection - name: SecretEngines - query: - byLabel: authz - type: GraphQL - ref: - group: engine.kubevault.com - kind: SecretEngine - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - actions: - create: Never - displayMode: List - kind: Connection - name: ClickHouseRoles - query: - byLabel: authz - type: GraphQL - ref: - group: engine.kubevault.com - kind: ClickHouseRole - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - actions: - create: Never - displayMode: List - kind: Connection - name: SecretAccessRequests - query: - byLabel: authz - type: GraphQL - ref: - group: engine.kubevault.com - kind: SecretAccessRequest - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - icon: hugeicons:dashboard-circle-settings - name: Operations - sections: - - blocks: - - actions: - create: Always - displayMode: List - kind: Connection - name: Recent Operations - query: - byLabel: ops - type: GraphQL - ref: - group: ops.kubedb.com - kind: ClickHouseOpsRequest - - actions: - create: Always - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations - - icon: carbon:data-backup - name: Backup - requiredFeatureSets: - opscenter-backup: - - kubestash - sections: - - blocks: - - kind: Block - name: core.kubestash.com-v1alpha1-kubedb-backup - - icon: carbon:data-backup - name: Backup (Legacy) - requiredFeatureSets: - opscenter-backup: - - stash - - stash-opscenter - sections: - - blocks: - - kind: Block - name: stash.appscode.com-v1-kubedb-backup - name: Monitoring sections: - blocks: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/db2s.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/db2s.yaml index 1035f1a83..cb345c259 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/db2s.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/db2s.yaml @@ -16,39 +16,6 @@ spec: - blocks: - kind: Block name: kubedb.com-v1alpha2-db2s - - icon: hugeicons:dashboard-circle-settings - name: Operations - sections: - - blocks: - - actions: - create: Always - displayMode: List - kind: Connection - name: Recent Operations - query: - byLabel: ops - type: GraphQL - ref: - group: ops.kubedb.com - kind: DB2OpsRequest - - actions: - create: Always - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations - name: Monitoring sections: - blocks: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/clickhouses.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/clickhouses.yaml index 40f536b60..7ce80934e 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/clickhouses.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/clickhouses.yaml @@ -191,6 +191,15 @@ spec: sort: fieldName: Age order: Ascending + - icon: carbon:data-backup + name: Backup + requiredFeatureSets: + opscenter-backup: + - kubestash + sections: + - blocks: + - kind: Block + name: core.kubestash.com-v1alpha1-kubedb-backup - icon: hugeicons:database-locked name: Security sections: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/db2s.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/db2s.yaml index 947a127cc..ea1030f8c 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/db2s.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/db2s.yaml @@ -20,9 +20,6 @@ spec: ref: group: core.k8s.appscode.com kind: GenericResource - requiredFeatureSets: - opscenter-datastore: - - kubedb view: name: core.k8s.appscode.com-v1alpha1-genericresources-kubedb pages: @@ -30,45 +27,6 @@ spec: name: Overview sections: - blocks: - - actions: - create: Never - displayMode: List - fieldPath: '{.response.dashboards[0].panels}' - impersonate: true - kind: Connection - name: Dashboards - query: - raw: | - request: - embeddedLink: true - dashboards: - - title: "KubeDB / DB2 / Summary" - vars: - - name: namespace - value: {{ .namespace }} - - name: app - value: {{ .name }} - panels: - - { "title": "CPU Usage", "width": 12 } - - { "title": "Memory Usage", "width": 12 } - - { "title": "Disk Usage", "width": 6 } - - { "title": "Disk R/W Info", "width": 6 } - - { "title": "IOPS (Reads+Writes)", "width": 6 } - - { "title": "ThroughPut (Read+Write)", "width": 6 } - - { "title": "Receive Bandwidth", "width": 6 } - - { "title": "Transmit Bandwidth", "width": 6 } - type: REST - ref: - group: ui.openviz.dev - kind: DashboardGroup - requiredFeatureSets: - opscenter-datastore: - - kubedb - - kubedb-opscenter - opscenter-monitoring: - - monitoring-operator - view: - name: ui.openviz.dev-v1alpha1-dashboardgroups-panels - actions: create: Never displayMode: List @@ -148,36 +106,6 @@ spec: sort: fieldName: Age order: Ascending - - actions: - create: Never - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb - sort: - fieldName: Age - order: Ascending - - icon: carbon:data-backup - name: Backup - requiredFeatureSets: - opscenter-backup: - - kubestash - sections: - - blocks: - - kind: Block - name: core.kubestash.com-v1alpha1-kubedb-backup - icon: hugeicons:database-locked name: Security sections: diff --git a/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/db2opsrequests.yaml b/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/db2opsrequests.yaml new file mode 100644 index 000000000..ddc1953d8 --- /dev/null +++ b/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/db2opsrequests.yaml @@ -0,0 +1,17 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: DB2OpsRequest + k8s.io/resource: db2opsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-db2opsrequests +spec: + defaultView: true + resource: + group: ops.kubedb.com + kind: DB2OpsRequest + name: db2opsrequests + scope: Namespaced + version: v1alpha1 diff --git a/plan.md b/plan.md index aeee38514..bd7f9c378 100644 --- a/plan.md +++ b/plan.md @@ -87,7 +87,6 @@ For each file below, copy the corresponding reference file and do global text re Files to copy+replace: - `hub/resourceblockdefinitions/kubedb.com//.yaml` - `hub/resourcedashboards/kubedb.com//.yaml` -- `hub/resourcedescriptors/kubedb.com//.yaml` - `hub/resourcetabledefinitions/kubedb.com//.yaml` - `hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/.yaml` - `hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb/podviews-.yaml` @@ -98,6 +97,9 @@ canonicalize hub YAML. Fix any reported issues before marking the task done. ## Gotchas (lessons learned — check these before starting) +### 0. Never touch resourcedescriptors +`hub/resourcedescriptors/` is auto-generated — never read or edit any file under it. + ### 1. Discover existing files with `find`, not `ls | grep` Run this first to get a clean inventory: ```bash @@ -116,6 +118,8 @@ The top-level v1alpha2 outline always contains only: Overview, Monitoring, Secur Before creating, read the existing file and diff against MSSQLServer reference. Common issues found: - Missing Backup page even when `Backup/Restore: yes` - Recommendations block present even when `Recommendation: no` +- Backup page present even when `Backup/Restore: no` +- Dashboards block in Overview present even when `Dashboards: no` ### 4. resourcedashboards uses singular filenames for some DBs Files like `cassandra.yaml`, `mssqlserver.yaml` use singular despite the plan saying `.yaml`. @@ -132,13 +136,52 @@ Both exit 0 on success with no output. MSSQLServer has `Recommendation: no` but its kubedb outline still includes the Recommendations block. Follow the feature map, not MSSQLServer's actual content, when adding/removing blocks. +### 7. Top-level v1alpha2 outlines may contain incorrect extra pages +Existing top-level outlines for v1alpha2 DBs sometimes have Users, Operations, Backup pages copied +from v1 databases. They must be reduced to ONLY: Overview, Monitoring, Security. +Always read the existing top-level outline and strip anything beyond those three pages. + +### 8. resourceeditors may be missing the entire actions section +Some DBs (e.g. DB2) had only the editor/options spec with no `actions:` list at all. +Don't assume the file is complete — read it and verify all action groups are present. + +### 9. resourcedashboards must match the Dashboards feature flag +- `Dashboards: yes` → file must have actual dashboard entries (Summary, Database, Pod). + If the file currently has `dashboards: null`, populate it from the MSSQLServer reference. +- `Dashboards: no` → file must have `dashboards: null`. + If the file currently has entries, clear them. +- Also check for typos in the resource name/labels inside the dashboard file (e.g. `cliickhouses`). + +### 10. Check for missing ops editor and table definition at base level +The find output will show whether these exist: +- `hub/resourceeditors/ops.kubedb.com/v1alpha1/.yaml` +- `hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/.yaml` + +Note: the `kubedb/` subfolder versions (e.g. `kubedb/.yaml`) are separate files. +A DB can have the kubedb/ version but be missing the base version — create both if absent. + +### 11. kubedb/ outline header must not have requiredFeatureSets +The `header:` block in the kubedb/ outline should NOT have a `requiredFeatureSets` field. +Some existing files have it incorrectly. Strip it to match the MSSQLServer/Cassandra reference. + +### 12. DB-specific insight sections in kubedb/ outline Overview +Some DBs have a DB-specific `insight:` field under the Overview section (e.g. `DB2Insight`, +`PostgresInsight`). These are intentional and DB-specific — keep them if already present. +They are separate from the `Insights` page (which depends on `Dashboards: yes`). + +### 13. ask for disabledTemplate editing +I mistakenly edited from {{ and (not (hasKey .spec "clusterTopology")) (not (gt .spec.replicas 1)) }} -> {{ not (gt .spec.replicas 1) }} +in hub/resourceeditors/kubedb.com/v1alpha2/clickhouses.yaml + ## Scope — only touch these folders - hub/resourceblockdefinitions/kubedb.com - hub/resourcedashboards/kubedb.com -- hub/resourcedescriptors/kubedb.com - hub/resourceeditors/kubedb.com - hub/resourceoutlines/kubedb.com - hub/resourcetabledefinitions/kubedb.com - hub/resourcetabledefinitions/ops.kubedb.com - hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb + +## After done +After editing done, Commit with `git commit -m -s`, & push. Dont add you name. ``` From 6a8fd405b744579b82e8334cd926fbe1bbc0c4d9 Mon Sep 17 00:00:00 2001 From: Arnob Kumar Saha Date: Wed, 20 May 2026 12:45:30 +0600 Subject: [PATCH 3/9] documentdb & druid Signed-off-by: Arnob Kumar Saha --- .../kubedb.com/v1alpha2/documentdbs.yaml | 105 ++++++++++ .../kubedb.com/v1alpha2/documentdb.yaml | 18 ++ .../kubedb.com/v1alpha2/documentdbs.yaml | 194 +++++++++++++++++- .../kubedb.com/v1alpha2/druids.yaml | 4 +- .../v1alpha1/documentdbopsrequests.yaml | 30 +++ .../kubedb.com/v1alpha2/documentdbs.yaml | 68 ++++++ .../v1alpha2/kubedb/documentdbs.yaml | 160 +++++++++++++++ .../kubedb.com/v1alpha2/kubedb/druids.yaml | 102 ++++++++- .../v1alpha1/kubedb/podviews-documentdbs.yaml | 89 ++++++++ .../kubedb.com/v1alpha2/documentdbs.yaml | 73 +++++++ .../v1alpha1/documentdbopsrequests.yaml | 17 ++ plan.md | 4 + 12 files changed, 861 insertions(+), 3 deletions(-) create mode 100644 hub/resourceblockdefinitions/kubedb.com/v1alpha2/documentdbs.yaml create mode 100644 hub/resourcedashboards/kubedb.com/v1alpha2/documentdb.yaml create mode 100644 hub/resourceeditors/ops.kubedb.com/v1alpha1/documentdbopsrequests.yaml create mode 100644 hub/resourceoutlines/kubedb.com/v1alpha2/documentdbs.yaml create mode 100644 hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/documentdbs.yaml create mode 100644 hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb/podviews-documentdbs.yaml create mode 100644 hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/documentdbopsrequests.yaml diff --git a/hub/resourceblockdefinitions/kubedb.com/v1alpha2/documentdbs.yaml b/hub/resourceblockdefinitions/kubedb.com/v1alpha2/documentdbs.yaml new file mode 100644 index 000000000..d20a99ffe --- /dev/null +++ b/hub/resourceblockdefinitions/kubedb.com/v1alpha2/documentdbs.yaml @@ -0,0 +1,105 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceBlockDefinition +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: DocumentDB + k8s.io/resource: documentdbs + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-documentdbs +spec: + blocks: + - actions: + create: Never + displayMode: List + kind: Connection + name: Client Connections + query: + byLabel: connect_via + type: GraphQL + ref: + group: appcatalog.appscode.com + kind: AppBinding + - actions: + create: Never + displayMode: List + kind: Connection + name: DocumentDB Version + query: + byLabel: catalog + type: GraphQL + ref: + group: catalog.kubedb.com + kind: DocumentDBVersion + - actions: + create: Never + displayMode: List + kind: Connection + name: PetSets + query: + byLabel: offshoot + type: GraphQL + ref: + group: apps.k8s.appscode.com + kind: PetSet + - actions: + create: Never + displayMode: List + kind: Connection + name: Pods + query: + byLabel: offshoot + type: GraphQL + ref: + group: "" + kind: Pod + - actions: + create: Never + displayMode: List + kind: Connection + name: Services + query: + byLabel: exposed_by + type: GraphQL + ref: + group: "" + kind: Service + - actions: + create: Never + displayMode: List + kind: Connection + name: Secrets + query: + byLabel: config + type: GraphQL + ref: + group: "" + kind: Secret + - actions: + create: Never + displayMode: List + kind: Connection + name: PersistentVolumeClaims + query: + byLabel: storage + type: GraphQL + ref: + group: "" + kind: PersistentVolumeClaim + - actions: + create: Never + displayMode: List + kind: Connection + name: Pod Disruption Budgets + query: + byLabel: policy + type: GraphQL + ref: + group: policy + kind: PodDisruptionBudget + resource: + group: kubedb.com + kind: DocumentDB + name: documentdbs + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/documentdb.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/documentdb.yaml new file mode 100644 index 000000000..d0cf44291 --- /dev/null +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/documentdb.yaml @@ -0,0 +1,18 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceDashboard +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: DocumentDB + k8s.io/resource: documentdbs + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-documentdbs +spec: + dashboards: null + provider: Grafana + resource: + group: kubedb.com + kind: DocumentDB + name: documentdbs + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/documentdbs.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/documentdbs.yaml index 9005606c0..f2a44c404 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/documentdbs.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/documentdbs.yaml @@ -8,6 +8,11 @@ metadata: k8s.io/version: v1alpha2 name: kubedb.com-v1alpha2-documentdbs spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/documentdbs.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/kubedb.com/documentdbs.png + type: image/png resource: group: kubedb.com kind: DocumentDB @@ -15,6 +20,177 @@ spec: scope: Namespaced version: v1alpha2 ui: + actions: + - items: + - editor: + name: opskubedbcom-documentdbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: qlementine-icons:version-control-16 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-documentdbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:redo + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-documentdbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:settings-05 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - enforceQuota: false + flow: "" + icon: hugeicons:vertical-resize + name: Scale Vertically + operationId: scale-vertically + - enforceQuota: false + flow: "" + icon: hugeicons:arrow-expand + name: Scale Storage + operationId: scale-storage + - disabledTemplate: | + {{ not (gt .spec.replicas 1) }} + editor: + name: opskubedbcom-documentdbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icon: hugeicons:horizontal-resize + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-documentdbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + partOf: Scale Vertically + - editor: + name: opskubedbcom-documentdbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + partOf: Scale Storage + name: Scaling + - items: + - editor: + name: kubedbcom-documentdb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/compute.svg + type: image/svg+xml + name: Compute + operationId: edit-self-compute-autoscaler + partOf: Scale Vertically + - editor: + name: kubedbcom-documentdb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/storage.svg + type: image/svg+xml + name: Storage + operationId: edit-self-storage-autoscaler + partOf: Scale Storage + name: Autoscaling + - items: + - editor: + name: opskubedbcom-documentdbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:security-check + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls + - editor: + name: kubedbcom-documentdb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-edit + icon: hugeicons:presentation-line-chart-01 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring editor: name: kubedbcom-documentdb-editor sourceRef: @@ -22,4 +198,20 @@ spec: kind: HelmRepository name: appscode-charts-oci version: v0.33.0 - enforceQuota: false + enforceQuota: true + options: + name: kubedbcom-documentdb-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + variants: + - name: default + selector: + matchExpressions: + - key: charts.x-helm.dev/is-default-preset + operator: In + values: + - "true" + - kubedb diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/druids.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/druids.yaml index 65b2d7cd6..7dfd20dfb 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/druids.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/druids.yaml @@ -126,7 +126,9 @@ spec: icon: hugeicons:arrow-expand name: Scale Storage operationId: scale-storage - - editor: + - disabledTemplate: | + {{ not (hasKey .spec "topology")}} + editor: name: opskubedbcom-druidopsrequest-editor sourceRef: apiGroup: source.toolkit.fluxcd.io diff --git a/hub/resourceeditors/ops.kubedb.com/v1alpha1/documentdbopsrequests.yaml b/hub/resourceeditors/ops.kubedb.com/v1alpha1/documentdbopsrequests.yaml new file mode 100644 index 000000000..1ee9066de --- /dev/null +++ b/hub/resourceeditors/ops.kubedb.com/v1alpha1/documentdbopsrequests.yaml @@ -0,0 +1,30 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceEditor +metadata: + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: DocumentDBOpsRequest + k8s.io/resource: documentdbopsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-documentdbopsrequests +spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/ops.kubedb.com/documentdbopsrequests.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/ops.kubedb.com/documentdbopsrequests.png + type: image/png + resource: + group: ops.kubedb.com + kind: DocumentDBOpsRequest + name: documentdbopsrequests + scope: Namespaced + version: v1alpha1 + ui: + editor: + name: opskubedbcom-documentdbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/documentdbs.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/documentdbs.yaml new file mode 100644 index 000000000..c77040a78 --- /dev/null +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/documentdbs.yaml @@ -0,0 +1,68 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceOutline +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: DocumentDB + k8s.io/resource: documentdbs + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-documentdbs +spec: + defaultLayout: true + pages: + - icon: hugeicons:book-open-01 + name: Overview + sections: + - blocks: + - kind: Block + name: kubedb.com-v1alpha2-documentdbs + - name: Monitoring + sections: + - blocks: + - kind: Block + name: monitoring.coreos.com-v1-kubedb-monitoring + - icon: hugeicons:database-locked + name: Security + sections: + - blocks: + - kind: Custom + name: CVE Report + name: CVE Report + requiredFeatureSets: + opscenter-security: + - scanner + - blocks: + - kind: Block + name: rbac.authorization.k8s.io-v1-accesscontrols + name: Access Control + - blocks: + - kind: Block + name: cert-manager.io-v1-tls + name: TLS + requiredFeatureSets: + opscenter-security: + - cert-manager + - blocks: + - kind: Block + name: policy-v1-policies + name: Policies + requiredFeatureSets: + opscenter-policy-management: + - gatekeeper + - gatekeeper-templates + - gatekeeper-constraints + - gatekeeper-grafana-dashboards + - blocks: + - kind: Block + name: falco.appscode.com-v1alpha1-falcoevents-app + name: Runtime Security + requiredFeatureSets: + opscenter-security: + - falco + - falco-ui-server + resource: + group: kubedb.com + kind: DocumentDB + name: documentdbs + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/documentdbs.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/documentdbs.yaml new file mode 100644 index 000000000..f29280a10 --- /dev/null +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/documentdbs.yaml @@ -0,0 +1,160 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceOutline +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: DocumentDB + k8s.io/resource: documentdbs + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-documentdbs-kubedb +spec: + defaultLayout: false + header: + actions: + create: Never + displayMode: Field + kind: Connection + query: + byLabel: view + type: GraphQL + ref: + group: core.k8s.appscode.com + kind: GenericResource + view: + name: core.k8s.appscode.com-v1alpha1-genericresources-kubedb + pages: + - icon: hugeicons:book-open-01 + name: Overview + sections: + - blocks: + - actions: + create: Never + displayMode: List + kind: Connection + name: Nodes + query: + raw: |- + query Find($src: String!, $targetGroup: String!, $targetKind: String!) { + find(oid: $src) { + offshoot(group: "", kind: "Pod") { + refs: view(group: $targetGroup, kind: $targetKind) { + namespace + name + } + } + } + } + type: GraphQL + ref: + group: core.k8s.appscode.com + kind: PodView + requiredFeatureSets: + opscenter-datastore: + - kubedb + view: + name: core.k8s.appscode.com-v1alpha1-podviews-kubedb-documentdbs + info: + actions: + create: Never + displayMode: List + kind: Connection + query: + byLabel: connect_via + type: GraphQL + ref: + group: appcatalog.appscode.com + kind: AppBinding + requiredFeatureSets: + opscenter-datastore: + - kubedb + - icon: hugeicons:dashboard-circle-settings + name: Operations + sections: + - blocks: + - actions: + create: Never + displayMode: List + kind: Connection + name: Recent Operations + query: + byLabel: ops + type: GraphQL + ref: + group: ops.kubedb.com + kind: DocumentDBOpsRequest + requiredFeatureSets: + opscenter-datastore: + - kubedb + view: + name: ops.kubedb.com-v1alpha1-documentdbopsrequests-kubedb + sort: + fieldName: Age + order: Ascending + - icon: hugeicons:database-locked + name: Security + sections: + - blocks: + - kind: Custom + name: CVE Report + name: CVE Report + requiredFeatureSets: + opscenter-security: + - scanner + - blocks: + - kind: Block + name: rbac.authorization.k8s.io-v1-accesscontrols + name: Access Control + - blocks: + - kind: Block + name: cert-manager.io-v1-tls + name: TLS + requiredFeatureSets: + opscenter-security: + - cert-manager + - blocks: + - kind: Block + name: policy-v1-policies + name: Policies + requiredFeatureSets: + opscenter-policy-management: + - gatekeeper + - gatekeeper-templates + - gatekeeper-constraints + - gatekeeper-grafana-dashboards + - blocks: + - kind: Block + name: falco.appscode.com-v1alpha1-falcoevents-app + name: Runtime Security + requiredFeatureSets: + opscenter-security: + - falco + - falco-ui-server + - icon: hugeicons:file-02 + name: Manifests + sections: + - info: + kind: Custom + query: + type: "" + ref: + group: meta.k8s.appscode.com + kind: ResourceManifests + resource: + group: kubedb.com + kind: DocumentDB + name: documentdbs + scope: Namespaced + version: v1alpha2 + tabBar: + actions: + create: Never + displayMode: Field + kind: Connection + query: + byLabel: view + type: GraphQL + ref: + group: core.k8s.appscode.com + kind: GenericResourceService + view: + name: core.k8s.appscode.com-v1alpha1-genericresourceservices-kubedb diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/druids.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/druids.yaml index 000c415e6..58c1a6820 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/druids.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/druids.yaml @@ -91,7 +91,7 @@ spec: opscenter-datastore: - kubedb view: - name: core.k8s.appscode.com-v1alpha1-podviews-kubedb-kafkas + name: core.k8s.appscode.com-v1alpha1-podviews-kubedb-druids info: actions: create: Never @@ -147,6 +147,97 @@ spec: - monitoring-operator view: name: ui.k8s.appscode.com-v1alpha1-resourcedashboards-urls + - icon: hugeicons:user-03 + name: Users + sections: + - blocks: + - actions: + create: Never + displayMode: List + kind: Connection + name: Root User + query: + byLabel: auth_secret + type: GraphQL + ref: + group: "" + kind: Secret + view: + name: core-v1-secrets + - actions: + create: Never + displayMode: List + kind: Connection + name: AppBinding + query: + byLabel: connect_via + type: GraphQL + ref: + group: appcatalog.appscode.com + kind: AppBinding + requiredFeatureSets: + opscenter-datastore: + - kubedb + view: + name: appcatalog.appscode.com-v1alpha1-appbindings + - actions: + create: Never + displayMode: List + kind: Connection + name: VaultServers + query: + raw: |- + query Find($src: String!, $targetGroup: String!, $targetKind: String!) { + find(oid: $src) { + authz(group: "engine.kubevault.com", kind: "SecretEngine") { + refs: offshoot(group: $targetGroup, kind: $targetKind) { + namespace + name + } + } + } + } + type: GraphQL + ref: + group: kubevault.com + kind: VaultServer + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: kubevault.com-v1alpha2-vaultservers + - actions: + create: Always + displayMode: List + kind: Connection + name: SecretEngines + query: + byLabel: authz + type: GraphQL + ref: + group: engine.kubevault.com + kind: SecretEngine + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: engine.kubevault.com-v1alpha1-secretengines + - actions: + create: Always + displayMode: List + kind: Connection + name: SecretAccessRequests + query: + byLabel: authz + type: GraphQL + ref: + group: engine.kubevault.com + kind: SecretAccessRequest + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: engine.kubevault.com-v1alpha1-secretaccessrequests - icon: hugeicons:dashboard-circle-settings name: Operations sections: @@ -191,6 +282,15 @@ spec: sort: fieldName: Age order: Ascending + - icon: carbon:data-backup + name: Backup + requiredFeatureSets: + opscenter-backup: + - kubestash + sections: + - blocks: + - kind: Block + name: core.kubestash.com-v1alpha1-kubedb-backup - icon: hugeicons:database-locked name: Security sections: diff --git a/hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb/podviews-documentdbs.yaml b/hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb/podviews-documentdbs.yaml new file mode 100644 index 000000000..98343e4df --- /dev/null +++ b/hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb/podviews-documentdbs.yaml @@ -0,0 +1,89 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: core.k8s.appscode.com + k8s.io/kind: PodView + k8s.io/resource: podviews + k8s.io/version: v1alpha1 + name: core.k8s.appscode.com-v1alpha1-podviews-kubedb-documentdbs +spec: + columns: + - format: name + link: + template: | + {{ $name := .metadata.name }} + {{ $namespace := .metadata.namespace }} + {{- printf "/${username}/${clustername}/core/v1/pods/%s?namespace=%s" $name $namespace -}} + name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.name }}' + type: string + type: string + - name: Role + pathTemplate: '{{ index .metadata.labels `kubedb.com/role` | default `-` | upper}}' + priority: 3 + type: string + - name: CPU (usage/limit) + pathTemplate: '{{ if .spec.resources.usage.cpu }}{{.spec.resources.usage.cpu}} / {{ default `*` .spec.resources.limits.cpu }}{{ end }}' + priority: 3 + textAlign: center + type: string + - name: Memory (usage/limit) + pathTemplate: '{{ if .spec.resources.usage.memory }}{{.spec.resources.usage.memory}} / {{default `*` .spec.resources.limits.memory}}{{ end }}' + priority: 3 + textAlign: center + type: string + - name: Storage (usage/limit) + pathTemplate: '{{ if .spec.resources.usage.storage }}{{.spec.resources.usage.storage}} / {{default `*` .spec.resources.limits.storage}}{{ end }}' + priority: 3 + textAlign: center + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Running" "Succeeded" | has $status }} + {{ $color = "success" }} + {{ else if list "Pending" | has $status }} + {{ $color = "info" }} + {{ else if list "Failed" | has $status }} + {{ $color = "danger" }} + {{ else if list "Unknown" | has $status }} + {{ $color = "warning" }} + {{ end }} + {{- printf "%s is-light" $color -}} + name: Status + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date + - dashboard: + name: kubedb.com-v1alpha2-documentdbs-pod + name: Dashboard + priority: 4 + textAlign: center + type: string + - exec: {} + name: Connect + pathTemplate: '{{ .metadata.name }}' + priority: 4 + textAlign: center + type: string + defaultView: false + resource: + group: core.k8s.appscode.com + kind: PodView + name: podviews + scope: Namespaced + version: v1alpha1 diff --git a/hub/resourcetabledefinitions/kubedb.com/v1alpha2/documentdbs.yaml b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/documentdbs.yaml index 91ab3b898..287fbd2a2 100644 --- a/hub/resourcetabledefinitions/kubedb.com/v1alpha2/documentdbs.yaml +++ b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/documentdbs.yaml @@ -8,6 +8,79 @@ metadata: k8s.io/version: v1alpha2 name: kubedb.com-v1alpha2-documentdbs spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Version + pathTemplate: '{{ .spec.version }}' + priority: 3 + type: string + - name: Mode + pathTemplate: '{{ k8s_resource_mode . }}' + priority: 3 + type: string + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - color: + template: | + {{ $status := .status.phase }} + {{ $color := "gray" }} + {{ if list "Provisioning" "DataRestoring" | has $status }} + {{ $color = "info" }} + {{ else if list "Ready" | has $status }} + {{ $color = "success" }} + {{ else if list "Critical" | has $status }} + {{ $color = "warning" }} + {{ else if list "NotReady" | has $status }} + {{ $color = "danger" }} + {{ else if list "Halted" | has $status }} + {{ $color = "gray" }} + {{ end }} + {{- printf "%s" $color -}} + name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Total Resources + pathTemplate: '{{ k8s_total_resource_limits . | toRawJson }}' + priority: 3 + type: object + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Deletion Policy + pathTemplate: '{{ .spec.deletionPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date defaultView: true resource: group: kubedb.com diff --git a/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/documentdbopsrequests.yaml b/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/documentdbopsrequests.yaml new file mode 100644 index 000000000..ad066899b --- /dev/null +++ b/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/documentdbopsrequests.yaml @@ -0,0 +1,17 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: DocumentDBOpsRequest + k8s.io/resource: documentdbopsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-documentdbopsrequests +spec: + defaultView: true + resource: + group: ops.kubedb.com + kind: DocumentDBOpsRequest + name: documentdbopsrequests + scope: Namespaced + version: v1alpha1 diff --git a/plan.md b/plan.md index bd7f9c378..c1db4e174 100644 --- a/plan.md +++ b/plan.md @@ -95,6 +95,10 @@ Files to copy+replace: Run `make fmt` — executes `check-edge-label` and `resource-fmt` which validate and canonicalize hub YAML. Fix any reported issues before marking the task done. + +## Subagents +Use sub-agents feature where ever needed. Like, Read/Do the common stuffs in main agents, and spawn subagents for non-common tasks. + ## Gotchas (lessons learned — check these before starting) ### 0. Never touch resourcedescriptors From 4260791c49f08ac439c33a5d67b4b5594b2842b6 Mon Sep 17 00:00:00 2001 From: Arnob Kumar Saha Date: Wed, 20 May 2026 13:01:52 +0600 Subject: [PATCH 4/9] hanadb & hazelcast Signed-off-by: Arnob Kumar Saha --- .../kubedb.com/v1alpha2/hanadbs.yaml | 4 +- .../kubedb.com/v1alpha2/hazelcasts.yaml | 36 +++++ .../kubedb.com/v1alpha2/hanadbs.yaml | 104 +++++++++++++ .../kubedb.com/v1alpha2/hazelcasts.yaml | 17 ++ .../v1alpha1/hanadbopsrequests.yaml | 30 ++++ .../kubedb.com/v1alpha2/hanadbs.yaml | 33 ---- .../kubedb.com/v1alpha2/hazelcasts.yaml | 147 ------------------ .../kubedb.com/v1alpha2/kubedb/hanadbs.yaml | 68 ++++---- .../v1alpha2/kubedb/hazelcasts.yaml | 91 +++++++++++ .../v1alpha2/kubedb/hazelcasts.yaml | 62 ++++++++ .../v1alpha1/hanadbopsrequests.yaml | 17 ++ 11 files changed, 396 insertions(+), 213 deletions(-) create mode 100644 hub/resourcedashboards/kubedb.com/v1alpha2/hazelcasts.yaml create mode 100644 hub/resourceeditors/ops.kubedb.com/v1alpha1/hanadbopsrequests.yaml create mode 100644 hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/hazelcasts.yaml create mode 100644 hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/hanadbopsrequests.yaml diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/hanadbs.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/hanadbs.yaml index 65c6aba5e..7c60986dc 100644 --- a/hub/resourcedashboards/kubedb.com/v1alpha2/hanadbs.yaml +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/hanadbs.yaml @@ -15,9 +15,7 @@ spec: value: '{{ .metadata.namespace }}' - name: app value: '{{ .metadata.name }}' - - if: - condition: '{{- if or (hasKey .spec "replicaSet") (hasKey .spec "shardTopology") }}true{{ else }}false{{ end -}}' - title: KubeDB / HanaDB / Database / ReplicaSet + - title: KubeDB / HanaDB / Database vars: - name: namespace value: '{{ .metadata.namespace }}' diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/hazelcasts.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/hazelcasts.yaml new file mode 100644 index 000000000..403813335 --- /dev/null +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/hazelcasts.yaml @@ -0,0 +1,36 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceDashboard +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Hazelcast + k8s.io/resource: hazelcasts + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-hazelcasts +spec: + dashboards: + - title: KubeDB / Hazelcast / Summary + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' + - title: KubeDB / Hazelcast / Database + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' + - title: KubeDB / Hazelcast / Pod + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' + provider: Grafana + resource: + group: kubedb.com + kind: Hazelcast + name: hazelcasts + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/hanadbs.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/hanadbs.yaml index 9523cc967..d0b6cf2ac 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/hanadbs.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/hanadbs.yaml @@ -20,6 +20,110 @@ spec: scope: Namespaced version: v1alpha2 ui: + actions: + - items: + - editor: + name: opskubedbcom-hanadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:redo + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-hanadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:settings-05 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - enforceQuota: false + flow: "" + icon: hugeicons:vertical-resize + name: Scale Vertically + operationId: scale-vertically + - editor: + name: opskubedbcom-hanadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + partOf: Scale Vertically + name: Scaling + - items: + - editor: + name: kubedbcom-hanadb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/compute.svg + type: image/svg+xml + name: Compute + operationId: edit-self-compute-autoscaler + partOf: Scale Vertically + name: Autoscaling + - items: + - editor: + name: opskubedbcom-hanadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:security-check + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls + - editor: + name: kubedbcom-hanadb-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-edit + icon: hugeicons:presentation-line-chart-01 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring editor: name: kubedbcom-hanadb-editor sourceRef: diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/hazelcasts.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/hazelcasts.yaml index 5cfba9a4e..262779bd8 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/hazelcasts.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/hazelcasts.yaml @@ -191,6 +191,23 @@ spec: name: Monitoring operationId: edit-self-monitoring name: Security & Monitoring + - items: + - editor: + name: kubedbcom-hazelcast-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-edit + icon: streamline-ultimate:server-share + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: Expose via Gateway + operationId: edit-self-binding + name: Extras editor: name: kubedbcom-hazelcast-editor sourceRef: diff --git a/hub/resourceeditors/ops.kubedb.com/v1alpha1/hanadbopsrequests.yaml b/hub/resourceeditors/ops.kubedb.com/v1alpha1/hanadbopsrequests.yaml new file mode 100644 index 000000000..57deee71f --- /dev/null +++ b/hub/resourceeditors/ops.kubedb.com/v1alpha1/hanadbopsrequests.yaml @@ -0,0 +1,30 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceEditor +metadata: + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: HanaDBOpsRequest + k8s.io/resource: hanadbopsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-hanadbopsrequests +spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/ops.kubedb.com/hanadbopsrequests.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/ops.kubedb.com/hanadbopsrequests.png + type: image/png + resource: + group: ops.kubedb.com + kind: HanaDBOpsRequest + name: hanadbopsrequests + scope: Namespaced + version: v1alpha1 + ui: + editor: + name: opskubedbcom-hanadbopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/hanadbs.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/hanadbs.yaml index a61151cca..44bfcad57 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/hanadbs.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/hanadbs.yaml @@ -16,39 +16,6 @@ spec: - blocks: - kind: Block name: kubedb.com-v1alpha2-hanadbs - - icon: hugeicons:dashboard-circle-settings - name: Operations - sections: - - blocks: - - actions: - create: Always - displayMode: List - kind: Connection - name: Recent Operations - query: - byLabel: ops - type: GraphQL - ref: - group: ops.kubedb.com - kind: HanaDBOpsRequest - - actions: - create: Always - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations - name: Monitoring sections: - blocks: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/hazelcasts.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/hazelcasts.yaml index 1c21542b7..b756e80b1 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/hazelcasts.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/hazelcasts.yaml @@ -16,153 +16,6 @@ spec: - blocks: - kind: Block name: kubedb.com-v1alpha2-hazelcasts - - icon: hugeicons:user-03 - name: Users - sections: - - blocks: - - actions: - create: Never - displayMode: List - kind: Connection - name: Root User - query: - byLabel: auth_secret - type: GraphQL - ref: - group: "" - kind: Secret - - actions: - create: Never - displayMode: List - kind: Connection - name: AppBinding - query: - byLabel: connect_via - type: GraphQL - ref: - group: appcatalog.appscode.com - kind: AppBinding - requiredFeatureSets: - opscenter-datastore: - - kubedb - - actions: - create: Never - displayMode: List - kind: Connection - name: VaultServers - query: - raw: |- - query Find($src: String!, $targetGroup: String!, $targetKind: String!) { - find(oid: $src) { - authz(group: "engine.kubevault.com", kind: "SecretEngine") { - refs: offshoot(group: $targetGroup, kind: $targetKind) { - namespace - name - } - } - } - } - type: GraphQL - ref: - group: kubevault.com - kind: VaultServer - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - actions: - create: Never - displayMode: List - kind: Connection - name: SecretEngines - query: - byLabel: authz - type: GraphQL - ref: - group: engine.kubevault.com - kind: SecretEngine - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - actions: - create: Never - displayMode: List - kind: Connection - name: HazelcastRoles - query: - byLabel: authz - type: GraphQL - ref: - group: engine.kubevault.com - kind: HazelcastRole - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - actions: - create: Never - displayMode: List - kind: Connection - name: SecretAccessRequests - query: - byLabel: authz - type: GraphQL - ref: - group: engine.kubevault.com - kind: SecretAccessRequest - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - icon: hugeicons:dashboard-circle-settings - name: Operations - sections: - - blocks: - - actions: - create: Always - displayMode: List - kind: Connection - name: Recent Operations - query: - byLabel: ops - type: GraphQL - ref: - group: ops.kubedb.com - kind: HazelcastOpsRequest - - actions: - create: Always - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations - - icon: carbon:data-backup - name: Backup - requiredFeatureSets: - opscenter-backup: - - kubestash - sections: - - blocks: - - kind: Block - name: core.kubestash.com-v1alpha1-kubedb-backup - - icon: carbon:data-backup - name: Backup (Legacy) - requiredFeatureSets: - opscenter-backup: - - stash - - stash-opscenter - sections: - - blocks: - - kind: Block - name: stash.appscode.com-v1-kubedb-backup - name: Monitoring sections: - blocks: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/hanadbs.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/hanadbs.yaml index a08621f7c..cbbdba7b2 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/hanadbs.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/hanadbs.yaml @@ -20,9 +20,6 @@ spec: ref: group: core.k8s.appscode.com kind: GenericResource - requiredFeatureSets: - opscenter-datastore: - - kubedb view: name: core.k8s.appscode.com-v1alpha1-genericresources-kubedb pages: @@ -125,59 +122,70 @@ spec: opscenter-datastore: - kubedb - kubedb-opscenter - - icon: hugeicons:dashboard-circle-settings - name: Operations + - icon: hugeicons:chart-line-data-01 + name: Insights + requiredFeatureSets: + opscenter-datastore: + - kubedb + - kubedb-opscenter + opscenter-monitoring: + - monitoring-operator sections: - blocks: - actions: create: Never displayMode: List + fieldPath: .response.dashboards + impersonate: true kind: Connection - name: Recent Operations + name: Grafana Dashboards query: - byLabel: ops - type: GraphQL + raw: | + request: + sourceLocator: + resource: + group: kubedb.com + name: hanadbs + version: v1alpha2 + ref: + name: {{ .name }} + namespace: {{ .namespace }} + name: kubedb.com-v1alpha2-hanadbs + type: REST ref: - group: ops.kubedb.com - kind: HanaDBOpsRequest + group: meta.k8s.appscode.com + kind: RenderDashboard requiredFeatureSets: opscenter-datastore: - kubedb + - kubedb-opscenter + opscenter-monitoring: + - monitoring-operator view: - name: ops.kubedb.com-v1alpha1-hanadbopsrequests-kubedb - sort: - fieldName: Age - order: Ascending + name: ui.k8s.appscode.com-v1alpha1-resourcedashboards-urls + - icon: hugeicons:dashboard-circle-settings + name: Operations + sections: + - blocks: - actions: create: Never displayMode: List kind: Connection - name: Recommendations + name: Recent Operations query: - byLabel: recommended_for + byLabel: ops type: GraphQL ref: - group: supervisor.appscode.com - kind: Recommendation + group: ops.kubedb.com + kind: HanaDBOpsRequest requiredFeatureSets: opscenter-datastore: - kubedb - opscenter-tools: - - supervisor view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb + name: ops.kubedb.com-v1alpha1-hanadbopsrequests-kubedb sort: fieldName: Age order: Ascending - - icon: carbon:data-backup - name: Backup - requiredFeatureSets: - opscenter-backup: - - kubestash - sections: - - blocks: - - kind: Block - name: core.kubestash.com-v1alpha1-kubedb-backup - icon: hugeicons:database-locked name: Security sections: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/hazelcasts.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/hazelcasts.yaml index 049a11c89..5db87cd5b 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/hazelcasts.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/hazelcasts.yaml @@ -147,6 +147,97 @@ spec: - monitoring-operator view: name: ui.k8s.appscode.com-v1alpha1-resourcedashboards-urls + - icon: hugeicons:user-03 + name: Users + sections: + - blocks: + - actions: + create: Never + displayMode: List + kind: Connection + name: Root User + query: + byLabel: auth_secret + type: GraphQL + ref: + group: "" + kind: Secret + view: + name: core-v1-secrets + - actions: + create: Never + displayMode: List + kind: Connection + name: AppBinding + query: + byLabel: connect_via + type: GraphQL + ref: + group: appcatalog.appscode.com + kind: AppBinding + requiredFeatureSets: + opscenter-datastore: + - kubedb + view: + name: appcatalog.appscode.com-v1alpha1-appbindings + - actions: + create: Never + displayMode: List + kind: Connection + name: VaultServers + query: + raw: |- + query Find($src: String!, $targetGroup: String!, $targetKind: String!) { + find(oid: $src) { + authz(group: "engine.kubevault.com", kind: "SecretEngine") { + refs: offshoot(group: $targetGroup, kind: $targetKind) { + namespace + name + } + } + } + } + type: GraphQL + ref: + group: kubevault.com + kind: VaultServer + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: kubevault.com-v1alpha2-vaultservers + - actions: + create: Always + displayMode: List + kind: Connection + name: SecretEngines + query: + byLabel: authz + type: GraphQL + ref: + group: engine.kubevault.com + kind: SecretEngine + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: engine.kubevault.com-v1alpha1-secretengines + - actions: + create: Always + displayMode: List + kind: Connection + name: SecretAccessRequests + query: + byLabel: authz + type: GraphQL + ref: + group: engine.kubevault.com + kind: SecretAccessRequest + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: engine.kubevault.com-v1alpha1-secretaccessrequests - icon: hugeicons:dashboard-circle-settings name: Operations sections: diff --git a/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/hazelcasts.yaml b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/hazelcasts.yaml new file mode 100644 index 000000000..956405f78 --- /dev/null +++ b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/hazelcasts.yaml @@ -0,0 +1,62 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Hazelcast + k8s.io/resource: hazelcasts + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-hazelcasts-kubedb +spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date + defaultView: false + resource: + group: kubedb.com + kind: Hazelcast + name: hazelcasts + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/hanadbopsrequests.yaml b/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/hanadbopsrequests.yaml new file mode 100644 index 000000000..988ee2092 --- /dev/null +++ b/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/hanadbopsrequests.yaml @@ -0,0 +1,17 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: HanaDBOpsRequest + k8s.io/resource: hanadbopsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-hanadbopsrequests +spec: + defaultView: true + resource: + group: ops.kubedb.com + kind: HanaDBOpsRequest + name: hanadbopsrequests + scope: Namespaced + version: v1alpha1 From 2013e874e1eb370968bfa883296d458fd5d3868d Mon Sep 17 00:00:00 2001 From: Arnob kumar saha Date: Wed, 20 May 2026 15:03:32 +0600 Subject: [PATCH 5/9] ignite & milvus Signed-off-by: Arnob kumar saha --- .../kubedb.com/v1alpha2/ignites.yaml | 105 ++++++++++ .../kubedb.com/v1alpha2/ignites.yaml | 36 ++++ .../kubedb.com/v1alpha2/milvuses.yaml | 4 +- .../kubedb.com/v1alpha2/milvuses.yaml | 171 +++++++++++++++ .../v1alpha1/milvusopsrequests.yaml | 30 +++ .../kubedb.com/v1alpha2/ignites.yaml | 68 ++++++ .../kubedb.com/v1alpha2/kubedb/ignites.yaml | 21 -- .../kubedb.com/v1alpha2/kubedb/milvuses.yaml | 33 --- .../kubedb.com/v1alpha2/milvuses.yaml | 33 --- .../kubedb.com/v1alpha2/kubedb/ignites.yaml | 62 ++++++ .../v1alpha1/milvusopsrequests.yaml | 17 ++ hub/sync-for-a-db.md | 194 ++++++++++++++++++ plan.md | 191 ----------------- 13 files changed, 684 insertions(+), 281 deletions(-) create mode 100644 hub/resourceblockdefinitions/kubedb.com/v1alpha2/ignites.yaml create mode 100644 hub/resourcedashboards/kubedb.com/v1alpha2/ignites.yaml create mode 100644 hub/resourceeditors/ops.kubedb.com/v1alpha1/milvusopsrequests.yaml create mode 100644 hub/resourceoutlines/kubedb.com/v1alpha2/ignites.yaml create mode 100644 hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/ignites.yaml create mode 100644 hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/milvusopsrequests.yaml create mode 100644 hub/sync-for-a-db.md delete mode 100644 plan.md diff --git a/hub/resourceblockdefinitions/kubedb.com/v1alpha2/ignites.yaml b/hub/resourceblockdefinitions/kubedb.com/v1alpha2/ignites.yaml new file mode 100644 index 000000000..c5f8401a8 --- /dev/null +++ b/hub/resourceblockdefinitions/kubedb.com/v1alpha2/ignites.yaml @@ -0,0 +1,105 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceBlockDefinition +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Ignite + k8s.io/resource: ignites + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-ignites +spec: + blocks: + - actions: + create: Never + displayMode: List + kind: Connection + name: Client Connections + query: + byLabel: connect_via + type: GraphQL + ref: + group: appcatalog.appscode.com + kind: AppBinding + - actions: + create: Never + displayMode: List + kind: Connection + name: Ignite Version + query: + byLabel: catalog + type: GraphQL + ref: + group: catalog.kubedb.com + kind: IgniteVersion + - actions: + create: Never + displayMode: List + kind: Connection + name: PetSets + query: + byLabel: offshoot + type: GraphQL + ref: + group: apps.k8s.appscode.com + kind: PetSet + - actions: + create: Never + displayMode: List + kind: Connection + name: Pods + query: + byLabel: offshoot + type: GraphQL + ref: + group: "" + kind: Pod + - actions: + create: Never + displayMode: List + kind: Connection + name: Services + query: + byLabel: exposed_by + type: GraphQL + ref: + group: "" + kind: Service + - actions: + create: Never + displayMode: List + kind: Connection + name: Secrets + query: + byLabel: config + type: GraphQL + ref: + group: "" + kind: Secret + - actions: + create: Never + displayMode: List + kind: Connection + name: PersistentVolumeClaims + query: + byLabel: storage + type: GraphQL + ref: + group: "" + kind: PersistentVolumeClaim + - actions: + create: Never + displayMode: List + kind: Connection + name: Pod Disruption Budgets + query: + byLabel: policy + type: GraphQL + ref: + group: policy + kind: PodDisruptionBudget + resource: + group: kubedb.com + kind: Ignite + name: ignites + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/ignites.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/ignites.yaml new file mode 100644 index 000000000..47059ff5c --- /dev/null +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/ignites.yaml @@ -0,0 +1,36 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceDashboard +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Ignite + k8s.io/resource: ignites + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-ignites +spec: + dashboards: + - title: KubeDB / Ignite / Summary + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' + - title: KubeDB / Ignite / Database + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' + - title: KubeDB / Ignite / Pod + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' + provider: Grafana + resource: + group: kubedb.com + kind: Ignite + name: ignites + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/milvuses.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/milvuses.yaml index d0a38e87c..259fcfd90 100644 --- a/hub/resourcedashboards/kubedb.com/v1alpha2/milvuses.yaml +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/milvuses.yaml @@ -15,9 +15,7 @@ spec: value: '{{ .metadata.namespace }}' - name: app value: '{{ .metadata.name }}' - - if: - condition: '{{- if or (hasKey .spec "replicaSet") (hasKey .spec "shardTopology") }}true{{ else }}false{{ end -}}' - title: KubeDB / Milvus / Database / ReplicaSet + - title: KubeDB / Milvus / Database vars: - name: namespace value: '{{ .metadata.namespace }}' diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/milvuses.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/milvuses.yaml index 1f4904fe0..ab264c25f 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/milvuses.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/milvuses.yaml @@ -20,6 +20,177 @@ spec: scope: Namespaced version: v1alpha2 ui: + actions: + - items: + - editor: + name: opskubedbcom-milvusopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: qlementine-icons:version-control-16 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-milvusopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:redo + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-milvusopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:settings-05 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - enforceQuota: false + flow: "" + icon: hugeicons:vertical-resize + name: Scale Vertically + operationId: scale-vertically + - enforceQuota: false + flow: "" + icon: hugeicons:arrow-expand + name: Scale Storage + operationId: scale-storage + - disabledTemplate: | + {{ not (gt .spec.replicas 1) }} + editor: + name: opskubedbcom-milvusopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icon: hugeicons:horizontal-resize + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-milvusopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + partOf: Scale Vertically + - editor: + name: opskubedbcom-milvusopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + partOf: Scale Storage + name: Scaling + - items: + - editor: + name: kubedbcom-milvus-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/compute.svg + type: image/svg+xml + name: Compute + operationId: edit-self-compute-autoscaler + partOf: Scale Vertically + - editor: + name: kubedbcom-milvus-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/storage.svg + type: image/svg+xml + name: Storage + operationId: edit-self-storage-autoscaler + partOf: Scale Storage + name: Autoscaling + - items: + - editor: + name: opskubedbcom-milvusopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:security-check + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls + - editor: + name: kubedbcom-milvus-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-edit + icon: hugeicons:presentation-line-chart-01 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring editor: name: kubedbcom-milvus-editor sourceRef: diff --git a/hub/resourceeditors/ops.kubedb.com/v1alpha1/milvusopsrequests.yaml b/hub/resourceeditors/ops.kubedb.com/v1alpha1/milvusopsrequests.yaml new file mode 100644 index 000000000..2a273e219 --- /dev/null +++ b/hub/resourceeditors/ops.kubedb.com/v1alpha1/milvusopsrequests.yaml @@ -0,0 +1,30 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceEditor +metadata: + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: MilvusOpsRequest + k8s.io/resource: milvusopsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-milvusopsrequests +spec: + icons: + - src: https://cdn.appscode.com/k8s/icons/ops.kubedb.com/milvusopsrequests.svg + type: image/svg+xml + - src: https://cdn.appscode.com/k8s/icons/ops.kubedb.com/milvusopsrequests.png + type: image/png + resource: + group: ops.kubedb.com + kind: MilvusOpsRequest + name: milvusopsrequests + scope: Namespaced + version: v1alpha1 + ui: + editor: + name: opskubedbcom-milvusopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/ignites.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/ignites.yaml new file mode 100644 index 000000000..5bb4df147 --- /dev/null +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/ignites.yaml @@ -0,0 +1,68 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceOutline +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Ignite + k8s.io/resource: ignites + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-ignites +spec: + defaultLayout: true + pages: + - icon: hugeicons:book-open-01 + name: Overview + sections: + - blocks: + - kind: Block + name: kubedb.com-v1alpha2-ignites + - name: Monitoring + sections: + - blocks: + - kind: Block + name: monitoring.coreos.com-v1-kubedb-monitoring + - icon: hugeicons:database-locked + name: Security + sections: + - blocks: + - kind: Custom + name: CVE Report + name: CVE Report + requiredFeatureSets: + opscenter-security: + - scanner + - blocks: + - kind: Block + name: rbac.authorization.k8s.io-v1-accesscontrols + name: Access Control + - blocks: + - kind: Block + name: cert-manager.io-v1-tls + name: TLS + requiredFeatureSets: + opscenter-security: + - cert-manager + - blocks: + - kind: Block + name: policy-v1-policies + name: Policies + requiredFeatureSets: + opscenter-policy-management: + - gatekeeper + - gatekeeper-templates + - gatekeeper-constraints + - gatekeeper-grafana-dashboards + - blocks: + - kind: Block + name: falco.appscode.com-v1alpha1-falcoevents-app + name: Runtime Security + requiredFeatureSets: + opscenter-security: + - falco + - falco-ui-server + resource: + group: kubedb.com + kind: Ignite + name: ignites + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/ignites.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/ignites.yaml index 9488d7597..ccd19ebac 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/ignites.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/ignites.yaml @@ -170,27 +170,6 @@ spec: sort: fieldName: Age order: Ascending - - actions: - create: Never - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb - sort: - fieldName: Age - order: Ascending - icon: hugeicons:database-locked name: Security sections: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/milvuses.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/milvuses.yaml index 0de396ce4..291c70c5e 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/milvuses.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/milvuses.yaml @@ -20,9 +20,6 @@ spec: ref: group: core.k8s.appscode.com kind: GenericResource - requiredFeatureSets: - opscenter-datastore: - - kubedb view: name: core.k8s.appscode.com-v1alpha1-genericresources-kubedb pages: @@ -148,36 +145,6 @@ spec: sort: fieldName: Age order: Ascending - - actions: - create: Never - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb - sort: - fieldName: Age - order: Ascending - - icon: carbon:data-backup - name: Backup - requiredFeatureSets: - opscenter-backup: - - kubestash - sections: - - blocks: - - kind: Block - name: core.kubestash.com-v1alpha1-kubedb-backup - icon: hugeicons:database-locked name: Security sections: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/milvuses.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/milvuses.yaml index 08adc5eec..af500083e 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/milvuses.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/milvuses.yaml @@ -16,39 +16,6 @@ spec: - blocks: - kind: Block name: kubedb.com-v1alpha2-milvuses - - icon: hugeicons:dashboard-circle-settings - name: Operations - sections: - - blocks: - - actions: - create: Always - displayMode: List - kind: Connection - name: Recent Operations - query: - byLabel: ops - type: GraphQL - ref: - group: ops.kubedb.com - kind: MilvusOpsRequest - - actions: - create: Always - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations - name: Monitoring sections: - blocks: diff --git a/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/ignites.yaml b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/ignites.yaml new file mode 100644 index 000000000..caf0f9728 --- /dev/null +++ b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/ignites.yaml @@ -0,0 +1,62 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Ignite + k8s.io/resource: ignites + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-ignites-kubedb +spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date + defaultView: false + resource: + group: kubedb.com + kind: Ignite + name: ignites + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/milvusopsrequests.yaml b/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/milvusopsrequests.yaml new file mode 100644 index 000000000..2bfbadec5 --- /dev/null +++ b/hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/milvusopsrequests.yaml @@ -0,0 +1,17 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: MilvusOpsRequest + k8s.io/resource: milvusopsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-milvusopsrequests +spec: + defaultView: true + resource: + group: ops.kubedb.com + kind: MilvusOpsRequest + name: milvusopsrequests + scope: Namespaced + version: v1alpha1 diff --git a/hub/sync-for-a-db.md b/hub/sync-for-a-db.md new file mode 100644 index 000000000..690d536d6 --- /dev/null +++ b/hub/sync-for-a-db.md @@ -0,0 +1,194 @@ +deleted file mode 100644 +@@ -1,191 +0,0 @@ +-# Improved Hub YAML Sync Prompt +- +-## Improved Prompt +- +-```markdown +-## Task +-Sync all hub YAML files for **** to match its feature set. +- +-## Step 1 — Gather context +-Read @/Users/arnobkumarsaha/yamls/prompts/db_features.yaml and extract the feature map for . +-Read @/Users/arnobkumarsaha/yamls/prompts/db-api-versions.txt and determine: +-- `v1+v1alpha2` → version folder is `v1` (canonical), also update `v1alpha2` if it exists +-- `v1alpha2-only` → version folder is `v1alpha2` +- +-Derive names from (examples use Postgres / MSSQLServer): +-| Variable | Postgres example | MSSQLServer example | +-|------------------|---------------------------------------------|--------------------------------------------------| +-| kind | `Postgres` | `MSSQLServer` | +-| plural | `postgreses` | `mssqlservers` | +-| singular | `postgres` | `mssqlserver` | +-| ops plural | `postgresopsrequests` | `mssqlserveropsrequests` | +-| editor chart | `kubedbcom-postgres-editor` | `kubedbcom-mssqlserver-editor` | +-| ops editor chart | `opskubedbcom-postgresopsrequest-editor` | `opskubedbcom-mssqlserveropsrequest-editor` | +-| role resource | `postgresroles` | n/a | +- +-## Step 2 — Reference templates +-- v1 DB → copy from `hub/.../v1/postgreses.yaml` (Postgres) +-- v1alpha2-only DB → copy from `hub/.../v1alpha2/mssqlservers.yaml` (MSSQLServer) +- +-## Step 3 — resourceeditors (feature-aware) +-File: `hub/resourceeditors/kubedb.com//.yaml` +- +-Copy reference editor. Include/exclude action groups by feature: +- +-| Action group / item | Include when | +-|------------------------------------------------------------|-------------------------------------------| +-| **Backups** (Configure Backup, Instant Backup, Restore) | `Backup/Restore: yes` | +-| **Operations** (Update Version, Restart, Reconfigure) | always | +-| Scaling → Horizontal Scale item | `Horizontal: yes` | +-| Scaling → Vertical Scale item | `Vertical: yes` | +-| Scaling → Expand Volume item | `VolumeExpansion: yes` | +-| **Autoscaling** → Compute | `Compute: yes` | +-| **Autoscaling** → Storage | `Storage: yes` AND `VolumeExpansion: yes` | +-| **Security & Monitoring** | always | +-| **Extras** (Expose via Gateway) | `Binding: yes` | +- +-`disabledTemplate` for Horizontal Scale — DB-specific logic: +-- Postgres-like (standby mode): `{{ not (hasKey .spec "standbyMode") }}` +-- MongoDB-like (shard/replicaset): `{{ not (or (hasKey .spec "shardTopology") (hasKey .spec "replicaSet")) }}` +-- Most v1alpha2 DBs (replicas field): `{{ not (gt .spec.replicas 1) }}` +-- If `Horizontal: no` → omit the Horizontal Scale item entirely (no disabledTemplate needed) +- +-## Step 4 — resourceoutlines (feature-aware) +-File: `hub/resourceoutlines/kubedb.com//.yaml` +- +-Copy reference outline. Include/exclude pages and blocks per feature: +- +-| Page / block | Include when | +-|----------------------------------------|--------------------------| +-| **Overview** | always | +-| **Users** page | `Binding: yes` | +-| Users → `Roles` block | inside Users (same rule) | +-| Users → VaultServer / SecretEngine blocks | always inside Users (conditional at runtime via requiredFeatureSets) | +-| **Operations** page | always | +-| Operations → Recent Operations block | always | +-| Operations → Recommendations block | `Recommendation: yes` | +-| **Backup** page (KubeStash) | `Backup/Restore: yes` | +-| **Backup (Legacy)** page (Stash) | `Backup/Restore: yes` | +-| **Monitoring** page | always | +-| **Security** page (all subsections) | always | +- +-In the Users page, the roles block references `Roles` (e.g. `PostgresRoles`, `MySQLRoles`). +-VaultServer/SecretEngine/Role blocks inside Users are always included — the UI hides them at runtime +-via `requiredFeatureSets: opscenter-secret-management/kubevault`. +- +-## Step 5 — All other files (copy + name replace) +-For each file below, copy the corresponding reference file and do global text replacement: +- +-| Find (Postgres ref) | Replace with | +-|-----------------------|-----------------| +-| `postgreses` | `` | +-| `Postgres` | `` | +-| `postgres` | `` | +-| `v1` (in metadata/resource fields) | `` | +-| `postgresopsrequests` | `` | +- +-Files to copy+replace: +-- `hub/resourceblockdefinitions/kubedb.com//.yaml` +-- `hub/resourcedashboards/kubedb.com//.yaml` +-- `hub/resourcetabledefinitions/kubedb.com//.yaml` +-- `hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/.yaml` +-- `hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb/podviews-.yaml` +- +-## Step 6 — Verify +-Run `make fmt` — executes `check-edge-label` and `resource-fmt` which validate and +-canonicalize hub YAML. Fix any reported issues before marking the task done. +- +- +-## Subagents +-Use sub-agents feature where ever needed. Like, Read/Do the common stuffs in main agents, and spawn subagents for non-common tasks. +- +-## Gotchas (lessons learned — check these before starting) +- +-### 0. Never touch resourcedescriptors +-`hub/resourcedescriptors/` is auto-generated — never read or edit any file under it. +- +-### 1. Discover existing files with `find`, not `ls | grep` +-Run this first to get a clean inventory: +-```bash +-find hub -name "**" -o -name "**" | sort +-``` +-Merged grep output from multiple `ls` commands is ambiguous and wastes tokens resolving confusion. +- +-### 2. There are TWO outline files per DB — both need attention +-- `hub/resourceoutlines/kubedb.com//.yaml` — simple, defaultLayout: true (Overview, Monitoring, Security only for v1alpha2) +-- `hub/resourceoutlines/kubedb.com//kubedb/.yaml` — richer layout (Overview+Insights+Operations+Backup+Security+Manifests), defaultLayout: false +- +-The plan's Step 4 table applies to the **kubedb/** subfolder outline, not the top-level one. +-The top-level v1alpha2 outline always contains only: Overview, Monitoring, Security. +- +-### 3. The kubedb/ outline may already exist and need fixing, not creation +-Before creating, read the existing file and diff against MSSQLServer reference. Common issues found: +-- Missing Backup page even when `Backup/Restore: yes` +-- Recommendations block present even when `Recommendation: no` +-- Backup page present even when `Backup/Restore: no` +-- Dashboards block in Overview present even when `Dashboards: no` +- +-### 4. resourcedashboards uses singular filenames for some DBs +-Files like `cassandra.yaml`, `mssqlserver.yaml` use singular despite the plan saying `.yaml`. +-`resource-fmt` does not enforce this. Match the naming convention already used for that DB — don't rename. +- +-### 5. `make fmt` requires Docker — fall back to direct Go commands +-```bash +-go run -mod=vendor ./cmd/check-edge-label/... +-go run -mod=vendor ./cmd/resource-fmt/... +-``` +-Both exit 0 on success with no output. +- +-### 6. MSSQLServer's kubedb outline may itself be inconsistent +-MSSQLServer has `Recommendation: no` but its kubedb outline still includes the Recommendations block. +-Follow the feature map, not MSSQLServer's actual content, when adding/removing blocks. +- +-### 7. Top-level v1alpha2 outlines may contain incorrect extra pages +-Existing top-level outlines for v1alpha2 DBs sometimes have Users, Operations, Backup pages copied +-from v1 databases. They must be reduced to ONLY: Overview, Monitoring, Security. +-Always read the existing top-level outline and strip anything beyond those three pages. +- +-### 8. resourceeditors may be missing the entire actions section +-Some DBs (e.g. DB2) had only the editor/options spec with no `actions:` list at all. +-Don't assume the file is complete — read it and verify all action groups are present. +- +-### 9. resourcedashboards must match the Dashboards feature flag +-- `Dashboards: yes` → file must have actual dashboard entries (Summary, Database, Pod). +- If the file currently has `dashboards: null`, populate it from the MSSQLServer reference. + -- `Dashboards: no` → file must have `dashboards: null`. +- If the file currently has entries, clear them. + -- Also check for typos in the resource name/labels inside the dashboard file (e.g. `cliickhouses`). +- +-### 10. Check for missing ops editor and table definition at base level +-The find output will show whether these exist: +-- `hub/resourceeditors/ops.kubedb.com/v1alpha1/.yaml` +-- `hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/.yaml` +- +-Note: the `kubedb/` subfolder versions (e.g. `kubedb/.yaml`) are separate files. +-A DB can have the kubedb/ version but be missing the base version — create both if absent. +- +-### 11. kubedb/ outline header must not have requiredFeatureSets +-The `header:` block in the kubedb/ outline should NOT have a `requiredFeatureSets` field. +-Some existing files have it incorrectly. Strip it to match the MSSQLServer/Cassandra reference. +- +-### 12. DB-specific insight sections in kubedb/ outline Overview +-Some DBs have a DB-specific `insight:` field under the Overview section (e.g. `DB2Insight`, +-`PostgresInsight`). These are intentional and DB-specific — keep them if already present. +-They are separate from the `Insights` page (which depends on `Dashboards: yes`). +- +-### 13. ask for disabledTemplate editing +-I mistakenly edited from {{ and (not (hasKey .spec "clusterTopology")) (not (gt .spec.replicas 1)) }} -> {{ not (gt .spec.replicas 1) }} +-in hub/resourceeditors/kubedb.com/v1alpha2/clickhouses.yaml +- +-## Scope — only touch these folders +-- hub/resourceblockdefinitions/kubedb.com +-- hub/resourcedashboards/kubedb.com +-- hub/resourceeditors/kubedb.com +-- hub/resourceoutlines/kubedb.com +-- hub/resourcetabledefinitions/kubedb.com +-- hub/resourcetabledefinitions/ops.kubedb.com +-- hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb +- +-## After done +-After editing done, Commit with `git commit -m -s`, & push. Dont add you name. +-``` + diff --git a/plan.md b/plan.md deleted file mode 100644 index c1db4e174..000000000 --- a/plan.md +++ /dev/null @@ -1,191 +0,0 @@ -# Improved Hub YAML Sync Prompt - -## Improved Prompt - -```markdown -## Task -Sync all hub YAML files for **** to match its feature set. - -## Step 1 — Gather context -Read @/Users/arnobkumarsaha/yamls/prompts/db_features.yaml and extract the feature map for . -Read @/Users/arnobkumarsaha/yamls/prompts/db-api-versions.txt and determine: -- `v1+v1alpha2` → version folder is `v1` (canonical), also update `v1alpha2` if it exists -- `v1alpha2-only` → version folder is `v1alpha2` - -Derive names from (examples use Postgres / MSSQLServer): -| Variable | Postgres example | MSSQLServer example | -|------------------|---------------------------------------------|--------------------------------------------------| -| kind | `Postgres` | `MSSQLServer` | -| plural | `postgreses` | `mssqlservers` | -| singular | `postgres` | `mssqlserver` | -| ops plural | `postgresopsrequests` | `mssqlserveropsrequests` | -| editor chart | `kubedbcom-postgres-editor` | `kubedbcom-mssqlserver-editor` | -| ops editor chart | `opskubedbcom-postgresopsrequest-editor` | `opskubedbcom-mssqlserveropsrequest-editor` | -| role resource | `postgresroles` | n/a | - -## Step 2 — Reference templates -- v1 DB → copy from `hub/.../v1/postgreses.yaml` (Postgres) -- v1alpha2-only DB → copy from `hub/.../v1alpha2/mssqlservers.yaml` (MSSQLServer) - -## Step 3 — resourceeditors (feature-aware) -File: `hub/resourceeditors/kubedb.com//.yaml` - -Copy reference editor. Include/exclude action groups by feature: - -| Action group / item | Include when | -|------------------------------------------------------------|-------------------------------------------| -| **Backups** (Configure Backup, Instant Backup, Restore) | `Backup/Restore: yes` | -| **Operations** (Update Version, Restart, Reconfigure) | always | -| Scaling → Horizontal Scale item | `Horizontal: yes` | -| Scaling → Vertical Scale item | `Vertical: yes` | -| Scaling → Expand Volume item | `VolumeExpansion: yes` | -| **Autoscaling** → Compute | `Compute: yes` | -| **Autoscaling** → Storage | `Storage: yes` AND `VolumeExpansion: yes` | -| **Security & Monitoring** | always | -| **Extras** (Expose via Gateway) | `Binding: yes` | - -`disabledTemplate` for Horizontal Scale — DB-specific logic: -- Postgres-like (standby mode): `{{ not (hasKey .spec "standbyMode") }}` -- MongoDB-like (shard/replicaset): `{{ not (or (hasKey .spec "shardTopology") (hasKey .spec "replicaSet")) }}` -- Most v1alpha2 DBs (replicas field): `{{ not (gt .spec.replicas 1) }}` -- If `Horizontal: no` → omit the Horizontal Scale item entirely (no disabledTemplate needed) - -## Step 4 — resourceoutlines (feature-aware) -File: `hub/resourceoutlines/kubedb.com//.yaml` - -Copy reference outline. Include/exclude pages and blocks per feature: - -| Page / block | Include when | -|----------------------------------------|--------------------------| -| **Overview** | always | -| **Users** page | `Binding: yes` | -| Users → `Roles` block | inside Users (same rule) | -| Users → VaultServer / SecretEngine blocks | always inside Users (conditional at runtime via requiredFeatureSets) | -| **Operations** page | always | -| Operations → Recent Operations block | always | -| Operations → Recommendations block | `Recommendation: yes` | -| **Backup** page (KubeStash) | `Backup/Restore: yes` | -| **Backup (Legacy)** page (Stash) | `Backup/Restore: yes` | -| **Monitoring** page | always | -| **Security** page (all subsections) | always | - -In the Users page, the roles block references `Roles` (e.g. `PostgresRoles`, `MySQLRoles`). -VaultServer/SecretEngine/Role blocks inside Users are always included — the UI hides them at runtime -via `requiredFeatureSets: opscenter-secret-management/kubevault`. - -## Step 5 — All other files (copy + name replace) -For each file below, copy the corresponding reference file and do global text replacement: - -| Find (Postgres ref) | Replace with | -|-----------------------|-----------------| -| `postgreses` | `` | -| `Postgres` | `` | -| `postgres` | `` | -| `v1` (in metadata/resource fields) | `` | -| `postgresopsrequests` | `` | - -Files to copy+replace: -- `hub/resourceblockdefinitions/kubedb.com//.yaml` -- `hub/resourcedashboards/kubedb.com//.yaml` -- `hub/resourcetabledefinitions/kubedb.com//.yaml` -- `hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/.yaml` -- `hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb/podviews-.yaml` - -## Step 6 — Verify -Run `make fmt` — executes `check-edge-label` and `resource-fmt` which validate and -canonicalize hub YAML. Fix any reported issues before marking the task done. - - -## Subagents -Use sub-agents feature where ever needed. Like, Read/Do the common stuffs in main agents, and spawn subagents for non-common tasks. - -## Gotchas (lessons learned — check these before starting) - -### 0. Never touch resourcedescriptors -`hub/resourcedescriptors/` is auto-generated — never read or edit any file under it. - -### 1. Discover existing files with `find`, not `ls | grep` -Run this first to get a clean inventory: -```bash -find hub -name "**" -o -name "**" | sort -``` -Merged grep output from multiple `ls` commands is ambiguous and wastes tokens resolving confusion. - -### 2. There are TWO outline files per DB — both need attention -- `hub/resourceoutlines/kubedb.com//.yaml` — simple, defaultLayout: true (Overview, Monitoring, Security only for v1alpha2) -- `hub/resourceoutlines/kubedb.com//kubedb/.yaml` — richer layout (Overview+Insights+Operations+Backup+Security+Manifests), defaultLayout: false - -The plan's Step 4 table applies to the **kubedb/** subfolder outline, not the top-level one. -The top-level v1alpha2 outline always contains only: Overview, Monitoring, Security. - -### 3. The kubedb/ outline may already exist and need fixing, not creation -Before creating, read the existing file and diff against MSSQLServer reference. Common issues found: -- Missing Backup page even when `Backup/Restore: yes` -- Recommendations block present even when `Recommendation: no` -- Backup page present even when `Backup/Restore: no` -- Dashboards block in Overview present even when `Dashboards: no` - -### 4. resourcedashboards uses singular filenames for some DBs -Files like `cassandra.yaml`, `mssqlserver.yaml` use singular despite the plan saying `.yaml`. -`resource-fmt` does not enforce this. Match the naming convention already used for that DB — don't rename. - -### 5. `make fmt` requires Docker — fall back to direct Go commands -```bash -go run -mod=vendor ./cmd/check-edge-label/... -go run -mod=vendor ./cmd/resource-fmt/... -``` -Both exit 0 on success with no output. - -### 6. MSSQLServer's kubedb outline may itself be inconsistent -MSSQLServer has `Recommendation: no` but its kubedb outline still includes the Recommendations block. -Follow the feature map, not MSSQLServer's actual content, when adding/removing blocks. - -### 7. Top-level v1alpha2 outlines may contain incorrect extra pages -Existing top-level outlines for v1alpha2 DBs sometimes have Users, Operations, Backup pages copied -from v1 databases. They must be reduced to ONLY: Overview, Monitoring, Security. -Always read the existing top-level outline and strip anything beyond those three pages. - -### 8. resourceeditors may be missing the entire actions section -Some DBs (e.g. DB2) had only the editor/options spec with no `actions:` list at all. -Don't assume the file is complete — read it and verify all action groups are present. - -### 9. resourcedashboards must match the Dashboards feature flag -- `Dashboards: yes` → file must have actual dashboard entries (Summary, Database, Pod). - If the file currently has `dashboards: null`, populate it from the MSSQLServer reference. -- `Dashboards: no` → file must have `dashboards: null`. - If the file currently has entries, clear them. -- Also check for typos in the resource name/labels inside the dashboard file (e.g. `cliickhouses`). - -### 10. Check for missing ops editor and table definition at base level -The find output will show whether these exist: -- `hub/resourceeditors/ops.kubedb.com/v1alpha1/.yaml` -- `hub/resourcetabledefinitions/ops.kubedb.com/v1alpha1/.yaml` - -Note: the `kubedb/` subfolder versions (e.g. `kubedb/.yaml`) are separate files. -A DB can have the kubedb/ version but be missing the base version — create both if absent. - -### 11. kubedb/ outline header must not have requiredFeatureSets -The `header:` block in the kubedb/ outline should NOT have a `requiredFeatureSets` field. -Some existing files have it incorrectly. Strip it to match the MSSQLServer/Cassandra reference. - -### 12. DB-specific insight sections in kubedb/ outline Overview -Some DBs have a DB-specific `insight:` field under the Overview section (e.g. `DB2Insight`, -`PostgresInsight`). These are intentional and DB-specific — keep them if already present. -They are separate from the `Insights` page (which depends on `Dashboards: yes`). - -### 13. ask for disabledTemplate editing -I mistakenly edited from {{ and (not (hasKey .spec "clusterTopology")) (not (gt .spec.replicas 1)) }} -> {{ not (gt .spec.replicas 1) }} -in hub/resourceeditors/kubedb.com/v1alpha2/clickhouses.yaml - -## Scope — only touch these folders -- hub/resourceblockdefinitions/kubedb.com -- hub/resourcedashboards/kubedb.com -- hub/resourceeditors/kubedb.com -- hub/resourceoutlines/kubedb.com -- hub/resourcetabledefinitions/kubedb.com -- hub/resourcetabledefinitions/ops.kubedb.com -- hub/resourcetabledefinitions/core.k8s.appscode.com/v1alpha1/kubedb - -## After done -After editing done, Commit with `git commit -m -s`, & push. Dont add you name. -``` From afe27c5dcfb9aea88891835f468f8f202e538271 Mon Sep 17 00:00:00 2001 From: Arnob kumar saha Date: Wed, 20 May 2026 15:12:42 +0600 Subject: [PATCH 6/9] neo4j & oracle Signed-off-by: Arnob kumar saha --- .../kubedb.com/v1alpha2/neo4js.yaml | 4 +- .../kubedb.com/v1alpha2/oracle.yaml | 36 ++++ .../kubedb.com/v1alpha2/neo4js.yaml | 185 ++++++++++++++++++ .../kubedb.com/v1alpha2/oracles.yaml | 83 ++++++-- .../v1alpha1/oracleopsrequests.yaml | 25 +++ .../kubedb.com/v1alpha2/kubedb/neo4js.yaml | 56 ++++-- .../kubedb.com/v1alpha2/kubedb/oracles.yaml | 112 +++++++++-- .../kubedb.com/v1alpha2/neo4js.yaml | 33 ---- .../kubedb.com/v1alpha2/oracles.yaml | 147 -------------- .../kubedb.com/v1alpha2/kubedb/oracles.yaml | 62 ++++++ 10 files changed, 504 insertions(+), 239 deletions(-) create mode 100644 hub/resourcedashboards/kubedb.com/v1alpha2/oracle.yaml create mode 100644 hub/resourceeditors/ops.kubedb.com/v1alpha1/oracleopsrequests.yaml create mode 100644 hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/oracles.yaml diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/neo4js.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/neo4js.yaml index 2b580711a..9a289e456 100644 --- a/hub/resourcedashboards/kubedb.com/v1alpha2/neo4js.yaml +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/neo4js.yaml @@ -15,9 +15,7 @@ spec: value: '{{ .metadata.namespace }}' - name: app value: '{{ .metadata.name }}' - - if: - condition: '{{- if or (hasKey .spec "replicaSet") (hasKey .spec "shardTopology") }}true{{ else }}false{{ end -}}' - title: KubeDB / Neo4j / Database / ReplicaSet + - title: KubeDB / Neo4j / Database vars: - name: namespace value: '{{ .metadata.namespace }}' diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/oracle.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/oracle.yaml new file mode 100644 index 000000000..e68c3af7b --- /dev/null +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/oracle.yaml @@ -0,0 +1,36 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceDashboard +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Oracle + k8s.io/resource: oracles + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-oracles +spec: + dashboards: + - title: KubeDB / Oracle / Summary + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' + - title: KubeDB / Oracle / Database + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' + - title: KubeDB / Oracle / Pod + vars: + - name: namespace + value: '{{ .metadata.namespace }}' + - name: app + value: '{{ .metadata.name }}' + provider: Grafana + resource: + group: kubedb.com + kind: Oracle + name: oracles + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/neo4js.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/neo4js.yaml index 5c4ddac8c..7760799e4 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/neo4js.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/neo4js.yaml @@ -21,6 +21,191 @@ spec: version: v1alpha2 ui: actions: + - items: + - editor: + name: kubedbcom-neo4j-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-edit + icon: material-symbols-light:backup-outline + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure-backup.svg + type: image/svg+xml + name: Configure Backup + operationId: edit-self-backupconfiguration + - editor: + name: corekubestashcom-backupsession-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: carbon:ibm-cloud-backup-and-recovery + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/instant-backup.svg + type: image/svg+xml + name: Instant Backup + operationId: create-instant-backup + - editor: + name: corekubestashcom-restoresession-editor-options + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: mdi:backup-restore + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restore.svg + type: image/svg+xml + name: Restore + operationId: create-restoresession + name: Backups + - items: + - editor: + name: opskubedbcom-neo4jopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: qlementine-icons:version-control-16 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-neo4jopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:redo + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-neo4jopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:settings-05 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - enforceQuota: false + flow: "" + icon: hugeicons:vertical-resize + name: Scale Vertically + operationId: scale-vertically + - enforceQuota: false + flow: "" + icon: hugeicons:arrow-expand + name: Scale Storage + operationId: scale-storage + - disabledTemplate: | + {{ not (gt .spec.replicas 1) }} + editor: + name: opskubedbcom-neo4jopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icon: hugeicons:horizontal-resize + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-neo4jopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + partOf: Scale Vertically + - editor: + name: opskubedbcom-neo4jopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + partOf: Scale Storage + name: Scaling + - items: + - editor: + name: kubedbcom-neo4j-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/compute.svg + type: image/svg+xml + name: Compute + operationId: edit-self-compute-autoscaler + partOf: Scale Vertically + - editor: + name: kubedbcom-neo4j-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/storage.svg + type: image/svg+xml + name: Storage + operationId: edit-self-storage-autoscaler + partOf: Scale Storage + name: Autoscaling - items: - editor: name: opskubedbcom-neo4jopsrequest-editor diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/oracles.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/oracles.yaml index 84cd304d0..dff26b0f9 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/oracles.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/oracles.yaml @@ -4,7 +4,7 @@ metadata: labels: k8s.io/group: kubedb.com k8s.io/kind: Oracle - k8s.io/resource: ignites + k8s.io/resource: oracles k8s.io/version: v1alpha2 name: kubedb.com-v1alpha2-oracles spec: @@ -64,9 +64,7 @@ spec: icon: hugeicons:arrow-expand name: Scale Storage operationId: scale-storage - - disabledTemplate: | - {{ not (gt .spec.replicas 1) }} - editor: + - editor: name: opskubedbcom-oracleopsrequest-editor sourceRef: apiGroup: source.toolkit.fluxcd.io @@ -75,12 +73,12 @@ spec: version: v0.33.0 enforceQuota: true flow: standalone-create - icon: hugeicons:horizontal-resize icons: - - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg type: image/svg+xml - name: Horizontal Scale - operationId: create-opsrequest-horizontalscaling + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + partOf: Scale Vertically - editor: name: opskubedbcom-oracleopsrequest-editor sourceRef: @@ -91,27 +89,78 @@ spec: enforceQuota: true flow: standalone-create icons: - - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg type: image/svg+xml - name: Vertical Scale - operationId: create-opsrequest-verticalscaling + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + partOf: Scale Storage + name: Scaling + - items: + - editor: + name: kubedbcom-oracle-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/compute.svg + type: image/svg+xml + name: Compute + operationId: edit-self-compute-autoscaler partOf: Scale Vertically - editor: - name: opskubedbcom-oracleopsrequest-editor + name: kubedbcom-oracle-editor sourceRef: apiGroup: source.toolkit.fluxcd.io kind: HelmRepository name: appscode-charts-oci version: v0.33.0 enforceQuota: true - flow: standalone-create + flow: standalone-edit icons: - - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + - src: https://cdn.appscode.com/k8s/icons/action-icons/storage.svg type: image/svg+xml - name: Expand Volume - operationId: create-opsrequest-volumeexpansion + name: Storage + operationId: edit-self-storage-autoscaler partOf: Scale Storage - name: Scaling + name: Autoscaling + - items: + - editor: + name: kubedbcom-oracle-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-edit + icon: hugeicons:presentation-line-chart-01 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/monitor.svg + type: image/svg+xml + name: Monitoring + operationId: edit-self-monitoring + name: Security & Monitoring + - items: + - editor: + name: kubedbcom-oracle-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-edit + icon: streamline-ultimate:server-share + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: Expose via Gateway + operationId: edit-self-binding + name: Extras editor: name: kubedbcom-oracle-editor sourceRef: diff --git a/hub/resourceeditors/ops.kubedb.com/v1alpha1/oracleopsrequests.yaml b/hub/resourceeditors/ops.kubedb.com/v1alpha1/oracleopsrequests.yaml new file mode 100644 index 000000000..35c4168f4 --- /dev/null +++ b/hub/resourceeditors/ops.kubedb.com/v1alpha1/oracleopsrequests.yaml @@ -0,0 +1,25 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceEditor +metadata: + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: OracleOpsRequest + k8s.io/resource: oracleopsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-oracleopsrequests +spec: + resource: + group: ops.kubedb.com + kind: OracleOpsRequest + name: oracleopsrequests + scope: Namespaced + version: v1alpha1 + ui: + editor: + name: opskubedbcom-oracleopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/neo4js.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/neo4js.yaml index 6ab780701..0bb6dd7b2 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/neo4js.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/neo4js.yaml @@ -125,47 +125,67 @@ spec: opscenter-datastore: - kubedb - kubedb-opscenter - - icon: hugeicons:dashboard-circle-settings - name: Operations + - icon: hugeicons:chart-line-data-01 + name: Insights + requiredFeatureSets: + opscenter-datastore: + - kubedb + - kubedb-opscenter + opscenter-monitoring: + - monitoring-operator sections: - blocks: - actions: create: Never displayMode: List + fieldPath: .response.dashboards + impersonate: true kind: Connection - name: Recent Operations + name: Grafana Dashboards query: - byLabel: ops - type: GraphQL + raw: | + request: + sourceLocator: + resource: + group: kubedb.com + name: neo4js + version: v1alpha2 + ref: + name: {{ .name }} + namespace: {{ .namespace }} + name: kubedb.com-v1alpha2-neo4js + type: REST ref: - group: ops.kubedb.com - kind: Neo4jOpsRequest + group: meta.k8s.appscode.com + kind: RenderDashboard requiredFeatureSets: opscenter-datastore: - kubedb + - kubedb-opscenter + opscenter-monitoring: + - monitoring-operator view: - name: ops.kubedb.com-v1alpha1-neo4jopsrequests-kubedb - sort: - fieldName: Age - order: Ascending + name: ui.k8s.appscode.com-v1alpha1-resourcedashboards-urls + - icon: hugeicons:dashboard-circle-settings + name: Operations + sections: + - blocks: - actions: create: Never displayMode: List kind: Connection - name: Recommendations + name: Recent Operations query: - byLabel: recommended_for + byLabel: ops type: GraphQL ref: - group: supervisor.appscode.com - kind: Recommendation + group: ops.kubedb.com + kind: Neo4jOpsRequest requiredFeatureSets: opscenter-datastore: - kubedb - opscenter-tools: - - supervisor view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb + name: ops.kubedb.com-v1alpha1-neo4jopsrequests-kubedb sort: fieldName: Age order: Ascending diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/oracles.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/oracles.yaml index 13f22b9cb..3b550434d 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/oracles.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/oracles.yaml @@ -106,6 +106,97 @@ spec: requiredFeatureSets: opscenter-datastore: - kubedb + - icon: hugeicons:user-03 + name: Users + sections: + - blocks: + - actions: + create: Never + displayMode: List + kind: Connection + name: Root User + query: + byLabel: auth_secret + type: GraphQL + ref: + group: "" + kind: Secret + view: + name: core-v1-secrets + - actions: + create: Never + displayMode: List + kind: Connection + name: AppBinding + query: + byLabel: connect_via + type: GraphQL + ref: + group: appcatalog.appscode.com + kind: AppBinding + requiredFeatureSets: + opscenter-datastore: + - kubedb + view: + name: appcatalog.appscode.com-v1alpha1-appbindings + - actions: + create: Never + displayMode: List + kind: Connection + name: VaultServers + query: + raw: |- + query Find($src: String!, $targetGroup: String!, $targetKind: String!) { + find(oid: $src) { + authz(group: "engine.kubevault.com", kind: "SecretEngine") { + refs: offshoot(group: $targetGroup, kind: $targetKind) { + namespace + name + } + } + } + } + type: GraphQL + ref: + group: kubevault.com + kind: VaultServer + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: kubevault.com-v1alpha2-vaultservers + - actions: + create: Always + displayMode: List + kind: Connection + name: SecretEngines + query: + byLabel: authz + type: GraphQL + ref: + group: engine.kubevault.com + kind: SecretEngine + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: engine.kubevault.com-v1alpha1-secretengines + - actions: + create: Always + displayMode: List + kind: Connection + name: SecretAccessRequests + query: + byLabel: authz + type: GraphQL + ref: + group: engine.kubevault.com + kind: SecretAccessRequest + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: engine.kubevault.com-v1alpha1-secretaccessrequests - icon: hugeicons:chart-line-data-01 name: Insights requiredFeatureSets: @@ -170,27 +261,6 @@ spec: sort: fieldName: Age order: Ascending - - actions: - create: Never - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb - sort: - fieldName: Age - order: Ascending - icon: hugeicons:database-locked name: Security sections: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/neo4js.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/neo4js.yaml index 714886e91..cd0816b7d 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/neo4js.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/neo4js.yaml @@ -16,39 +16,6 @@ spec: - blocks: - kind: Block name: kubedb.com-v1alpha2-neo4js - - icon: hugeicons:dashboard-circle-settings - name: Operations - sections: - - blocks: - - actions: - create: Always - displayMode: List - kind: Connection - name: Recent Operations - query: - byLabel: ops - type: GraphQL - ref: - group: ops.kubedb.com - kind: Neo4jOpsRequest - - actions: - create: Always - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations - name: Monitoring sections: - blocks: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/oracles.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/oracles.yaml index 86a9718fb..19ee0bf80 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/oracles.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/oracles.yaml @@ -16,153 +16,6 @@ spec: - blocks: - kind: Block name: kubedb.com-v1alpha2-oracles - - icon: hugeicons:user-03 - name: Users - sections: - - blocks: - - actions: - create: Never - displayMode: List - kind: Connection - name: Root User - query: - byLabel: auth_secret - type: GraphQL - ref: - group: "" - kind: Secret - - actions: - create: Never - displayMode: List - kind: Connection - name: AppBinding - query: - byLabel: connect_via - type: GraphQL - ref: - group: appcatalog.appscode.com - kind: AppBinding - requiredFeatureSets: - opscenter-datastore: - - kubedb - - actions: - create: Never - displayMode: List - kind: Connection - name: VaultServers - query: - raw: |- - query Find($src: String!, $targetGroup: String!, $targetKind: String!) { - find(oid: $src) { - authz(group: "engine.kubevault.com", kind: "SecretEngine") { - refs: offshoot(group: $targetGroup, kind: $targetKind) { - namespace - name - } - } - } - } - type: GraphQL - ref: - group: kubevault.com - kind: VaultServer - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - actions: - create: Never - displayMode: List - kind: Connection - name: SecretEngines - query: - byLabel: authz - type: GraphQL - ref: - group: engine.kubevault.com - kind: SecretEngine - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - actions: - create: Never - displayMode: List - kind: Connection - name: OracleRoles - query: - byLabel: authz - type: GraphQL - ref: - group: engine.kubevault.com - kind: OracleRole - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - actions: - create: Never - displayMode: List - kind: Connection - name: SecretAccessRequests - query: - byLabel: authz - type: GraphQL - ref: - group: engine.kubevault.com - kind: SecretAccessRequest - requiredFeatureSets: - opscenter-secret-management: - - kubevault - - icon: hugeicons:dashboard-circle-settings - name: Operations - sections: - - blocks: - - actions: - create: Always - displayMode: List - kind: Connection - name: Recent Operations - query: - byLabel: ops - type: GraphQL - ref: - group: ops.kubedb.com - kind: OracleOpsRequest - - actions: - create: Always - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations - - icon: carbon:data-backup - name: Backup - requiredFeatureSets: - opscenter-backup: - - kubestash - sections: - - blocks: - - kind: Block - name: core.kubestash.com-v1alpha1-kubedb-backup - - icon: carbon:data-backup - name: Backup (Legacy) - requiredFeatureSets: - opscenter-backup: - - stash - - stash-opscenter - sections: - - blocks: - - kind: Block - name: stash.appscode.com-v1-kubedb-backup - name: Monitoring sections: - blocks: diff --git a/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/oracles.yaml b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/oracles.yaml new file mode 100644 index 000000000..59af58072 --- /dev/null +++ b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/oracles.yaml @@ -0,0 +1,62 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Oracle + k8s.io/resource: oracles + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-oracles-kubedb +spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date + defaultView: false + resource: + group: kubedb.com + kind: Oracle + name: oracles + scope: Namespaced + version: v1alpha2 From efa9e8297fd7da9b48abd438a74ba3bddf9068a5 Mon Sep 17 00:00:00 2001 From: Arnob kumar saha Date: Wed, 20 May 2026 15:19:13 +0600 Subject: [PATCH 7/9] pgpool & qdrant & rabbitmq Signed-off-by: Arnob kumar saha --- .../kubedb.com/v1alpha2/qdrants.yaml | 4 +- .../kubedb.com/v1alpha2/pgpools.yaml | 15 ++ .../kubedb.com/v1alpha2/qdrants.yaml | 138 ++++++++++++++++++ .../kubedb.com/v1alpha2/kubedb/qdrants.yaml | 33 ----- .../kubedb.com/v1alpha2/kubedb/rabbitmqs.yaml | 112 +++++++++++--- .../kubedb.com/v1alpha2/qdrants.yaml | 33 ----- .../kubedb.com/v1alpha2/kubedb/pgpools.yaml | 62 ++++++++ .../kubedb.com/v1alpha2/kubedb/rabbitmqs.yaml | 62 ++++++++ 8 files changed, 369 insertions(+), 90 deletions(-) create mode 100644 hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/pgpools.yaml create mode 100644 hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/rabbitmqs.yaml diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/qdrants.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/qdrants.yaml index b5ab91593..d94d01212 100644 --- a/hub/resourcedashboards/kubedb.com/v1alpha2/qdrants.yaml +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/qdrants.yaml @@ -15,9 +15,7 @@ spec: value: '{{ .metadata.namespace }}' - name: app value: '{{ .metadata.name }}' - - if: - condition: '{{- if or (hasKey .spec "replicaSet") (hasKey .spec "shardTopology") }}true{{ else }}false{{ end -}}' - title: KubeDB / Qdrant / Database / ReplicaSet + - title: KubeDB / Qdrant / Database vars: - name: namespace value: '{{ .metadata.namespace }}' diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/pgpools.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/pgpools.yaml index 3b027e818..3d9222a2a 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/pgpools.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/pgpools.yaml @@ -22,6 +22,21 @@ spec: ui: actions: - items: + - editor: + name: opskubedbcom-pgpoolopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: qlementine-icons:version-control-16 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade - editor: name: opskubedbcom-pgpoolopsrequest-editor sourceRef: diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/qdrants.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/qdrants.yaml index ee69c08ff..5dfc07cdc 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/qdrants.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/qdrants.yaml @@ -21,6 +21,144 @@ spec: version: v1alpha2 ui: actions: + - items: + - editor: + name: opskubedbcom-qdrantopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: qlementine-icons:version-control-16 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-qdrantopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:redo + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-qdrantopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:settings-05 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - enforceQuota: false + flow: "" + icon: hugeicons:vertical-resize + name: Scale Vertically + operationId: scale-vertically + - enforceQuota: false + flow: "" + icon: hugeicons:arrow-expand + name: Scale Storage + operationId: scale-storage + - disabledTemplate: | + {{ not (gt .spec.replicas 1) }} + editor: + name: opskubedbcom-qdrantopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icon: hugeicons:horizontal-resize + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-qdrantopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + partOf: Scale Vertically + - editor: + name: opskubedbcom-qdrantopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + partOf: Scale Storage + name: Scaling + - items: + - editor: + name: kubedbcom-qdrant-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/compute.svg + type: image/svg+xml + name: Compute + operationId: edit-self-compute-autoscaler + partOf: Scale Vertically + - editor: + name: kubedbcom-qdrant-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/storage.svg + type: image/svg+xml + name: Storage + operationId: edit-self-storage-autoscaler + partOf: Scale Storage + name: Autoscaling - items: - editor: name: opskubedbcom-qdrantopsrequest-editor diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/qdrants.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/qdrants.yaml index 3a131c668..059e306b7 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/qdrants.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/qdrants.yaml @@ -20,9 +20,6 @@ spec: ref: group: core.k8s.appscode.com kind: GenericResource - requiredFeatureSets: - opscenter-datastore: - - kubedb view: name: core.k8s.appscode.com-v1alpha1-genericresources-kubedb pages: @@ -148,36 +145,6 @@ spec: sort: fieldName: Age order: Ascending - - actions: - create: Never - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb - sort: - fieldName: Age - order: Ascending - - icon: carbon:data-backup - name: Backup - requiredFeatureSets: - opscenter-backup: - - kubestash - sections: - - blocks: - - kind: Block - name: core.kubestash.com-v1alpha1-kubedb-backup - icon: hugeicons:database-locked name: Security sections: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/rabbitmqs.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/rabbitmqs.yaml index 0abc97f70..462b5a7a3 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/rabbitmqs.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/rabbitmqs.yaml @@ -106,6 +106,97 @@ spec: requiredFeatureSets: opscenter-datastore: - kubedb + - icon: hugeicons:user-03 + name: Users + sections: + - blocks: + - actions: + create: Never + displayMode: List + kind: Connection + name: Root User + query: + byLabel: auth_secret + type: GraphQL + ref: + group: "" + kind: Secret + view: + name: core-v1-secrets + - actions: + create: Never + displayMode: List + kind: Connection + name: AppBinding + query: + byLabel: connect_via + type: GraphQL + ref: + group: appcatalog.appscode.com + kind: AppBinding + requiredFeatureSets: + opscenter-datastore: + - kubedb + view: + name: appcatalog.appscode.com-v1alpha1-appbindings + - actions: + create: Never + displayMode: List + kind: Connection + name: VaultServers + query: + raw: |- + query Find($src: String!, $targetGroup: String!, $targetKind: String!) { + find(oid: $src) { + authz(group: "engine.kubevault.com", kind: "SecretEngine") { + refs: offshoot(group: $targetGroup, kind: $targetKind) { + namespace + name + } + } + } + } + type: GraphQL + ref: + group: kubevault.com + kind: VaultServer + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: kubevault.com-v1alpha2-vaultservers + - actions: + create: Always + displayMode: List + kind: Connection + name: SecretEngines + query: + byLabel: authz + type: GraphQL + ref: + group: engine.kubevault.com + kind: SecretEngine + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: engine.kubevault.com-v1alpha1-secretengines + - actions: + create: Always + displayMode: List + kind: Connection + name: SecretAccessRequests + query: + byLabel: authz + type: GraphQL + ref: + group: engine.kubevault.com + kind: SecretAccessRequest + requiredFeatureSets: + opscenter-secret-management: + - kubevault + view: + name: engine.kubevault.com-v1alpha1-secretaccessrequests - icon: hugeicons:chart-line-data-01 name: Insights requiredFeatureSets: @@ -170,27 +261,6 @@ spec: sort: fieldName: Age order: Ascending - - actions: - create: Never - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb - sort: - fieldName: Age - order: Ascending - icon: hugeicons:database-locked name: Security sections: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/qdrants.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/qdrants.yaml index 00ad12f4a..6a2598776 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/qdrants.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/qdrants.yaml @@ -16,39 +16,6 @@ spec: - blocks: - kind: Block name: kubedb.com-v1alpha2-qdrants - - icon: hugeicons:dashboard-circle-settings - name: Operations - sections: - - blocks: - - actions: - create: Always - displayMode: List - kind: Connection - name: Recent Operations - query: - byLabel: ops - type: GraphQL - ref: - group: ops.kubedb.com - kind: QdrantOpsRequest - - actions: - create: Always - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations - name: Monitoring sections: - blocks: diff --git a/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/pgpools.yaml b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/pgpools.yaml new file mode 100644 index 000000000..0b95707cf --- /dev/null +++ b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/pgpools.yaml @@ -0,0 +1,62 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Pgpool + k8s.io/resource: pgpools + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-pgpools-kubedb +spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date + defaultView: false + resource: + group: kubedb.com + kind: Pgpool + name: pgpools + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/rabbitmqs.yaml b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/rabbitmqs.yaml new file mode 100644 index 000000000..2ec7dcd59 --- /dev/null +++ b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/rabbitmqs.yaml @@ -0,0 +1,62 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: RabbitMQ + k8s.io/resource: rabbitmqs + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-rabbitmqs-kubedb +spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date + defaultView: false + resource: + group: kubedb.com + kind: RabbitMQ + name: rabbitmqs + scope: Namespaced + version: v1alpha2 From 3f46355be984e7bc11297d7bafec7e0f71f1265f Mon Sep 17 00:00:00 2001 From: Arnob kumar saha Date: Wed, 20 May 2026 15:23:03 +0600 Subject: [PATCH 8/9] singlestore & solr Signed-off-by: Arnob kumar saha --- .../kubedb.com/v1alpha2/solr.yaml | 10 +-- .../kubedb.com/v1alpha2/solrs.yaml | 15 +++++ .../v1alpha2/kubedb/singlestores.yaml | 21 ------- .../kubedb.com/v1alpha2/kubedb/solrs.yaml | 21 ------- .../v1alpha2/kubedb/singlestores.yaml | 62 +++++++++++++++++++ .../kubedb.com/v1alpha2/kubedb/solrs.yaml | 62 +++++++++++++++++++ 6 files changed, 144 insertions(+), 47 deletions(-) create mode 100644 hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/singlestores.yaml create mode 100644 hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/solrs.yaml diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/solr.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/solr.yaml index cb089397d..d3db5a6a2 100644 --- a/hub/resourcedashboards/kubedb.com/v1alpha2/solr.yaml +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/solr.yaml @@ -3,25 +3,25 @@ kind: ResourceDashboard metadata: labels: k8s.io/group: kubedb.com - k8s.io/kind: solr + k8s.io/kind: Solr k8s.io/resource: solrs k8s.io/version: v1alpha2 name: kubedb.com-v1alpha2-solrs spec: dashboards: - - title: KubeDB / solr / Summary + - title: KubeDB / Solr / Summary vars: - name: namespace value: '{{ .metadata.namespace }}' - name: app value: '{{ .metadata.name }}' - - title: KubeDB / solr / Database + - title: KubeDB / Solr / Database vars: - name: namespace value: '{{ .metadata.namespace }}' - name: app value: '{{ .metadata.name }}' - - title: KubeDB / solr / Pod + - title: KubeDB / Solr / Pod vars: - name: namespace value: '{{ .metadata.namespace }}' @@ -30,7 +30,7 @@ spec: provider: Grafana resource: group: kubedb.com - kind: solr + kind: Solr name: solrs scope: Namespaced version: v1alpha2 diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/solrs.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/solrs.yaml index 1a9218ec3..e8c6ff1e9 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/solrs.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/solrs.yaml @@ -207,6 +207,21 @@ spec: partOf: Scale Storage name: Autoscaling - items: + - editor: + name: opskubedbcom-solropsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:security-check + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/configure.svg + type: image/svg+xml + name: TLS Configure + operationId: create-opsrequest-reconfiguretls - editor: name: kubedbcom-solr-editor sourceRef: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/singlestores.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/singlestores.yaml index c13f84b75..286b308c7 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/singlestores.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/singlestores.yaml @@ -261,27 +261,6 @@ spec: sort: fieldName: Age order: Ascending - - actions: - create: Never - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb - sort: - fieldName: Age - order: Ascending - icon: carbon:data-backup name: Backup requiredFeatureSets: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/solrs.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/solrs.yaml index 9c147cfa9..000028989 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/solrs.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/solrs.yaml @@ -261,27 +261,6 @@ spec: sort: fieldName: Age order: Ascending - - actions: - create: Never - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb - sort: - fieldName: Age - order: Ascending - icon: hugeicons:database-locked name: Security sections: diff --git a/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/singlestores.yaml b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/singlestores.yaml new file mode 100644 index 000000000..c1faf578e --- /dev/null +++ b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/singlestores.yaml @@ -0,0 +1,62 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Singlestore + k8s.io/resource: singlestores + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-singlestores-kubedb +spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date + defaultView: false + resource: + group: kubedb.com + kind: Singlestore + name: singlestores + scope: Namespaced + version: v1alpha2 diff --git a/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/solrs.yaml b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/solrs.yaml new file mode 100644 index 000000000..74717b6dc --- /dev/null +++ b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/solrs.yaml @@ -0,0 +1,62 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: Solr + k8s.io/resource: solrs + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-solrs-kubedb +spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date + defaultView: false + resource: + group: kubedb.com + kind: Solr + name: solrs + scope: Namespaced + version: v1alpha2 From 4b3e856d33341ce3350cb99399b1bf7bc0d1d2f6 Mon Sep 17 00:00:00 2001 From: Arnob kumar saha Date: Wed, 20 May 2026 15:27:02 +0600 Subject: [PATCH 9/9] weaviate & zookeeper Signed-off-by: Arnob kumar saha --- .../kubedb.com/v1alpha2/weaviates.yaml | 22 +-- .../kubedb.com/v1alpha2/zookeeper.yaml | 16 +- .../kubedb.com/v1alpha2/weaviates.yaml | 139 ++++++++++++++++++ .../kubedb.com/v1alpha2/zookeepers.yaml | 25 +++- .../v1alpha1/weaviateopsrequests.yaml | 25 ++++ .../kubedb.com/v1alpha2/kubedb/weaviates.yaml | 72 --------- .../v1alpha2/kubedb/zookeepers.yaml | 21 --- .../kubedb.com/v1alpha2/weaviates.yaml | 33 ----- .../v1alpha2/kubedb/zookeepers.yaml | 62 ++++++++ 9 files changed, 257 insertions(+), 158 deletions(-) create mode 100644 hub/resourceeditors/ops.kubedb.com/v1alpha1/weaviateopsrequests.yaml create mode 100644 hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/zookeepers.yaml diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/weaviates.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/weaviates.yaml index 21c3c7bbb..c6162c081 100644 --- a/hub/resourcedashboards/kubedb.com/v1alpha2/weaviates.yaml +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/weaviates.yaml @@ -8,27 +8,7 @@ metadata: k8s.io/version: v1alpha2 name: kubedb.com-v1alpha2-weaviates spec: - dashboards: - - title: KubeDB / Weaviate / Summary - vars: - - name: namespace - value: '{{ .metadata.namespace }}' - - name: app - value: '{{ .metadata.name }}' - - if: - condition: '{{- if or (hasKey .spec "replicaSet") (hasKey .spec "shardTopology") }}true{{ else }}false{{ end -}}' - title: KubeDB / Weaviate / Database / ReplicaSet - vars: - - name: namespace - value: '{{ .metadata.namespace }}' - - name: app - value: '{{ .metadata.name }}' - - title: KubeDB / Weaviate / Pod - vars: - - name: namespace - value: '{{ .metadata.namespace }}' - - name: app - value: '{{ .metadata.name }}' + dashboards: null provider: Grafana resource: group: kubedb.com diff --git a/hub/resourcedashboards/kubedb.com/v1alpha2/zookeeper.yaml b/hub/resourcedashboards/kubedb.com/v1alpha2/zookeeper.yaml index 8bfc50f7d..1f8fd66f3 100644 --- a/hub/resourcedashboards/kubedb.com/v1alpha2/zookeeper.yaml +++ b/hub/resourcedashboards/kubedb.com/v1alpha2/zookeeper.yaml @@ -3,25 +3,25 @@ kind: ResourceDashboard metadata: labels: k8s.io/group: kubedb.com - k8s.io/kind: ZooKeeeper - k8s.io/resource: zookeeepers + k8s.io/kind: ZooKeeper + k8s.io/resource: zookeepers k8s.io/version: v1alpha2 - name: kubedb.com-v1alpha2-zookeeepers + name: kubedb.com-v1alpha2-zookeepers spec: dashboards: - - title: KubeDB / ZooKeeeper / Summary + - title: KubeDB / ZooKeeper / Summary vars: - name: namespace value: '{{ .metadata.namespace }}' - name: app value: '{{ .metadata.name }}' - - title: KubeDB / ZooKeeeper / Database + - title: KubeDB / ZooKeeper / Database vars: - name: namespace value: '{{ .metadata.namespace }}' - name: app value: '{{ .metadata.name }}' - - title: KubeDB / ZooKeeeper / Pod + - title: KubeDB / ZooKeeper / Pod vars: - name: namespace value: '{{ .metadata.namespace }}' @@ -30,7 +30,7 @@ spec: provider: Grafana resource: group: kubedb.com - kind: ZooKeeeper - name: zookeeepers + kind: ZooKeeper + name: zookeepers scope: Namespaced version: v1alpha2 diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/weaviates.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/weaviates.yaml index b986c02a4..44df1f6f6 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/weaviates.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/weaviates.yaml @@ -20,6 +20,145 @@ spec: scope: Namespaced version: v1alpha2 ui: + actions: + - items: + - editor: + name: opskubedbcom-weaviateopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: qlementine-icons:version-control-16 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/version.svg + type: image/svg+xml + name: Update Version + operationId: create-opsrequest-upgrade + - editor: + name: opskubedbcom-weaviateopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:redo + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/restart.svg + type: image/svg+xml + name: Restart + operationId: create-opsrequest-restart + - editor: + name: opskubedbcom-weaviateopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false + flow: standalone-create + icon: hugeicons:settings-05 + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/reconfigure.svg + type: image/svg+xml + name: Reconfigure + operationId: create-opsrequest-reconfigure + name: Operations + - items: + - enforceQuota: false + flow: "" + icon: hugeicons:vertical-resize + name: Scale Vertically + operationId: scale-vertically + - enforceQuota: false + flow: "" + icon: hugeicons:arrow-expand + name: Scale Storage + operationId: scale-storage + - disabledTemplate: | + {{ not (gt .spec.replicas 1) }} + editor: + name: opskubedbcom-weaviateopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icon: hugeicons:horizontal-resize + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/horizontal_scale.svg + type: image/svg+xml + name: Horizontal Scale + operationId: create-opsrequest-horizontalscaling + - editor: + name: opskubedbcom-weaviateopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg + type: image/svg+xml + name: Vertical Scale + operationId: create-opsrequest-verticalscaling + partOf: Scale Vertically + - editor: + name: opskubedbcom-weaviateopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-create + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/expand.svg + type: image/svg+xml + name: Expand Volume + operationId: create-opsrequest-volumeexpansion + partOf: Scale Storage + name: Scaling + - items: + - editor: + name: kubedbcom-weaviate-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/compute.svg + type: image/svg+xml + name: Compute + operationId: edit-self-compute-autoscaler + partOf: Scale Vertically + - editor: + name: kubedbcom-weaviate-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/storage.svg + type: image/svg+xml + name: Storage + operationId: edit-self-storage-autoscaler + partOf: Scale Storage + name: Autoscaling editor: name: kubedbcom-weaviate-editor sourceRef: diff --git a/hub/resourceeditors/kubedb.com/v1alpha2/zookeepers.yaml b/hub/resourceeditors/kubedb.com/v1alpha2/zookeepers.yaml index 082af47ff..a18c309b7 100644 --- a/hub/resourceeditors/kubedb.com/v1alpha2/zookeepers.yaml +++ b/hub/resourceeditors/kubedb.com/v1alpha2/zookeepers.yaml @@ -126,14 +126,16 @@ spec: icon: hugeicons:arrow-expand name: Scale Storage operationId: scale-storage - - editor: + - disabledTemplate: | + {{ not (gt .spec.replicas 1) }} + editor: name: opskubedbcom-zookeeperopsrequest-editor sourceRef: apiGroup: source.toolkit.fluxcd.io kind: HelmRepository name: appscode-charts-oci version: v0.33.0 - enforceQuota: false + enforceQuota: true flow: standalone-create icon: hugeicons:horizontal-resize icons: @@ -148,7 +150,7 @@ spec: kind: HelmRepository name: appscode-charts-oci version: v0.33.0 - enforceQuota: false + enforceQuota: true flow: standalone-create icons: - src: https://cdn.appscode.com/k8s/icons/action-icons/vertical_scale.svg @@ -172,6 +174,23 @@ spec: operationId: create-opsrequest-volumeexpansion partOf: Scale Storage name: Scaling + - items: + - editor: + name: kubedbcom-zookeeper-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: true + flow: standalone-edit + icons: + - src: https://cdn.appscode.com/k8s/icons/action-icons/compute.svg + type: image/svg+xml + name: Compute + operationId: edit-self-compute-autoscaler + partOf: Scale Vertically + name: Autoscaling - items: - editor: name: opskubedbcom-zookeeperopsrequest-editor diff --git a/hub/resourceeditors/ops.kubedb.com/v1alpha1/weaviateopsrequests.yaml b/hub/resourceeditors/ops.kubedb.com/v1alpha1/weaviateopsrequests.yaml new file mode 100644 index 000000000..9157d0184 --- /dev/null +++ b/hub/resourceeditors/ops.kubedb.com/v1alpha1/weaviateopsrequests.yaml @@ -0,0 +1,25 @@ +apiVersion: ui.k8s.appscode.com/v1alpha1 +kind: ResourceEditor +metadata: + labels: + k8s.io/group: ops.kubedb.com + k8s.io/kind: WeaviateOpsRequest + k8s.io/resource: weaviateopsrequests + k8s.io/version: v1alpha1 + name: ops.kubedb.com-v1alpha1-weaviateopsrequests +spec: + resource: + group: ops.kubedb.com + kind: WeaviateOpsRequest + name: weaviateopsrequests + scope: Namespaced + version: v1alpha1 + ui: + editor: + name: opskubedbcom-weaviateopsrequest-editor + sourceRef: + apiGroup: source.toolkit.fluxcd.io + kind: HelmRepository + name: appscode-charts-oci + version: v0.33.0 + enforceQuota: false diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/weaviates.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/weaviates.yaml index 2ddfbacfe..e011409d5 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/weaviates.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/weaviates.yaml @@ -20,9 +20,6 @@ spec: ref: group: core.k8s.appscode.com kind: GenericResource - requiredFeatureSets: - opscenter-datastore: - - kubedb view: name: core.k8s.appscode.com-v1alpha1-genericresources-kubedb pages: @@ -30,45 +27,6 @@ spec: name: Overview sections: - blocks: - - actions: - create: Never - displayMode: List - fieldPath: '{.response.dashboards[0].panels}' - impersonate: true - kind: Connection - name: Dashboards - query: - raw: | - request: - embeddedLink: true - dashboards: - - title: "KubeDB / Weaviate / Summary" - vars: - - name: namespace - value: {{ .namespace }} - - name: app - value: {{ .name }} - panels: - - { "title": "CPU Usage", "width": 12 } - - { "title": "Memory Usage", "width": 12 } - - { "title": "Disk Usage", "width": 6 } - - { "title": "Disk R/W Info", "width": 6 } - - { "title": "IOPS (Reads+Writes)", "width": 6 } - - { "title": "ThroughPut (Read+Write)", "width": 6 } - - { "title": "Receive Bandwidth", "width": 6 } - - { "title": "Transmit Bandwidth", "width": 6 } - type: REST - ref: - group: ui.openviz.dev - kind: DashboardGroup - requiredFeatureSets: - opscenter-datastore: - - kubedb - - kubedb-opscenter - opscenter-monitoring: - - monitoring-operator - view: - name: ui.openviz.dev-v1alpha1-dashboardgroups-panels - actions: create: Never displayMode: List @@ -148,36 +106,6 @@ spec: sort: fieldName: Age order: Ascending - - actions: - create: Never - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb - sort: - fieldName: Age - order: Ascending - - icon: carbon:data-backup - name: Backup - requiredFeatureSets: - opscenter-backup: - - kubestash - sections: - - blocks: - - kind: Block - name: core.kubestash.com-v1alpha1-kubedb-backup - icon: hugeicons:database-locked name: Security sections: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/zookeepers.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/zookeepers.yaml index a34b3bfe1..37a9f45fd 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/zookeepers.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/kubedb/zookeepers.yaml @@ -170,27 +170,6 @@ spec: sort: fieldName: Age order: Ascending - - actions: - create: Never - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations-kubedb - sort: - fieldName: Age - order: Ascending - icon: carbon:data-backup name: Backup requiredFeatureSets: diff --git a/hub/resourceoutlines/kubedb.com/v1alpha2/weaviates.yaml b/hub/resourceoutlines/kubedb.com/v1alpha2/weaviates.yaml index 438c81217..b52819a3f 100644 --- a/hub/resourceoutlines/kubedb.com/v1alpha2/weaviates.yaml +++ b/hub/resourceoutlines/kubedb.com/v1alpha2/weaviates.yaml @@ -16,39 +16,6 @@ spec: - blocks: - kind: Block name: kubedb.com-v1alpha2-weaviates - - icon: hugeicons:dashboard-circle-settings - name: Operations - sections: - - blocks: - - actions: - create: Always - displayMode: List - kind: Connection - name: Recent Operations - query: - byLabel: ops - type: GraphQL - ref: - group: ops.kubedb.com - kind: WeaviateOpsRequest - - actions: - create: Always - displayMode: List - kind: Connection - name: Recommendations - query: - byLabel: recommended_for - type: GraphQL - ref: - group: supervisor.appscode.com - kind: Recommendation - requiredFeatureSets: - opscenter-datastore: - - kubedb - opscenter-tools: - - supervisor - view: - name: supervisor.appscode.com-v1alpha1-recommendations - name: Monitoring sections: - blocks: diff --git a/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/zookeepers.yaml b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/zookeepers.yaml new file mode 100644 index 000000000..64c2c8f53 --- /dev/null +++ b/hub/resourcetabledefinitions/kubedb.com/v1alpha2/kubedb/zookeepers.yaml @@ -0,0 +1,62 @@ +apiVersion: meta.k8s.appscode.com/v1alpha1 +kind: ResourceTableDefinition +metadata: + labels: + k8s.io/group: kubedb.com + k8s.io/kind: ZooKeeper + k8s.io/resource: zookeepers + k8s.io/version: v1alpha2 + name: kubedb.com-v1alpha2-zookeepers-kubedb +spec: + columns: + - name: Name + pathTemplate: '{{ .metadata.name }}' + priority: 3 + type: string + - name: Namespace + pathTemplate: '{{ .metadata.namespace }}' + priority: 3 + type: string + - name: Labels + pathTemplate: '{{ .metadata.labels | toRawJson }}' + priority: 3 + type: object + - name: Annotations + pathTemplate: '{{ .metadata.annotations | toRawJson }}' + priority: 1 + type: object + - name: Replicas + pathTemplate: '{{ k8s_resource_replicas_by_roles . | toRawJson }}' + priority: 3 + type: string + - name: Phase + pathTemplate: '{{ .status.phase }}' + priority: 3 + type: string + - name: Auth Secret + pathTemplate: '{{ .spec.authSecret.name }}' + priority: 1 + type: string + - name: Termination Policy + pathTemplate: '{{ .spec.terminationPolicy }}' + priority: 3 + type: string + - name: Halted + pathTemplate: '{{ .spec.halted }}' + priority: 1 + type: string + - name: Age + pathTemplate: '{{ .metadata.creationTimestamp }}' + priority: 3 + sort: + enable: true + template: '{{ .metadata.creationTimestamp | toDate "2006-01-02T15:04:05Z07:00" | unixEpoch }}' + type: integer + type: date + defaultView: false + resource: + group: kubedb.com + kind: ZooKeeper + name: zookeepers + scope: Namespaced + version: v1alpha2