@rancher/shell 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/brand/suse/dark/rancher-logo.svg +1 -148
- package/assets/brand/suse/rancher-logo.svg +1 -130
- package/assets/images/featured/img1.jpg +0 -0
- package/assets/images/featured.jpg +0 -0
- package/assets/images/generic-plugin.svg +7 -0
- package/assets/styles/themes/_dark.scss +3 -0
- package/assets/styles/themes/_light.scss +3 -0
- package/assets/styles/themes/_suse.scss +1 -1
- package/assets/translations/en-us.yaml +183 -45
- package/assets/translations/zh-hans.yaml +21 -24
- package/components/AsyncButton.vue +17 -2
- package/components/ButtonDropdown.vue +4 -0
- package/components/Carousel.vue +291 -0
- package/components/CommunityLinks.vue +69 -18
- package/components/CruResource.vue +11 -3
- package/components/Dialog.vue +102 -0
- package/components/ExplorerMembers.vue +2 -4
- package/components/ExplorerProjectsNamespaces.vue +6 -7
- package/components/IconMessage.vue +9 -1
- package/components/LocaleSelector.vue +62 -29
- package/components/ResourceTable.vue +7 -2
- package/components/SimpleBox.vue +6 -4
- package/components/SortableTable/index.vue +11 -21
- package/components/Tabbed/Tab.vue +5 -0
- package/components/Tabbed/index.vue +29 -2
- package/components/auth/Principal.vue +1 -0
- package/components/fleet/FleetBundles.vue +8 -3
- package/components/fleet/FleetSummary.vue +6 -0
- package/components/form/KeyValue.vue +80 -58
- package/components/form/NameNsDescription.vue +10 -4
- package/components/form/ResourceTabs/index.vue +5 -1
- package/components/formatter/ClusterLink.vue +3 -7
- package/components/nav/NamespaceFilter.vue +3 -3
- package/components/nav/TopLevelMenu.vue +10 -28
- package/config/footer.js +13 -14
- package/config/labels-annotations.js +2 -1
- package/config/product/explorer.js +5 -4
- package/config/product/legacy.js +0 -47
- package/config/product/multi-cluster-apps.js +0 -12
- package/config/product/settings.js +12 -1
- package/config/product/uiplugins.js +17 -0
- package/config/settings.js +21 -2
- package/config/types.js +5 -1
- package/config/uiplugins.js +60 -0
- package/content/docs/en-us/getting-started.md +1 -26
- package/core/plugins.js +12 -0
- package/detail/provisioning.cattle.io.cluster.vue +3 -3
- package/detail/workload/index.vue +2 -2
- package/dialog/DiagnosticTimingsDialog.vue +116 -0
- package/dialog/RotateCertificatesDialog.vue +9 -3
- package/edit/auth/azuread.vue +28 -9
- package/edit/networking.k8s.io.ingress/index.vue +2 -2
- package/edit/persistentvolume/index.vue +3 -0
- package/edit/pod.vue +27 -0
- package/edit/provisioning.cattle.io.cluster/rke2.vue +76 -5
- package/edit/service.vue +7 -5
- package/edit/workload/__tests__/Upgrading.test.ts +1 -0
- package/edit/workload/index.vue +13 -1
- package/edit/workload/mixins/workload.js +13 -13
- package/edit/workload/storage/ContainerMountPaths.vue +240 -0
- package/edit/workload/storage/Mount.vue +1 -0
- package/edit/workload/storage/awsElasticBlockStore.vue +20 -1
- package/edit/workload/storage/azureDisk.vue +22 -2
- package/edit/workload/storage/azureFile.vue +20 -2
- package/edit/workload/storage/csi/index.vue +23 -1
- package/edit/workload/storage/gcePersistentDisk.vue +20 -2
- package/edit/workload/storage/index.vue +23 -49
- package/edit/workload/storage/vsphereVolume.vue +11 -1
- package/layouts/default.vue +14 -8
- package/layouts/home.vue +9 -4
- package/layouts/plain.vue +10 -5
- package/list/management.cattle.io.setting.vue +3 -3
- package/list/provisioning.cattle.io.cluster.vue +1 -1
- package/machine-config/harvester.vue +5 -3
- package/models/catalog.cattle.io.uiplugin.js +34 -0
- package/models/cluster/node.js +25 -2
- package/models/fleet.cattle.io.bundle.js +1 -1
- package/models/harvesterhci.io.management.cluster.js +11 -5
- package/models/provisioning.cattle.io.cluster.js +12 -6
- package/models/workload.js +5 -3
- package/nuxt.config.js +69 -25
- package/package.json +108 -109
- package/pages/auth/login.vue +1 -1
- package/pages/c/_cluster/apps/charts/index.vue +46 -1
- package/pages/c/_cluster/apps/charts/install.vue +10 -9
- package/pages/c/_cluster/explorer/index.vue +72 -9
- package/pages/c/_cluster/explorer/tools/index.vue +12 -5
- package/pages/c/_cluster/mcapps/index.vue +1 -1
- package/pages/c/_cluster/settings/brand.vue +0 -40
- package/pages/c/_cluster/settings/links.vue +200 -0
- package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +232 -0
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +242 -0
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +284 -0
- package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +130 -0
- package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +253 -0
- package/pages/c/_cluster/uiplugins/UninstallDialog.vue +115 -0
- package/pages/c/_cluster/uiplugins/index.vue +694 -0
- package/pages/diagnostic.vue +185 -101
- package/pages/docs/_doc.vue +3 -1
- package/pages/home.vue +21 -56
- package/pages/prefs.vue +108 -88
- package/pages/safeMode.vue +17 -0
- package/pages/support/index.vue +23 -15
- package/pkg/dynamic-importer.lib.js +4 -0
- package/plugins/dashboard-store/resource-class.js +2 -2
- package/plugins/formatters.js +15 -0
- package/plugins/plugin.js +56 -4
- package/plugins/steve/mutations.js +1 -1
- package/plugins/steve/subscribe.js +94 -72
- package/plugins/steve/web-worker.steve-sub-worker.js +24 -15
- package/promptRemove/management.cattle.io.globalrole.vue +47 -0
- package/promptRemove/management.cattle.io.roletemplate.vue +47 -0
- package/promptRemove/mixin/roleDeletionCheck.js +97 -0
- package/scripts/publish-shell.sh +1 -1
- package/scripts/sync-shell-deps +37 -0
- package/store/catalog.js +9 -8
- package/store/i18n.js +10 -1
- package/store/prefs.js +16 -0
- package/store/type-map.js +32 -5
- package/store/uiplugins.ts +15 -61
- package/utils/__tests__/object.test.ts +0 -24
- package/utils/__tests__/selector.test.ts +1 -1
- package/utils/dynamic-importer.js +4 -0
- package/utils/grafana.js +2 -6
- package/utils/socket.js +41 -20
- package/utils/string.js +1 -7
- package/utils/validators/formRules/__tests__/index.test.ts +108 -0
- package/utils/validators/formRules/index.ts +9 -1
- package/yarn-error.log +195 -0
- package/pages/plugins.vue +0 -387
- package/server/verdaccio-middleware.js +0 -56
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rancher/shell",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Rancher Dashboard Shell",
|
|
5
5
|
"repository": "https://github.com/rancherlabs/dashboard",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -32,125 +32,124 @@
|
|
|
32
32
|
"e2e:dev": "start-server-and-test dev https://localhost:8005 cy:open"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@aws-sdk/client-ec2": "
|
|
36
|
-
"@aws-sdk/client-eks": "
|
|
37
|
-
"@aws-sdk/client-kms": "
|
|
38
|
-
"@babel/plugin-proposal-optional-chaining": "
|
|
39
|
-
"@babel/plugin-proposal-private-property-in-object": "
|
|
40
|
-
"@babel/preset-typescript": "
|
|
41
|
-
"@innologica/vue-dropdown-menu": "
|
|
42
|
-
"@novnc/novnc": "
|
|
35
|
+
"@aws-sdk/client-ec2": "3.1.0",
|
|
36
|
+
"@aws-sdk/client-eks": "3.1.0",
|
|
37
|
+
"@aws-sdk/client-kms": "3.8.1",
|
|
38
|
+
"@babel/plugin-proposal-optional-chaining": "7.14.5",
|
|
39
|
+
"@babel/plugin-proposal-private-property-in-object": "7.14.5",
|
|
40
|
+
"@babel/preset-typescript": "7.16.7",
|
|
41
|
+
"@innologica/vue-dropdown-menu": "0.1.3",
|
|
42
|
+
"@novnc/novnc": "1.2.0",
|
|
43
43
|
"@nuxt/types": "2.14.6",
|
|
44
|
-
"@nuxt/typescript-build": "
|
|
45
|
-
"@nuxtjs/axios": "
|
|
46
|
-
"@nuxtjs/eslint-config-typescript": "
|
|
47
|
-
"@nuxtjs/eslint-module": "
|
|
48
|
-
"@nuxtjs/proxy": "
|
|
49
|
-
"@nuxtjs/style-resources": "
|
|
50
|
-
"@nuxtjs/webpack-profile": "
|
|
51
|
-
"@popperjs/core": "
|
|
52
|
-
"@types/node": "
|
|
53
|
-
"@typescript-eslint/eslint-plugin": "
|
|
54
|
-
"@typescript-eslint/parser": "
|
|
55
|
-
"@vue/cli-plugin-babel": "
|
|
56
|
-
"@vue/cli-plugin-typescript": "
|
|
57
|
-
"@vue/cli-service": "
|
|
44
|
+
"@nuxt/typescript-build": "2.1.0",
|
|
45
|
+
"@nuxtjs/axios": "5.12.0",
|
|
46
|
+
"@nuxtjs/eslint-config-typescript": "6.0.1",
|
|
47
|
+
"@nuxtjs/eslint-module": "1.2.0",
|
|
48
|
+
"@nuxtjs/proxy": "1.3.3",
|
|
49
|
+
"@nuxtjs/style-resources": "1.2.1",
|
|
50
|
+
"@nuxtjs/webpack-profile": "0.1.0",
|
|
51
|
+
"@popperjs/core": "2.4.4",
|
|
52
|
+
"@types/node": "16.4.3",
|
|
53
|
+
"@typescript-eslint/eslint-plugin": "4.33.0",
|
|
54
|
+
"@typescript-eslint/parser": "4.33.0",
|
|
55
|
+
"@vue/cli-plugin-babel": "4.5.15",
|
|
56
|
+
"@vue/cli-plugin-typescript": "4.5.15",
|
|
57
|
+
"@vue/cli-service": "4.5.15",
|
|
58
58
|
"@vue/test-utils": "1.2.1",
|
|
59
|
-
"@vue/vue2-jest": "
|
|
60
|
-
"add": "
|
|
61
|
-
"ansi_up": "
|
|
62
|
-
"babel-eslint": "
|
|
63
|
-
"babel-plugin-module-resolver": "
|
|
64
|
-
"babel-preset-vue": "
|
|
65
|
-
"browser-env": "
|
|
66
|
-
"
|
|
67
|
-
"cookie": "
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"cross-env": "^6.0.3",
|
|
59
|
+
"@vue/vue2-jest": "27.0.0",
|
|
60
|
+
"add": "2.0.6",
|
|
61
|
+
"ansi_up": "5.0.0",
|
|
62
|
+
"babel-eslint": "10.1.0",
|
|
63
|
+
"babel-plugin-module-resolver": "4.0.0",
|
|
64
|
+
"babel-preset-vue": "2.0.2",
|
|
65
|
+
"browser-env": "3.3.0",
|
|
66
|
+
"cookie": "0.5.0",
|
|
67
|
+
"cookie-universal-nuxt": "2.1.4",
|
|
68
|
+
"core-js": "3.21.1",
|
|
69
|
+
"cron-validator": "1.2.0",
|
|
70
|
+
"cronstrue": "1.95.0",
|
|
71
|
+
"cross-env": "6.0.3",
|
|
73
72
|
"css-loader": "4.3.0",
|
|
74
|
-
"csv-loader": "
|
|
75
|
-
"cypress": "
|
|
76
|
-
"d3": "
|
|
77
|
-
"d3-selection": "
|
|
78
|
-
"dagre-d3": "
|
|
79
|
-
"dayjs": "
|
|
80
|
-
"diff2html": "
|
|
81
|
-
"dompurify": "
|
|
73
|
+
"csv-loader": "3.0.3",
|
|
74
|
+
"cypress": "10.3.1",
|
|
75
|
+
"d3": "7.3.0",
|
|
76
|
+
"d3-selection": "1.4.1",
|
|
77
|
+
"dagre-d3": "0.6.4",
|
|
78
|
+
"dayjs": "1.8.29",
|
|
79
|
+
"diff2html": "2.11.2",
|
|
80
|
+
"dompurify": "2.0.12",
|
|
82
81
|
"eslint": "7.32.0",
|
|
83
|
-
"eslint-config-standard": "
|
|
82
|
+
"eslint-config-standard": "16.0.3",
|
|
84
83
|
"eslint-import-resolver-node": "0.3.4",
|
|
85
84
|
"eslint-module-utils": "2.6.1",
|
|
86
|
-
"eslint-plugin-cypress": "
|
|
85
|
+
"eslint-plugin-cypress": "2.12.1",
|
|
87
86
|
"eslint-plugin-import": "2.23.4",
|
|
88
|
-
"eslint-plugin-jest": "
|
|
89
|
-
"eslint-plugin-n": "
|
|
87
|
+
"eslint-plugin-jest": "24.4.0",
|
|
88
|
+
"eslint-plugin-n": "15.2.0",
|
|
90
89
|
"eslint-plugin-vue": "7.14.0",
|
|
91
|
-
"event-target-shim": "
|
|
92
|
-
"express": "
|
|
93
|
-
"file-saver": "
|
|
94
|
-
"frontmatter-markdown-loader": "
|
|
95
|
-
"identicon.js": "
|
|
96
|
-
"intl-messageformat": "
|
|
97
|
-
"is-url": "
|
|
98
|
-
"jest": "
|
|
99
|
-
"jest-serializer-vue": "
|
|
100
|
-
"jexl": "
|
|
101
|
-
"jquery": "
|
|
102
|
-
"js-cookie": "
|
|
103
|
-
"js-yaml": "
|
|
104
|
-
"js-yaml-loader": "
|
|
105
|
-
"jsdiff": "
|
|
106
|
-
"jsdom-global": "
|
|
107
|
-
"jsonpath-plus": "
|
|
108
|
-
"jsrsasign": "
|
|
109
|
-
"jszip": "
|
|
110
|
-
"lodash": "
|
|
111
|
-
"marked": "
|
|
112
|
-
"nodemon": "
|
|
90
|
+
"event-target-shim": "5.0.1",
|
|
91
|
+
"express": "4.17.1",
|
|
92
|
+
"file-saver": "2.0.2",
|
|
93
|
+
"frontmatter-markdown-loader": "3.7.0",
|
|
94
|
+
"identicon.js": "2.3.3",
|
|
95
|
+
"intl-messageformat": "7.8.4",
|
|
96
|
+
"is-url": "1.2.4",
|
|
97
|
+
"jest": "27.5.1",
|
|
98
|
+
"jest-serializer-vue": "2.0.2",
|
|
99
|
+
"jexl": "2.2.2",
|
|
100
|
+
"jquery": "3.5.1",
|
|
101
|
+
"js-cookie": "2.2.1",
|
|
102
|
+
"js-yaml": "4.1.0",
|
|
103
|
+
"js-yaml-loader": "1.2.2",
|
|
104
|
+
"jsdiff": "1.1.1",
|
|
105
|
+
"jsdom-global": "3.0.2",
|
|
106
|
+
"jsonpath-plus": "6.0.1",
|
|
107
|
+
"jsrsasign": "10.2.0",
|
|
108
|
+
"jszip": "3.7.0",
|
|
109
|
+
"lodash": "4.17.21",
|
|
110
|
+
"marked": "4.0.17",
|
|
111
|
+
"nodemon": "2.0.4",
|
|
113
112
|
"nuxt": "2.15.8",
|
|
114
|
-
"nyc": "
|
|
115
|
-
"papaparse": "
|
|
116
|
-
"portal-vue": "
|
|
117
|
-
"rancher-icons": "rancher/icons#v2.0.
|
|
118
|
-
"require-extension-hooks": "
|
|
119
|
-
"require-extension-hooks-babel": "
|
|
120
|
-
"require-extension-hooks-vue": "
|
|
121
|
-
"sass": "
|
|
122
|
-
"sass-loader": "10",
|
|
123
|
-
"serve-static": "
|
|
124
|
-
"set-cookie-parser": "
|
|
125
|
-
"shell-quote": "
|
|
126
|
-
"sinon": "
|
|
127
|
-
"start-server-and-test": "
|
|
128
|
-
"style-loader": "
|
|
129
|
-
"ts-node": "
|
|
130
|
-
"typescript": "
|
|
131
|
-
"url-parse": "
|
|
132
|
-
"v-tooltip": "
|
|
113
|
+
"nyc": "15.1.0",
|
|
114
|
+
"papaparse": "5.3.0",
|
|
115
|
+
"portal-vue": "2.1.7",
|
|
116
|
+
"rancher-icons": "rancher/icons#v2.0.3",
|
|
117
|
+
"require-extension-hooks": "0.3.3",
|
|
118
|
+
"require-extension-hooks-babel": "1.0.0",
|
|
119
|
+
"require-extension-hooks-vue": "3.0.0",
|
|
120
|
+
"sass": "1.51.0",
|
|
121
|
+
"sass-loader": "10.2.1",
|
|
122
|
+
"serve-static": "1.14.1",
|
|
123
|
+
"set-cookie-parser": "2.4.6",
|
|
124
|
+
"shell-quote": "1.7.3",
|
|
125
|
+
"sinon": "8.1.1",
|
|
126
|
+
"start-server-and-test": "1.13.1",
|
|
127
|
+
"style-loader": "1.2.1",
|
|
128
|
+
"ts-node": "8.10.2",
|
|
129
|
+
"typescript": "4.1.6",
|
|
130
|
+
"url-parse": "1.5.10",
|
|
131
|
+
"v-tooltip": "2.0.3",
|
|
133
132
|
"vue": "2.6.14",
|
|
134
|
-
"vue-clipboard2": "
|
|
135
|
-
"vue-codemirror": "
|
|
136
|
-
"vue-js-modal": "
|
|
137
|
-
"vue-resize": "
|
|
138
|
-
"vue-select": "
|
|
133
|
+
"vue-clipboard2": "0.3.1",
|
|
134
|
+
"vue-codemirror": "4.0.6",
|
|
135
|
+
"vue-js-modal": "1.3.35",
|
|
136
|
+
"vue-resize": "0.4.5",
|
|
137
|
+
"vue-select": "3.18.3",
|
|
139
138
|
"vue-server-renderer": "2.6.14",
|
|
140
|
-
"vue-shortkey": "
|
|
139
|
+
"vue-shortkey": "3.1.7",
|
|
141
140
|
"vue-template-compiler": "2.6.14",
|
|
142
|
-
"vue2-transitions": "
|
|
143
|
-
"vuedraggable": "
|
|
144
|
-
"vuex": "
|
|
145
|
-
"webpack-bundle-analyzer": "
|
|
146
|
-
"webpack-virtual-modules": "
|
|
147
|
-
"xterm": "
|
|
148
|
-
"xterm-addon-fit": "
|
|
149
|
-
"xterm-addon-search": "
|
|
150
|
-
"xterm-addon-web-links": "
|
|
151
|
-
"xterm-addon-webgl": "
|
|
152
|
-
"worker-loader": "
|
|
153
|
-
"yarn": "
|
|
141
|
+
"vue2-transitions": "0.3.0",
|
|
142
|
+
"vuedraggable": "2.24.3",
|
|
143
|
+
"vuex": "3.6.2",
|
|
144
|
+
"webpack-bundle-analyzer": "4.5.0",
|
|
145
|
+
"webpack-virtual-modules": "0.4.3",
|
|
146
|
+
"xterm": "4.9.0",
|
|
147
|
+
"xterm-addon-fit": "0.4.0",
|
|
148
|
+
"xterm-addon-search": "0.7.0",
|
|
149
|
+
"xterm-addon-web-links": "0.4.0",
|
|
150
|
+
"xterm-addon-webgl": "0.9.0",
|
|
151
|
+
"worker-loader": "3.0.8",
|
|
152
|
+
"yarn": "1.22.18"
|
|
154
153
|
},
|
|
155
154
|
"nyc": {
|
|
156
155
|
"extension": [
|
|
@@ -158,4 +157,4 @@
|
|
|
158
157
|
".vue"
|
|
159
158
|
]
|
|
160
159
|
}
|
|
161
|
-
}
|
|
160
|
+
}
|
package/pages/auth/login.vue
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
import AsyncButton from '@shell/components/AsyncButton';
|
|
3
3
|
import Loading from '@shell/components/Loading';
|
|
4
4
|
import { Banner } from '@components/Banner';
|
|
5
|
+
import Carousel from '@shell/components/Carousel';
|
|
6
|
+
import ButtonGroup from '@shell/components/ButtonGroup';
|
|
5
7
|
import SelectIconGrid from '@shell/components/SelectIconGrid';
|
|
6
8
|
import TypeDescription from '@shell/components/TypeDescription';
|
|
7
9
|
import {
|
|
@@ -12,15 +14,18 @@ import { sortBy } from '@shell/utils/sort';
|
|
|
12
14
|
import { mapGetters } from 'vuex';
|
|
13
15
|
import { Checkbox } from '@components/Form/Checkbox';
|
|
14
16
|
import Select from '@shell/components/form/Select';
|
|
15
|
-
import { mapPref, HIDE_REPOS, SHOW_PRE_RELEASE } from '@shell/store/prefs';
|
|
17
|
+
import { mapPref, HIDE_REPOS, SHOW_PRE_RELEASE, SHOW_CHART_MODE } from '@shell/store/prefs';
|
|
16
18
|
import { removeObject, addObject, findBy } from '@shell/utils/array';
|
|
17
19
|
import { compatibleVersionsFor, filterAndArrangeCharts } from '@shell/store/catalog';
|
|
18
20
|
import { CATALOG } from '@shell/config/labels-annotations';
|
|
21
|
+
import { isUIPlugin } from '@shell/config/uiplugins';
|
|
19
22
|
|
|
20
23
|
export default {
|
|
21
24
|
components: {
|
|
22
25
|
AsyncButton,
|
|
23
26
|
Banner,
|
|
27
|
+
Carousel,
|
|
28
|
+
ButtonGroup,
|
|
24
29
|
Loading,
|
|
25
30
|
Checkbox,
|
|
26
31
|
Select,
|
|
@@ -48,6 +53,17 @@ export default {
|
|
|
48
53
|
searchQuery: null,
|
|
49
54
|
showDeprecated: null,
|
|
50
55
|
showHidden: null,
|
|
56
|
+
chartMode: this.$store.getters['prefs/get'](SHOW_CHART_MODE),
|
|
57
|
+
chartOptions: [
|
|
58
|
+
{
|
|
59
|
+
label: 'Browse',
|
|
60
|
+
value: 'browse',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
label: 'Featured',
|
|
64
|
+
value: 'featured'
|
|
65
|
+
}
|
|
66
|
+
]
|
|
51
67
|
};
|
|
52
68
|
},
|
|
53
69
|
|
|
@@ -134,6 +150,10 @@ export default {
|
|
|
134
150
|
return false;
|
|
135
151
|
}
|
|
136
152
|
|
|
153
|
+
if (isUIPlugin(c)) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
|
|
137
157
|
return true;
|
|
138
158
|
});
|
|
139
159
|
},
|
|
@@ -154,6 +174,14 @@ export default {
|
|
|
154
174
|
});
|
|
155
175
|
},
|
|
156
176
|
|
|
177
|
+
getFeaturedCharts() {
|
|
178
|
+
const allCharts = (this.filteredCharts || []);
|
|
179
|
+
|
|
180
|
+
const featuredCharts = allCharts.filter(value => value.featured).sort((a, b) => a.featured - b.featured);
|
|
181
|
+
|
|
182
|
+
return featuredCharts.slice(0, 5);
|
|
183
|
+
},
|
|
184
|
+
|
|
157
185
|
categories() {
|
|
158
186
|
const map = {};
|
|
159
187
|
|
|
@@ -184,6 +212,10 @@ export default {
|
|
|
184
212
|
return out;
|
|
185
213
|
},
|
|
186
214
|
|
|
215
|
+
showCarousel() {
|
|
216
|
+
return this.chartMode === 'featured' && this.getFeaturedCharts.length;
|
|
217
|
+
}
|
|
218
|
+
|
|
187
219
|
},
|
|
188
220
|
|
|
189
221
|
watch: {
|
|
@@ -313,7 +345,20 @@ export default {
|
|
|
313
345
|
{{ t('catalog.charts.header') }}
|
|
314
346
|
</h1>
|
|
315
347
|
</div>
|
|
348
|
+
<div v-if="getFeaturedCharts.length > 0" class="actions-container">
|
|
349
|
+
<ButtonGroup
|
|
350
|
+
v-model="chartMode"
|
|
351
|
+
:options="chartOptions"
|
|
352
|
+
/>
|
|
353
|
+
</div>
|
|
316
354
|
</header>
|
|
355
|
+
<div v-if="showCarousel">
|
|
356
|
+
<h3>Featured Charts</h3>
|
|
357
|
+
<Carousel
|
|
358
|
+
:sliders="getFeaturedCharts"
|
|
359
|
+
@clicked="(row) => selectChart(row)"
|
|
360
|
+
/>
|
|
361
|
+
</div>
|
|
317
362
|
<TypeDescription resource="chart" />
|
|
318
363
|
<div class="left-right-split">
|
|
319
364
|
<Select
|
|
@@ -632,10 +632,6 @@ export default {
|
|
|
632
632
|
return { name: 'c-cluster-legacy-project' };
|
|
633
633
|
},
|
|
634
634
|
|
|
635
|
-
mcmRoute() {
|
|
636
|
-
return { name: 'c-cluster-mcapps' };
|
|
637
|
-
},
|
|
638
|
-
|
|
639
635
|
windowsIncompatible() {
|
|
640
636
|
if (this.chart?.windowsIncompatible) {
|
|
641
637
|
return this.t('catalog.charts.windowsIncompatible');
|
|
@@ -762,8 +758,10 @@ export default {
|
|
|
762
758
|
|
|
763
759
|
// Load a values component for the UI if it is named in the Helm chart.
|
|
764
760
|
if ( component ) {
|
|
765
|
-
|
|
766
|
-
|
|
761
|
+
const hasChartComponent = this.$store.getters['type-map/hasCustomChart'](component);
|
|
762
|
+
|
|
763
|
+
if ( hasChartComponent ) {
|
|
764
|
+
this.valuesComponent = this.$store.getters['type-map/importChart'](component);
|
|
767
765
|
const loaded = await this.valuesComponent();
|
|
768
766
|
|
|
769
767
|
this.showValuesComponent = true;
|
|
@@ -1537,7 +1535,7 @@ export default {
|
|
|
1537
1535
|
</div>
|
|
1538
1536
|
|
|
1539
1537
|
<Banner color="warning" class="description">
|
|
1540
|
-
<span>
|
|
1538
|
+
<span v-if="!mcapp">
|
|
1541
1539
|
{{ t('catalog.install.error.legacy.label', { legacyType: mcapp ? legacyDefs.mcm : legacyDefs.legacy }, true) }}
|
|
1542
1540
|
</span>
|
|
1543
1541
|
<template v-if="!legacyEnabled">
|
|
@@ -1546,9 +1544,12 @@ export default {
|
|
|
1546
1544
|
{{ t('catalog.install.error.legacy.enableLegacy.goto') }}
|
|
1547
1545
|
</nuxt-link>
|
|
1548
1546
|
</template>
|
|
1547
|
+
<template v-else-if="mcapp">
|
|
1548
|
+
<span v-html="t('catalog.install.error.legacy.mcmNotSupported')" />
|
|
1549
|
+
</template>
|
|
1549
1550
|
<template v-else>
|
|
1550
|
-
<nuxt-link :to="
|
|
1551
|
-
<span v-html="t('catalog.install.error.legacy.navigate'
|
|
1551
|
+
<nuxt-link :to="legacyAppRoute">
|
|
1552
|
+
<span v-html="t('catalog.install.error.legacy.navigate')" />
|
|
1552
1553
|
</nuxt-link>
|
|
1553
1554
|
</template>
|
|
1554
1555
|
</Banner>
|
|
@@ -24,8 +24,9 @@ import {
|
|
|
24
24
|
COUNT,
|
|
25
25
|
CATALOG,
|
|
26
26
|
POD,
|
|
27
|
+
PSP,
|
|
27
28
|
} from '@shell/config/types';
|
|
28
|
-
import { mapPref, CLUSTER_TOOLS_TIP } from '@shell/store/prefs';
|
|
29
|
+
import { mapPref, CLUSTER_TOOLS_TIP, PSP_DEPRECATION_BANNER } from '@shell/store/prefs';
|
|
29
30
|
import { haveV1Monitoring, monitoringStatus } from '@shell/utils/monitoring';
|
|
30
31
|
import Tabbed from '@shell/components/Tabbed';
|
|
31
32
|
import Tab from '@shell/components/Tabbed/Tab';
|
|
@@ -111,12 +112,12 @@ export default {
|
|
|
111
112
|
|
|
112
113
|
return {
|
|
113
114
|
nodeHeaders,
|
|
114
|
-
constraints:
|
|
115
|
-
events:
|
|
116
|
-
nodeMetrics:
|
|
117
|
-
showClusterMetrics:
|
|
118
|
-
showK8sMetrics:
|
|
119
|
-
showEtcdMetrics:
|
|
115
|
+
constraints: [],
|
|
116
|
+
events: [],
|
|
117
|
+
nodeMetrics: [],
|
|
118
|
+
showClusterMetrics: false,
|
|
119
|
+
showK8sMetrics: false,
|
|
120
|
+
showEtcdMetrics: false,
|
|
120
121
|
CLUSTER_METRICS_DETAIL_URL,
|
|
121
122
|
CLUSTER_METRICS_SUMMARY_URL,
|
|
122
123
|
K8S_METRICS_DETAIL_URL,
|
|
@@ -124,7 +125,7 @@ export default {
|
|
|
124
125
|
ETCD_METRICS_DETAIL_URL,
|
|
125
126
|
ETCD_METRICS_SUMMARY_URL,
|
|
126
127
|
clusterCounts,
|
|
127
|
-
selectedTab:
|
|
128
|
+
selectedTab: 'cluster-events',
|
|
128
129
|
};
|
|
129
130
|
},
|
|
130
131
|
|
|
@@ -142,6 +143,20 @@ export default {
|
|
|
142
143
|
...mapGetters(['currentCluster']),
|
|
143
144
|
...monitoringStatus(),
|
|
144
145
|
|
|
146
|
+
displayPspDeprecationBanner() {
|
|
147
|
+
const cluster = this.currentCluster;
|
|
148
|
+
const major = cluster.status?.version?.major ? parseInt(cluster.status?.version?.major) : 0;
|
|
149
|
+
const minor = cluster.status?.version?.minor ? parseInt(cluster.status?.version?.minor) : 0;
|
|
150
|
+
|
|
151
|
+
if (major === 1 && minor >= 21 && minor < 25) {
|
|
152
|
+
const clusterCounts = this.$store.getters[`cluster/all`](COUNT)?.[0]?.counts;
|
|
153
|
+
|
|
154
|
+
return !!clusterCounts?.[PSP]?.summary?.count;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return false;
|
|
158
|
+
},
|
|
159
|
+
|
|
145
160
|
nodes() {
|
|
146
161
|
return this.$store.getters['cluster/all'](NODE);
|
|
147
162
|
},
|
|
@@ -150,7 +165,8 @@ export default {
|
|
|
150
165
|
return this.$store.getters['management/all'](MANAGEMENT.CLUSTER);
|
|
151
166
|
},
|
|
152
167
|
|
|
153
|
-
hideClusterToolsTip:
|
|
168
|
+
hideClusterToolsTip: mapPref(CLUSTER_TOOLS_TIP),
|
|
169
|
+
hidePspDeprecationBanner: mapPref(PSP_DEPRECATION_BANNER),
|
|
154
170
|
|
|
155
171
|
hasV1Monitoring() {
|
|
156
172
|
return haveV1Monitoring(this.$store.getters);
|
|
@@ -324,6 +340,16 @@ export default {
|
|
|
324
340
|
|
|
325
341
|
hasDescription() {
|
|
326
342
|
return !!this.currentCluster?.spec?.description;
|
|
343
|
+
},
|
|
344
|
+
|
|
345
|
+
allEventsLink() {
|
|
346
|
+
return {
|
|
347
|
+
name: 'c-cluster-product-resource',
|
|
348
|
+
params: {
|
|
349
|
+
product: 'explorer',
|
|
350
|
+
resource: 'event',
|
|
351
|
+
}
|
|
352
|
+
};
|
|
327
353
|
}
|
|
328
354
|
},
|
|
329
355
|
|
|
@@ -378,6 +404,14 @@ export default {
|
|
|
378
404
|
</div>
|
|
379
405
|
</div>
|
|
380
406
|
</header>
|
|
407
|
+
<Banner
|
|
408
|
+
v-if="displayPspDeprecationBanner && !hidePspDeprecationBanner"
|
|
409
|
+
:closable="true"
|
|
410
|
+
color="warning"
|
|
411
|
+
@close="hidePspDeprecationBanner = true"
|
|
412
|
+
>
|
|
413
|
+
<t k="landing.deprecatedPsp" :raw="true" />
|
|
414
|
+
</Banner>
|
|
381
415
|
<Banner
|
|
382
416
|
v-if="!hideClusterToolsTip"
|
|
383
417
|
:closable="true"
|
|
@@ -403,6 +437,14 @@ export default {
|
|
|
403
437
|
<label>{{ t('glance.created') }}: </label>
|
|
404
438
|
<span><LiveDate :value="currentCluster.metadata.creationTimestamp" :add-suffix="true" :show-tooltip="true" /></span>
|
|
405
439
|
</div>
|
|
440
|
+
<p
|
|
441
|
+
v-if="displayPspDeprecationBanner && hidePspDeprecationBanner"
|
|
442
|
+
v-tooltip="t('landing.deprecatedPsp')"
|
|
443
|
+
class="alt-psp-deprecation-info"
|
|
444
|
+
>
|
|
445
|
+
<span>{{ t('landing.psps') }}</span>
|
|
446
|
+
<i class="icon icon-warning" />
|
|
447
|
+
</p>
|
|
406
448
|
<div :style="{'flex':1}" />
|
|
407
449
|
<div v-if="!monitoringStatus.v2 && !monitoringStatus.v1">
|
|
408
450
|
<n-link :to="{name: 'c-cluster-explorer-tools'}" class="monitoring-install">
|
|
@@ -446,6 +488,11 @@ export default {
|
|
|
446
488
|
<div class="mt-30">
|
|
447
489
|
<Tabbed @changed="tabChange">
|
|
448
490
|
<Tab name="cluster-events" :label="t('clusterIndexPage.sections.events.label')" :weight="2">
|
|
491
|
+
<span class="events-table-link">
|
|
492
|
+
<n-link :to="allEventsLink">
|
|
493
|
+
<span>{{ t('glance.eventsTable') }}</span>
|
|
494
|
+
</n-link>
|
|
495
|
+
</span>
|
|
449
496
|
<EventsTable />
|
|
450
497
|
</Tab>
|
|
451
498
|
<Tab v-if="hasMonitoring" name="cluster-alerts" :label="t('clusterIndexPage.sections.alerts.label')" :weight="1">
|
|
@@ -534,6 +581,16 @@ export default {
|
|
|
534
581
|
margin-top: 0;
|
|
535
582
|
}
|
|
536
583
|
|
|
584
|
+
.alt-psp-deprecation-info {
|
|
585
|
+
display: flex;
|
|
586
|
+
align-items: center;
|
|
587
|
+
color: var(--warning);
|
|
588
|
+
|
|
589
|
+
span {
|
|
590
|
+
margin-right: 4px;
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
|
|
537
594
|
.monitoring-install {
|
|
538
595
|
display: flex;
|
|
539
596
|
margin-left: 10px;
|
|
@@ -548,6 +605,12 @@ export default {
|
|
|
548
605
|
}
|
|
549
606
|
}
|
|
550
607
|
|
|
608
|
+
.events-table-link {
|
|
609
|
+
display: flex;
|
|
610
|
+
justify-content: flex-end;
|
|
611
|
+
margin-bottom: 20px;
|
|
612
|
+
}
|
|
613
|
+
|
|
551
614
|
.k8s-component-status {
|
|
552
615
|
align-items: center;
|
|
553
616
|
display: inline-flex;
|
|
@@ -121,13 +121,15 @@ export default {
|
|
|
121
121
|
showTypes: [CATALOG_ANNOTATIONS._CLUSTER_TOOL],
|
|
122
122
|
});
|
|
123
123
|
|
|
124
|
+
charts = charts.filter(c => c.sideLabel !== 'Experimental');
|
|
125
|
+
|
|
124
126
|
// If legacy support is enabled, show V1 charts for some V1 Cluster tools
|
|
125
127
|
if (this.legacyEnabled) {
|
|
126
128
|
charts = charts.concat(this.legacyCharts);
|
|
127
129
|
charts = sortBy(charts, ['certifiedSort', 'chartNameDisplay']);
|
|
128
130
|
}
|
|
129
131
|
|
|
130
|
-
|
|
132
|
+
let chartsWithApps = charts.map((chart) => {
|
|
131
133
|
return {
|
|
132
134
|
chart,
|
|
133
135
|
app: this.installedAppForChart[chart.id],
|
|
@@ -136,9 +138,9 @@ export default {
|
|
|
136
138
|
|
|
137
139
|
// V1 Legacy support
|
|
138
140
|
if (this.legacyEnabled) {
|
|
139
|
-
this.checkLegacyApp(chartsWithApps, this.v1Apps, 'v1-monitoring', 'rancher-monitoring', 'cluster-monitoring');
|
|
140
|
-
this.checkLegacyApp(chartsWithApps, this.v1Apps, 'v1-istio', 'rancher-istio', 'cluster-istio');
|
|
141
|
-
this.checkLegacyApp(chartsWithApps, this.v1Apps, 'v1-logging', 'rancher-logging', 'rancher-logging');
|
|
141
|
+
chartsWithApps = this.checkLegacyApp(chartsWithApps, this.v1Apps, 'v1-monitoring', 'rancher-monitoring', 'cluster-monitoring', false);
|
|
142
|
+
chartsWithApps = this.checkLegacyApp(chartsWithApps, this.v1Apps, 'v1-istio', 'rancher-istio', 'cluster-istio', true);
|
|
143
|
+
chartsWithApps = this.checkLegacyApp(chartsWithApps, this.v1Apps, 'v1-logging', 'rancher-logging', 'rancher-logging', true);
|
|
142
144
|
}
|
|
143
145
|
|
|
144
146
|
return chartsWithApps;
|
|
@@ -231,7 +233,7 @@ export default {
|
|
|
231
233
|
return versions;
|
|
232
234
|
},
|
|
233
235
|
|
|
234
|
-
checkLegacyApp(chartsWithApps, v1Apps, v1ChartName, v2ChartName, v1AppName) {
|
|
236
|
+
checkLegacyApp(chartsWithApps, v1Apps, v1ChartName, v2ChartName, v1AppName, showOnlyIfInstalled) {
|
|
235
237
|
const v1 = chartsWithApps.find(a => a.chart.chartName === v1ChartName);
|
|
236
238
|
const v2 = chartsWithApps.find(a => a.chart.chartName === v2ChartName);
|
|
237
239
|
|
|
@@ -251,6 +253,9 @@ export default {
|
|
|
251
253
|
v1.app.upgradeAvailable = latest;
|
|
252
254
|
}
|
|
253
255
|
}
|
|
256
|
+
} else if (showOnlyIfInstalled) {
|
|
257
|
+
// Remove the v1 chart if it is not already installed for charts which we no longer support
|
|
258
|
+
chartsWithApps = chartsWithApps.filter(c => c !== v1);
|
|
254
259
|
}
|
|
255
260
|
|
|
256
261
|
if (v2) {
|
|
@@ -262,6 +267,8 @@ export default {
|
|
|
262
267
|
}
|
|
263
268
|
}
|
|
264
269
|
}
|
|
270
|
+
|
|
271
|
+
return chartsWithApps;
|
|
265
272
|
}
|
|
266
273
|
}
|
|
267
274
|
};
|