Compare commits

...
71 Commits
Author SHA1 Message Date
github-actions[bot] 4dccd149b8 CI Build Artifacts (commit: bcd8929ba3, version: 1.9.1-rc2) 2026-09-23 08:40:15 +00:00
github-actions[bot] a253d76133 CI Build Artifacts (commit: bcd8929ba3, version: 1.9.1-rc2) 2026-09-23 08:39:34 +00:00
github-actions[bot] c2a0bfc1ca CI Build Artifacts (commit: 280878ebb3, version: 1.9.1-rc1) 2026-09-22 11:47:57 +00:00
github-actions[bot] 6d587e2853 CI Build Artifacts (commit: 51da6a551c, version: 1.9.1-rc1) 2026-09-18 08:57:21 +00:00
github-actions[bot] 448f41aec1 CI Build Artifacts (commit: 010dd710fc, version: 1.9.1-rc1) 2026-09-17 14:45:51 +00:00
github-actions[bot] 341e4f1012 CI Build Artifacts (commit: 788c583210, version: 1.9.0) 2026-09-16 01:45:41 +00:00
github-actions[bot] fc85e57087 CI Build Artifacts (commit: ee8f214b7f, version: 1.9.0) 2026-09-16 01:40:24 +00:00
github-actions[bot] 3a4e21a42b CI Build Artifacts (commit: ee8f214b7f, version: 1.9.0) 2026-09-16 01:39:28 +00:00
github-actions[bot] 65201b4942 CI Build Artifacts (commit: 68d67a7cbc, version: 1.9.0) 2026-09-16 01:34:21 +00:00
github-actions[bot] cd483c54f3 CI Build Artifacts (commit: 6a7691456f, version: 1.9.0) 2026-09-16 00:59:15 +00:00
github-actions[bot] 409ffef8f9 CI Build Artifacts (commit: 66f6c36759, version: 1.9.0) 2026-09-15 13:29:32 +00:00
github-actions[bot] e7a67105bf CI Build Artifacts (commit: eb77d03b97, version: 1.9.0-rc7) 2026-09-01 10:52:20 +00:00
github-actions[bot] f425005928 CI Build Artifacts (commit: 22deb0e1f6, version: 1.9.0-rc6) 2026-09-01 02:18:27 +00:00
github-actions[bot] dbd593c6bb CI Build Artifacts (commit: f096147aa3, version: 1.9.0-rc6) 2026-08-25 08:55:22 +00:00
github-actions[bot] 4b487b874b CI Build Artifacts (commit: d73a9413be, version: 1.9.0-rc6) 2026-08-19 10:45:13 +00:00
github-actions[bot] 19e789adcb CI Build Artifacts (commit: 63ff8ce8fe, version: 1.9.0-rc5) 2026-08-18 04:45:32 +00:00
github-actions[bot] 86d03a888a CI Build Artifacts (commit: b3b467f7b5, version: 1.9.0-rc5) 2026-08-17 05:42:31 +00:00
github-actions[bot] 80b9a90d98 CI Build Artifacts (commit: 20557ee788, version: 1.9.0-rc5) 2026-08-14 14:53:33 +00:00
github-actions[bot] 3c745b1f9e CI Build Artifacts (commit: 8ab432fb52, version: 1.9.0-rc5) 2026-08-12 06:59:21 +00:00
github-actions[bot] c919d52536 CI Build Artifacts (commit: 8ab432fb52, version: 1.9.0-rc4) 2026-08-12 06:58:56 +00:00
github-actions[bot] 0a1e290bc2 CI Build Artifacts (commit: d1367fc9a9, version: 1.9.0-rc4) 2026-08-11 08:08:47 +00:00
github-actions[bot] 6da9aba92e CI Build Artifacts (commit: c9b26ab4bb, version: 1.9.0-rc4) 2026-08-07 03:34:40 +00:00
github-actions[bot] 23b8a2d226 CI Build Artifacts (commit: 2b9d093b38, version: 1.9.0-rc4) 2026-08-05 13:11:37 +00:00
github-actions[bot] e1846f35a0 CI Build Artifacts (commit: 1b3666e15c, version: 1.9.0-rc3) 2026-08-05 06:06:06 +00:00
github-actions[bot] 468ae1741c CI Build Artifacts (commit: 0bccb9a71f, version: 1.9.0-rc3) 2026-08-04 16:32:08 +00:00
github-actions[bot] 2e8fdbeb7f CI Build Artifacts (commit: 6d4cd09568, version: 1.9.0-rc3) 2026-08-04 12:04:15 +00:00
github-actions[bot] db3c7df45d CI Build Artifacts (commit: 44078bf7cb, version: 1.9.0-rc3) 2026-08-04 05:40:58 +00:00
github-actions[bot] 6fc3862a5f CI Build Artifacts (commit: 1d55319aba, version: 1.9.0-rc3) 2026-08-03 09:00:20 +00:00
github-actions[bot] 999a82c546 CI Build Artifacts (commit: 3b7a0c30a7, version: 1.9.0-rc3) 2026-08-03 08:54:31 +00:00
github-actions[bot] 43f7677436 CI Build Artifacts (commit: d4562a91d1, version: 1.9.0-rc3) 2026-08-03 05:38:20 +00:00
github-actions[bot] cd534543e3 CI Build Artifacts (commit: 080f9cdb29, version: 1.9.0-rc3) 2026-07-31 09:03:55 +00:00
github-actions[bot] b1f0385273 CI Build Artifacts (commit: b19da16b83, version: 1.9.0-rc3) 2026-07-30 02:18:33 +00:00
github-actions[bot] fdcecf413a CI Build Artifacts (commit: 16a92c5e96, version: 1.9.0-rc3) 2026-07-28 12:07:42 +00:00
github-actions[bot] 5efde36493 CI Build Artifacts (commit: 51a76eefe2, version: 1.9.0-rc3) 2026-07-28 07:51:29 +00:00
github-actions[bot] 5a1fe03f54 CI Build Artifacts (commit: 690652f204, version: 1.9.0-rc3) 2026-07-28 06:59:16 +00:00
github-actions[bot] 3f9f1d9703 CI Build Artifacts (commit: a0f21d5902, version: 1.9.0-rc3) 2026-07-28 06:38:17 +00:00
github-actions[bot] 7d3e7eade0 CI Build Artifacts (commit: f0929100f0, version: 1.9.0-rc3) 2026-07-24 08:58:08 +00:00
github-actions[bot] dcfbc1c8a9 CI Build Artifacts (commit: 78ca4bb663, version: 1.9.0-rc3) 2026-07-24 02:34:23 +00:00
github-actions[bot] 1e082457bc CI Build Artifacts (commit: eb917c9d18, version: 1.9.0-rc3) 2026-07-23 06:45:47 +00:00
github-actions[bot] 4e05d84899 CI Build Artifacts (commit: 8815c70361, version: 1.9.0-rc3) 2026-07-22 12:06:44 +00:00
github-actions[bot] babe824c1c CI Build Artifacts (commit: eb4c0504c8, version: 1.9.0-rc2) 2026-07-21 03:14:48 +00:00
github-actions[bot] 5ba0af59fa CI Build Artifacts (commit: eb4c0504c8, version: 1.9.0-rc2) 2026-07-21 03:11:28 +00:00
github-actions[bot] 3a7ca77fcc CI Build Artifacts (commit: 92f34fa64f, version: 1.9.0-rc2) 2026-07-20 09:11:48 +00:00
github-actions[bot] f7a116f4c8 CI Build Artifacts (commit: 6039f21320, version: 1.9.0-rc2) 2026-07-20 07:59:09 +00:00
github-actions[bot] 5ff1d8832e CI Build Artifacts (commit: 6039f21320, version: 1.9.0-rc2) 2026-07-20 07:57:04 +00:00
github-actions[bot] 77b61dccec CI Build Artifacts (commit: bcde1744e1, version: 1.9.0-rc2) 2026-07-20 07:33:44 +00:00
github-actions[bot] e823b2c8d8 CI Build Artifacts (commit: e991c9bcc8, version: 1.9.0-rc2) 2026-07-20 06:47:27 +00:00
github-actions[bot] b47fe32e92 CI Build Artifacts (commit: 6e709bc00f, version: 1.9.0-rc2) 2026-07-20 04:32:53 +00:00
github-actions[bot] ecd2e805d0 CI Build Artifacts (commit: 20d40860ce, version: 1.9.0-rc2) 2026-07-20 04:25:15 +00:00
github-actions[bot] f0ae5f9acc CI Build Artifacts (commit: 1496c17f3d, version: 1.9.0-rc2) 2026-07-17 09:36:52 +00:00
github-actions[bot] 6d22d0a3c5 CI Build Artifacts (commit: e99e4ef34f, version: 1.9.0-rc2) 2026-07-17 09:04:47 +00:00
github-actions[bot] 1513af1e30 CI Build Artifacts (commit: 73e022172b, version: 1.9.0-rc2) 2026-07-17 07:54:49 +00:00
github-actions[bot] aaa8966106 CI Build Artifacts (commit: b4b49222c3, version: 1.9.0-rc2) 2026-07-16 08:20:46 +00:00
github-actions[bot] 2ab195a164 CI Build Artifacts (commit: b937a2147b, version: 1.9.0-rc2) 2026-07-16 03:50:34 +00:00
github-actions[bot] f638e7f322 CI Build Artifacts (commit: 07f2b02a9d, version: 1.9.0-rc2) 2026-07-15 11:24:39 +00:00
github-actions[bot] 355a2a567d CI Build Artifacts (commit: 35b6949cdc, version: 1.9.0-rc2) 2026-07-15 09:51:37 +00:00
github-actions[bot] 6b8d2fa6ae CI Build Artifacts (commit: c577f589e7, version: 1.9.0-rc1) 2026-07-15 07:30:11 +00:00
github-actions[bot] 2aee19a9c1 CI Build Artifacts (commit: b1387820ed, version: 1.9.0-rc1) 2026-07-15 07:18:59 +00:00
github-actions[bot] 0745e1c8a9 CI Build Artifacts (commit: 45f72749f5, version: 1.9.0-rc1) 2026-07-14 09:45:07 +00:00
github-actions[bot] 111524648f CI Build Artifacts (commit: a65b3f443e, version: 1.9.0-rc1) 2026-07-14 06:43:51 +00:00
github-actions[bot] 8bd5e6ee63 CI Build Artifacts (commit: 21d415b5f3, version: 1.9.0-rc1) 2026-07-14 06:31:41 +00:00
github-actions[bot] 3b1c24ea78 CI Build Artifacts (commit: 7493fe2dfc, version: 1.9.0-rc1) 2026-07-14 04:10:59 +00:00
github-actions[bot] 3281ef4cdc CI Build Artifacts (commit: e71d12f67f, version: 1.9.0-rc1) 2026-07-14 04:03:07 +00:00
github-actions[bot] 03f7222345 CI Build Artifacts (commit: d3b77e2e41, version: 1.9.0-rc1) 2026-07-13 09:50:43 +00:00
github-actions[bot] 40d1d05b1d CI Build Artifacts (commit: 73126b953c, version: 1.9.0-rc1) 2026-07-10 04:06:13 +00:00
github-actions[bot] b7a21e7fb7 CI Build Artifacts (commit: 937afd9c9a, version: 1.9.0-rc1) 2026-07-10 03:04:06 +00:00
github-actions[bot] 4375f9b870 CI Build Artifacts (commit: 3658caf067, version: 1.9.0-rc1) 2026-07-09 10:40:03 +00:00
github-actions[bot] 1e7d3c672f CI Build Artifacts (commit: a067751cba, version: 1.9.0-rc1) 2026-07-09 05:24:10 +00:00
github-actions[bot] 534e83dc66 CI Build Artifacts (commit: 94566b2b54, version: 1.9.0-rc1) 2026-07-08 09:51:17 +00:00
github-actions[bot] 0ec7454b07 CI Build Artifacts (commit: d47bf1d712, version: 1.9.0-dev) 2026-07-08 05:54:53 +00:00
github-actions[bot] 14fd954119 CI Build Artifacts (commit: 495e80267d, version: 1.9.0-dev) 2026-07-08 03:30:08 +00:00
1338 changed files with 30213 additions and 2 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+243 -1
View File
@@ -1,6 +1,248 @@
apiVersion: v1
entries:
harvester:
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.1-rc2
created: "2026-09-23T08:39:36.572655011Z"
description: Rancher UI Extension for Harvester
digest: 9e70fb28e9232e87672ac80efde72a47a31b4782c7f8a98cadc6b3acf0453a51
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
urls:
- assets/harvester/harvester-1.9.1-rc2.tgz
version: 1.9.1-rc2
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.1-rc1
created: "2026-09-22T11:47:09.938826965Z"
description: Rancher UI Extension for Harvester
digest: 5fcbd99cf982c20ccc08660332f577e0758fdd555c0180326ae6e562f983c967
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
urls:
- assets/harvester/harvester-1.9.1-rc1.tgz
version: 1.9.1-rc1
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0
created: "2026-09-16T01:44:53.671092352Z"
description: Rancher UI Extension for Harvester
digest: 1dde62e83de80e25c2b4af81f3ef493aaf3c358899860f62dfe1ae05d739e81a
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
urls:
- assets/harvester/harvester-1.9.0.tgz
version: 1.9.0
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc7
created: "2026-09-01T10:51:48.246281941Z"
description: Rancher UI Extension for Harvester
digest: 80f98461412c8fcc613c0a83dfe38dd3b5f1588db6c1ca8951e0ead65e89c4d4
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
urls:
- assets/harvester/harvester-1.9.0-rc7.tgz
version: 1.9.0-rc7
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc6
created: "2026-09-01T02:17:53.112081213Z"
description: Rancher UI Extension for Harvester
digest: 73813d9f0803737a5241259fd2e87199fe95d54ce80d8d573f8dbf70d116af70
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
urls:
- assets/harvester/harvester-1.9.0-rc6.tgz
version: 1.9.0-rc6
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc5
created: "2026-08-18T04:45:02.765667326Z"
description: Rancher UI Extension for Harvester
digest: 7c856d469c1616b542c242499d10f10a1c434e5bc36062f4eaf3b642c0c247d4
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
urls:
- assets/harvester/harvester-1.9.0-rc5.tgz
version: 1.9.0-rc5
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc4
created: "2026-08-10T13:02:35.335794138Z"
description: Rancher UI Extension for Harvester
digest: 52cf4e680a38efb348397b652b9f3be83ca36a86b3ff7234f94885304d0141c4
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
urls:
- assets/harvester/harvester-1.9.0-rc4.tgz
version: 1.9.0-rc4
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc3
created: "2026-08-05T06:05:36.999504032Z"
description: Rancher UI Extension for Harvester
digest: 129642897a9a37dd22a54dd9b2e5ed5ccac8f42ff0818b2c17b86a0dbb97aedd
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
urls:
- assets/harvester/harvester-1.9.0-rc3.tgz
version: 1.9.0-rc3
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc2
created: "2026-07-21T03:14:19.436523276Z"
description: Rancher UI Extension for Harvester
digest: e87e632db43a4c0d7db3fade4adf5e35a50f82341c4fa733fc455705755c62fa
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
urls:
- assets/harvester/harvester-1.9.0-rc2.tgz
version: 1.9.0-rc2
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc1
created: "2026-07-15T07:29:44.554566346Z"
description: Rancher UI Extension for Harvester
digest: e3fc88c625a96a2fee167c43c970c5c2af1da029c71cdea4ff9b941df92a51eb
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
urls:
- assets/harvester/harvester-1.9.0-rc1.tgz
version: 1.9.0-rc1
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/rancher-version: '>= 2.14.0-0'
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-dev
created: "2026-07-08T05:54:23.602750526Z"
description: Rancher UI Extension for Harvester
digest: 897c748e2e6c9685252b37b4a13f1426d3627337830d9b35107a31cc01d6c9a7
icon: https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
name: harvester
type: application
urls:
- assets/harvester/harvester-1.9.0-dev.tgz
version: 1.9.0-dev
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: Harvester
@@ -353,4 +595,4 @@ entries:
urls:
- assets/harvester/harvester-1.0.0.tgz
version: 1.0.0
generated: "2026-06-29T09:03:05.788359409Z"
generated: "2026-09-23T08:39:36.572216516Z"
+19
View File
@@ -0,0 +1,19 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/rancher-version: '>= 2.14.0-0'
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-dev
description: Rancher UI Extension for Harvester
name: harvester
type: application
version: 1.9.0-dev
icon: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
+177
View File
@@ -0,0 +1,177 @@
# harvester-ui-extension
The Harvester UI Extension is a Rancher extension that provides the user interface for [Harvester](https://harvesterhci.io) within the [Rancher Dashboard](https://github.com/rancher/dashboard).
> **Note:**
> This extension is available starting from **Rancher 2.10.0**. Ensure your Rancher version is **2.10.0 or later** to access Harvester integration.
## Installation
For Harvester UI extension installation instructions, please refer to the page **Rancher Integration** -> **Harvester UI Extension** in [official Harvester documentation](https://docs.harvesterhci.io).
## Development Setup
Ensure **Node.js v20 or later** is installed for development and debugging.
### Standalone Mode
Run the extension standalone with hot reload at `https://localhost:8005`.
```bash
# Install dependencies
yarn install
# Start the development server
RANCHER_ENV=harvester API=https://your-harvester-ip yarn dev
# Example with specific server version
RANCHER_ENV=harvester VUE_APP_SERVER_VERSION=v1.5.0 API=https://192.168.1.123 yarn dev
```
You may also define environment variables in a `.env` file:
```env
RANCHER_ENV=harvester
VUE_APP_SERVER_VERSION=v1.5.0
API=https://192.168.1.123
```
### Rancher Integration Mode
To run as a Rancher extension, follow the [Rancher UI Extension Guide](https://extensions.rancher.io/extensions/next/extensions-getting-started#running-the-app).
```bash
API=https://your-rancher-ip yarn dev
```
## Commit Message Guidelines
This project uses [commit-lint](https://commitlint.js.org/) with [Conventional Commits](https://www.conventionalcommits.org/) to ensure consistent and meaningful commit messages.
### Commit Message Format
All commit messages must follow the conventional commit format:
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
### Supported Types
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system or external dependencies
- **ci**: CI/CD changes
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit
- **wip**: Work in progress
- **deps**: Dependency updates
- **security**: Security fixes
### Examples
```bash
# Feature
git commit -m "feat: add new virtual machine creation wizard"
# Bug fix
git commit -m "fix: resolve memory leak in VM console"
# Documentation
git commit -m "docs: update installation instructions"
# Breaking change
git commit -m "feat!: change API endpoint structure
BREAKING CHANGE: The /api/v1/vms endpoint has been replaced with /api/v2/vms"
```
### Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) to automatically validate commit messages and run linting before commits:
- **pre-commit**: Runs ESLint to ensure code quality
- **commit-msg**: Validates commit message format using commit-lint
These hooks are automatically installed when you run `yarn install`.
### Manual Validation
You can manually validate commit messages:
```bash
# Validate the last commit
yarn commitlint
# Validate a specific commit
npx commitlint --from <commit-hash>
# Validate a range of commits
npx commitlint --from <start-hash> --to <end-hash>
```
## Branch Structure
- **`main`** – Main development branch
- **`release-harvester-vX.Y`** – Stable release branches per version series
- **`vX.Y-head`** – Testing branches for ongoing changes to extension builds in each release series
> **Note:**
> The `vX.Y-head` branches are auto-generated and kept in sync with release branches. Use these for testing the latest changes in each version series.
## Testing Guidelines
### UI Extension Testing
To validate changes in a release series, switch to the appropriate `vX.Y-head` branch. For main branch testing, use `main-head`.
- Examples:
- Test `1.0.x` series → `v1.0-head`
- Test `1.5.x` series → `v1.5-head`
**Steps:**
1. Navigate to **Rancher UI** → **Local** → **App** → **Repositories**
2. Refresh the Harvester repository using the target `vX.Y-head` branch
3. Go to the **Extensions** page and install the desired version
### Standalone Mode Testing
To test the standalone UI, configure Harvester to load the UI from an external source.
- Examples of `ui-index`:
- Main branch → `https://releases.rancher.com/harvester-ui/dashboard/latest/index.html`
- Release series `1.5.x` → `https://releases.rancher.com/harvester-ui/dashboard/release-harvester-v1.5/index.html`
**Steps:**
1. Go to **Harvester UI** → **Advanced** → **Settings** → **UI**
2. Set **ui-source** to `External`
3. Set **ui-index** to the desired URL
## Contributing
If you want to contribute, start by reading this document, then visit our [Getting Started guide](https://extensions.rancher.io/extensions/next/extensions-getting-started) to learn how to develop and submit changes.
## License
Copyright (c) 2014-2026 [SUSE, LLC.](https://www.suse.com/)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,63 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "extension-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "extension-server.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "extension-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "extension-server.labels" -}}
helm.sh/chart: {{ include "extension-server.chart" . }}
{{ include "extension-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "extension-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "extension-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Pkg annotations
*/}}
{{- define "extension-server.pluginMetadata" -}}
{{- with .Values.plugin.metadata }}
{{- range $key, $value := . }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- end }}
@@ -0,0 +1,15 @@
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
name: {{ include "extension-server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "extension-server.labels" . | nindent 4 }}
spec:
plugin:
name: {{ include "extension-server.fullname" . }}
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
endpoint: {{ .Values.plugin.endpoint | quote }}
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
noCache: {{ .Values.plugin.noCache }}
noAuth: {{ .Values.plugin.noAuth }}
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
+16
View File
@@ -0,0 +1,16 @@
nameOverride: ""
fullnameOverride: ""
plugin:
enabled: true
versionOverride: ""
endpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-dev
compressedEndpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-dev.tgz
noCache: false
noAuth: false
metadata:
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: ">= 1.16.0-0"
catalog.cattle.io/rancher-version: ">= 2.14.0-0"
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
+19
View File
@@ -0,0 +1,19 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc1
description: Rancher UI Extension for Harvester
name: harvester
type: application
version: 1.9.0-rc1
icon: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
+177
View File
@@ -0,0 +1,177 @@
# harvester-ui-extension
The Harvester UI Extension is a Rancher extension that provides the user interface for [Harvester](https://harvesterhci.io) within the [Rancher Dashboard](https://github.com/rancher/dashboard).
> **Note:**
> This extension is available starting from **Rancher 2.10.0**. Ensure your Rancher version is **2.10.0 or later** to access Harvester integration.
## Installation
For Harvester UI extension installation instructions, please refer to the page **Rancher Integration** -> **Harvester UI Extension** in [official Harvester documentation](https://docs.harvesterhci.io).
## Development Setup
Ensure **Node.js v20 or later** is installed for development and debugging.
### Standalone Mode
Run the extension standalone with hot reload at `https://localhost:8005`.
```bash
# Install dependencies
yarn install
# Start the development server
RANCHER_ENV=harvester API=https://your-harvester-ip yarn dev
# Example with specific server version
RANCHER_ENV=harvester VUE_APP_SERVER_VERSION=v1.5.0 API=https://192.168.1.123 yarn dev
```
You may also define environment variables in a `.env` file:
```env
RANCHER_ENV=harvester
VUE_APP_SERVER_VERSION=v1.5.0
API=https://192.168.1.123
```
### Rancher Integration Mode
To run as a Rancher extension, follow the [Rancher UI Extension Guide](https://extensions.rancher.io/extensions/next/extensions-getting-started#running-the-app).
```bash
API=https://your-rancher-ip yarn dev
```
## Commit Message Guidelines
This project uses [commit-lint](https://commitlint.js.org/) with [Conventional Commits](https://www.conventionalcommits.org/) to ensure consistent and meaningful commit messages.
### Commit Message Format
All commit messages must follow the conventional commit format:
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
### Supported Types
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system or external dependencies
- **ci**: CI/CD changes
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit
- **wip**: Work in progress
- **deps**: Dependency updates
- **security**: Security fixes
### Examples
```bash
# Feature
git commit -m "feat: add new virtual machine creation wizard"
# Bug fix
git commit -m "fix: resolve memory leak in VM console"
# Documentation
git commit -m "docs: update installation instructions"
# Breaking change
git commit -m "feat!: change API endpoint structure
BREAKING CHANGE: The /api/v1/vms endpoint has been replaced with /api/v2/vms"
```
### Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) to automatically validate commit messages and run linting before commits:
- **pre-commit**: Runs ESLint to ensure code quality
- **commit-msg**: Validates commit message format using commit-lint
These hooks are automatically installed when you run `yarn install`.
### Manual Validation
You can manually validate commit messages:
```bash
# Validate the last commit
yarn commitlint
# Validate a specific commit
npx commitlint --from <commit-hash>
# Validate a range of commits
npx commitlint --from <start-hash> --to <end-hash>
```
## Branch Structure
- **`main`** – Main development branch
- **`release-harvester-vX.Y`** – Stable release branches per version series
- **`vX.Y-head`** – Testing branches for ongoing changes to extension builds in each release series
> **Note:**
> The `vX.Y-head` branches are auto-generated and kept in sync with release branches. Use these for testing the latest changes in each version series.
## Testing Guidelines
### UI Extension Testing
To validate changes in a release series, switch to the appropriate `vX.Y-head` branch. For main branch testing, use `main-head`.
- Examples:
- Test `1.0.x` series → `v1.0-head`
- Test `1.5.x` series → `v1.5-head`
**Steps:**
1. Navigate to **Rancher UI** → **Local** → **App** → **Repositories**
2. Refresh the Harvester repository using the target `vX.Y-head` branch
3. Go to the **Extensions** page and install the desired version
### Standalone Mode Testing
To test the standalone UI, configure Harvester to load the UI from an external source.
- Examples of `ui-index`:
- Main branch → `https://releases.rancher.com/harvester-ui/dashboard/latest/index.html`
- Release series `1.5.x` → `https://releases.rancher.com/harvester-ui/dashboard/release-harvester-v1.5/index.html`
**Steps:**
1. Go to **Harvester UI** → **Advanced** → **Settings** → **UI**
2. Set **ui-source** to `External`
3. Set **ui-index** to the desired URL
## Contributing
If you want to contribute, start by reading this document, then visit our [Getting Started guide](https://extensions.rancher.io/extensions/next/extensions-getting-started) to learn how to develop and submit changes.
## License
Copyright (c) 2014-2026 [SUSE, LLC.](https://www.suse.com/)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,63 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "extension-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "extension-server.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "extension-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "extension-server.labels" -}}
helm.sh/chart: {{ include "extension-server.chart" . }}
{{ include "extension-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "extension-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "extension-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Pkg annotations
*/}}
{{- define "extension-server.pluginMetadata" -}}
{{- with .Values.plugin.metadata }}
{{- range $key, $value := . }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- end }}
@@ -0,0 +1,15 @@
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
name: {{ include "extension-server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "extension-server.labels" . | nindent 4 }}
spec:
plugin:
name: {{ include "extension-server.fullname" . }}
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
endpoint: {{ .Values.plugin.endpoint | quote }}
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
noCache: {{ .Values.plugin.noCache }}
noAuth: {{ .Values.plugin.noAuth }}
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
+16
View File
@@ -0,0 +1,16 @@
nameOverride: ""
fullnameOverride: ""
plugin:
enabled: true
versionOverride: ""
endpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc1
compressedEndpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc1.tgz
noCache: false
noAuth: false
metadata:
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: ">= 1.16.0-0"
catalog.cattle.io/rancher-version: ">= 2.15.0-0"
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
+19
View File
@@ -0,0 +1,19 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc2
description: Rancher UI Extension for Harvester
name: harvester
type: application
version: 1.9.0-rc2
icon: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
+177
View File
@@ -0,0 +1,177 @@
# harvester-ui-extension
The Harvester UI Extension is a Rancher extension that provides the user interface for [Harvester](https://harvesterhci.io) within the [Rancher Dashboard](https://github.com/rancher/dashboard).
> **Note:**
> This extension is available starting from **Rancher 2.10.0**. Ensure your Rancher version is **2.10.0 or later** to access Harvester integration.
## Installation
For Harvester UI extension installation instructions, please refer to the page **Rancher Integration** -> **Harvester UI Extension** in [official Harvester documentation](https://docs.harvesterhci.io).
## Development Setup
Ensure **Node.js v20 or later** is installed for development and debugging.
### Standalone Mode
Run the extension standalone with hot reload at `https://localhost:8005`.
```bash
# Install dependencies
yarn install
# Start the development server
RANCHER_ENV=harvester API=https://your-harvester-ip yarn dev
# Example with specific server version
RANCHER_ENV=harvester VUE_APP_SERVER_VERSION=v1.5.0 API=https://192.168.1.123 yarn dev
```
You may also define environment variables in a `.env` file:
```env
RANCHER_ENV=harvester
VUE_APP_SERVER_VERSION=v1.5.0
API=https://192.168.1.123
```
### Rancher Integration Mode
To run as a Rancher extension, follow the [Rancher UI Extension Guide](https://extensions.rancher.io/extensions/next/extensions-getting-started#running-the-app).
```bash
API=https://your-rancher-ip yarn dev
```
## Commit Message Guidelines
This project uses [commit-lint](https://commitlint.js.org/) with [Conventional Commits](https://www.conventionalcommits.org/) to ensure consistent and meaningful commit messages.
### Commit Message Format
All commit messages must follow the conventional commit format:
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
### Supported Types
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system or external dependencies
- **ci**: CI/CD changes
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit
- **wip**: Work in progress
- **deps**: Dependency updates
- **security**: Security fixes
### Examples
```bash
# Feature
git commit -m "feat: add new virtual machine creation wizard"
# Bug fix
git commit -m "fix: resolve memory leak in VM console"
# Documentation
git commit -m "docs: update installation instructions"
# Breaking change
git commit -m "feat!: change API endpoint structure
BREAKING CHANGE: The /api/v1/vms endpoint has been replaced with /api/v2/vms"
```
### Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) to automatically validate commit messages and run linting before commits:
- **pre-commit**: Runs ESLint to ensure code quality
- **commit-msg**: Validates commit message format using commit-lint
These hooks are automatically installed when you run `yarn install`.
### Manual Validation
You can manually validate commit messages:
```bash
# Validate the last commit
yarn commitlint
# Validate a specific commit
npx commitlint --from <commit-hash>
# Validate a range of commits
npx commitlint --from <start-hash> --to <end-hash>
```
## Branch Structure
- **`main`** – Main development branch
- **`release-harvester-vX.Y`** – Stable release branches per version series
- **`vX.Y-head`** – Testing branches for ongoing changes to extension builds in each release series
> **Note:**
> The `vX.Y-head` branches are auto-generated and kept in sync with release branches. Use these for testing the latest changes in each version series.
## Testing Guidelines
### UI Extension Testing
To validate changes in a release series, switch to the appropriate `vX.Y-head` branch. For main branch testing, use `main-head`.
- Examples:
- Test `1.0.x` series → `v1.0-head`
- Test `1.5.x` series → `v1.5-head`
**Steps:**
1. Navigate to **Rancher UI** → **Local** → **App** → **Repositories**
2. Refresh the Harvester repository using the target `vX.Y-head` branch
3. Go to the **Extensions** page and install the desired version
### Standalone Mode Testing
To test the standalone UI, configure Harvester to load the UI from an external source.
- Examples of `ui-index`:
- Main branch → `https://releases.rancher.com/harvester-ui/dashboard/latest/index.html`
- Release series `1.5.x` → `https://releases.rancher.com/harvester-ui/dashboard/release-harvester-v1.5/index.html`
**Steps:**
1. Go to **Harvester UI** → **Advanced** → **Settings** → **UI**
2. Set **ui-source** to `External`
3. Set **ui-index** to the desired URL
## Contributing
If you want to contribute, start by reading this document, then visit our [Getting Started guide](https://extensions.rancher.io/extensions/next/extensions-getting-started) to learn how to develop and submit changes.
## License
Copyright (c) 2014-2026 [SUSE, LLC.](https://www.suse.com/)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,63 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "extension-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "extension-server.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "extension-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "extension-server.labels" -}}
helm.sh/chart: {{ include "extension-server.chart" . }}
{{ include "extension-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "extension-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "extension-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Pkg annotations
*/}}
{{- define "extension-server.pluginMetadata" -}}
{{- with .Values.plugin.metadata }}
{{- range $key, $value := . }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- end }}
@@ -0,0 +1,15 @@
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
name: {{ include "extension-server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "extension-server.labels" . | nindent 4 }}
spec:
plugin:
name: {{ include "extension-server.fullname" . }}
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
endpoint: {{ .Values.plugin.endpoint | quote }}
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
noCache: {{ .Values.plugin.noCache }}
noAuth: {{ .Values.plugin.noAuth }}
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
+16
View File
@@ -0,0 +1,16 @@
nameOverride: ""
fullnameOverride: ""
plugin:
enabled: true
versionOverride: ""
endpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc2
compressedEndpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc2.tgz
noCache: false
noAuth: false
metadata:
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: ">= 1.16.0-0"
catalog.cattle.io/rancher-version: ">= 2.15.0-0"
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
+19
View File
@@ -0,0 +1,19 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc3
description: Rancher UI Extension for Harvester
name: harvester
type: application
version: 1.9.0-rc3
icon: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
+177
View File
@@ -0,0 +1,177 @@
# harvester-ui-extension
The Harvester UI Extension is a Rancher extension that provides the user interface for [Harvester](https://harvesterhci.io) within the [Rancher Dashboard](https://github.com/rancher/dashboard).
> **Note:**
> This extension is available starting from **Rancher 2.10.0**. Ensure your Rancher version is **2.10.0 or later** to access Harvester integration.
## Installation
For Harvester UI extension installation instructions, please refer to the page **Rancher Integration** -> **Harvester UI Extension** in [official Harvester documentation](https://docs.harvesterhci.io).
## Development Setup
Ensure **Node.js v20 or later** is installed for development and debugging.
### Standalone Mode
Run the extension standalone with hot reload at `https://localhost:8005`.
```bash
# Install dependencies
yarn install
# Start the development server
RANCHER_ENV=harvester API=https://your-harvester-ip yarn dev
# Example with specific server version
RANCHER_ENV=harvester VUE_APP_SERVER_VERSION=v1.5.0 API=https://192.168.1.123 yarn dev
```
You may also define environment variables in a `.env` file:
```env
RANCHER_ENV=harvester
VUE_APP_SERVER_VERSION=v1.5.0
API=https://192.168.1.123
```
### Rancher Integration Mode
To run as a Rancher extension, follow the [Rancher UI Extension Guide](https://extensions.rancher.io/extensions/next/extensions-getting-started#running-the-app).
```bash
API=https://your-rancher-ip yarn dev
```
## Commit Message Guidelines
This project uses [commit-lint](https://commitlint.js.org/) with [Conventional Commits](https://www.conventionalcommits.org/) to ensure consistent and meaningful commit messages.
### Commit Message Format
All commit messages must follow the conventional commit format:
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
### Supported Types
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system or external dependencies
- **ci**: CI/CD changes
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit
- **wip**: Work in progress
- **deps**: Dependency updates
- **security**: Security fixes
### Examples
```bash
# Feature
git commit -m "feat: add new virtual machine creation wizard"
# Bug fix
git commit -m "fix: resolve memory leak in VM console"
# Documentation
git commit -m "docs: update installation instructions"
# Breaking change
git commit -m "feat!: change API endpoint structure
BREAKING CHANGE: The /api/v1/vms endpoint has been replaced with /api/v2/vms"
```
### Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) to automatically validate commit messages and run linting before commits:
- **pre-commit**: Runs ESLint to ensure code quality
- **commit-msg**: Validates commit message format using commit-lint
These hooks are automatically installed when you run `yarn install`.
### Manual Validation
You can manually validate commit messages:
```bash
# Validate the last commit
yarn commitlint
# Validate a specific commit
npx commitlint --from <commit-hash>
# Validate a range of commits
npx commitlint --from <start-hash> --to <end-hash>
```
## Branch Structure
- **`main`** – Main development branch
- **`release-harvester-vX.Y`** – Stable release branches per version series
- **`vX.Y-head`** – Testing branches for ongoing changes to extension builds in each release series
> **Note:**
> The `vX.Y-head` branches are auto-generated and kept in sync with release branches. Use these for testing the latest changes in each version series.
## Testing Guidelines
### UI Extension Testing
To validate changes in a release series, switch to the appropriate `vX.Y-head` branch. For main branch testing, use `main-head`.
- Examples:
- Test `1.0.x` series → `v1.0-head`
- Test `1.5.x` series → `v1.5-head`
**Steps:**
1. Navigate to **Rancher UI** → **Local** → **App** → **Repositories**
2. Refresh the Harvester repository using the target `vX.Y-head` branch
3. Go to the **Extensions** page and install the desired version
### Standalone Mode Testing
To test the standalone UI, configure Harvester to load the UI from an external source.
- Examples of `ui-index`:
- Main branch → `https://releases.rancher.com/harvester-ui/dashboard/latest/index.html`
- Release series `1.5.x` → `https://releases.rancher.com/harvester-ui/dashboard/release-harvester-v1.5/index.html`
**Steps:**
1. Go to **Harvester UI** → **Advanced** → **Settings** → **UI**
2. Set **ui-source** to `External`
3. Set **ui-index** to the desired URL
## Contributing
If you want to contribute, start by reading this document, then visit our [Getting Started guide](https://extensions.rancher.io/extensions/next/extensions-getting-started) to learn how to develop and submit changes.
## License
Copyright (c) 2014-2026 [SUSE, LLC.](https://www.suse.com/)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,63 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "extension-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "extension-server.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "extension-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "extension-server.labels" -}}
helm.sh/chart: {{ include "extension-server.chart" . }}
{{ include "extension-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "extension-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "extension-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Pkg annotations
*/}}
{{- define "extension-server.pluginMetadata" -}}
{{- with .Values.plugin.metadata }}
{{- range $key, $value := . }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- end }}
@@ -0,0 +1,15 @@
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
name: {{ include "extension-server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "extension-server.labels" . | nindent 4 }}
spec:
plugin:
name: {{ include "extension-server.fullname" . }}
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
endpoint: {{ .Values.plugin.endpoint | quote }}
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
noCache: {{ .Values.plugin.noCache }}
noAuth: {{ .Values.plugin.noAuth }}
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
+16
View File
@@ -0,0 +1,16 @@
nameOverride: ""
fullnameOverride: ""
plugin:
enabled: true
versionOverride: ""
endpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc3
compressedEndpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc3.tgz
noCache: false
noAuth: false
metadata:
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: ">= 1.16.0-0"
catalog.cattle.io/rancher-version: ">= 2.15.0-0"
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
+19
View File
@@ -0,0 +1,19 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc4
description: Rancher UI Extension for Harvester
name: harvester
type: application
version: 1.9.0-rc4
icon: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
+177
View File
@@ -0,0 +1,177 @@
# harvester-ui-extension
The Harvester UI Extension is a Rancher extension that provides the user interface for [Harvester](https://harvesterhci.io) within the [Rancher Dashboard](https://github.com/rancher/dashboard).
> **Note:**
> This extension is available starting from **Rancher 2.10.0**. Ensure your Rancher version is **2.10.0 or later** to access Harvester integration.
## Installation
For Harvester UI extension installation instructions, please refer to the page **Rancher Integration** -> **Harvester UI Extension** in [official Harvester documentation](https://docs.harvesterhci.io).
## Development Setup
Ensure **Node.js v20 or later** is installed for development and debugging.
### Standalone Mode
Run the extension standalone with hot reload at `https://localhost:8005`.
```bash
# Install dependencies
yarn install
# Start the development server
RANCHER_ENV=harvester API=https://your-harvester-ip yarn dev
# Example with specific server version
RANCHER_ENV=harvester VUE_APP_SERVER_VERSION=v1.5.0 API=https://192.168.1.123 yarn dev
```
You may also define environment variables in a `.env` file:
```env
RANCHER_ENV=harvester
VUE_APP_SERVER_VERSION=v1.5.0
API=https://192.168.1.123
```
### Rancher Integration Mode
To run as a Rancher extension, follow the [Rancher UI Extension Guide](https://extensions.rancher.io/extensions/next/extensions-getting-started#running-the-app).
```bash
API=https://your-rancher-ip yarn dev
```
## Commit Message Guidelines
This project uses [commit-lint](https://commitlint.js.org/) with [Conventional Commits](https://www.conventionalcommits.org/) to ensure consistent and meaningful commit messages.
### Commit Message Format
All commit messages must follow the conventional commit format:
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
### Supported Types
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system or external dependencies
- **ci**: CI/CD changes
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit
- **wip**: Work in progress
- **deps**: Dependency updates
- **security**: Security fixes
### Examples
```bash
# Feature
git commit -m "feat: add new virtual machine creation wizard"
# Bug fix
git commit -m "fix: resolve memory leak in VM console"
# Documentation
git commit -m "docs: update installation instructions"
# Breaking change
git commit -m "feat!: change API endpoint structure
BREAKING CHANGE: The /api/v1/vms endpoint has been replaced with /api/v2/vms"
```
### Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) to automatically validate commit messages and run linting before commits:
- **pre-commit**: Runs ESLint to ensure code quality
- **commit-msg**: Validates commit message format using commit-lint
These hooks are automatically installed when you run `yarn install`.
### Manual Validation
You can manually validate commit messages:
```bash
# Validate the last commit
yarn commitlint
# Validate a specific commit
npx commitlint --from <commit-hash>
# Validate a range of commits
npx commitlint --from <start-hash> --to <end-hash>
```
## Branch Structure
- **`main`** – Main development branch
- **`release-harvester-vX.Y`** – Stable release branches per version series
- **`vX.Y-head`** – Testing branches for ongoing changes to extension builds in each release series
> **Note:**
> The `vX.Y-head` branches are auto-generated and kept in sync with release branches. Use these for testing the latest changes in each version series.
## Testing Guidelines
### UI Extension Testing
To validate changes in a release series, switch to the appropriate `vX.Y-head` branch. For main branch testing, use `main-head`.
- Examples:
- Test `1.0.x` series → `v1.0-head`
- Test `1.5.x` series → `v1.5-head`
**Steps:**
1. Navigate to **Rancher UI** → **Local** → **App** → **Repositories**
2. Refresh the Harvester repository using the target `vX.Y-head` branch
3. Go to the **Extensions** page and install the desired version
### Standalone Mode Testing
To test the standalone UI, configure Harvester to load the UI from an external source.
- Examples of `ui-index`:
- Main branch → `https://releases.rancher.com/harvester-ui/dashboard/latest/index.html`
- Release series `1.5.x` → `https://releases.rancher.com/harvester-ui/dashboard/release-harvester-v1.5/index.html`
**Steps:**
1. Go to **Harvester UI** → **Advanced** → **Settings** → **UI**
2. Set **ui-source** to `External`
3. Set **ui-index** to the desired URL
## Contributing
If you want to contribute, start by reading this document, then visit our [Getting Started guide](https://extensions.rancher.io/extensions/next/extensions-getting-started) to learn how to develop and submit changes.
## License
Copyright (c) 2014-2026 [SUSE, LLC.](https://www.suse.com/)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,63 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "extension-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "extension-server.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "extension-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "extension-server.labels" -}}
helm.sh/chart: {{ include "extension-server.chart" . }}
{{ include "extension-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "extension-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "extension-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Pkg annotations
*/}}
{{- define "extension-server.pluginMetadata" -}}
{{- with .Values.plugin.metadata }}
{{- range $key, $value := . }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- end }}
@@ -0,0 +1,15 @@
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
name: {{ include "extension-server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "extension-server.labels" . | nindent 4 }}
spec:
plugin:
name: {{ include "extension-server.fullname" . }}
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
endpoint: {{ .Values.plugin.endpoint | quote }}
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
noCache: {{ .Values.plugin.noCache }}
noAuth: {{ .Values.plugin.noAuth }}
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
+16
View File
@@ -0,0 +1,16 @@
nameOverride: ""
fullnameOverride: ""
plugin:
enabled: true
versionOverride: ""
endpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc4
compressedEndpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc4.tgz
noCache: false
noAuth: false
metadata:
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: ">= 1.16.0-0"
catalog.cattle.io/rancher-version: ">= 2.15.0-0"
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
+19
View File
@@ -0,0 +1,19 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc5
description: Rancher UI Extension for Harvester
name: harvester
type: application
version: 1.9.0-rc5
icon: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
+177
View File
@@ -0,0 +1,177 @@
# harvester-ui-extension
The Harvester UI Extension is a Rancher extension that provides the user interface for [Harvester](https://harvesterhci.io) within the [Rancher Dashboard](https://github.com/rancher/dashboard).
> **Note:**
> This extension is available starting from **Rancher 2.10.0**. Ensure your Rancher version is **2.10.0 or later** to access Harvester integration.
## Installation
For Harvester UI extension installation instructions, please refer to the page **Rancher Integration** -> **Harvester UI Extension** in [official Harvester documentation](https://docs.harvesterhci.io).
## Development Setup
Ensure **Node.js v20 or later** is installed for development and debugging.
### Standalone Mode
Run the extension standalone with hot reload at `https://localhost:8005`.
```bash
# Install dependencies
yarn install
# Start the development server
RANCHER_ENV=harvester API=https://your-harvester-ip yarn dev
# Example with specific server version
RANCHER_ENV=harvester VUE_APP_SERVER_VERSION=v1.5.0 API=https://192.168.1.123 yarn dev
```
You may also define environment variables in a `.env` file:
```env
RANCHER_ENV=harvester
VUE_APP_SERVER_VERSION=v1.5.0
API=https://192.168.1.123
```
### Rancher Integration Mode
To run as a Rancher extension, follow the [Rancher UI Extension Guide](https://extensions.rancher.io/extensions/next/extensions-getting-started#running-the-app).
```bash
API=https://your-rancher-ip yarn dev
```
## Commit Message Guidelines
This project uses [commit-lint](https://commitlint.js.org/) with [Conventional Commits](https://www.conventionalcommits.org/) to ensure consistent and meaningful commit messages.
### Commit Message Format
All commit messages must follow the conventional commit format:
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
### Supported Types
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system or external dependencies
- **ci**: CI/CD changes
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit
- **wip**: Work in progress
- **deps**: Dependency updates
- **security**: Security fixes
### Examples
```bash
# Feature
git commit -m "feat: add new virtual machine creation wizard"
# Bug fix
git commit -m "fix: resolve memory leak in VM console"
# Documentation
git commit -m "docs: update installation instructions"
# Breaking change
git commit -m "feat!: change API endpoint structure
BREAKING CHANGE: The /api/v1/vms endpoint has been replaced with /api/v2/vms"
```
### Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) to automatically validate commit messages and run linting before commits:
- **pre-commit**: Runs ESLint to ensure code quality
- **commit-msg**: Validates commit message format using commit-lint
These hooks are automatically installed when you run `yarn install`.
### Manual Validation
You can manually validate commit messages:
```bash
# Validate the last commit
yarn commitlint
# Validate a specific commit
npx commitlint --from <commit-hash>
# Validate a range of commits
npx commitlint --from <start-hash> --to <end-hash>
```
## Branch Structure
- **`main`** – Main development branch
- **`release-harvester-vX.Y`** – Stable release branches per version series
- **`vX.Y-head`** – Testing branches for ongoing changes to extension builds in each release series
> **Note:**
> The `vX.Y-head` branches are auto-generated and kept in sync with release branches. Use these for testing the latest changes in each version series.
## Testing Guidelines
### UI Extension Testing
To validate changes in a release series, switch to the appropriate `vX.Y-head` branch. For main branch testing, use `main-head`.
- Examples:
- Test `1.0.x` series → `v1.0-head`
- Test `1.5.x` series → `v1.5-head`
**Steps:**
1. Navigate to **Rancher UI** → **Local** → **App** → **Repositories**
2. Refresh the Harvester repository using the target `vX.Y-head` branch
3. Go to the **Extensions** page and install the desired version
### Standalone Mode Testing
To test the standalone UI, configure Harvester to load the UI from an external source.
- Examples of `ui-index`:
- Main branch → `https://releases.rancher.com/harvester-ui/dashboard/latest/index.html`
- Release series `1.5.x` → `https://releases.rancher.com/harvester-ui/dashboard/release-harvester-v1.5/index.html`
**Steps:**
1. Go to **Harvester UI** → **Advanced** → **Settings** → **UI**
2. Set **ui-source** to `External`
3. Set **ui-index** to the desired URL
## Contributing
If you want to contribute, start by reading this document, then visit our [Getting Started guide](https://extensions.rancher.io/extensions/next/extensions-getting-started) to learn how to develop and submit changes.
## License
Copyright (c) 2014-2026 [SUSE, LLC.](https://www.suse.com/)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,63 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "extension-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "extension-server.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "extension-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "extension-server.labels" -}}
helm.sh/chart: {{ include "extension-server.chart" . }}
{{ include "extension-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "extension-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "extension-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Pkg annotations
*/}}
{{- define "extension-server.pluginMetadata" -}}
{{- with .Values.plugin.metadata }}
{{- range $key, $value := . }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- end }}
@@ -0,0 +1,15 @@
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
name: {{ include "extension-server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "extension-server.labels" . | nindent 4 }}
spec:
plugin:
name: {{ include "extension-server.fullname" . }}
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
endpoint: {{ .Values.plugin.endpoint | quote }}
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
noCache: {{ .Values.plugin.noCache }}
noAuth: {{ .Values.plugin.noAuth }}
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
+16
View File
@@ -0,0 +1,16 @@
nameOverride: ""
fullnameOverride: ""
plugin:
enabled: true
versionOverride: ""
endpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc5
compressedEndpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc5.tgz
noCache: false
noAuth: false
metadata:
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: ">= 1.16.0-0"
catalog.cattle.io/rancher-version: ">= 2.15.0-0"
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
+19
View File
@@ -0,0 +1,19 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc6
description: Rancher UI Extension for Harvester
name: harvester
type: application
version: 1.9.0-rc6
icon: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
+177
View File
@@ -0,0 +1,177 @@
# harvester-ui-extension
The Harvester UI Extension is a Rancher extension that provides the user interface for [Harvester](https://harvesterhci.io) within the [Rancher Dashboard](https://github.com/rancher/dashboard).
> **Note:**
> This extension is available starting from **Rancher 2.10.0**. Ensure your Rancher version is **2.10.0 or later** to access Harvester integration.
## Installation
For Harvester UI extension installation instructions, please refer to the page **Rancher Integration** -> **Harvester UI Extension** in [official Harvester documentation](https://docs.harvesterhci.io).
## Development Setup
Ensure **Node.js v20 or later** is installed for development and debugging.
### Standalone Mode
Run the extension standalone with hot reload at `https://localhost:8005`.
```bash
# Install dependencies
yarn install
# Start the development server
RANCHER_ENV=harvester API=https://your-harvester-ip yarn dev
# Example with specific server version
RANCHER_ENV=harvester VUE_APP_SERVER_VERSION=v1.5.0 API=https://192.168.1.123 yarn dev
```
You may also define environment variables in a `.env` file:
```env
RANCHER_ENV=harvester
VUE_APP_SERVER_VERSION=v1.5.0
API=https://192.168.1.123
```
### Rancher Integration Mode
To run as a Rancher extension, follow the [Rancher UI Extension Guide](https://extensions.rancher.io/extensions/next/extensions-getting-started#running-the-app).
```bash
API=https://your-rancher-ip yarn dev
```
## Commit Message Guidelines
This project uses [commit-lint](https://commitlint.js.org/) with [Conventional Commits](https://www.conventionalcommits.org/) to ensure consistent and meaningful commit messages.
### Commit Message Format
All commit messages must follow the conventional commit format:
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
### Supported Types
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system or external dependencies
- **ci**: CI/CD changes
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit
- **wip**: Work in progress
- **deps**: Dependency updates
- **security**: Security fixes
### Examples
```bash
# Feature
git commit -m "feat: add new virtual machine creation wizard"
# Bug fix
git commit -m "fix: resolve memory leak in VM console"
# Documentation
git commit -m "docs: update installation instructions"
# Breaking change
git commit -m "feat!: change API endpoint structure
BREAKING CHANGE: The /api/v1/vms endpoint has been replaced with /api/v2/vms"
```
### Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) to automatically validate commit messages and run linting before commits:
- **pre-commit**: Runs ESLint to ensure code quality
- **commit-msg**: Validates commit message format using commit-lint
These hooks are automatically installed when you run `yarn install`.
### Manual Validation
You can manually validate commit messages:
```bash
# Validate the last commit
yarn commitlint
# Validate a specific commit
npx commitlint --from <commit-hash>
# Validate a range of commits
npx commitlint --from <start-hash> --to <end-hash>
```
## Branch Structure
- **`main`** – Main development branch
- **`release-harvester-vX.Y`** – Stable release branches per version series
- **`vX.Y-head`** – Testing branches for ongoing changes to extension builds in each release series
> **Note:**
> The `vX.Y-head` branches are auto-generated and kept in sync with release branches. Use these for testing the latest changes in each version series.
## Testing Guidelines
### UI Extension Testing
To validate changes in a release series, switch to the appropriate `vX.Y-head` branch. For main branch testing, use `main-head`.
- Examples:
- Test `1.0.x` series → `v1.0-head`
- Test `1.5.x` series → `v1.5-head`
**Steps:**
1. Navigate to **Rancher UI** → **Local** → **App** → **Repositories**
2. Refresh the Harvester repository using the target `vX.Y-head` branch
3. Go to the **Extensions** page and install the desired version
### Standalone Mode Testing
To test the standalone UI, configure Harvester to load the UI from an external source.
- Examples of `ui-index`:
- Main branch → `https://releases.rancher.com/harvester-ui/dashboard/latest/index.html`
- Release series `1.5.x` → `https://releases.rancher.com/harvester-ui/dashboard/release-harvester-v1.5/index.html`
**Steps:**
1. Go to **Harvester UI** → **Advanced** → **Settings** → **UI**
2. Set **ui-source** to `External`
3. Set **ui-index** to the desired URL
## Contributing
If you want to contribute, start by reading this document, then visit our [Getting Started guide](https://extensions.rancher.io/extensions/next/extensions-getting-started) to learn how to develop and submit changes.
## License
Copyright (c) 2014-2026 [SUSE, LLC.](https://www.suse.com/)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,63 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "extension-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "extension-server.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "extension-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "extension-server.labels" -}}
helm.sh/chart: {{ include "extension-server.chart" . }}
{{ include "extension-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "extension-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "extension-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Pkg annotations
*/}}
{{- define "extension-server.pluginMetadata" -}}
{{- with .Values.plugin.metadata }}
{{- range $key, $value := . }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- end }}
@@ -0,0 +1,15 @@
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
name: {{ include "extension-server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "extension-server.labels" . | nindent 4 }}
spec:
plugin:
name: {{ include "extension-server.fullname" . }}
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
endpoint: {{ .Values.plugin.endpoint | quote }}
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
noCache: {{ .Values.plugin.noCache }}
noAuth: {{ .Values.plugin.noAuth }}
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
+16
View File
@@ -0,0 +1,16 @@
nameOverride: ""
fullnameOverride: ""
plugin:
enabled: true
versionOverride: ""
endpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc6
compressedEndpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc6.tgz
noCache: false
noAuth: false
metadata:
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: ">= 1.16.0-0"
catalog.cattle.io/rancher-version: ">= 2.15.0-0"
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
+19
View File
@@ -0,0 +1,19 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0-rc7
description: Rancher UI Extension for Harvester
name: harvester
type: application
version: 1.9.0-rc7
icon: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
+177
View File
@@ -0,0 +1,177 @@
# harvester-ui-extension
The Harvester UI Extension is a Rancher extension that provides the user interface for [Harvester](https://harvesterhci.io) within the [Rancher Dashboard](https://github.com/rancher/dashboard).
> **Note:**
> This extension is available starting from **Rancher 2.10.0**. Ensure your Rancher version is **2.10.0 or later** to access Harvester integration.
## Installation
For Harvester UI extension installation instructions, please refer to the page **Rancher Integration** -> **Harvester UI Extension** in [official Harvester documentation](https://docs.harvesterhci.io).
## Development Setup
Ensure **Node.js v20 or later** is installed for development and debugging.
### Standalone Mode
Run the extension standalone with hot reload at `https://localhost:8005`.
```bash
# Install dependencies
yarn install
# Start the development server
RANCHER_ENV=harvester API=https://your-harvester-ip yarn dev
# Example with specific server version
RANCHER_ENV=harvester VUE_APP_SERVER_VERSION=v1.5.0 API=https://192.168.1.123 yarn dev
```
You may also define environment variables in a `.env` file:
```env
RANCHER_ENV=harvester
VUE_APP_SERVER_VERSION=v1.5.0
API=https://192.168.1.123
```
### Rancher Integration Mode
To run as a Rancher extension, follow the [Rancher UI Extension Guide](https://extensions.rancher.io/extensions/next/extensions-getting-started#running-the-app).
```bash
API=https://your-rancher-ip yarn dev
```
## Commit Message Guidelines
This project uses [commit-lint](https://commitlint.js.org/) with [Conventional Commits](https://www.conventionalcommits.org/) to ensure consistent and meaningful commit messages.
### Commit Message Format
All commit messages must follow the conventional commit format:
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
### Supported Types
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system or external dependencies
- **ci**: CI/CD changes
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit
- **wip**: Work in progress
- **deps**: Dependency updates
- **security**: Security fixes
### Examples
```bash
# Feature
git commit -m "feat: add new virtual machine creation wizard"
# Bug fix
git commit -m "fix: resolve memory leak in VM console"
# Documentation
git commit -m "docs: update installation instructions"
# Breaking change
git commit -m "feat!: change API endpoint structure
BREAKING CHANGE: The /api/v1/vms endpoint has been replaced with /api/v2/vms"
```
### Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) to automatically validate commit messages and run linting before commits:
- **pre-commit**: Runs ESLint to ensure code quality
- **commit-msg**: Validates commit message format using commit-lint
These hooks are automatically installed when you run `yarn install`.
### Manual Validation
You can manually validate commit messages:
```bash
# Validate the last commit
yarn commitlint
# Validate a specific commit
npx commitlint --from <commit-hash>
# Validate a range of commits
npx commitlint --from <start-hash> --to <end-hash>
```
## Branch Structure
- **`main`** – Main development branch
- **`release-harvester-vX.Y`** – Stable release branches per version series
- **`vX.Y-head`** – Testing branches for ongoing changes to extension builds in each release series
> **Note:**
> The `vX.Y-head` branches are auto-generated and kept in sync with release branches. Use these for testing the latest changes in each version series.
## Testing Guidelines
### UI Extension Testing
To validate changes in a release series, switch to the appropriate `vX.Y-head` branch. For main branch testing, use `main-head`.
- Examples:
- Test `1.0.x` series → `v1.0-head`
- Test `1.5.x` series → `v1.5-head`
**Steps:**
1. Navigate to **Rancher UI** → **Local** → **App** → **Repositories**
2. Refresh the Harvester repository using the target `vX.Y-head` branch
3. Go to the **Extensions** page and install the desired version
### Standalone Mode Testing
To test the standalone UI, configure Harvester to load the UI from an external source.
- Examples of `ui-index`:
- Main branch → `https://releases.rancher.com/harvester-ui/dashboard/latest/index.html`
- Release series `1.5.x` → `https://releases.rancher.com/harvester-ui/dashboard/release-harvester-v1.5/index.html`
**Steps:**
1. Go to **Harvester UI** → **Advanced** → **Settings** → **UI**
2. Set **ui-source** to `External`
3. Set **ui-index** to the desired URL
## Contributing
If you want to contribute, start by reading this document, then visit our [Getting Started guide](https://extensions.rancher.io/extensions/next/extensions-getting-started) to learn how to develop and submit changes.
## License
Copyright (c) 2014-2026 [SUSE, LLC.](https://www.suse.com/)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,63 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "extension-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "extension-server.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "extension-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "extension-server.labels" -}}
helm.sh/chart: {{ include "extension-server.chart" . }}
{{ include "extension-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "extension-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "extension-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Pkg annotations
*/}}
{{- define "extension-server.pluginMetadata" -}}
{{- with .Values.plugin.metadata }}
{{- range $key, $value := . }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- end }}
@@ -0,0 +1,15 @@
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
name: {{ include "extension-server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "extension-server.labels" . | nindent 4 }}
spec:
plugin:
name: {{ include "extension-server.fullname" . }}
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
endpoint: {{ .Values.plugin.endpoint | quote }}
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
noCache: {{ .Values.plugin.noCache }}
noAuth: {{ .Values.plugin.noAuth }}
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
+16
View File
@@ -0,0 +1,16 @@
nameOverride: ""
fullnameOverride: ""
plugin:
enabled: true
versionOverride: ""
endpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc7
compressedEndpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0-rc7.tgz
noCache: false
noAuth: false
metadata:
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: ">= 1.16.0-0"
catalog.cattle.io/rancher-version: ">= 2.15.0-0"
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
+19
View File
@@ -0,0 +1,19 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.0
description: Rancher UI Extension for Harvester
name: harvester
type: application
version: 1.9.0
icon: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
+177
View File
@@ -0,0 +1,177 @@
# harvester-ui-extension
The Harvester UI Extension is a Rancher extension that provides the user interface for [Harvester](https://harvesterhci.io) within the [Rancher Dashboard](https://github.com/rancher/dashboard).
> **Note:**
> This extension is available starting from **Rancher 2.10.0**. Ensure your Rancher version is **2.10.0 or later** to access Harvester integration.
## Installation
For Harvester UI extension installation instructions, please refer to the page **Rancher Integration** -> **Harvester UI Extension** in [official Harvester documentation](https://docs.harvesterhci.io).
## Development Setup
Ensure **Node.js v20 or later** is installed for development and debugging.
### Standalone Mode
Run the extension standalone with hot reload at `https://localhost:8005`.
```bash
# Install dependencies
yarn install
# Start the development server
RANCHER_ENV=harvester API=https://your-harvester-ip yarn dev
# Example with specific server version
RANCHER_ENV=harvester VUE_APP_SERVER_VERSION=v1.5.0 API=https://192.168.1.123 yarn dev
```
You may also define environment variables in a `.env` file:
```env
RANCHER_ENV=harvester
VUE_APP_SERVER_VERSION=v1.5.0
API=https://192.168.1.123
```
### Rancher Integration Mode
To run as a Rancher extension, follow the [Rancher UI Extension Guide](https://extensions.rancher.io/extensions/next/extensions-getting-started#running-the-app).
```bash
API=https://your-rancher-ip yarn dev
```
## Commit Message Guidelines
This project uses [commit-lint](https://commitlint.js.org/) with [Conventional Commits](https://www.conventionalcommits.org/) to ensure consistent and meaningful commit messages.
### Commit Message Format
All commit messages must follow the conventional commit format:
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
### Supported Types
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system or external dependencies
- **ci**: CI/CD changes
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit
- **wip**: Work in progress
- **deps**: Dependency updates
- **security**: Security fixes
### Examples
```bash
# Feature
git commit -m "feat: add new virtual machine creation wizard"
# Bug fix
git commit -m "fix: resolve memory leak in VM console"
# Documentation
git commit -m "docs: update installation instructions"
# Breaking change
git commit -m "feat!: change API endpoint structure
BREAKING CHANGE: The /api/v1/vms endpoint has been replaced with /api/v2/vms"
```
### Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) to automatically validate commit messages and run linting before commits:
- **pre-commit**: Runs ESLint to ensure code quality
- **commit-msg**: Validates commit message format using commit-lint
These hooks are automatically installed when you run `yarn install`.
### Manual Validation
You can manually validate commit messages:
```bash
# Validate the last commit
yarn commitlint
# Validate a specific commit
npx commitlint --from <commit-hash>
# Validate a range of commits
npx commitlint --from <start-hash> --to <end-hash>
```
## Branch Structure
- **`main`** – Main development branch
- **`release-harvester-vX.Y`** – Stable release branches per version series
- **`vX.Y-head`** – Testing branches for ongoing changes to extension builds in each release series
> **Note:**
> The `vX.Y-head` branches are auto-generated and kept in sync with release branches. Use these for testing the latest changes in each version series.
## Testing Guidelines
### UI Extension Testing
To validate changes in a release series, switch to the appropriate `vX.Y-head` branch. For main branch testing, use `main-head`.
- Examples:
- Test `1.0.x` series → `v1.0-head`
- Test `1.5.x` series → `v1.5-head`
**Steps:**
1. Navigate to **Rancher UI** → **Local** → **App** → **Repositories**
2. Refresh the Harvester repository using the target `vX.Y-head` branch
3. Go to the **Extensions** page and install the desired version
### Standalone Mode Testing
To test the standalone UI, configure Harvester to load the UI from an external source.
- Examples of `ui-index`:
- Main branch → `https://releases.rancher.com/harvester-ui/dashboard/latest/index.html`
- Release series `1.5.x` → `https://releases.rancher.com/harvester-ui/dashboard/release-harvester-v1.5/index.html`
**Steps:**
1. Go to **Harvester UI** → **Advanced** → **Settings** → **UI**
2. Set **ui-source** to `External`
3. Set **ui-index** to the desired URL
## Contributing
If you want to contribute, start by reading this document, then visit our [Getting Started guide](https://extensions.rancher.io/extensions/next/extensions-getting-started) to learn how to develop and submit changes.
## License
Copyright (c) 2014-2026 [SUSE, LLC.](https://www.suse.com/)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,63 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "extension-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "extension-server.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "extension-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "extension-server.labels" -}}
helm.sh/chart: {{ include "extension-server.chart" . }}
{{ include "extension-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "extension-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "extension-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Pkg annotations
*/}}
{{- define "extension-server.pluginMetadata" -}}
{{- with .Values.plugin.metadata }}
{{- range $key, $value := . }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- end }}
+15
View File
@@ -0,0 +1,15 @@
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
name: {{ include "extension-server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "extension-server.labels" . | nindent 4 }}
spec:
plugin:
name: {{ include "extension-server.fullname" . }}
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
endpoint: {{ .Values.plugin.endpoint | quote }}
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
noCache: {{ .Values.plugin.noCache }}
noAuth: {{ .Values.plugin.noAuth }}
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
+16
View File
@@ -0,0 +1,16 @@
nameOverride: ""
fullnameOverride: ""
plugin:
enabled: true
versionOverride: ""
endpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0
compressedEndpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.0.tgz
noCache: false
noAuth: false
metadata:
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: ">= 1.16.0-0"
catalog.cattle.io/rancher-version: ">= 2.15.0-0"
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
+19
View File
@@ -0,0 +1,19 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.1-rc1
description: Rancher UI Extension for Harvester
name: harvester
type: application
version: 1.9.1-rc1
icon: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
+177
View File
@@ -0,0 +1,177 @@
# harvester-ui-extension
The Harvester UI Extension is a Rancher extension that provides the user interface for [Harvester](https://harvesterhci.io) within the [Rancher Dashboard](https://github.com/rancher/dashboard).
> **Note:**
> This extension is available starting from **Rancher 2.10.0**. Ensure your Rancher version is **2.10.0 or later** to access Harvester integration.
## Installation
For Harvester UI extension installation instructions, please refer to the page **Rancher Integration** -> **Harvester UI Extension** in [official Harvester documentation](https://docs.harvesterhci.io).
## Development Setup
Ensure **Node.js v20 or later** is installed for development and debugging.
### Standalone Mode
Run the extension standalone with hot reload at `https://localhost:8005`.
```bash
# Install dependencies
yarn install
# Start the development server
RANCHER_ENV=harvester API=https://your-harvester-ip yarn dev
# Example with specific server version
RANCHER_ENV=harvester VUE_APP_SERVER_VERSION=v1.5.0 API=https://192.168.1.123 yarn dev
```
You may also define environment variables in a `.env` file:
```env
RANCHER_ENV=harvester
VUE_APP_SERVER_VERSION=v1.5.0
API=https://192.168.1.123
```
### Rancher Integration Mode
To run as a Rancher extension, follow the [Rancher UI Extension Guide](https://extensions.rancher.io/extensions/next/extensions-getting-started#running-the-app).
```bash
API=https://your-rancher-ip yarn dev
```
## Commit Message Guidelines
This project uses [commit-lint](https://commitlint.js.org/) with [Conventional Commits](https://www.conventionalcommits.org/) to ensure consistent and meaningful commit messages.
### Commit Message Format
All commit messages must follow the conventional commit format:
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
### Supported Types
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system or external dependencies
- **ci**: CI/CD changes
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit
- **wip**: Work in progress
- **deps**: Dependency updates
- **security**: Security fixes
### Examples
```bash
# Feature
git commit -m "feat: add new virtual machine creation wizard"
# Bug fix
git commit -m "fix: resolve memory leak in VM console"
# Documentation
git commit -m "docs: update installation instructions"
# Breaking change
git commit -m "feat!: change API endpoint structure
BREAKING CHANGE: The /api/v1/vms endpoint has been replaced with /api/v2/vms"
```
### Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) to automatically validate commit messages and run linting before commits:
- **pre-commit**: Runs ESLint to ensure code quality
- **commit-msg**: Validates commit message format using commit-lint
These hooks are automatically installed when you run `yarn install`.
### Manual Validation
You can manually validate commit messages:
```bash
# Validate the last commit
yarn commitlint
# Validate a specific commit
npx commitlint --from <commit-hash>
# Validate a range of commits
npx commitlint --from <start-hash> --to <end-hash>
```
## Branch Structure
- **`main`** – Main development branch
- **`release-harvester-vX.Y`** – Stable release branches per version series
- **`vX.Y-head`** – Testing branches for ongoing changes to extension builds in each release series
> **Note:**
> The `vX.Y-head` branches are auto-generated and kept in sync with release branches. Use these for testing the latest changes in each version series.
## Testing Guidelines
### UI Extension Testing
To validate changes in a release series, switch to the appropriate `vX.Y-head` branch. For main branch testing, use `main-head`.
- Examples:
- Test `1.0.x` series → `v1.0-head`
- Test `1.5.x` series → `v1.5-head`
**Steps:**
1. Navigate to **Rancher UI** → **Local** → **App** → **Repositories**
2. Refresh the Harvester repository using the target `vX.Y-head` branch
3. Go to the **Extensions** page and install the desired version
### Standalone Mode Testing
To test the standalone UI, configure Harvester to load the UI from an external source.
- Examples of `ui-index`:
- Main branch → `https://releases.rancher.com/harvester-ui/dashboard/latest/index.html`
- Release series `1.5.x` → `https://releases.rancher.com/harvester-ui/dashboard/release-harvester-v1.5/index.html`
**Steps:**
1. Go to **Harvester UI** → **Advanced** → **Settings** → **UI**
2. Set **ui-source** to `External`
3. Set **ui-index** to the desired URL
## Contributing
If you want to contribute, start by reading this document, then visit our [Getting Started guide](https://extensions.rancher.io/extensions/next/extensions-getting-started) to learn how to develop and submit changes.
## License
Copyright (c) 2014-2026 [SUSE, LLC.](https://www.suse.com/)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,63 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "extension-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "extension-server.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "extension-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "extension-server.labels" -}}
helm.sh/chart: {{ include "extension-server.chart" . }}
{{ include "extension-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "extension-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "extension-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Pkg annotations
*/}}
{{- define "extension-server.pluginMetadata" -}}
{{- with .Values.plugin.metadata }}
{{- range $key, $value := . }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- end }}
@@ -0,0 +1,15 @@
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
name: {{ include "extension-server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "extension-server.labels" . | nindent 4 }}
spec:
plugin:
name: {{ include "extension-server.fullname" . }}
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
endpoint: {{ .Values.plugin.endpoint | quote }}
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
noCache: {{ .Values.plugin.noCache }}
noAuth: {{ .Values.plugin.noAuth }}
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
+16
View File
@@ -0,0 +1,16 @@
nameOverride: ""
fullnameOverride: ""
plugin:
enabled: true
versionOverride: ""
endpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.1-rc1
compressedEndpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.1-rc1.tgz
noCache: false
noAuth: false
metadata:
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: ">= 1.16.0-0"
catalog.cattle.io/rancher-version: ">= 2.15.0-0"
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
+19
View File
@@ -0,0 +1,19 @@
annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/namespace: cattle-ui-plugin-system
catalog.cattle.io/os: linux
catalog.cattle.io/permits-os: linux, windows
catalog.cattle.io/scope: management
catalog.cattle.io/ui-component: plugins
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: '>= 1.16.0-0'
catalog.cattle.io/rancher-version: '>= 2.15.0-0'
catalog.cattle.io/ui-extensions-version: '>= 3.0.0 < 4.0.0'
apiVersion: v2
appVersion: 1.9.1-rc2
description: Rancher UI Extension for Harvester
name: harvester
type: application
version: 1.9.1-rc2
icon: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/main/pkg/harvester/icon.svg
+177
View File
@@ -0,0 +1,177 @@
# harvester-ui-extension
The Harvester UI Extension is a Rancher extension that provides the user interface for [Harvester](https://harvesterhci.io) within the [Rancher Dashboard](https://github.com/rancher/dashboard).
> **Note:**
> This extension is available starting from **Rancher 2.10.0**. Ensure your Rancher version is **2.10.0 or later** to access Harvester integration.
## Installation
For Harvester UI extension installation instructions, please refer to the page **Rancher Integration** -> **Harvester UI Extension** in [official Harvester documentation](https://docs.harvesterhci.io).
## Development Setup
Ensure **Node.js v20 or later** is installed for development and debugging.
### Standalone Mode
Run the extension standalone with hot reload at `https://localhost:8005`.
```bash
# Install dependencies
yarn install
# Start the development server
RANCHER_ENV=harvester API=https://your-harvester-ip yarn dev
# Example with specific server version
RANCHER_ENV=harvester VUE_APP_SERVER_VERSION=v1.5.0 API=https://192.168.1.123 yarn dev
```
You may also define environment variables in a `.env` file:
```env
RANCHER_ENV=harvester
VUE_APP_SERVER_VERSION=v1.5.0
API=https://192.168.1.123
```
### Rancher Integration Mode
To run as a Rancher extension, follow the [Rancher UI Extension Guide](https://extensions.rancher.io/extensions/next/extensions-getting-started#running-the-app).
```bash
API=https://your-rancher-ip yarn dev
```
## Commit Message Guidelines
This project uses [commit-lint](https://commitlint.js.org/) with [Conventional Commits](https://www.conventionalcommits.org/) to ensure consistent and meaningful commit messages.
### Commit Message Format
All commit messages must follow the conventional commit format:
```
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
```
### Supported Types
- **feat**: New features
- **fix**: Bug fixes
- **docs**: Documentation changes
- **style**: Code style changes (formatting, missing semicolons, etc.)
- **refactor**: Code refactoring
- **perf**: Performance improvements
- **test**: Adding or updating tests
- **build**: Build system or external dependencies
- **ci**: CI/CD changes
- **chore**: Other changes that don't modify src or test files
- **revert**: Reverts a previous commit
- **wip**: Work in progress
- **deps**: Dependency updates
- **security**: Security fixes
### Examples
```bash
# Feature
git commit -m "feat: add new virtual machine creation wizard"
# Bug fix
git commit -m "fix: resolve memory leak in VM console"
# Documentation
git commit -m "docs: update installation instructions"
# Breaking change
git commit -m "feat!: change API endpoint structure
BREAKING CHANGE: The /api/v1/vms endpoint has been replaced with /api/v2/vms"
```
### Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) to automatically validate commit messages and run linting before commits:
- **pre-commit**: Runs ESLint to ensure code quality
- **commit-msg**: Validates commit message format using commit-lint
These hooks are automatically installed when you run `yarn install`.
### Manual Validation
You can manually validate commit messages:
```bash
# Validate the last commit
yarn commitlint
# Validate a specific commit
npx commitlint --from <commit-hash>
# Validate a range of commits
npx commitlint --from <start-hash> --to <end-hash>
```
## Branch Structure
- **`main`** – Main development branch
- **`release-harvester-vX.Y`** – Stable release branches per version series
- **`vX.Y-head`** – Testing branches for ongoing changes to extension builds in each release series
> **Note:**
> The `vX.Y-head` branches are auto-generated and kept in sync with release branches. Use these for testing the latest changes in each version series.
## Testing Guidelines
### UI Extension Testing
To validate changes in a release series, switch to the appropriate `vX.Y-head` branch. For main branch testing, use `main-head`.
- Examples:
- Test `1.0.x` series → `v1.0-head`
- Test `1.5.x` series → `v1.5-head`
**Steps:**
1. Navigate to **Rancher UI** → **Local** → **App** → **Repositories**
2. Refresh the Harvester repository using the target `vX.Y-head` branch
3. Go to the **Extensions** page and install the desired version
### Standalone Mode Testing
To test the standalone UI, configure Harvester to load the UI from an external source.
- Examples of `ui-index`:
- Main branch → `https://releases.rancher.com/harvester-ui/dashboard/latest/index.html`
- Release series `1.5.x` → `https://releases.rancher.com/harvester-ui/dashboard/release-harvester-v1.5/index.html`
**Steps:**
1. Go to **Harvester UI** → **Advanced** → **Settings** → **UI**
2. Set **ui-source** to `External`
3. Set **ui-index** to the desired URL
## Contributing
If you want to contribute, start by reading this document, then visit our [Getting Started guide](https://extensions.rancher.io/extensions/next/extensions-getting-started) to learn how to develop and submit changes.
## License
Copyright (c) 2014-2026 [SUSE, LLC.](https://www.suse.com/)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,63 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "extension-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "extension-server.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "extension-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "extension-server.labels" -}}
helm.sh/chart: {{ include "extension-server.chart" . }}
{{ include "extension-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "extension-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "extension-server.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Pkg annotations
*/}}
{{- define "extension-server.pluginMetadata" -}}
{{- with .Values.plugin.metadata }}
{{- range $key, $value := . }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
{{- end }}
@@ -0,0 +1,15 @@
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
name: {{ include "extension-server.fullname" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "extension-server.labels" . | nindent 4 }}
spec:
plugin:
name: {{ include "extension-server.fullname" . }}
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
endpoint: {{ .Values.plugin.endpoint | quote }}
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
noCache: {{ .Values.plugin.noCache }}
noAuth: {{ .Values.plugin.noAuth }}
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
+16
View File
@@ -0,0 +1,16 @@
nameOverride: ""
fullnameOverride: ""
plugin:
enabled: true
versionOverride: ""
endpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.1-rc2
compressedEndpoint: >-
https://raw.githubusercontent.com/harvester/harvester-ui-extension/v1.9-head/extensions/harvester/1.9.1-rc2.tgz
noCache: false
noAuth: false
metadata:
catalog.cattle.io/display-name: Harvester
catalog.cattle.io/kube-version: ">= 1.16.0-0"
catalog.cattle.io/rancher-version: ">= 2.15.0-0"
catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0"
Binary file not shown.
+214
View File
@@ -0,0 +1,214 @@
plugin/harvester-1.9.0-dev.umd.min.131.js
plugin/harvester-1.9.0-dev.umd.min.131.js.map
plugin/harvester-1.9.0-dev.umd.min.238.js
plugin/harvester-1.9.0-dev.umd.min.238.js.map
plugin/harvester-1.9.0-dev.umd.min.277.js
plugin/harvester-1.9.0-dev.umd.min.277.js.map
plugin/harvester-1.9.0-dev.umd.min.303.js
plugin/harvester-1.9.0-dev.umd.min.303.js.map
plugin/harvester-1.9.0-dev.umd.min.327.js
plugin/harvester-1.9.0-dev.umd.min.327.js.map
plugin/harvester-1.9.0-dev.umd.min.37.js
plugin/harvester-1.9.0-dev.umd.min.37.js.map
plugin/harvester-1.9.0-dev.umd.min.431.js
plugin/harvester-1.9.0-dev.umd.min.431.js.map
plugin/harvester-1.9.0-dev.umd.min.446.js
plugin/harvester-1.9.0-dev.umd.min.446.js.map
plugin/harvester-1.9.0-dev.umd.min.456.js
plugin/harvester-1.9.0-dev.umd.min.456.js.map
plugin/harvester-1.9.0-dev.umd.min.460.js
plugin/harvester-1.9.0-dev.umd.min.460.js.map
plugin/harvester-1.9.0-dev.umd.min.496.js
plugin/harvester-1.9.0-dev.umd.min.496.js.map
plugin/harvester-1.9.0-dev.umd.min.60.js
plugin/harvester-1.9.0-dev.umd.min.60.js.map
plugin/harvester-1.9.0-dev.umd.min.682.js
plugin/harvester-1.9.0-dev.umd.min.682.js.map
plugin/harvester-1.9.0-dev.umd.min.728.js
plugin/harvester-1.9.0-dev.umd.min.728.js.map
plugin/harvester-1.9.0-dev.umd.min.740.js
plugin/harvester-1.9.0-dev.umd.min.740.js.map
plugin/harvester-1.9.0-dev.umd.min.77.js
plugin/harvester-1.9.0-dev.umd.min.77.js.map
plugin/harvester-1.9.0-dev.umd.min.813.js
plugin/harvester-1.9.0-dev.umd.min.813.js.map
plugin/harvester-1.9.0-dev.umd.min.818.js
plugin/harvester-1.9.0-dev.umd.min.818.js.map
plugin/harvester-1.9.0-dev.umd.min.819.js
plugin/harvester-1.9.0-dev.umd.min.819.js.map
plugin/harvester-1.9.0-dev.umd.min.856.js
plugin/harvester-1.9.0-dev.umd.min.856.js.map
plugin/harvester-1.9.0-dev.umd.min.88.js
plugin/harvester-1.9.0-dev.umd.min.88.js.map
plugin/harvester-1.9.0-dev.umd.min.880.js
plugin/harvester-1.9.0-dev.umd.min.880.js.map
plugin/harvester-1.9.0-dev.umd.min.961.js
plugin/harvester-1.9.0-dev.umd.min.961.js.map
plugin/harvester-1.9.0-dev.umd.min.965.js
plugin/harvester-1.9.0-dev.umd.min.965.js.map
plugin/harvester-1.9.0-dev.umd.min.csv.js
plugin/harvester-1.9.0-dev.umd.min.csv.js.map
plugin/harvester-1.9.0-dev.umd.min.detail.js
plugin/harvester-1.9.0-dev.umd.min.detail.js.map
plugin/harvester-1.9.0-dev.umd.min.dialog.js
plugin/harvester-1.9.0-dev.umd.min.dialog.js.map
plugin/harvester-1.9.0-dev.umd.min.edit.js
plugin/harvester-1.9.0-dev.umd.min.edit.js.map
plugin/harvester-1.9.0-dev.umd.min.formatters.js
plugin/harvester-1.9.0-dev.umd.min.formatters.js.map
plugin/harvester-1.9.0-dev.umd.min.js
plugin/harvester-1.9.0-dev.umd.min.js.map
plugin/harvester-1.9.0-dev.umd.min.list.js
plugin/harvester-1.9.0-dev.umd.min.list.js.map
plugin/harvester-1.9.0-dev.umd.min.promptRemove.js
plugin/harvester-1.9.0-dev.umd.min.promptRemove.js.map
plugin/harvester-1.9.0-dev.umd.min.xccdf.js
plugin/harvester-1.9.0-dev.umd.min.xccdf.js.map
plugin/harvester-1.9.0-dev.umd.min.xterm.js
plugin/harvester-1.9.0-dev.umd.min.xterm.js.map
plugin/img/activedirectory.0baa2998.svg
plugin/img/adfs.6e70726e.svg
plugin/img/aliyun-black.a9967561.svg
plugin/img/aliyun.d05bff3f.svg
plugin/img/aliyunecs-black.93dd5b27.svg
plugin/img/aliyunecs.b57b715b.svg
plugin/img/amazonec2-black.5d49a518.svg
plugin/img/amazonec2.259f7435.svg
plugin/img/amazoneks-black.e3999509.svg
plugin/img/amazoneks.44a8a254.svg
plugin/img/aws.988ade4f.svg
plugin/img/azure-black.4bcdbe6b.svg
plugin/img/azure.7d30d447.svg
plugin/img/azureaks-black.09cdc074.svg
plugin/img/azureaks.239d69fb.svg
plugin/img/baidu-black.32fb0569.svg
plugin/img/baidu.063c3510.svg
plugin/img/banner.00f803a6.svg
plugin/img/banner.245c572a.svg
plugin/img/banner.e66743c3.svg
plugin/img/banner.ee2db63b.svg
plugin/img/cloud-native.9cfd7ba8.svg
plugin/img/cloud-native.f640653c.svg
plugin/img/cloudca-black.2c8fc541.svg
plugin/img/cloudca.fb088dd5.svg
plugin/img/cloudscale-black.87d94917.svg
plugin/img/cloudscale.dd348191.svg
plugin/img/cognito.0f11062a.svg
plugin/img/custom.2ff19310.svg
plugin/img/custom.6f45244d.svg
plugin/img/decoration-cloud-big-white.4229596e.svg
plugin/img/decoration-ground.3f64fcbb.svg
plugin/img/digitalocean-black.3d5310a1.svg
plugin/img/digitalocean.b0aa5786.svg
plugin/img/email.b67ceff2.svg
plugin/img/entraid-black.94dc348c.svg
plugin/img/entraid.f2b1e1d1.svg
plugin/img/equinix-black.0870820e.svg
plugin/img/equinix.c112c186.svg
plugin/img/error-desert-landscape.2a9d44f4.svg
plugin/img/exoscale.af115826.svg
plugin/img/favicon.20240f8a.png
plugin/img/featured.e7faac8a.jpg
plugin/img/field-valid.b378b909.svg
plugin/img/freeipa.ef110cc0.svg
plugin/img/gcp.f7a1243c.svg
plugin/img/generic-catalog.1842a50e.svg
plugin/img/generic-driver.7f81adcc.svg
plugin/img/generic-plugin.f1ebdd74.svg
plugin/img/github.9c864145.svg
plugin/img/githubapp.9c864145.svg
plugin/img/gke-black.64bdd882.svg
plugin/img/gke.4c1ecbcd.svg
plugin/img/google.789cf860.svg
plugin/img/googlegke-black.64bdd882.svg
plugin/img/googlegke.4c1ecbcd.svg
plugin/img/googleoauth.4619a2a5.svg
plugin/img/grafana.2db31bb8.svg
plugin/img/half-logo.1bc560ee.svg
plugin/img/harvester.0168283e.svg
plugin/img/harvester.20240f8a.png
plugin/img/huaweicce-black.d378b855.svg
plugin/img/huaweicce.22b4ecea.svg
plugin/img/icon.42954c0f.svg
plugin/img/import.ac396542.svg
plugin/img/jaeger.1c7d1266.svg
plugin/img/k3s-black.b4765216.svg
plugin/img/k3s.f0881505.svg
plugin/img/key.3451c981.svg
plugin/img/keycloak.ca7b4848.svg
plugin/img/kiali.d0e257dd.svg
plugin/img/kubernetes-black.2ade6358.svg
plugin/img/kubernetes.ac396542.svg
plugin/img/linode.642005fe.svg
plugin/img/linodelke-black.81aa799d.svg
plugin/img/linodelke.642005fe.svg
plugin/img/linux.a96776e5.svg
plugin/img/local-cluster.272d4fc9.svg
plugin/img/login-landscape.0a4b1a5f.svg
plugin/img/login-landscape.60cd520b.svg
plugin/img/login-landscape.6734e5cc.svg
plugin/img/login-landscape.6e1253bb.svg
plugin/img/longhorn.4809470b.svg
plugin/img/minikube-black.94055a38.svg
plugin/img/minikube.117e4a38.svg
plugin/img/neuvector.513801d3.svg
plugin/img/nutanix.862c3637.svg
plugin/img/oci-black.cd3524de.svg
plugin/img/oci-open-containers.a7329d94.svg
plugin/img/oci.3a81eed0.svg
plugin/img/okta.58a2aa35.svg
plugin/img/openid.451743dd.svg
plugin/img/openldap.59040f23.svg
plugin/img/openstack-black.af3ac5a0.svg
plugin/img/openstack.475580f8.svg
plugin/img/oracle.74aae75e.svg
plugin/img/oracleoke-black.ec0a34a2.svg
plugin/img/oracleoke.64fac528.svg
plugin/img/otc-black.5629758c.svg
plugin/img/otc.1b7d926f.svg
plugin/img/otccce.1b7d926f.svg
plugin/img/outscale.d0d823da.svg
plugin/img/ovhcloudmks.612c966f.svg
plugin/img/ovhcloudpubliccloud.612c966f.svg
plugin/img/packet-black.5fc90c03.svg
plugin/img/packet.ef1f45fa.svg
plugin/img/pagerduty.9871fbd3.svg
plugin/img/ping.5b5afc6e.svg
plugin/img/pinganyunecs-black.bf0b3440.svg
plugin/img/pinganyunecs.b74db865.svg
plugin/img/pnap-black.a7948015.svg
plugin/img/pnap.81704b7a.svg
plugin/img/prometheus.be8ac54d.svg
plugin/img/rackspace-black.0e8f8bc4.svg
plugin/img/rackspace.5e8dcb5a.svg
plugin/img/rancher-logo.487fcd1d.svg
plugin/img/rancher-logo.788ed883.svg
plugin/img/rancher-logo.8dca6972.svg
plugin/img/rancher-logo.920195b3.svg
plugin/img/rancher-logo.af9af640.svg
plugin/img/rancher-logo.d26f6ac6.svg
plugin/img/rancher-logo.db10c962.svg
plugin/img/rancher-logo.ef1ab5b0.svg
plugin/img/rancher-logo.f190bd21.svg
plugin/img/rancher-logo.fd684d42.svg
plugin/img/rke.a01f31e7.svg
plugin/img/rke2.a01f31e7.svg
plugin/img/setup-step-one.7b236b40.svg
plugin/img/shibboleth.35ea1d68.svg
plugin/img/shield.8516dabb.svg
plugin/img/shield.d1ed84b4.svg
plugin/img/sks.af115826.svg
plugin/img/slack.34dfd73f.svg
plugin/img/softlayer.5d9a5c2a.svg
plugin/img/sunglasses.157dca2a.svg
plugin/img/suse.61974c8d.svg
plugin/img/suse.bc943e43.svg
plugin/img/tencenttke-black.140c30e5.svg
plugin/img/tencenttke.42042615.svg
plugin/img/traefik.6be4ff82.png
plugin/img/vmwarevsphere-black.454d68ed.svg
plugin/img/vmwarevsphere.94d59db3.svg
plugin/img/webhook.f86c012b.svg
plugin/img/wechat-qr-code.c0468b45.jpg
plugin/img/windows.f862ed7d.svg
plugin/package.json
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
"use strict";(("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_dev"]=("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_dev"]||[]).push([[277],{28277:function(e,n,t){t.r(n),t.d(n,{default:function(){return f}});var r=t(9274);function s(e,n,t,s,o,c){const u=(0,r.resolveComponent)("ResourceDetail");return(0,r.openBlock)(),(0,r.createBlock)(u)}var o=t(71407),c={name:"ClusterResourceNamespaceId",components:{ResourceDetail:o.A}},u=t(47433);const a=(0,u.A)(c,[["render",s]]);var f=a}}]);
//# sourceMappingURL=harvester-1.9.0-dev.umd.min.277.js.map
@@ -0,0 +1 @@
{"version":3,"file":"harvester-1.9.0-dev.umd.min.277.js","mappings":"qWAUEA,EAAAA,EAAAA,aAAkBC,E,gBAPpB,GACEC,KAAY,6BACZC,WAAY,CAAEC,eAAcA,EAAAA,I,WCA9B,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,KAEpE,O","sources":["webpack://harvester-1.9.0-dev/../../node_modules/@rancher/shell/pages/c/_cluster/_product/_resource/_namespace/_id.vue","webpack://harvester-1.9.0-dev/../../node_modules/@rancher/shell/pages/c/_cluster/_product/_resource/_namespace/_id.vue?9724"],"sourcesContent":["<script>\nimport ResourceDetail from '@shell/components/ResourceDetail';\n\nexport default {\n name: 'ClusterResourceNamespaceId',\n components: { ResourceDetail },\n};\n</script>\n\n<template>\n <ResourceDetail />\n</template>\n","import { render } from \"./_id.vue?vue&type=template&id=36f5b1f9\"\nimport script from \"./_id.vue?vue&type=script&lang=js\"\nexport * from \"./_id.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["_createBlock","_component_ResourceDetail","name","components","ResourceDetail","__exports__","render"],"sourceRoot":""}
@@ -0,0 +1,2 @@
"use strict";(("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_dev"]=("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_dev"]||[]).push([[303],{66303:function(e,n,t){t.r(n),t.d(n,{default:function(){return f}});var r=t(9274);function s(e,n,t,s,o,u){const c=(0,r.resolveComponent)("ResourceDetail");return(0,r.openBlock)(),(0,r.createBlock)(c)}var o=t(71407),u={name:"ClusterResourcedId",components:{ResourceDetail:o.A}},c=t(47433);const a=(0,c.A)(u,[["render",s]]);var f=a}}]);
//# sourceMappingURL=harvester-1.9.0-dev.umd.min.303.js.map
@@ -0,0 +1 @@
{"version":3,"file":"harvester-1.9.0-dev.umd.min.303.js","mappings":"qWAUEA,EAAAA,EAAAA,aAAkBC,E,gBAPpB,GACEC,KAAY,qBACZC,WAAY,CAAEC,eAAcA,EAAAA,I,WCA9B,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,KAEpE,O","sources":["webpack://harvester-1.9.0-dev/../../node_modules/@rancher/shell/pages/c/_cluster/_product/_resource/_id.vue","webpack://harvester-1.9.0-dev/../../node_modules/@rancher/shell/pages/c/_cluster/_product/_resource/_id.vue?96bb"],"sourcesContent":["<script>\nimport ResourceDetail from '@shell/components/ResourceDetail';\n\nexport default {\n name: 'ClusterResourcedId',\n components: { ResourceDetail },\n};\n</script>\n\n<template>\n <ResourceDetail />\n</template>\n","import { render } from \"./_id.vue?vue&type=template&id=7d01dbfe\"\nimport script from \"./_id.vue?vue&type=script&lang=js\"\nexport * from \"./_id.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["_createBlock","_component_ResourceDetail","name","components","ResourceDetail","__exports__","render"],"sourceRoot":""}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
"use strict";(("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_dev"]=("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_dev"]||[]).push([[446],{36446:function(e,n,t){t.r(n),t.d(n,{default:function(){return i}});var s=t(9274);function r(e,n,t,r,o,u){const c=(0,s.resolveComponent)("ResourceList");return(0,s.openBlock)(),(0,s.createBlock)(c)}var o=t(21758),u={name:"ClusterResourcedList",components:{ResourceList:o.A}},c=t(47433);const f=(0,c.A)(u,[["render",r]]);var i=f}}]);
//# sourceMappingURL=harvester-1.9.0-dev.umd.min.446.js.map
@@ -0,0 +1 @@
{"version":3,"file":"harvester-1.9.0-dev.umd.min.446.js","mappings":"mWAUEA,EAAAA,EAAAA,aAAgBC,E,gBAPlB,GACEC,KAAY,uBACZC,WAAY,CAAEC,aAAYA,EAAAA,I,WCA5B,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,KAEpE,O","sources":["webpack://harvester-1.9.0-dev/../../node_modules/@rancher/shell/pages/c/_cluster/_product/_resource/index.vue","webpack://harvester-1.9.0-dev/../../node_modules/@rancher/shell/pages/c/_cluster/_product/_resource/index.vue?1ef3"],"sourcesContent":["<script>\nimport ResourceList from '@shell/components/ResourceList';\n\nexport default {\n name: 'ClusterResourcedList',\n components: { ResourceList },\n};\n</script>\n\n<template>\n <ResourceList />\n</template>\n","import { render } from \"./index.vue?vue&type=template&id=00d07840\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../../vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["_createBlock","_component_ResourceList","name","components","ResourceList","__exports__","render"],"sourceRoot":""}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
(("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_dev"]=("undefined"!==typeof self?self:this)["webpackChunkharvester_1_9_0_dev"]||[]).push([[60],{45060:function(e,t,n){var o,a,i,r=n(4364);(function(n,r){a=[],o=r,i="function"===typeof o?o.apply(t,a):o,void 0===i||(e.exports=i)})(0,function(){"use strict";function t(e,t){return"undefined"==typeof t?t={autoBom:!1}:"object"!=typeof t&&(r.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}function o(e,t,n){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="blob",o.onload=function(){s(o.response,t,n)},o.onerror=function(){r.error("could not download file")},o.send()}function a(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function i(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(o){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var c="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n.g&&n.g.global===n.g?n.g:void 0,s=c.saveAs||("object"!=typeof window||window!==c?function(){}:"download"in HTMLAnchorElement.prototype?function(e,t,n){var r=c.URL||c.webkitURL,s=document.createElement("a");t=t||e.name||"download",s.download=t,s.rel="noopener","string"==typeof e?(s.href=e,s.origin===location.origin?i(s):a(s.href)?o(e,t,n):i(s,s.target="_blank")):(s.href=r.createObjectURL(e),setTimeout(function(){r.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(e,n,r){if(n=n||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(t(e,r),n);else if(a(e))o(e,n,r);else{var c=document.createElement("a");c.href=e,c.target="_blank",setTimeout(function(){i(c)})}}:function(e,t,n,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),"string"==typeof e)return o(e,t,n);var i="application/octet-stream"===e.type,r=/constructor/i.test(c.HTMLElement)||c.safari,s=/CriOS\/[\d]+/.test(navigator.userAgent);if((s||i&&r)&&"object"==typeof FileReader){var f=new FileReader;f.onloadend=function(){var e=f.result;e=s?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=e:location=e,a=null},f.readAsDataURL(e)}else{var l=c.URL||c.webkitURL,u=l.createObjectURL(e);a?a.location=u:location.href=u,a=null,setTimeout(function(){l.revokeObjectURL(u)},4e4)}});c.saveAs=s.saveAs=s,e.exports=s})}}]);
//# sourceMappingURL=harvester-1.9.0-dev.umd.min.60.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More