@rancher/shell 0.3.4 → 0.3.6
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/outscale.svg +19 -0
- package/assets/styles/app.scss +1 -1
- package/assets/styles/base/_basic.scss +18 -0
- package/assets/styles/base/_mixins.scss +0 -11
- package/assets/styles/base/_variables.scss +2 -4
- package/assets/styles/fonts/_fontstack.scss +11 -11
- package/assets/styles/global/_button.scss +12 -2
- package/assets/styles/vendor/vue-js-modal.scss +3 -3
- package/assets/translations/en-us.yaml +113 -22
- package/assets/translations/zh-hans.yaml +113 -24
- package/babel.config.js +13 -0
- package/chart/gatekeeper.vue +78 -0
- package/chart/istio.vue +135 -112
- package/chart/logging/index.vue +13 -4
- package/chart/monitoring/index.vue +15 -5
- package/chart/monitoring/steps/uninstall-v1.vue +2 -2
- package/chart/rancher-backup/index.vue +10 -3
- package/cloud-credential/aws.vue +1 -1
- package/cloud-credential/digitalocean.vue +1 -1
- package/cloud-credential/gcp.vue +1 -1
- package/cloud-credential/generic.vue +2 -2
- package/cloud-credential/linode.vue +1 -1
- package/cloud-credential/pnap.vue +1 -1
- package/components/ActionMenu.vue +3 -4
- package/components/AssignTo.vue +1 -1
- package/components/AsyncButton.vue +1 -1
- package/components/BannerGraphic.vue +1 -1
- package/components/BrandImage.vue +1 -4
- package/components/ButtonDropdown.vue +2 -3
- package/components/Carousel.vue +85 -37
- package/components/ChartPsp.vue +76 -0
- package/components/CruResource.vue +6 -2
- package/components/DashboardMetrics.vue +12 -10
- package/components/DetailText.vue +1 -1
- package/components/DisableAuthProviderModal.vue +1 -1
- package/components/EmberPage.vue +1 -1
- package/components/EtcdInfoBanner.vue +12 -7
- package/components/ExplorerMembers.vue +101 -6
- package/components/ExplorerProjectsNamespaces.vue +46 -3
- package/components/FileDiff.vue +6 -7
- package/components/GrafanaDashboard.vue +27 -23
- package/components/LazyImage.vue +10 -12
- package/components/LogItem.vue +1 -1
- package/components/Markdown.vue +1 -1
- package/components/PromptRemove.vue +2 -2
- package/components/PromptRestore.vue +1 -1
- package/components/ResourceDetail/Masthead.vue +16 -0
- package/components/ResourceDetail/index.vue +21 -4
- package/components/ResourceList/index.vue +1 -1
- package/components/ResourceTable.vue +4 -1
- package/components/SingleClusterInfo.vue +2 -2
- package/components/SortableTable/THead.vue +1 -1
- package/components/SortableTable/index.vue +28 -13
- package/components/SortableTable/selection.js +58 -50
- package/components/Wizard.vue +4 -2
- package/components/__tests__/AsyncButton.test.ts +3 -1
- package/components/__tests__/ChartPsp.test.ts +75 -0
- package/components/__tests__/CruResource.test.ts +3 -1
- package/components/auth/Principal.vue +1 -1
- package/components/auth/RoleDetailEdit.vue +2 -2
- package/components/fleet/FleetBundles.vue +3 -1
- package/components/fleet/FleetClusters.vue +1 -2
- package/components/fleet/FleetIntro.vue +9 -1
- package/components/fleet/FleetNoWorkspaces.vue +62 -0
- package/components/fleet/FleetSummary.vue +7 -1
- package/components/form/HookOption.vue +14 -10
- package/components/form/LabeledSelect.vue +14 -11
- package/components/form/Labels.vue +32 -27
- package/components/form/MatchExpressions.vue +19 -4
- package/components/form/Members/ClusterPermissionsEditor.vue +32 -7
- package/components/form/NameNsDescription.vue +32 -46
- package/components/form/ProjectMemberEditor.vue +46 -21
- package/components/form/ResourceSelector.vue +1 -1
- package/components/form/SecretSelector.vue +5 -1
- package/components/form/ServiceNameSelect.vue +1 -1
- package/components/form/SimpleSecretSelector.vue +9 -9
- package/components/form/Tolerations.vue +4 -1
- package/components/form/ValueFromResource.vue +14 -9
- package/components/form/WorkloadPorts.vue +2 -2
- package/components/form/__tests__/LabeledSelect.test.ts +138 -0
- package/components/form/__tests__/NameNsDescription.ts +59 -0
- package/components/formatter/InternalExternalIP.vue +6 -0
- package/components/formatter/InvolvedObjectLink.vue +54 -0
- package/components/formatter/Link.vue +20 -4
- package/components/formatter/LinkName.vue +6 -1
- package/components/formatter/ServiceTargets.vue +1 -1
- package/components/formatter/WorkloadHealthScale.vue +8 -2
- package/components/nav/Group.vue +2 -2
- package/components/nav/NamespaceFilter.vue +23 -11
- package/components/nav/TopLevelMenu.vue +2 -4
- package/components/nav/Type.vue +1 -1
- package/components/nav/WorkspaceSwitcher.vue +46 -5
- package/components/nuxt/nuxt-build-indicator.vue +143 -0
- package/components/nuxt/nuxt-child.js +122 -0
- package/components/nuxt/nuxt-error.vue +98 -0
- package/components/nuxt/nuxt-link.client.js +98 -0
- package/components/nuxt/nuxt-link.server.js +16 -0
- package/components/nuxt/nuxt-loading.vue +154 -0
- package/components/nuxt/nuxt.js +101 -0
- package/config/labels-annotations.js +17 -0
- package/config/middleware.js +12 -0
- package/config/product/auth.js +3 -2
- package/config/product/explorer.js +34 -6
- package/config/product/fleet.js +2 -0
- package/config/query-params.js +1 -0
- package/config/router.js +414 -0
- package/config/store.js +181 -0
- package/config/table-headers.js +54 -12
- package/config/types.js +18 -8
- package/config/uiplugins.js +30 -0
- package/content/docs/en-us/whats-new.md +10 -0
- package/content/docs/zh-hans/whats-new.md +11 -1
- package/core/plugin-routes.ts +23 -0
- package/core/plugin.ts +4 -2
- package/core/types.ts +258 -1
- package/creators/app/app.package.json +2 -1
- package/creators/app/files/.eslintrc.js +1 -1
- package/creators/app/files/babel.config.js +1 -18
- package/creators/app/files/tsconfig.json +0 -1
- package/creators/app/files/vue.config.js +6 -0
- package/creators/app/init +5 -5
- package/creators/pkg/files/.github/workflows/build-extension.yml +110 -0
- package/creators/pkg/files/tsconfig.json +0 -1
- package/creators/pkg/init +35 -4
- package/creators/pkg/pkg.package.json +3 -3
- package/creators/update/init +1 -1
- package/detail/constraints.gatekeeper.sh.constraint.vue +34 -17
- package/detail/fleet.cattle.io.clustergroup.vue +7 -1
- package/detail/fleet.cattle.io.gitrepo.vue +19 -11
- package/detail/harvesterhci.io.management.cluster.vue +3 -3
- package/detail/provisioning.cattle.io.cluster.vue +54 -12
- package/detail/workload/index.vue +3 -3
- package/dialog/AddClusterMemberDialog.vue +1 -1
- package/dialog/AddProjectMemberDialog.vue +2 -2
- package/dialog/AddonConfigConfirmationDialog.vue +27 -15
- package/dialog/DiagnosticTimingsDialog.vue +1 -1
- package/dialog/ForceMachineRemoveDialog.vue +1 -1
- package/dialog/GenericPrompt.vue +18 -6
- package/dialog/RotateEncryptionKeyDialog.vue +1 -1
- package/dialog/SaveAsRKETemplateDialog.vue +1 -1
- package/dialog/ScaleMachineDownDialog.vue +1 -1
- package/edit/auth/github.vue +8 -8
- package/edit/auth/googleoauth.vue +5 -5
- package/edit/auth/ldap/index.vue +1 -1
- package/edit/auth/oidc.vue +1 -1
- package/edit/auth/saml.vue +1 -1
- package/edit/cis.cattle.io.clusterscan.vue +1 -1
- package/edit/fleet.cattle.io.clustergroup.vue +6 -4
- package/edit/fleet.cattle.io.gitrepo.vue +32 -4
- package/edit/helm.cattle.io.projecthelmchart.vue +5 -1
- package/edit/logging.banzaicloud.io.output/index.vue +18 -5
- package/edit/logging.banzaicloud.io.output/providers/loki.vue +1 -0
- package/edit/management.cattle.io.fleetworkspace.vue +141 -6
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +4 -1
- package/edit/management.cattle.io.setting.vue +1 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +2 -2
- package/edit/monitoring.coreos.com.receiver/tls.vue +18 -18
- package/edit/monitoring.coreos.com.receiver/types/webhook.banner.vue +4 -4
- package/edit/monitoring.coreos.com.receiver/types/webhook.vue +1 -1
- package/edit/namespace.vue +14 -10
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +126 -45
- package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/MachinePool.vue +21 -4
- package/edit/provisioning.cattle.io.cluster/RegistryConfigs.vue +1 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +202 -2
- package/edit/provisioning.cattle.io.cluster/import.vue +23 -25
- package/edit/provisioning.cattle.io.cluster/rke2.vue +344 -102
- package/edit/resources.cattle.io.backup.vue +1 -1
- package/edit/service.vue +1 -1
- package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +2 -2
- package/edit/workload/__tests__/Job.test.ts +3 -1
- package/edit/workload/index.vue +8 -3
- package/edit/workload/mixins/workload.js +22 -7
- package/edit/workload/storage/Mount.vue +3 -3
- package/initialize/App.js +206 -0
- package/initialize/client.js +863 -0
- package/initialize/index.js +364 -0
- package/layouts/default.vue +7 -3
- package/layouts/standalone.vue +13 -0
- package/list/catalog.cattle.io.clusterrepo.vue +1 -0
- package/list/fleet.cattle.io.bundle.vue +6 -3
- package/list/fleet.cattle.io.clusterregistrationtoken.vue +3 -1
- package/list/fleet.cattle.io.gitrepo.vue +44 -5
- package/list/management.cattle.io.fleetworkspace.vue +45 -0
- package/list/node.vue +69 -16
- package/list/provisioning.cattle.io.cluster.vue +30 -1
- package/list/rbac.authorization.k8s.io.clusterrolebinding.vue +48 -0
- package/list/workload.vue +6 -4
- package/machine-config/azure.vue +97 -38
- package/middleware/authenticated.js +34 -0
- package/mixins/chart.js +101 -2
- package/mixins/fetch.client.js +95 -0
- package/mixins/fetch.server.js +73 -0
- package/mixins/labeled-form-element.ts +2 -2
- package/mixins/resource-fetch.js +2 -2
- package/models/apps.statefulset.js +28 -0
- package/models/cluster/node.js +23 -2
- package/models/cluster.x-k8s.io.machine.js +4 -2
- package/models/clusterroletemplatebinding.js +7 -0
- package/models/constraints.gatekeeper.sh.constraint.js +46 -0
- package/models/fleet.cattle.io.cluster.js +19 -10
- package/models/fleet.cattle.io.gitrepo.js +7 -2
- package/models/management.cattle.io.cluster.js +1 -1
- package/models/management.cattle.io.fleetworkspace.js +12 -0
- package/models/management.cattle.io.gitreporestriction.js +5 -0
- package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.js +3 -0
- package/models/pod.js +4 -0
- package/models/provisioning.cattle.io.cluster.js +7 -5
- package/models/rbac.authorization.k8s.io.clusterrolebinding.js +16 -0
- package/models/rbac.authorization.k8s.io.rolebinding.js +16 -0
- package/package.json +13 -21
- package/pages/auth/setup.vue +2 -2
- package/pages/c/_cluster/apps/charts/__tests__/install.helper.test.ts +33 -0
- package/pages/c/_cluster/apps/charts/chart.vue +4 -4
- package/pages/c/_cluster/apps/charts/install.helpers.js +26 -0
- package/pages/c/_cluster/apps/charts/install.vue +98 -102
- package/pages/c/_cluster/explorer/EventsTable.vue +5 -19
- package/pages/c/_cluster/explorer/index.vue +29 -25
- package/pages/c/_cluster/explorer/tools/index.vue +8 -8
- package/pages/c/_cluster/fleet/index.vue +95 -34
- package/pages/c/_cluster/gatekeeper/index.vue +1 -1
- package/pages/c/_cluster/istio/index.vue +5 -5
- package/pages/c/_cluster/manager/cloudCredential/index.vue +1 -1
- package/pages/c/_cluster/monitoring/index.vue +7 -0
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +8 -8
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +20 -7
- package/pages/c/_cluster/uiplugins/index.vue +49 -17
- package/pages/diagnostic.vue +32 -25
- package/pages/home.vue +9 -4
- package/pages/index.vue +10 -1
- package/pages/rio/mesh.vue +1 -2
- package/pkg/tsconfig.json +0 -1
- package/plugins/clean-html-directive.js +34 -0
- package/plugins/dashboard-store/actions.js +32 -9
- package/plugins/dashboard-store/index.js +1 -1
- package/plugins/dashboard-store/mutations.js +5 -2
- package/plugins/dashboard-store/resource-class.js +8 -1
- package/plugins/plugin.js +0 -14
- package/plugins/portal-vue.js +4 -0
- package/plugins/steve/mutations.js +3 -2
- package/plugins/steve/steve-description-class.js +5 -1
- package/plugins/steve/subscribe.js +63 -54
- package/plugins/steve-create-worker.js +14 -0
- package/promptRemove/management.cattle.io.globalrole.vue +2 -2
- package/promptRemove/management.cattle.io.project.vue +2 -2
- package/promptRemove/management.cattle.io.roletemplate.vue +2 -2
- package/promptRemove/pod.vue +1 -1
- package/public/index.html +65 -0
- package/rancher-components/components/Banner/Banner.test.ts +7 -1
- package/rancher-components/components/Banner/Banner.vue +2 -1
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +2 -0
- package/rancher-components/components/Form/Radio/RadioButton.test.ts +31 -0
- package/rancher-components/components/Form/Radio/RadioButton.vue +14 -3
- package/scripts/build-pkg.sh +1 -0
- package/scripts/clean +6 -0
- package/scripts/extension/bundle +58 -0
- package/scripts/extension/helmpatch +89 -0
- package/scripts/extension/publish +333 -0
- package/scripts/serve-pkgs +6 -2
- package/scripts/test-plugins-build.sh +4 -0
- package/store/__tests__/index.test.ts +110 -0
- package/store/index.js +145 -58
- package/store/type-map.js +6 -2
- package/tsconfig.default.json +36 -0
- package/tsconfig.json +23 -0
- package/types/rancher/index.d.ts +2 -0
- package/types/shell/index.d.ts +466 -320
- package/utils/__tests__/grafana.test.ts +44 -0
- package/utils/__tests__/string.test.ts +12 -0
- package/utils/auth.js +65 -0
- package/utils/axios.js +190 -0
- package/utils/cookie-universal-nuxt.js +10 -0
- package/utils/dom.js +15 -0
- package/utils/grafana.js +35 -16
- package/utils/monitoring.js +2 -1
- package/utils/nuxt.js +659 -0
- package/utils/position.js +5 -8
- package/utils/router.scrollBehavior.js +80 -0
- package/utils/select.js +1 -3
- package/utils/socket.js +1 -0
- package/utils/string.js +13 -0
- package/utils/time.js +9 -0
- package/vue.config.js +690 -0
- package/chart/rancher-alerting-drivers.vue +0 -53
- package/chart/rancher-gatekeeper.vue +0 -37
- package/creators/app/files/nuxt.config.js +0 -6
- package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.ts +0 -4
- package/nuxt.config.js +0 -798
- package/plugins/dashboard-store/extensions.js +0 -22
|
@@ -103,7 +103,7 @@ export default class ProvCluster extends SteveModel {
|
|
|
103
103
|
const clusterTemplatesSchema = this.$getters['schemaFor']('management.cattle.io.clustertemplate');
|
|
104
104
|
let canUpdateClusterTemplate = false;
|
|
105
105
|
|
|
106
|
-
if (clusterTemplatesSchema && (clusterTemplatesSchema.resourceMethods
|
|
106
|
+
if (clusterTemplatesSchema && (clusterTemplatesSchema.resourceMethods?.includes('blocked-PUT') || clusterTemplatesSchema.resourceMethods?.includes('PUT'))) {
|
|
107
107
|
canUpdateClusterTemplate = true;
|
|
108
108
|
}
|
|
109
109
|
|
|
@@ -272,7 +272,7 @@ export default class ProvCluster extends SteveModel {
|
|
|
272
272
|
}
|
|
273
273
|
|
|
274
274
|
get mgmtClusterId() {
|
|
275
|
-
return this.mgmt?.id || this.id
|
|
275
|
+
return this.mgmt?.id || this.id?.replace(`${ this.metadata.namespace }/`, '');
|
|
276
276
|
}
|
|
277
277
|
|
|
278
278
|
get mgmt() {
|
|
@@ -291,8 +291,10 @@ export default class ProvCluster extends SteveModel {
|
|
|
291
291
|
return !!this.mgmt?.isReady;
|
|
292
292
|
}
|
|
293
293
|
|
|
294
|
+
// nodeGroups can be undefined for an EKS cluster that has just been created and has not
|
|
295
|
+
// had any node groups added to it
|
|
294
296
|
get eksNodeGroups() {
|
|
295
|
-
return this.mgmt?.spec?.eksConfig?.nodeGroups;
|
|
297
|
+
return this.mgmt?.spec?.eksConfig?.nodeGroups || [];
|
|
296
298
|
}
|
|
297
299
|
|
|
298
300
|
waitForProvisioner(timeout, interval) {
|
|
@@ -457,9 +459,9 @@ export default class ProvCluster extends SteveModel {
|
|
|
457
459
|
return names.join('<br>');
|
|
458
460
|
} else {
|
|
459
461
|
const names = this.machines.filter((machine) => {
|
|
460
|
-
return machine.status
|
|
462
|
+
return machine.status?.conditions?.find(c => c.error && c.type === 'NodeHealthy');
|
|
461
463
|
}).map((machine) => {
|
|
462
|
-
if (machine.status
|
|
464
|
+
if (machine.status?.nodeRef?.name) {
|
|
463
465
|
return this.t('cluster.availabilityWarnings.node', { name: machine.status.nodeRef.name });
|
|
464
466
|
}
|
|
465
467
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import HybridModel from '@shell/plugins/steve/hybrid-class';
|
|
2
|
+
import { GROUP, SERVICE_ACCOUNT, USER } from '@shell/config/types';
|
|
3
|
+
|
|
4
|
+
export default class ClusterRoleBinding extends HybridModel {
|
|
5
|
+
get users() {
|
|
6
|
+
return this.subjects?.filter(({ kind }) => kind?.toLowerCase() === USER);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
get serviceAccounts() {
|
|
10
|
+
return this.subjects?.filter(({ kind }) => kind?.toLowerCase() === SERVICE_ACCOUNT);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get groups() {
|
|
14
|
+
return this.subjects?.filter(({ kind }) => kind?.toLowerCase() === GROUP);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import HybridModel from '@shell/plugins/steve/hybrid-class';
|
|
2
|
+
import { GROUP, SERVICE_ACCOUNT, USER } from '@shell/config/types';
|
|
3
|
+
|
|
4
|
+
export default class RoleBinding extends HybridModel {
|
|
5
|
+
get users() {
|
|
6
|
+
return this.subjects.filter(({ kind }) => kind?.toLowerCase() === USER);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
get serviceAccounts() {
|
|
10
|
+
return this.subjects.filter(({ kind }) => kind?.toLowerCase() === SERVICE_ACCOUNT);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get groups() {
|
|
14
|
+
return this.subjects.filter(({ kind }) => kind?.toLowerCase() === GROUP);
|
|
15
|
+
}
|
|
16
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rancher/shell",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "Rancher Dashboard Shell",
|
|
5
5
|
"repository": "https://github.com/rancherlabs/dashboard",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -16,15 +16,11 @@
|
|
|
16
16
|
"clean": "./scripts/clean",
|
|
17
17
|
"lint": "./node_modules/.bin/eslint --max-warnings 0 --ext .ts,.js,.vue .",
|
|
18
18
|
"test": "./node_modules/.bin/nyc ava --serial --verbose",
|
|
19
|
-
"
|
|
20
|
-
"dev": "./node_modules/.bin/nuxt dev",
|
|
21
|
-
"mem-dev": "node --max-old-space-size=8192 ./node_modules/.bin/nuxt dev",
|
|
19
|
+
"dev": "./node_modules/.bin/vue-cli-service dev",
|
|
22
20
|
"docker-dev": "docker run --rm --name dashboard-dev -p 8005:8005 -e API=$API -v $(pwd):/src -v dashboard_node:/src/node_modules rancher/dashboard:dev",
|
|
23
|
-
"build": "./node_modules/.bin/
|
|
24
|
-
"analyze": "./node_modules/.bin/
|
|
25
|
-
"start": "./node_modules/.bin/
|
|
26
|
-
"generate": "./node_modules/.bin/nuxt generate",
|
|
27
|
-
"dev-debug": "node --inspect ./node_modules/.bin/nuxt",
|
|
21
|
+
"build": "./node_modules/.bin/vue-cli-service build",
|
|
22
|
+
"analyze": "./node_modules/.bin/vue-cli-service build --report",
|
|
23
|
+
"start": "./node_modules/.bin/vue-cli-service start",
|
|
28
24
|
"cy:run": "cypress run",
|
|
29
25
|
"cy:open": "cypress open",
|
|
30
26
|
"e2e:pre": "NODE_ENV=dev yarn build",
|
|
@@ -40,21 +36,17 @@
|
|
|
40
36
|
"@babel/preset-typescript": "7.16.7",
|
|
41
37
|
"@innologica/vue-dropdown-menu": "0.1.3",
|
|
42
38
|
"@novnc/novnc": "1.2.0",
|
|
43
|
-
"@nuxt/types": "2.14.6",
|
|
44
39
|
"@nuxt/typescript-build": "2.1.0",
|
|
45
40
|
"@nuxtjs/axios": "5.12.0",
|
|
46
41
|
"@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
42
|
"@nuxtjs/webpack-profile": "0.1.0",
|
|
51
43
|
"@popperjs/core": "2.4.4",
|
|
52
44
|
"@types/node": "16.4.3",
|
|
53
45
|
"@typescript-eslint/eslint-plugin": "4.33.0",
|
|
54
46
|
"@typescript-eslint/parser": "4.33.0",
|
|
55
|
-
"@vue/cli-plugin-babel": "4.5.
|
|
56
|
-
"@vue/cli-plugin-typescript": "4.5.
|
|
57
|
-
"@vue/cli-service": "4.5.
|
|
47
|
+
"@vue/cli-plugin-babel": "4.5.18",
|
|
48
|
+
"@vue/cli-plugin-typescript": "4.5.18",
|
|
49
|
+
"@vue/cli-service": "4.5.18",
|
|
58
50
|
"@vue/test-utils": "1.2.1",
|
|
59
51
|
"@vue/vue2-jest": "27.0.0",
|
|
60
52
|
"add": "2.0.6",
|
|
@@ -86,7 +78,7 @@
|
|
|
86
78
|
"eslint-plugin-import": "2.23.4",
|
|
87
79
|
"eslint-plugin-jest": "24.4.0",
|
|
88
80
|
"eslint-plugin-n": "15.2.0",
|
|
89
|
-
"eslint-plugin-vue": "
|
|
81
|
+
"eslint-plugin-vue": "9.10.0",
|
|
90
82
|
"event-target-shim": "5.0.1",
|
|
91
83
|
"express": "4.17.1",
|
|
92
84
|
"file-saver": "2.0.2",
|
|
@@ -113,7 +105,7 @@
|
|
|
113
105
|
"nyc": "15.1.0",
|
|
114
106
|
"papaparse": "5.3.0",
|
|
115
107
|
"portal-vue": "2.1.7",
|
|
116
|
-
"rancher-icons": "rancher/icons#v2.0.
|
|
108
|
+
"rancher-icons": "rancher/icons#v2.0.14",
|
|
117
109
|
"require-extension-hooks": "0.3.3",
|
|
118
110
|
"require-extension-hooks-babel": "1.0.0",
|
|
119
111
|
"require-extension-hooks-vue": "3.0.0",
|
|
@@ -129,15 +121,15 @@
|
|
|
129
121
|
"typescript": "4.1.6",
|
|
130
122
|
"url-parse": "1.5.10",
|
|
131
123
|
"v-tooltip": "2.0.3",
|
|
132
|
-
"vue": "2.
|
|
124
|
+
"vue": "2.7.14",
|
|
133
125
|
"vue-clipboard2": "0.3.1",
|
|
134
126
|
"vue-codemirror": "4.0.6",
|
|
135
127
|
"vue-js-modal": "1.3.35",
|
|
136
128
|
"vue-resize": "0.4.5",
|
|
137
129
|
"vue-select": "3.18.3",
|
|
138
|
-
"vue-server-renderer": "2.
|
|
130
|
+
"vue-server-renderer": "2.7.14",
|
|
139
131
|
"vue-shortkey": "3.1.7",
|
|
140
|
-
"vue-template-compiler": "2.
|
|
132
|
+
"vue-template-compiler": "2.7.14",
|
|
141
133
|
"vue-virtual-scroll-list": "^2.3.4",
|
|
142
134
|
"vue2-transitions": "0.3.0",
|
|
143
135
|
"vuedraggable": "2.24.3",
|
package/pages/auth/setup.vue
CHANGED
|
@@ -281,8 +281,8 @@ export default {
|
|
|
281
281
|
|
|
282
282
|
<template v-if="mustChangePassword">
|
|
283
283
|
<p
|
|
284
|
+
v-clean-html="t(isFirstLogin ? 'setup.setPassword' : 'setup.newUserSetPassword', { username }, true)"
|
|
284
285
|
class="text-center mb-20 mt-20 setup-title"
|
|
285
|
-
v-html="t(isFirstLogin ? 'setup.setPassword' : 'setup.newUserSetPassword', { username }, true)"
|
|
286
286
|
/>
|
|
287
287
|
|
|
288
288
|
<Password
|
|
@@ -495,7 +495,7 @@ export default {
|
|
|
495
495
|
}
|
|
496
496
|
|
|
497
497
|
.landscape {
|
|
498
|
-
background-image: url('
|
|
498
|
+
background-image: url('~@shell/assets/images/pl/login-landscape.svg');
|
|
499
499
|
background-repeat: no-repeat;
|
|
500
500
|
background-size: cover;
|
|
501
501
|
background-position: center center;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ignoreVariables } from '@shell/pages/c/_cluster/apps/charts/install.helpers';
|
|
2
|
+
|
|
3
|
+
describe('fX: ignoreVariables', () => {
|
|
4
|
+
describe.each([['epinio', 'global.rbac.pspEnabled']])('given chart %p with path %p', (name, path) => {
|
|
5
|
+
it.each([
|
|
6
|
+
['v1.24.11+rke2r1'],
|
|
7
|
+
])('should not return variable path list if cluster has k8s version %p', (version) => {
|
|
8
|
+
const cluster = { kubernetesVersion: version };
|
|
9
|
+
const data = {
|
|
10
|
+
chart: { name },
|
|
11
|
+
values: { global: { rbac: { pspEnabled: undefined } } }
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const paths = ignoreVariables(cluster, data);
|
|
15
|
+
|
|
16
|
+
expect(paths).toStrictEqual([]);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it.each([
|
|
20
|
+
['v1.25.11+rke2r1'],
|
|
21
|
+
])('should return questions if cluster has k8s version %p', (version) => {
|
|
22
|
+
const cluster = { kubernetesVersion: version };
|
|
23
|
+
const data = {
|
|
24
|
+
chart: { name },
|
|
25
|
+
values: { global: { rbac: { pspEnabled: undefined } } }
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const paths = ignoreVariables(cluster, data);
|
|
29
|
+
|
|
30
|
+
expect(paths).toStrictEqual([path]);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -159,14 +159,14 @@ export default {
|
|
|
159
159
|
v-if="osWarning"
|
|
160
160
|
color="error"
|
|
161
161
|
>
|
|
162
|
-
<span v-html="osWarning" />
|
|
162
|
+
<span v-clean-html="osWarning" />
|
|
163
163
|
</Banner>
|
|
164
164
|
<Banner
|
|
165
165
|
v-for="msg in requires"
|
|
166
166
|
:key="msg"
|
|
167
167
|
color="error"
|
|
168
168
|
>
|
|
169
|
-
<span v-html="msg" />
|
|
169
|
+
<span v-clean-html="msg" />
|
|
170
170
|
</Banner>
|
|
171
171
|
|
|
172
172
|
<Banner
|
|
@@ -174,14 +174,14 @@ export default {
|
|
|
174
174
|
:key="msg"
|
|
175
175
|
color="warning"
|
|
176
176
|
>
|
|
177
|
-
<span v-html="msg" />
|
|
177
|
+
<span v-clean-html="msg" />
|
|
178
178
|
</Banner>
|
|
179
179
|
|
|
180
180
|
<Banner
|
|
181
181
|
v-if="targetedAppWarning"
|
|
182
182
|
color="warning"
|
|
183
183
|
>
|
|
184
|
-
<span v-html="targetedAppWarning" />
|
|
184
|
+
<span v-clean-html="targetedAppWarning" />
|
|
185
185
|
</Banner>
|
|
186
186
|
</div>
|
|
187
187
|
<div
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return list of variables to filter chart questions
|
|
3
|
+
*/
|
|
4
|
+
export const ignoreVariables = (cluster, data) => {
|
|
5
|
+
const pspChartMap = {
|
|
6
|
+
epinio: 'global.rbac.pspEnabled',
|
|
7
|
+
longhorn: 'enablePSP',
|
|
8
|
+
'rancher-alerting-drivers': 'global.cattle.psp.enabled',
|
|
9
|
+
neuvector: 'global.cattle.psp.enabled',
|
|
10
|
+
'prometheus-federator': 'global.rbac.pspEnabled',
|
|
11
|
+
};
|
|
12
|
+
const path = pspChartMap[data.chart.name];
|
|
13
|
+
|
|
14
|
+
if (path) {
|
|
15
|
+
const clusterVersion = cluster?.kubernetesVersion || '';
|
|
16
|
+
const version = clusterVersion.match(/\d+/g);
|
|
17
|
+
const isRequiredVersion = version?.length ? +version[0] === 1 && +version[1] < 25 : false;
|
|
18
|
+
|
|
19
|
+
// Provide path as question variable to be ignored
|
|
20
|
+
if (!isRequiredVersion) {
|
|
21
|
+
return [path];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return [];
|
|
26
|
+
};
|
|
@@ -32,6 +32,7 @@ import { CATALOG as CATALOG_ANNOTATIONS, PROJECT } from '@shell/config/labels-an
|
|
|
32
32
|
|
|
33
33
|
import { exceptionToErrorsArray } from '@shell/utils/error';
|
|
34
34
|
import { clone, diff, get, set } from '@shell/utils/object';
|
|
35
|
+
import { ignoreVariables } from './install.helpers';
|
|
35
36
|
import { findBy, insertAt } from '@shell/utils/array';
|
|
36
37
|
import Vue from 'vue';
|
|
37
38
|
import { saferDump } from '@shell/utils/create-yaml';
|
|
@@ -92,6 +93,7 @@ export default {
|
|
|
92
93
|
*/
|
|
93
94
|
await this.fetchChart();
|
|
94
95
|
|
|
96
|
+
await this.fetchAutoInstallInfo();
|
|
95
97
|
this.errors = [];
|
|
96
98
|
|
|
97
99
|
// If the chart doesn't contain system `systemDefaultRegistry` properties there's no point applying them
|
|
@@ -360,6 +362,7 @@ export default {
|
|
|
360
362
|
migratedApp: false,
|
|
361
363
|
defaultCmdOpts,
|
|
362
364
|
customCmdOpts: { ...defaultCmdOpts },
|
|
365
|
+
autoInstallInfo: [],
|
|
363
366
|
|
|
364
367
|
nameDisabled: false,
|
|
365
368
|
|
|
@@ -425,6 +428,13 @@ export default {
|
|
|
425
428
|
...mapGetters({ inStore: 'catalog/inStore', features: 'features/get' }),
|
|
426
429
|
mcm: mapFeature(MULTI_CLUSTER),
|
|
427
430
|
|
|
431
|
+
/**
|
|
432
|
+
* Return list of variables to filter chart questions
|
|
433
|
+
*/
|
|
434
|
+
ignoreVariables() {
|
|
435
|
+
return ignoreVariables(this.currentCluster, this.versionInfo);
|
|
436
|
+
},
|
|
437
|
+
|
|
428
438
|
namespaceIsNew() {
|
|
429
439
|
const all = this.$store.getters['cluster/all'](NAMESPACE);
|
|
430
440
|
const want = this.value?.metadata?.namespace;
|
|
@@ -799,7 +809,7 @@ export default {
|
|
|
799
809
|
}) : {};
|
|
800
810
|
|
|
801
811
|
if (provCluster.isRke2) { // isRke2 returns true for both RKE2 and K3s clusters.
|
|
802
|
-
const agentConfig = provCluster.spec
|
|
812
|
+
const agentConfig = provCluster.spec?.rkeConfig?.machineSelectorConfig?.find(x => !x.machineLabelSelector).config;
|
|
803
813
|
|
|
804
814
|
// If a cluster scoped registry exists,
|
|
805
815
|
// it should be used by default.
|
|
@@ -812,7 +822,7 @@ export default {
|
|
|
812
822
|
if (provCluster.isRke1) {
|
|
813
823
|
// For RKE1 clusters, the cluster scoped private registry is on the management
|
|
814
824
|
// cluster, not the provisioning cluster.
|
|
815
|
-
const rke1Registries = mgmCluster.spec
|
|
825
|
+
const rke1Registries = mgmCluster.spec?.rancherKubernetesEngineConfig?.privateRegistries;
|
|
816
826
|
|
|
817
827
|
if (rke1Registries?.length > 0) {
|
|
818
828
|
const defaultRegistry = rke1Registries.find((registry) => {
|
|
@@ -844,10 +854,8 @@ export default {
|
|
|
844
854
|
},
|
|
845
855
|
|
|
846
856
|
async loadValuesComponent() {
|
|
847
|
-
// TODO: Remove RELEASE_NAME. This is only in until the component annotation is added to the OPA Gatekeeper chart.
|
|
848
|
-
|
|
849
857
|
// The const component is a string, for example, 'monitoring'.
|
|
850
|
-
const component = this.version?.annotations?.[CATALOG_ANNOTATIONS.COMPONENT]
|
|
858
|
+
const component = this.version?.annotations?.[CATALOG_ANNOTATIONS.COMPONENT];
|
|
851
859
|
|
|
852
860
|
// Load a values component for the UI if it is named in the Helm chart.
|
|
853
861
|
if ( component ) {
|
|
@@ -872,7 +880,7 @@ export default {
|
|
|
872
880
|
},
|
|
873
881
|
|
|
874
882
|
async loadChartSteps() {
|
|
875
|
-
const component = this.version?.annotations?.[CATALOG_ANNOTATIONS.COMPONENT]
|
|
883
|
+
const component = this.version?.annotations?.[CATALOG_ANNOTATIONS.COMPONENT];
|
|
876
884
|
|
|
877
885
|
if ( component ) {
|
|
878
886
|
const steps = await this.$store.getters['catalog/chartSteps'](component);
|
|
@@ -1167,56 +1175,7 @@ export default {
|
|
|
1167
1175
|
|
|
1168
1176
|
const more = [];
|
|
1169
1177
|
|
|
1170
|
-
|
|
1171
|
-
An example value for auto is ["rancher-monitoring-crd=match"].
|
|
1172
|
-
It is an array of chart names that lets Rancher know of other
|
|
1173
|
-
charts that should be auto-installed at the same time.
|
|
1174
|
-
*/
|
|
1175
|
-
let auto = (this.version?.annotations?.[CATALOG_ANNOTATIONS.AUTO_INSTALL] || '').split(/\s*,\s*/).filter(x => !!x).reverse();
|
|
1176
|
-
|
|
1177
|
-
for ( const constraint of auto ) {
|
|
1178
|
-
const provider = this.$store.getters['catalog/versionSatisfying']({
|
|
1179
|
-
constraint,
|
|
1180
|
-
repoName: this.chart.repoName,
|
|
1181
|
-
repoType: this.chart.repoType,
|
|
1182
|
-
chartVersion: this.version.version,
|
|
1183
|
-
});
|
|
1184
|
-
|
|
1185
|
-
/*
|
|
1186
|
-
An example return value for "provider":
|
|
1187
|
-
[
|
|
1188
|
-
{
|
|
1189
|
-
"name": "rancher-monitoring-crd",
|
|
1190
|
-
"version": "100.1.3+up19.0.3",
|
|
1191
|
-
"description": "Installs the CRDs for rancher-monitoring.",
|
|
1192
|
-
"apiVersion": "v1",
|
|
1193
|
-
"annotations": {
|
|
1194
|
-
"catalog.cattle.io/certified": "rancher",
|
|
1195
|
-
"catalog.cattle.io/hidden": "true",
|
|
1196
|
-
"catalog.cattle.io/namespace": "cattle-monitoring-system",
|
|
1197
|
-
"catalog.cattle.io/release-name": "rancher-monitoring-crd"
|
|
1198
|
-
},
|
|
1199
|
-
"type": "application",
|
|
1200
|
-
"urls": [
|
|
1201
|
-
"https://192.168.0.18:8005/k8s/clusters/c-m-hhpg69fv/v1/catalog.cattle.io.clusterrepos/rancher-charts?chartName=rancher-monitoring-crd&link=chart&version=100.1.3%2Bup19.0.3"
|
|
1202
|
-
],
|
|
1203
|
-
"created": "2022-04-27T10:04:18.343124-07:00",
|
|
1204
|
-
"digest": "ecf07ba23a9cdaa7ffbbb14345d94ea1240b7f3b8e0ce9be4640e3e585c484e2",
|
|
1205
|
-
"key": "cluster/rancher-charts/rancher-monitoring-crd/100.1.3+up19.0.3",
|
|
1206
|
-
"repoType": "cluster",
|
|
1207
|
-
"repoName": "rancher-charts"
|
|
1208
|
-
}
|
|
1209
|
-
]
|
|
1210
|
-
*/
|
|
1211
|
-
|
|
1212
|
-
if ( provider ) {
|
|
1213
|
-
more.push(provider);
|
|
1214
|
-
} else {
|
|
1215
|
-
errors.push(`This chart requires ${ constraint } but no matching chart was found`);
|
|
1216
|
-
}
|
|
1217
|
-
}
|
|
1218
|
-
|
|
1219
|
-
auto = (this.version?.annotations?.[CATALOG_ANNOTATIONS.AUTO_INSTALL_GVK] || '').split(/\s*,\s*/).filter(x => !!x).reverse();
|
|
1178
|
+
const auto = (this.version?.annotations?.[CATALOG_ANNOTATIONS.AUTO_INSTALL_GVK] || '').split(/\s*,\s*/).filter(x => !!x).reverse();
|
|
1220
1179
|
|
|
1221
1180
|
for ( const gvr of auto ) {
|
|
1222
1181
|
const provider = this.$store.getters['catalog/versionProviding']({
|
|
@@ -1232,9 +1191,33 @@ export default {
|
|
|
1232
1191
|
}
|
|
1233
1192
|
}
|
|
1234
1193
|
|
|
1194
|
+
/* Chart custom UI components have the ability to edit CRD chart values eg gatekeeper-crd has values.enableRuntimeDefaultSeccompProfile
|
|
1195
|
+
like the main chart, only CRD values that differ from defaults should be sent on install/upgrade
|
|
1196
|
+
CRDs should be installed with the same global values as the main chart
|
|
1197
|
+
*/
|
|
1198
|
+
for (const versionInfo of this.autoInstallInfo) {
|
|
1199
|
+
// allValues are the values potentially changed in the installation ui: any previously customized values + defaults
|
|
1200
|
+
// values are default values from the chart
|
|
1201
|
+
const { allValues, values: crdValues } = versionInfo;
|
|
1202
|
+
|
|
1203
|
+
// only save crd values that differ from the defaults defined in chart values.yaml
|
|
1204
|
+
const customizedCrdValues = diff(crdValues, allValues);
|
|
1205
|
+
|
|
1206
|
+
// CRD globals should be overwritten by main chart globals
|
|
1207
|
+
// we want to avoid including globals present on crd values and not main chart values
|
|
1208
|
+
// that covers the scenario where a global value was customized on a previous install (and so is present in crd global vals) and the user has reverted it to default on this update (no longer present in main chart global vals)
|
|
1209
|
+
const crdValuesToInstall = { ...customizedCrdValues, global: values.global };
|
|
1210
|
+
|
|
1211
|
+
out.charts.unshift({
|
|
1212
|
+
chartName: versionInfo.chart.name,
|
|
1213
|
+
version: versionInfo.chart.version,
|
|
1214
|
+
releaseName: versionInfo.chart.annotations[CATALOG_ANNOTATIONS.RELEASE_NAME] || chart.name,
|
|
1215
|
+
projectId: this.project,
|
|
1216
|
+
values: crdValuesToInstall
|
|
1217
|
+
});
|
|
1218
|
+
}
|
|
1235
1219
|
/*
|
|
1236
|
-
'more' contains
|
|
1237
|
-
global and cattle values as the chart. It could also contain additional
|
|
1220
|
+
'more' contains additional
|
|
1238
1221
|
charts that may not be CRD charts but are also meant to be installed at
|
|
1239
1222
|
the same time.
|
|
1240
1223
|
*/
|
|
@@ -1368,7 +1351,7 @@ export default {
|
|
|
1368
1351
|
:key="msg"
|
|
1369
1352
|
color="error"
|
|
1370
1353
|
>
|
|
1371
|
-
<span v-html="msg" />
|
|
1354
|
+
<span v-clean-html="msg" />
|
|
1372
1355
|
</Banner>
|
|
1373
1356
|
|
|
1374
1357
|
<Banner
|
|
@@ -1376,7 +1359,7 @@ export default {
|
|
|
1376
1359
|
:key="msg"
|
|
1377
1360
|
color="warning"
|
|
1378
1361
|
>
|
|
1379
|
-
<span v-html="msg" />
|
|
1362
|
+
<span v-clean-html="msg" />
|
|
1380
1363
|
</Banner>
|
|
1381
1364
|
</div>
|
|
1382
1365
|
<div
|
|
@@ -1479,7 +1462,7 @@ export default {
|
|
|
1479
1462
|
v-if="isNamespaceNew && value.metadata.namespace.length"
|
|
1480
1463
|
color="info"
|
|
1481
1464
|
>
|
|
1482
|
-
<div v-html="t('catalog.install.steps.basics.createNamespace', {namespace: value.metadata.namespace}, true) " />
|
|
1465
|
+
<div v-clean-html="t('catalog.install.steps.basics.createNamespace', {namespace: value.metadata.namespace}, true) " />
|
|
1483
1466
|
</Banner>
|
|
1484
1467
|
</div>
|
|
1485
1468
|
</template>
|
|
@@ -1517,47 +1500,49 @@ export default {
|
|
|
1517
1500
|
</div>
|
|
1518
1501
|
</template>
|
|
1519
1502
|
<template #helmValues>
|
|
1520
|
-
<
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
{{ step2Description }}
|
|
1526
|
-
</Banner>
|
|
1527
|
-
<div class="step__values__controls">
|
|
1528
|
-
<ButtonGroup
|
|
1529
|
-
v-model="preFormYamlOption"
|
|
1530
|
-
:options="formYamlOptions"
|
|
1531
|
-
inactive-class="bg-disabled btn-sm"
|
|
1532
|
-
active-class="bg-primary btn-sm"
|
|
1533
|
-
:disabled="preFormYamlOption != formYamlOption"
|
|
1534
|
-
/>
|
|
1535
|
-
<div class="step__values__controls--spacer">
|
|
1536
|
-
|
|
1537
|
-
</div>
|
|
1538
|
-
<ButtonGroup
|
|
1539
|
-
v-if="showDiff"
|
|
1540
|
-
v-model="diffMode"
|
|
1541
|
-
:options="yamlDiffModeOptions"
|
|
1542
|
-
inactive-class="bg-disabled btn-sm"
|
|
1543
|
-
active-class="bg-primary btn-sm"
|
|
1544
|
-
/>
|
|
1545
|
-
<div
|
|
1546
|
-
v-if="hasReadme && !showingReadmeWindow"
|
|
1547
|
-
class="btn-group"
|
|
1503
|
+
<div class="sticky-header">
|
|
1504
|
+
<Banner
|
|
1505
|
+
v-if="step2Description"
|
|
1506
|
+
color="info"
|
|
1507
|
+
class="description"
|
|
1548
1508
|
>
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1509
|
+
{{ step2Description }}
|
|
1510
|
+
</Banner>
|
|
1511
|
+
<div class="step__values__controls">
|
|
1512
|
+
<ButtonGroup
|
|
1513
|
+
v-model="preFormYamlOption"
|
|
1514
|
+
:options="formYamlOptions"
|
|
1515
|
+
inactive-class="bg-disabled btn-sm"
|
|
1516
|
+
active-class="bg-primary btn-sm"
|
|
1517
|
+
:disabled="preFormYamlOption != formYamlOption"
|
|
1518
|
+
/>
|
|
1519
|
+
<div class="step__values__controls--spacer">
|
|
1520
|
+
|
|
1521
|
+
</div>
|
|
1522
|
+
<ButtonGroup
|
|
1523
|
+
v-if="showDiff"
|
|
1524
|
+
v-model="diffMode"
|
|
1525
|
+
:options="yamlDiffModeOptions"
|
|
1526
|
+
inactive-class="bg-disabled btn-sm"
|
|
1527
|
+
active-class="bg-primary btn-sm"
|
|
1528
|
+
/>
|
|
1529
|
+
<div
|
|
1530
|
+
v-if="hasReadme && !showingReadmeWindow"
|
|
1531
|
+
class="btn-group"
|
|
1553
1532
|
>
|
|
1554
|
-
|
|
1555
|
-
|
|
1533
|
+
<button
|
|
1534
|
+
type="button"
|
|
1535
|
+
class="btn bg-primary btn-sm"
|
|
1536
|
+
@click="showSlideIn = !showSlideIn"
|
|
1537
|
+
>
|
|
1538
|
+
{{ t('catalog.install.steps.helmValues.chartInfo.button') }}
|
|
1539
|
+
</button>
|
|
1540
|
+
</div>
|
|
1556
1541
|
</div>
|
|
1557
1542
|
</div>
|
|
1558
1543
|
<div class="scroll__container">
|
|
1559
1544
|
<div class="scroll__content">
|
|
1560
|
-
<!-- Values (as Custom Component) -->
|
|
1545
|
+
<!-- Values (as Custom Component in ./shell/charts/) -->
|
|
1561
1546
|
<template v-if="valuesComponent && showValuesComponent">
|
|
1562
1547
|
<Tabbed
|
|
1563
1548
|
v-if="componentHasTabs"
|
|
@@ -1576,6 +1561,7 @@ export default {
|
|
|
1576
1561
|
:existing="existing"
|
|
1577
1562
|
:version="version"
|
|
1578
1563
|
:version-info="versionInfo"
|
|
1564
|
+
:auto-install-info="autoInstallInfo"
|
|
1579
1565
|
@warn="e=>errors.push(e)"
|
|
1580
1566
|
@register-before-hook="registerBeforeHook"
|
|
1581
1567
|
@register-after-hook="registerAfterHook"
|
|
@@ -1592,13 +1578,15 @@ export default {
|
|
|
1592
1578
|
:existing="existing"
|
|
1593
1579
|
:version="version"
|
|
1594
1580
|
:version-info="versionInfo"
|
|
1581
|
+
:auto-install-info="autoInstallInfo"
|
|
1595
1582
|
@warn="e=>errors.push(e)"
|
|
1596
1583
|
@register-before-hook="registerBeforeHook"
|
|
1597
1584
|
@register-after-hook="registerAfterHook"
|
|
1598
1585
|
/>
|
|
1599
1586
|
</template>
|
|
1600
1587
|
</template>
|
|
1601
|
-
|
|
1588
|
+
|
|
1589
|
+
<!-- Values (as Questions, abstracted component based on question.yaml configuration from repositories) -->
|
|
1602
1590
|
<Tabbed
|
|
1603
1591
|
v-else-if="hasQuestions && showQuestions"
|
|
1604
1592
|
ref="tabs"
|
|
@@ -1612,6 +1600,7 @@ export default {
|
|
|
1612
1600
|
:in-store="inStore"
|
|
1613
1601
|
:mode="mode"
|
|
1614
1602
|
:source="versionInfo"
|
|
1603
|
+
:ignore-variables="ignoreVariables"
|
|
1615
1604
|
tabbed="multiple"
|
|
1616
1605
|
:target-namespace="targetNamespace"
|
|
1617
1606
|
/>
|
|
@@ -1802,17 +1791,17 @@ export default {
|
|
|
1802
1791
|
{{ t('catalog.install.error.legacy.label', { legacyType: mcapp ? legacyDefs.mcm : legacyDefs.legacy }, true) }}
|
|
1803
1792
|
</span>
|
|
1804
1793
|
<template v-if="!legacyEnabled">
|
|
1805
|
-
<span v-html="t('catalog.install.error.legacy.enableLegacy.prompt', true)" />
|
|
1794
|
+
<span v-clean-html="t('catalog.install.error.legacy.enableLegacy.prompt', true)" />
|
|
1806
1795
|
<nuxt-link :to="legacyFeatureRoute">
|
|
1807
1796
|
{{ t('catalog.install.error.legacy.enableLegacy.goto') }}
|
|
1808
1797
|
</nuxt-link>
|
|
1809
1798
|
</template>
|
|
1810
1799
|
<template v-else-if="mcapp">
|
|
1811
|
-
<span v-html="t('catalog.install.error.legacy.mcmNotSupported')" />
|
|
1800
|
+
<span v-clean-html="t('catalog.install.error.legacy.mcmNotSupported')" />
|
|
1812
1801
|
</template>
|
|
1813
1802
|
<template v-else>
|
|
1814
1803
|
<nuxt-link :to="legacyAppRoute">
|
|
1815
|
-
<span v-html="t('catalog.install.error.legacy.navigate')" />
|
|
1804
|
+
<span v-clean-html="t('catalog.install.error.legacy.navigate')" />
|
|
1816
1805
|
</nuxt-link>
|
|
1817
1806
|
</template>
|
|
1818
1807
|
</Banner>
|
|
@@ -1971,8 +1960,6 @@ export default {
|
|
|
1971
1960
|
.scroll {
|
|
1972
1961
|
&__container {
|
|
1973
1962
|
$yaml-height: 200px;
|
|
1974
|
-
display: flex;
|
|
1975
|
-
flex: 1;
|
|
1976
1963
|
min-height: $yaml-height;
|
|
1977
1964
|
height: 0;
|
|
1978
1965
|
}
|
|
@@ -2071,4 +2058,13 @@ export default {
|
|
|
2071
2058
|
margin-top: 5px;
|
|
2072
2059
|
}
|
|
2073
2060
|
|
|
2061
|
+
.sticky-header {
|
|
2062
|
+
position: sticky;
|
|
2063
|
+
top: 0;
|
|
2064
|
+
z-index: 10;
|
|
2065
|
+
display: flex;
|
|
2066
|
+
flex-direction: column;
|
|
2067
|
+
background: var(--primary-text);
|
|
2068
|
+
}
|
|
2069
|
+
|
|
2074
2070
|
</style>
|