@rancher/shell 0.3.29 → 0.5.0
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/images/providers/ovhcloudmks.svg +122 -0
- package/assets/images/providers/ovhcloudpubliccloud.svg +122 -0
- package/assets/styles/global/_layout.scss +99 -0
- package/assets/translations/en-us.yaml +31 -6
- package/assets/translations/zh-hans.yaml +2 -2
- package/babel.config.js +7 -1
- package/chart/monitoring/alerting/index.vue +7 -21
- package/chart/monitoring/grafana/index.vue +55 -0
- package/chart/monitoring/index.vue +51 -17
- package/chart/monitoring/prometheus/index.vue +37 -43
- package/chart/rancher-backup/index.vue +2 -1
- package/cloud-credential/azure.vue +4 -17
- package/components/AsyncButton.vue +17 -5
- package/components/Certificates.vue +164 -0
- package/components/CodeMirror.vue +19 -21
- package/components/CopyCode.vue +6 -2
- package/components/CopyToClipboard.vue +2 -1
- package/components/CopyToClipboardText.vue +14 -9
- package/components/CruResource.vue +1 -0
- package/components/DraggableZone.vue +2 -2
- package/components/EtcdInfoBanner.vue +5 -5
- package/components/ExplorerProjectsNamespaces.vue +25 -1
- package/components/IconOrSvg.vue +1 -1
- package/components/LandingPagePreference.vue +1 -4
- package/components/Markdown.vue +16 -12
- package/components/PodSecurityAdmission.vue +2 -2
- package/components/Questions/index.vue +1 -1
- package/components/ResourceDetail/Masthead.vue +25 -9
- package/components/ResourceTable.vue +14 -2
- package/components/ResourceYaml.vue +5 -0
- package/components/SideNav.vue +1 -1
- package/components/SingleClusterInfo.vue +1 -4
- package/components/StatusTable.vue +5 -1
- package/components/Tabbed/index.vue +12 -0
- package/components/__tests__/CopyCode.test.ts +5 -4
- package/components/fleet/FleetBundles.vue +5 -11
- package/components/fleet/FleetRepos.vue +62 -27
- package/components/fleet/FleetResources.vue +6 -1
- package/components/fleet/FleetSummary.vue +3 -3
- package/components/fleet/__tests__/FleetSummary.test.ts +316 -0
- package/components/form/ArrayListSelect.vue +10 -0
- package/components/form/Error.vue +3 -3
- package/components/form/Footer.vue +2 -2
- package/components/form/GitPicker.vue +83 -38
- package/components/form/KeyValue.vue +4 -0
- package/components/form/LabeledSelect.vue +4 -0
- package/components/form/Password.vue +3 -1
- package/components/formatter/Checked.vue +11 -3
- package/components/formatter/FleetClusterSummaryGraph.vue +27 -0
- package/components/formatter/FleetSummaryGraph.vue +23 -11
- package/components/formatter/LiveDuration.vue +1 -1
- package/components/formatter/PercentageBar.vue +1 -1
- package/components/formatter/__tests__/Checked.test.ts +19 -0
- package/components/nav/Group.vue +2 -2
- package/components/nav/Header.vue +1 -2
- package/components/nav/TopLevelMenu.vue +36 -6
- package/components/nav/Type.vue +1 -3
- package/components/nav/WindowManager/ContainerLogs.vue +101 -3
- package/components/nav/WindowManager/ContainerShell.vue +6 -1
- package/components/nav/WindowManager/__tests__/ContainerLogs.test.ts +186 -0
- package/components/nav/WindowManager/index.vue +11 -10
- package/components/nav/__tests__/TopLevelMenu.test.ts +33 -0
- package/components/nav/__tests__/Type.test.ts +1 -1
- package/components/nuxt/nuxt-child.js +14 -78
- package/components/nuxt/nuxt.js +1 -1
- package/{layouts → components/templates}/blank.vue +1 -1
- package/{layouts → components/templates}/default.vue +8 -98
- package/{layouts → components/templates}/error.vue +10 -19
- package/{layouts → components/templates}/home.vue +4 -1
- package/{layouts → components/templates}/plain.vue +4 -1
- package/{layouts → components/templates}/standalone.vue +1 -1
- package/{layouts → components/templates}/unauthenticated.vue +1 -1
- package/composables/useCompactInput.test.ts +36 -0
- package/composables/useCompactInput.ts +20 -0
- package/composables/useLabeledFormElement.test.ts +135 -0
- package/composables/useLabeledFormElement.ts +138 -0
- package/config/harvester-manager-types.js +2 -0
- package/config/home-links.js +1 -1
- package/config/private-label.js +22 -0
- package/config/product/explorer.js +3 -0
- package/config/product/fleet.js +6 -1
- package/config/product/manager.js +8 -2
- package/config/query-params.js +1 -0
- package/config/router.js +385 -364
- package/config/settings.ts +1 -0
- package/config/store.js +1 -1
- package/config/system-namespaces.js +3 -0
- package/config/table-headers.js +47 -0
- package/core/plugin-helpers.js +3 -5
- package/core/plugin-routes.ts +56 -114
- package/core/plugin.ts +16 -10
- package/core/plugins-loader.js +7 -9
- package/core/plugins.js +0 -3
- package/creators/app/files/.gitlab-ci.yml +14 -0
- package/creators/app/init +19 -0
- package/detail/fleet.cattle.io.cluster.vue +11 -1
- package/detail/provisioning.cattle.io.cluster.vue +4 -3
- package/dialog/ScaleMachineDownDialog.vue +34 -17
- package/edit/__tests__/service.test.ts +89 -0
- package/edit/auth/googleoauth.vue +1 -5
- package/edit/cloudcredential.vue +2 -0
- package/edit/configmap.vue +2 -1
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +2 -2
- package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +12 -3
- package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +2 -1
- package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.spec.ts +1 -1
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +15 -7
- package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +112 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +473 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/{CustomCommand.tests.ts → CustomCommand.test.ts} +6 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/DrainOptions.test.ts +1 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/index.test.ts +73 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +7 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/utils/cluster.ts +386 -0
- package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/index.vue +92 -36
- package/edit/provisioning.cattle.io.cluster/rke2.vue +171 -583
- package/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig.vue +137 -0
- package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +157 -0
- package/edit/provisioning.cattle.io.cluster/{Basics.vue → tabs/Basics.vue} +94 -19
- package/edit/provisioning.cattle.io.cluster/{MachinePool.vue → tabs/MachinePool.vue} +1 -0
- package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +135 -0
- package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +189 -0
- package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +144 -0
- package/edit/provisioning.cattle.io.cluster/tabs/upgrade/index.vue +76 -0
- package/edit/service.vue +12 -0
- package/edit/workload/Upgrading.vue +3 -2
- package/edit/workload/mixins/workload.js +1 -1
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -1
- package/initialize/App.js +25 -71
- package/initialize/client.js +21 -162
- package/initialize/index.js +47 -124
- package/list/management.cattle.io.feature.vue +1 -7
- package/list/node.vue +1 -0
- package/machine-config/__tests__/vmwarevsphere.test.ts +100 -21
- package/machine-config/vmwarevsphere.vue +73 -51
- package/middleware/authenticated.js +10 -17
- package/mixins/auth-config.js +2 -7
- package/mixins/brand.js +29 -41
- package/mixins/create-edit-view/index.js +2 -2
- package/mixins/labeled-form-element.ts +6 -1
- package/models/__tests__/management.cattle.io.cluster.test.ts +4 -0
- package/models/__tests__/management.cattle.io.node.ts +85 -0
- package/models/__tests__/management.cattle.io.nodepool.ts +83 -0
- package/models/__tests__/namespace.test.ts +49 -9
- package/models/__tests__/workload.test.ts +91 -0
- package/models/cluster/node.js +4 -4
- package/models/cluster.x-k8s.io.machinedeployment.js +14 -0
- package/models/fleet.cattle.io.cluster.js +4 -0
- package/models/fleet.cattle.io.gitrepo.js +56 -13
- package/models/management.cattle.io.cluster.js +7 -3
- package/models/management.cattle.io.kontainerdriver.js +1 -1
- package/models/management.cattle.io.node.js +18 -14
- package/models/management.cattle.io.nodepool.js +17 -0
- package/models/namespace.js +1 -1
- package/models/pod.js +20 -0
- package/models/provisioning.cattle.io.cluster.js +39 -4
- package/models/secret.js +117 -18
- package/models/workload.js +16 -0
- package/models/workload.service.js +18 -0
- package/package.json +11 -10
- package/pages/about.vue +0 -1
- package/pages/account/create-key.vue +0 -1
- package/pages/account/index.vue +0 -1
- package/pages/auth/login.vue +0 -1
- package/pages/auth/logout.vue +0 -2
- package/pages/auth/setup.vue +0 -4
- package/pages/auth/verify.vue +14 -8
- package/pages/c/_cluster/apps/charts/index.vue +64 -43
- package/pages/c/_cluster/apps/charts/install.vue +4 -4
- package/pages/c/_cluster/apps/index.vue +0 -2
- package/pages/c/_cluster/auth/index.vue +0 -2
- package/pages/c/_cluster/ecm/index.vue +0 -2
- package/pages/c/_cluster/explorer/index.vue +28 -2
- package/pages/c/_cluster/fleet/index.vue +1 -1
- package/pages/c/_cluster/index.vue +0 -2
- package/pages/c/_cluster/settings/banners.vue +0 -2
- package/pages/c/_cluster/settings/brand.vue +0 -2
- package/pages/c/_cluster/settings/index.vue +0 -2
- package/pages/c/_cluster/settings/links.vue +0 -1
- package/pages/c/_cluster/settings/performance.vue +0 -1
- package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +2 -1
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +10 -46
- package/pages/c/_cluster/uiplugins/index.vue +0 -2
- package/pages/diagnostic.vue +1 -2
- package/pages/fail-whale.vue +0 -1
- package/pages/prefs.vue +0 -1
- package/pages/support/index.vue +2 -8
- package/pkg/auto-import.js +1 -1
- package/plugins/axios.js +0 -36
- package/plugins/back-button.js +3 -5
- package/plugins/clean-html-directive.js +1 -19
- package/plugins/clean-html.js +53 -0
- package/plugins/clean-tooltip-directive.js +1 -1
- package/plugins/codemirror-loader.js +1 -1
- package/plugins/codemirror.js +41 -0
- package/plugins/dashboard-store/__tests__/{mutations.spec.ts → mutations.test.ts} +1 -1
- package/plugins/dashboard-store/__tests__/resource-class.test.ts +49 -0
- package/plugins/dashboard-store/__tests__/utils/store-mocks.ts +7 -0
- package/plugins/dashboard-store/actions.js +30 -4
- package/plugins/dashboard-store/classify.js +1 -18
- package/plugins/dashboard-store/getters.js +10 -5
- package/plugins/dashboard-store/index.js +0 -12
- package/plugins/dashboard-store/mutations.js +0 -4
- package/plugins/dashboard-store/resource-class.js +59 -18
- package/plugins/index.js +11 -0
- package/plugins/steve/__tests__/steve-class.spec.ts +59 -0
- package/plugins/steve/__tests__/utils/steve-mocks.ts +31 -0
- package/plugins/steve/getters.js +4 -1
- package/plugins/steve/norman-class.js +19 -0
- package/plugins/steve/steve-class.js +22 -0
- package/plugins/steve/subscribe.js +4 -10
- package/rancher-components/Accordion/Accordion.test.ts +45 -0
- package/rancher-components/Accordion/Accordion.vue +86 -0
- package/rancher-components/Accordion/index.ts +1 -0
- package/rancher-components/BadgeState/BadgeState.vue +3 -3
- package/rancher-components/Banner/Banner.vue +2 -2
- package/rancher-components/Card/Card.vue +3 -3
- package/rancher-components/Form/Checkbox/Checkbox.vue +3 -3
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +18 -1
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +65 -24
- package/rancher-components/Form/Radio/RadioButton.test.ts +7 -3
- package/rancher-components/Form/Radio/RadioButton.vue +13 -7
- package/rancher-components/Form/Radio/RadioGroup.test.ts +30 -0
- package/rancher-components/Form/Radio/RadioGroup.vue +8 -3
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +6 -4
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/StringList/StringList.test.ts +270 -0
- package/rancher-components/StringList/StringList.vue +65 -26
- package/rancher-components/components/Accordion/Accordion.test.ts +45 -0
- package/rancher-components/components/Accordion/Accordion.vue +86 -0
- package/rancher-components/components/Accordion/index.ts +1 -0
- package/rancher-components/components/BadgeState/BadgeState.vue +3 -3
- package/rancher-components/components/Banner/Banner.vue +2 -2
- package/rancher-components/components/Card/Card.vue +3 -3
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +3 -3
- package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +18 -1
- package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +57 -24
- package/rancher-components/components/Form/Radio/RadioButton.vue +13 -7
- package/rancher-components/components/Form/Radio/RadioGroup.vue +4 -3
- package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +6 -4
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
- package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/components/StringList/StringList.vue +8 -8
- package/scripts/.gitlab/workflows/build-extension-catalog.gitlab-ci.yml +50 -0
- package/scripts/extension/bundle +19 -7
- package/scripts/extension/helm/scripts/package +11 -3
- package/scripts/extension/parse-tag-name +2 -2
- package/scripts/extension/publish +20 -9
- package/scripts/publish-shell.sh +10 -0
- package/scripts/test-plugins-build.sh +85 -9
- package/server/har-file.js +183 -0
- package/store/catalog.js +1 -1
- package/store/features.js +1 -0
- package/store/i18n.js +11 -0
- package/store/index.js +13 -15
- package/store/prefs.js +33 -35
- package/store/type-map.js +8 -7
- package/tsconfig.json +35 -9
- package/tsconfig.paths.json +21 -0
- package/types/shell/index.d.ts +433 -234
- package/types/vue-shim.d.ts +42 -0
- package/utils/__tests__/create-yaml.test.ts +60 -0
- package/utils/axios.js +0 -19
- package/utils/azure.js +24 -0
- package/utils/clipboard.js +5 -0
- package/utils/create-yaml.js +17 -10
- package/utils/git.ts +1 -1
- package/utils/monitoring.js +1 -1
- package/utils/nuxt.js +18 -39
- package/utils/object.js +14 -0
- package/utils/router.scrollBehavior.js +12 -14
- package/utils/time.js +1 -1
- package/utils/url.ts +1 -1
- package/vue.config.js +23 -2
- package/.DS_Store +0 -0
- package/assets/images/providers/aks-black.svg +0 -28
- package/assets/images/providers/aks.svg +0 -31
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.tests.ts +0 -234
- package/initialize/layouts.ts +0 -26
- package/mixins/fetch.server.js +0 -73
- package/pages/c/index.vue +0 -9
- package/pages/rio/mesh.vue +0 -508
- package/plugins/transitions.js +0 -4
- package/plugins/vue-clipboard2.js +0 -4
- package/tsconfig.default.json +0 -46
- package/yarn-error.log +0 -200
- /package/components/form/__tests__/{NameNsDescription.ts → NameNsDescription.test.ts} +0 -0
- /package/edit/networking.k8s.io.networkpolicy/__tests__/utils/{selectors.ts → selectors.test.ts} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{AgentConfiguration.vue → tabs/AgentConfiguration.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{MemberRoles.vue → tabs/MemberRoles.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{S3Config.vue → tabs/etcd/S3Config.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{ACE.vue → tabs/networking/ACE.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{RegistryConfigs.vue → tabs/registries/RegistryConfigs.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{RegistryMirrors.vue → tabs/registries/RegistryMirrors.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{DrainOptions.vue → tabs/upgrade/DrainOptions.vue} +0 -0
- /package/plugins/dashboard-store/__tests__/{actions.spec.ts → actions.test.ts} +0 -0
- /package/plugins/dashboard-store/__tests__/{getters.spec.ts → getters.test.ts} +0 -0
- /package/rancher-components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
- /package/rancher-components/components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
package/pages/auth/verify.vue
CHANGED
|
@@ -17,9 +17,14 @@ function reply(err, code) {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
function isSaml($route) {
|
|
21
|
+
const { query } = $route;
|
|
22
|
+
const configQuery = get(query, 'config');
|
|
23
|
+
|
|
24
|
+
return samlProviders.includes(configQuery);
|
|
25
|
+
}
|
|
22
26
|
|
|
27
|
+
export default {
|
|
23
28
|
async fetch({ store, route, redirect }) {
|
|
24
29
|
const code = route.query[GITHUB_CODE];
|
|
25
30
|
const stateStr = route.query[GITHUB_NONCE];
|
|
@@ -43,9 +48,14 @@ export default {
|
|
|
43
48
|
try {
|
|
44
49
|
parsed = JSON.parse(base64Decode((stateStr)));
|
|
45
50
|
} catch (err) {
|
|
51
|
+
if (isSaml(route)) {
|
|
52
|
+
// This is an ok failure. SAML has no state string so a failure is fine (see similar check in mounted).
|
|
53
|
+
// This whole file could be re-written with that in mind, but this change keeps things simple and fixes a breaking addition
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
46
56
|
const out = store.getters['i18n/t'](`login.error`);
|
|
47
57
|
|
|
48
|
-
console.error('Failed to parse nonce'); // eslint-disable-line no-console
|
|
58
|
+
console.error('Failed to parse nonce', stateStr, err); // eslint-disable-line no-console
|
|
49
59
|
|
|
50
60
|
redirect(`/auth/login?err=${ escape(out) }`);
|
|
51
61
|
|
|
@@ -117,12 +127,8 @@ export default {
|
|
|
117
127
|
window.close();
|
|
118
128
|
}
|
|
119
129
|
} else {
|
|
120
|
-
const { query } = this.$route;
|
|
121
|
-
|
|
122
130
|
if ( window.opener ) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if ( samlProviders.includes(configQuery) ) {
|
|
131
|
+
if (isSaml(this.$route)) {
|
|
126
132
|
if ( window.opener.window.onAuthTest ) {
|
|
127
133
|
reply(null, null);
|
|
128
134
|
} else {
|
|
@@ -138,6 +138,11 @@ export default {
|
|
|
138
138
|
return reducedRepos;
|
|
139
139
|
},
|
|
140
140
|
|
|
141
|
+
/**
|
|
142
|
+
* Filter allll charts by invalid entries (deprecated, hidden and ui plugin).
|
|
143
|
+
*
|
|
144
|
+
* This does not include any user provided filters (like selected repos, categories and text query)
|
|
145
|
+
*/
|
|
141
146
|
enabledCharts() {
|
|
142
147
|
return (this.allCharts || []).filter((c) => {
|
|
143
148
|
if ( c.deprecated && !this.showDeprecated ) {
|
|
@@ -148,10 +153,6 @@ export default {
|
|
|
148
153
|
return false;
|
|
149
154
|
}
|
|
150
155
|
|
|
151
|
-
if ( this.hideRepos.includes(c.repoKey) ) {
|
|
152
|
-
return false;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
156
|
if (isUIPlugin(c)) {
|
|
156
157
|
return false;
|
|
157
158
|
}
|
|
@@ -160,26 +161,28 @@ export default {
|
|
|
160
161
|
});
|
|
161
162
|
},
|
|
162
163
|
|
|
164
|
+
/**
|
|
165
|
+
* Filter enabled charts allll filters. These are what the user will see in the list
|
|
166
|
+
*/
|
|
163
167
|
filteredCharts() {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
clusterProvider,
|
|
169
|
-
category: this.category,
|
|
170
|
-
searchQuery: this.searchQuery,
|
|
171
|
-
showDeprecated: this.showDeprecated,
|
|
172
|
-
showHidden: this.showHidden,
|
|
173
|
-
hideRepos: this.hideRepos,
|
|
174
|
-
hideTypes: [CATALOG._CLUSTER_TPL],
|
|
175
|
-
showPrerelease: this.$store.getters['prefs/get'](SHOW_PRE_RELEASE),
|
|
168
|
+
return this.filterCharts({
|
|
169
|
+
category: this.category,
|
|
170
|
+
searchQuery: this.searchQuery,
|
|
171
|
+
hideRepos: this.hideRepos
|
|
176
172
|
});
|
|
177
173
|
},
|
|
178
174
|
|
|
179
|
-
|
|
180
|
-
|
|
175
|
+
/**
|
|
176
|
+
* Filter valid charts (alll filters minus user provided ones) by whether they are featured or not
|
|
177
|
+
*
|
|
178
|
+
* This will power the carousel
|
|
179
|
+
*/
|
|
180
|
+
featuredCharts() {
|
|
181
|
+
const filteredCharts = this.filterCharts({});
|
|
182
|
+
|
|
183
|
+
// debugger;
|
|
181
184
|
|
|
182
|
-
const featuredCharts =
|
|
185
|
+
const featuredCharts = filteredCharts.filter((value) => value.featured).sort((a, b) => a.featured - b.featured);
|
|
183
186
|
|
|
184
187
|
return featuredCharts.slice(0, 5);
|
|
185
188
|
},
|
|
@@ -187,7 +190,13 @@ export default {
|
|
|
187
190
|
categories() {
|
|
188
191
|
const map = {};
|
|
189
192
|
|
|
190
|
-
|
|
193
|
+
// Filter charts by everything except itself
|
|
194
|
+
const charts = this.filterCharts({
|
|
195
|
+
searchQuery: this.searchQuery,
|
|
196
|
+
hideRepos: this.hideRepos
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
for ( const chart of charts ) {
|
|
191
200
|
for ( const c of chart.categories ) {
|
|
192
201
|
if ( !map[c] ) {
|
|
193
202
|
const labelKey = `catalog.charts.categories.${ lcFirst(c) }`;
|
|
@@ -208,14 +217,14 @@ export default {
|
|
|
208
217
|
out.unshift({
|
|
209
218
|
label: this.t('catalog.charts.categories.all'),
|
|
210
219
|
value: '',
|
|
211
|
-
count:
|
|
220
|
+
count: charts.length
|
|
212
221
|
});
|
|
213
222
|
|
|
214
|
-
return out;
|
|
223
|
+
return sortBy(out, ['label']);
|
|
215
224
|
},
|
|
216
225
|
|
|
217
226
|
showCarousel() {
|
|
218
|
-
return this.chartMode === 'featured' && this.
|
|
227
|
+
return this.chartMode === 'featured' && this.featuredCharts.length;
|
|
219
228
|
}
|
|
220
229
|
|
|
221
230
|
},
|
|
@@ -334,6 +343,22 @@ export default {
|
|
|
334
343
|
btnCb(false);
|
|
335
344
|
}
|
|
336
345
|
},
|
|
346
|
+
|
|
347
|
+
filterCharts({ category, searchQuery, hideRepos }) {
|
|
348
|
+
const enabledCharts = (this.enabledCharts || []);
|
|
349
|
+
const clusterProvider = this.currentCluster.status.provider || 'other';
|
|
350
|
+
|
|
351
|
+
return filterAndArrangeCharts(enabledCharts, {
|
|
352
|
+
clusterProvider,
|
|
353
|
+
category,
|
|
354
|
+
searchQuery,
|
|
355
|
+
showDeprecated: this.showDeprecated,
|
|
356
|
+
showHidden: this.showHidden,
|
|
357
|
+
hideRepos,
|
|
358
|
+
hideTypes: [CATALOG._CLUSTER_TPL],
|
|
359
|
+
showPrerelease: this.$store.getters['prefs/get'](SHOW_PRE_RELEASE),
|
|
360
|
+
});
|
|
361
|
+
}
|
|
337
362
|
},
|
|
338
363
|
};
|
|
339
364
|
</script>
|
|
@@ -351,7 +376,7 @@ export default {
|
|
|
351
376
|
</h1>
|
|
352
377
|
</div>
|
|
353
378
|
<div
|
|
354
|
-
v-if="
|
|
379
|
+
v-if="featuredCharts.length > 0"
|
|
355
380
|
class="actions-container"
|
|
356
381
|
>
|
|
357
382
|
<ButtonGroup
|
|
@@ -363,7 +388,7 @@ export default {
|
|
|
363
388
|
<div v-if="showCarousel">
|
|
364
389
|
<h3>{{ t('catalog.charts.featuredCharts') }}</h3>
|
|
365
390
|
<Carousel
|
|
366
|
-
:sliders="
|
|
391
|
+
:sliders="featuredCharts"
|
|
367
392
|
@clicked="(row) => selectChart(row)"
|
|
368
393
|
/>
|
|
369
394
|
</div>
|
|
@@ -514,22 +539,21 @@ export default {
|
|
|
514
539
|
}
|
|
515
540
|
}
|
|
516
541
|
}
|
|
517
|
-
|
|
542
|
+
}
|
|
518
543
|
|
|
519
544
|
.checkbox-select {
|
|
520
|
-
|
|
545
|
+
.vs__search {
|
|
521
546
|
position: absolute;
|
|
522
547
|
right: 0
|
|
523
548
|
}
|
|
524
549
|
|
|
525
|
-
|
|
550
|
+
.vs__selected-options {
|
|
526
551
|
overflow: hidden;
|
|
527
552
|
white-space: nowrap;
|
|
528
553
|
text-overflow: ellipsis;
|
|
529
554
|
display: inline-block;
|
|
530
555
|
line-height: 2.4rem;
|
|
531
556
|
}
|
|
532
|
-
|
|
533
557
|
}
|
|
534
558
|
|
|
535
559
|
.checkbox-outer-container.in-select {
|
|
@@ -537,7 +561,7 @@ export default {
|
|
|
537
561
|
padding: 7px 0 6px 13px;
|
|
538
562
|
width: calc(100% + 10px);
|
|
539
563
|
|
|
540
|
-
::v-deep.checkbox-label {
|
|
564
|
+
::v-deep .checkbox-label {
|
|
541
565
|
display: flex;
|
|
542
566
|
align-items: center;
|
|
543
567
|
|
|
@@ -552,7 +576,7 @@ export default {
|
|
|
552
576
|
}
|
|
553
577
|
}
|
|
554
578
|
|
|
555
|
-
&:hover ::v-deep.checkbox-label {
|
|
579
|
+
&:hover ::v-deep .checkbox-label {
|
|
556
580
|
color: var(--body-text);
|
|
557
581
|
}
|
|
558
582
|
|
|
@@ -560,7 +584,7 @@ export default {
|
|
|
560
584
|
&:hover {
|
|
561
585
|
background: var(--app-rancher-accent);
|
|
562
586
|
}
|
|
563
|
-
&:hover ::v-deep.checkbox-label {
|
|
587
|
+
&:hover ::v-deep .checkbox-label {
|
|
564
588
|
color: var(--app-rancher-accent-text);
|
|
565
589
|
}
|
|
566
590
|
& i {
|
|
@@ -572,7 +596,7 @@ export default {
|
|
|
572
596
|
&:hover {
|
|
573
597
|
background: var(--app-partner-accent);
|
|
574
598
|
}
|
|
575
|
-
&:hover ::v-deep.checkbox-label {
|
|
599
|
+
&:hover ::v-deep .checkbox-label {
|
|
576
600
|
color: var(--app-partner-accent-text);
|
|
577
601
|
}
|
|
578
602
|
& i {
|
|
@@ -584,7 +608,7 @@ export default {
|
|
|
584
608
|
&:hover {
|
|
585
609
|
background: var(--app-color1-accent);
|
|
586
610
|
}
|
|
587
|
-
&:hover ::v-deep.checkbox-label {
|
|
611
|
+
&:hover ::v-deep .checkbox-label {
|
|
588
612
|
color: var(--app-color1-accent-text);
|
|
589
613
|
}
|
|
590
614
|
& i {
|
|
@@ -595,10 +619,10 @@ export default {
|
|
|
595
619
|
&:hover {
|
|
596
620
|
background: var(--app-color2-accent);
|
|
597
621
|
}
|
|
598
|
-
&:hover ::v-deep.checkbox-label {
|
|
622
|
+
&:hover ::v-deep .checkbox-label {
|
|
599
623
|
color: var(--app-color2-accent-text);
|
|
600
624
|
}
|
|
601
|
-
|
|
625
|
+
& i {
|
|
602
626
|
color: var(--app-color2-accent)
|
|
603
627
|
}
|
|
604
628
|
}
|
|
@@ -606,7 +630,7 @@ export default {
|
|
|
606
630
|
&:hover {
|
|
607
631
|
background: var(--app-color3-accent);
|
|
608
632
|
}
|
|
609
|
-
&:hover ::v-deep.checkbox-label {
|
|
633
|
+
&:hover ::v-deep .checkbox-label {
|
|
610
634
|
color: var(--app-color3-accent-text);
|
|
611
635
|
}
|
|
612
636
|
& i {
|
|
@@ -628,7 +652,7 @@ export default {
|
|
|
628
652
|
&:hover {
|
|
629
653
|
background: var(--app-color5-accent);
|
|
630
654
|
}
|
|
631
|
-
&:hover ::v-deep.checkbox-label {
|
|
655
|
+
&:hover ::v-deep .checkbox-label {
|
|
632
656
|
color: var(--app-color5-accent-text);
|
|
633
657
|
}
|
|
634
658
|
& i {
|
|
@@ -639,7 +663,7 @@ export default {
|
|
|
639
663
|
&:hover {
|
|
640
664
|
background: var(--app-color6-accent);
|
|
641
665
|
}
|
|
642
|
-
&:hover ::v-deep.checkbox-label {
|
|
666
|
+
&:hover ::v-deep .checkbox-label {
|
|
643
667
|
color: var(--app-color6-accent-text);
|
|
644
668
|
}
|
|
645
669
|
& i {
|
|
@@ -650,7 +674,7 @@ export default {
|
|
|
650
674
|
&:hover {
|
|
651
675
|
background: var(--app-color7-accent);
|
|
652
676
|
}
|
|
653
|
-
&:hover ::v-deep.checkbox-label {
|
|
677
|
+
&:hover ::v-deep .checkbox-label {
|
|
654
678
|
color: var(--app-color7-accent-text);
|
|
655
679
|
}
|
|
656
680
|
& i {
|
|
@@ -661,9 +685,6 @@ export default {
|
|
|
661
685
|
&:hover {
|
|
662
686
|
background: var(--app-color8-accent);
|
|
663
687
|
}
|
|
664
|
-
&:hover ::v-deep.checkbox-label {
|
|
665
|
-
color: var(--app-color8-accent-text);
|
|
666
|
-
}
|
|
667
688
|
& i {
|
|
668
689
|
color: var(--app-color8-accent)
|
|
669
690
|
}
|
|
@@ -248,7 +248,7 @@ export default {
|
|
|
248
248
|
return;
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
if ( this.version
|
|
251
|
+
if ( this.version ) {
|
|
252
252
|
/*
|
|
253
253
|
Check if the Helm chart has provided the name
|
|
254
254
|
of a Vue component to use for configuring
|
|
@@ -857,11 +857,9 @@ export default {
|
|
|
857
857
|
}
|
|
858
858
|
|
|
859
859
|
if (provCluster?.isRke2) { // isRke2 returns true for both RKE2 and K3s clusters.
|
|
860
|
-
const agentConfig = provCluster.spec?.rkeConfig?.machineSelectorConfig?.find((x) => !x.machineLabelSelector).config;
|
|
861
|
-
|
|
862
860
|
// If a cluster scoped registry exists,
|
|
863
861
|
// it should be used by default.
|
|
864
|
-
const clusterRegistry = agentConfig?.['system-default-registry'] || '';
|
|
862
|
+
const clusterRegistry = provCluster.agentConfig?.['system-default-registry'] || '';
|
|
865
863
|
|
|
866
864
|
if (clusterRegistry) {
|
|
867
865
|
return clusterRegistry;
|
|
@@ -1603,6 +1601,7 @@ export default {
|
|
|
1603
1601
|
v-if="componentHasTabs"
|
|
1604
1602
|
ref="tabs"
|
|
1605
1603
|
:side-tabs="true"
|
|
1604
|
+
:hide-single-tab="true"
|
|
1606
1605
|
:class="{'with-name': showNameEditor}"
|
|
1607
1606
|
class="step__values__content"
|
|
1608
1607
|
@changed="tabChanged($event)"
|
|
@@ -1647,6 +1646,7 @@ export default {
|
|
|
1647
1646
|
v-else-if="hasQuestions && showQuestions"
|
|
1648
1647
|
ref="tabs"
|
|
1649
1648
|
:side-tabs="true"
|
|
1649
|
+
:hide-single-tab="true"
|
|
1650
1650
|
:class="{'with-name': showNameEditor}"
|
|
1651
1651
|
class="step__values__content"
|
|
1652
1652
|
@changed="tabChanged($event)"
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
WORKLOAD_TYPES,
|
|
16
16
|
COUNT,
|
|
17
17
|
CATALOG,
|
|
18
|
+
SECRET
|
|
18
19
|
} from '@shell/config/types';
|
|
19
20
|
import { setPromiseResult } from '@shell/utils/promise';
|
|
20
21
|
import AlertTable from '@shell/components/AlertTable';
|
|
@@ -42,6 +43,8 @@ import { fetchClusterResources } from './explorer-utils';
|
|
|
42
43
|
import SimpleBox from '@shell/components/SimpleBox';
|
|
43
44
|
import { ExtensionPoint, CardLocation } from '@shell/core/types';
|
|
44
45
|
import { getApplicableExtensionEnhancements } from '@shell/core/plugin-helpers';
|
|
46
|
+
import Certificates from '@shell/components/Certificates';
|
|
47
|
+
import { NAME as EXPLORER } from '@shell/config/product/explorer';
|
|
45
48
|
|
|
46
49
|
export const RESOURCES = [NAMESPACE, INGRESS, PV, WORKLOAD_TYPES.DEPLOYMENT, WORKLOAD_TYPES.STATEFUL_SET, WORKLOAD_TYPES.JOB, WORKLOAD_TYPES.DAEMON_SET, SERVICE];
|
|
47
50
|
|
|
@@ -74,6 +77,7 @@ export default {
|
|
|
74
77
|
ConfigBadge,
|
|
75
78
|
EventsTable,
|
|
76
79
|
SimpleBox,
|
|
80
|
+
Certificates
|
|
77
81
|
},
|
|
78
82
|
|
|
79
83
|
mixins: [metricPoller],
|
|
@@ -348,8 +352,18 @@ export default {
|
|
|
348
352
|
return {
|
|
349
353
|
name: 'c-cluster-product-resource',
|
|
350
354
|
params: {
|
|
351
|
-
product:
|
|
352
|
-
resource:
|
|
355
|
+
product: EXPLORER,
|
|
356
|
+
resource: EVENT,
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
},
|
|
360
|
+
|
|
361
|
+
allSecretsLink() {
|
|
362
|
+
return {
|
|
363
|
+
name: 'c-cluster-product-resource',
|
|
364
|
+
params: {
|
|
365
|
+
product: EXPLORER,
|
|
366
|
+
resource: SECRET,
|
|
353
367
|
}
|
|
354
368
|
};
|
|
355
369
|
}
|
|
@@ -581,6 +595,18 @@ export default {
|
|
|
581
595
|
>
|
|
582
596
|
<AlertTable v-if="selectedTab === 'cluster-alerts'" />
|
|
583
597
|
</Tab>
|
|
598
|
+
<Tab
|
|
599
|
+
name="cluster-certs"
|
|
600
|
+
:label="t('clusterIndexPage.sections.certs.label')"
|
|
601
|
+
:weight="1"
|
|
602
|
+
>
|
|
603
|
+
<span class="events-table-link">
|
|
604
|
+
<n-link :to="allSecretsLink">
|
|
605
|
+
<span>{{ t('glance.secretsTable') }}</span>
|
|
606
|
+
</n-link>
|
|
607
|
+
</span>
|
|
608
|
+
<Certificates v-if="selectedTab === 'cluster-certs'" />
|
|
609
|
+
</Tab>
|
|
584
610
|
</Tabbed>
|
|
585
611
|
</div>
|
|
586
612
|
<Tabbed
|
|
@@ -20,8 +20,6 @@ import { setFavIcon } from '@shell/utils/favicon';
|
|
|
20
20
|
const Color = require('color');
|
|
21
21
|
|
|
22
22
|
export default {
|
|
23
|
-
layout: 'authenticated',
|
|
24
|
-
|
|
25
23
|
components: {
|
|
26
24
|
LabeledInput, Checkbox, FileImageSelector, Loading, SimpleBox, AsyncButton, Banner, ColorInput, TypeDescription
|
|
27
25
|
},
|
|
@@ -3,8 +3,6 @@ import { NAME as SETTINGS } from '@shell/config/product/settings';
|
|
|
3
3
|
import { MANAGEMENT } from '@shell/config/types';
|
|
4
4
|
|
|
5
5
|
export default {
|
|
6
|
-
layout: 'plain',
|
|
7
|
-
|
|
8
6
|
middleware({ redirect, route, store } ) {
|
|
9
7
|
const hasSettings = !!store.getters[`management/schemaFor`](MANAGEMENT.SETTING);
|
|
10
8
|
|
|
@@ -469,7 +469,8 @@ export default {
|
|
|
469
469
|
<div class="fields">
|
|
470
470
|
<LabeledSelect
|
|
471
471
|
v-model="imagePullSecrets"
|
|
472
|
-
:label="t('
|
|
472
|
+
:label="t('plugins.manageCatalog.imageLoad.fields.imagePullSecrets.label')"
|
|
473
|
+
:tooltip="t('plugins.manageCatalog.imageLoad.fields.imagePullSecrets.tooltip')"
|
|
473
474
|
:multiple="true"
|
|
474
475
|
:taggable="true"
|
|
475
476
|
:options="imagePullNamespacedSecrets"
|
|
@@ -7,13 +7,12 @@ import { SERVICE, WORKLOAD_TYPES } from '@shell/config/types';
|
|
|
7
7
|
import { UI_PLUGIN_LABELS, UI_PLUGIN_NAMESPACE } from '@shell/config/uiplugins';
|
|
8
8
|
import { UI_PLUGIN_CATALOG } from '@shell/config/table-headers';
|
|
9
9
|
|
|
10
|
-
import ActionMenu from '@shell/components/ActionMenu';
|
|
11
10
|
import ResourceTable from '@shell/components/ResourceTable';
|
|
12
11
|
|
|
13
12
|
export default {
|
|
14
13
|
name: 'CatalogList',
|
|
15
14
|
|
|
16
|
-
components: {
|
|
15
|
+
components: { ResourceTable },
|
|
17
16
|
|
|
18
17
|
mixins: [ResourceManager],
|
|
19
18
|
|
|
@@ -29,10 +28,7 @@ export default {
|
|
|
29
28
|
|
|
30
29
|
return {
|
|
31
30
|
actions,
|
|
32
|
-
catalogHeaders:
|
|
33
|
-
menuTargetElement: null,
|
|
34
|
-
menuTargetEvent: null,
|
|
35
|
-
menuOpen: false,
|
|
31
|
+
catalogHeaders: UI_PLUGIN_CATALOG,
|
|
36
32
|
};
|
|
37
33
|
},
|
|
38
34
|
|
|
@@ -49,6 +45,7 @@ export default {
|
|
|
49
45
|
|
|
50
46
|
catalogRows() {
|
|
51
47
|
const rows = [];
|
|
48
|
+
const actions = this.actions;
|
|
52
49
|
|
|
53
50
|
if ( !isEmpty(this.namespacedDeployments) ) {
|
|
54
51
|
this.namespacedDeployments.forEach((deploy) => {
|
|
@@ -57,11 +54,13 @@ export default {
|
|
|
57
54
|
|
|
58
55
|
if ( deployName ) {
|
|
59
56
|
const out = {
|
|
60
|
-
name:
|
|
61
|
-
state:
|
|
62
|
-
image:
|
|
63
|
-
service:
|
|
64
|
-
repo:
|
|
57
|
+
name: deployName,
|
|
58
|
+
state: deploy.metadata?.state?.name,
|
|
59
|
+
image: deploy.spec?.template?.spec?.containers[0]?.image,
|
|
60
|
+
service: null,
|
|
61
|
+
repo: null,
|
|
62
|
+
availableActions: actions,
|
|
63
|
+
showCatalogUninstallDialog: () => this.$emit('showCatalogUninstallDialog', out)
|
|
65
64
|
};
|
|
66
65
|
const keys = ['service', 'repo'];
|
|
67
66
|
|
|
@@ -77,20 +76,6 @@ export default {
|
|
|
77
76
|
return rows;
|
|
78
77
|
}
|
|
79
78
|
},
|
|
80
|
-
|
|
81
|
-
methods: {
|
|
82
|
-
setMenu(event) {
|
|
83
|
-
this.menuOpen = !!event;
|
|
84
|
-
|
|
85
|
-
if (event) {
|
|
86
|
-
this.menuTargetElement = this.$refs.catalogActions;
|
|
87
|
-
this.menuTargetEvent = event;
|
|
88
|
-
} else {
|
|
89
|
-
this.menuTargetElement = undefined;
|
|
90
|
-
this.menuTargetEvent = undefined;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
79
|
};
|
|
95
80
|
</script>
|
|
96
81
|
|
|
@@ -118,27 +103,6 @@ export default {
|
|
|
118
103
|
</button>
|
|
119
104
|
</div>
|
|
120
105
|
</template>
|
|
121
|
-
<template #row-actions="{row}">
|
|
122
|
-
<button
|
|
123
|
-
ref="catalogActions"
|
|
124
|
-
aria-haspopup="true"
|
|
125
|
-
type="button"
|
|
126
|
-
class="btn btn-sm role-multi-action actions"
|
|
127
|
-
data-testid="extensions-page-catalog-row-menu"
|
|
128
|
-
@click="setMenu"
|
|
129
|
-
>
|
|
130
|
-
<i class="icon icon-actions" />
|
|
131
|
-
</button>
|
|
132
|
-
<ActionMenu
|
|
133
|
-
:custom-actions="actions"
|
|
134
|
-
:open="menuOpen"
|
|
135
|
-
:use-custom-target-element="true"
|
|
136
|
-
:custom-target-element="menuTargetElement"
|
|
137
|
-
:custom-target-event="menuTargetEvent"
|
|
138
|
-
@close="setMenu(false)"
|
|
139
|
-
@showCatalogUninstallDialog="e => $emit('showCatalogUninstallDialog', row, e.event)"
|
|
140
|
-
/>
|
|
141
|
-
</template>
|
|
142
106
|
</ResourceTable>
|
|
143
107
|
</div>
|
|
144
108
|
</div>
|
package/pages/diagnostic.vue
CHANGED
|
@@ -7,8 +7,7 @@ import { filterOnlyKubernetesClusters, filterHiddenLocalCluster } from '@shell/u
|
|
|
7
7
|
import { sortBy } from '@shell/utils/sort';
|
|
8
8
|
|
|
9
9
|
export default {
|
|
10
|
-
name:
|
|
11
|
-
layout: 'plain',
|
|
10
|
+
name: 'Diagnostic',
|
|
12
11
|
|
|
13
12
|
components: { AsyncButton, PromptModal },
|
|
14
13
|
|
package/pages/fail-whale.vue
CHANGED
package/pages/prefs.vue
CHANGED
|
@@ -18,7 +18,6 @@ import { addObject } from '@shell/utils/array';
|
|
|
18
18
|
import LocaleSelector from '@shell/components/LocaleSelector';
|
|
19
19
|
|
|
20
20
|
export default {
|
|
21
|
-
layout: 'plain',
|
|
22
21
|
components: {
|
|
23
22
|
BackLink, ButtonGroup, LabeledSelect, Checkbox, LandingPagePreference, LocaleSelector
|
|
24
23
|
},
|