@rancher/shell 0.3.0 → 0.3.1
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/styles/global/_button.scss +5 -1
- package/assets/styles/global/_columns.scss +4 -0
- package/assets/styles/global/_layout.scss +1 -2
- package/assets/styles/global/_select.scss +1 -4
- package/assets/styles/themes/_dark.scss +4 -4
- package/assets/styles/themes/_light.scss +4 -3
- package/assets/styles/themes/_suse.scss +1 -1
- package/assets/styles/vendor/vue-select.scss +4 -3
- package/assets/translations/en-us.yaml +669 -73
- package/assets/translations/zh-hans.yaml +547 -165
- package/chart/monitoring/steps/uninstall-v1.vue +2 -2
- package/cloud-credential/azure.vue +23 -0
- package/cloud-credential/harvester.vue +25 -62
- package/cloud-credential/pnap.vue +80 -0
- package/components/.DS_Store +0 -0
- package/components/AdvancedSection.vue +9 -2
- package/components/Alert.vue +2 -2
- package/components/ButtonDropdown.vue +0 -2
- package/components/ButtonGroup.vue +1 -0
- package/components/CollapsibleCard.vue +0 -1
- package/components/CruResource.vue +41 -4
- package/components/DetailTop.vue +58 -3
- package/components/DisableAuthProviderModal.vue +106 -0
- package/{rancher-components/components/Utils/DraggableZone → components}/DraggableZone.vue +0 -0
- package/components/ExplorerMembers.vue +253 -30
- package/components/ExplorerProjectsNamespaces.vue +77 -33
- package/components/GrowlManager.vue +3 -3
- package/components/IconOrSvg.vue +149 -0
- package/components/LogItem.vue +69 -0
- package/components/PodSecurityAdmission.vue +302 -0
- package/components/PromptModal.vue +1 -0
- package/components/ResourceDetail/Masthead.vue +54 -2
- package/components/ResourceDetail/index.vue +12 -5
- package/components/ResourceList/Masthead.vue +11 -1
- package/components/ResourceList/ResourceLoadingIndicator.vue +12 -2
- package/components/ResourceList/index.vue +53 -12
- package/components/ResourceList/resource-list.config.js +7 -0
- package/components/ResourceTable.vue +31 -6
- package/components/SimpleBox.vue +1 -1
- package/components/SortableTable/THead.vue +15 -5
- package/components/SortableTable/index.vue +21 -10
- package/components/Tabbed/index.vue +20 -15
- package/components/__tests__/.DS_Store +0 -0
- package/components/__tests__/AsyncButton.test.ts +140 -0
- package/components/__tests__/BackLink.test.ts +33 -0
- package/components/__tests__/ButtonGroup.test.ts +124 -0
- package/components/__tests__/ClusterBadge.test.ts +32 -0
- package/components/__tests__/CollapsibleCard.test.ts +64 -0
- package/components/__tests__/ConsumptionGauge.test.ts +88 -0
- package/components/__tests__/CruResource.test.ts +3 -2
- package/components/__tests__/FixedBanner.test.ts +129 -0
- package/components/__tests__/GrowlManager.test.ts +147 -0
- package/components/__tests__/NamespaceFilter.test.ts +33 -25
- package/components/__tests__/PercentageBar.test.ts +32 -0
- package/components/__tests__/PodSecurityAdmission.test.ts +398 -0
- package/components/auth/AuthBanner.vue +20 -10
- package/components/auth/RoleDetailEdit.vue +26 -17
- package/components/auth/SelectPrincipal.vue +36 -5
- package/components/form/ArrayList.vue +3 -35
- package/components/form/ArrayListGrouped.vue +13 -4
- package/components/form/ArrayListSelect.vue +5 -5
- package/components/form/Error.vue +8 -0
- package/components/form/KeyValue.vue +39 -7
- package/components/form/LabeledSelect.vue +5 -2
- package/components/form/Labels.vue +46 -16
- package/components/form/Members/ClusterPermissionsEditor.vue +17 -17
- package/components/form/Members/MembershipEditor.vue +12 -12
- package/components/form/NameNsDescription.vue +1 -1
- package/components/form/NodeScheduling.vue +1 -1
- package/components/form/Probe.vue +3 -3
- package/components/form/ResourceQuota/Project.vue +6 -6
- package/components/form/ResourceTabs/index.vue +1 -6
- package/components/form/Security.vue +7 -6
- package/components/form/Select.vue +3 -2
- package/components/form/SelectOrCreateAuthSecret.vue +22 -29
- package/components/form/ServicePorts.vue +8 -0
- package/components/form/WorkloadPorts.vue +7 -1
- package/components/form/__tests__/ArrayList.test.ts +74 -0
- package/components/form/__tests__/ArrayListGrouped.test.ts +6 -4
- package/components/formatter/Checked.vue +1 -1
- package/components/formatter/ClusterLink.vue +5 -0
- package/components/formatter/IconIsDefault.vue +2 -2
- package/components/formatter/InternalExternalIP.vue +11 -8
- package/components/formatter/LiveDuration.vue +78 -0
- package/components/formatter/WorkloadHealthScale.vue +5 -3
- package/components/nav/Header.vue +6 -3
- package/components/nav/NamespaceFilter.vue +146 -63
- package/components/nav/TopLevelMenu.vue +22 -19
- package/components/nav/WindowManager/ContainerLogs.vue +83 -126
- package/components/nav/WindowManager/ContainerShell.vue +9 -7
- package/components/nav/WindowManager/Window.vue +2 -0
- package/components/nav/WindowManager/index.vue +10 -0
- package/config/elemental-types.js +9 -0
- package/config/features.js +2 -0
- package/config/home-links.js +4 -1
- package/config/pod-security-admission.ts +82 -0
- package/config/product/apps.js +1 -1
- package/config/product/auth.js +6 -5
- package/config/product/explorer.js +6 -6
- package/config/product/fleet.js +1 -1
- package/config/product/manager.js +6 -2
- package/config/secret.js +0 -1
- package/config/settings.ts +26 -9
- package/config/table-headers.js +22 -11
- package/config/types.js +4 -1
- package/content/docs/zh-hans/getting-started.md +113 -137
- package/content/docs/zh-hans/whats-new.md +8 -46
- package/creators/pkg/package-lock.json +37 -0
- package/creators/pkg/package.json +1 -1
- package/detail/catalog.cattle.io.app.vue +1 -1
- package/detail/pod.vue +1 -1
- package/detail/provisioning.cattle.io.cluster.vue +35 -9
- package/detail/service.vue +2 -9
- package/detail/workload/index.vue +0 -1
- package/dialog/AddClusterMemberDialog.vue +22 -28
- package/dialog/AddProjectMemberDialog.vue +53 -9
- package/dialog/DiagnosticTimingsDialog.vue +8 -7
- package/dialog/DrainNode.vue +44 -48
- package/dialog/ForceMachineRemoveDialog.vue +5 -7
- package/dialog/GenericPrompt.vue +15 -20
- package/dialog/RollbackWorkloadDialog.vue +15 -46
- package/dialog/RotateCertificatesDialog.vue +5 -7
- package/dialog/RotateEncryptionKeyDialog.vue +5 -9
- package/dialog/SaveAsRKETemplateDialog.vue +5 -13
- package/dialog/ScaleMachineDownDialog.vue +1 -1
- package/dialog/ScalePoolDownDialog.vue +121 -0
- package/edit/__tests__/management.cattle.io.setting.test.ts +3 -3
- package/edit/auth/azuread.vue +16 -16
- package/edit/auth/github.vue +8 -0
- package/edit/auth/googleoauth.vue +10 -1
- package/edit/auth/ldap/index.vue +10 -0
- package/edit/auth/oidc.vue +10 -0
- package/edit/auth/saml.vue +10 -0
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +1 -1
- package/edit/cloudcredential.vue +3 -7
- package/edit/logging-flow/Match.vue +39 -8
- package/edit/logging-flow/index.vue +27 -4
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +107 -0
- package/edit/management.cattle.io.project.vue +8 -1
- package/edit/management.cattle.io.setting.vue +5 -2
- package/edit/management.cattle.io.user.vue +7 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +23 -7
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +2 -2
- package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +14 -6
- package/edit/namespace.vue +18 -4
- package/edit/networking.k8s.io.ingress/Certificate.vue +1 -0
- package/edit/networking.k8s.io.ingress/IngressClass.vue +8 -6
- package/edit/networking.k8s.io.ingress/RulePath.vue +12 -6
- package/edit/networking.k8s.io.ingress/index.vue +8 -6
- package/edit/persistentvolume/index.vue +30 -27
- package/edit/persistentvolume/plugins/cephfs.vue +29 -29
- package/edit/persistentvolume/plugins/csi.vue +102 -62
- package/edit/persistentvolume/plugins/fc.vue +19 -19
- package/edit/persistentvolume/plugins/iscsi.vue +45 -45
- package/edit/persistentvolume/plugins/rbd.vue +39 -39
- package/edit/persistentvolumeclaim.vue +78 -75
- package/edit/provisioning.cattle.io.cluster/MachinePool.vue +11 -7
- package/edit/provisioning.cattle.io.cluster/RegistryConfigs.vue +10 -1
- package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +87 -27
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +3 -6
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +93 -0
- package/edit/provisioning.cattle.io.cluster/import.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/index.vue +29 -6
- package/edit/provisioning.cattle.io.cluster/rke2.vue +440 -152
- package/edit/secret/index.vue +3 -7
- package/edit/service.vue +3 -1
- package/edit/storage.k8s.io.storageclass/index.vue +100 -16
- package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +114 -0
- package/edit/workload/__tests__/index.test.ts +98 -0
- package/edit/workload/index.vue +58 -8
- package/edit/workload/mixins/workload.js +107 -70
- package/edit/workload/storage/ContainerMountPaths.vue +0 -10
- package/edit/workload/storage/emptyDir.vue +88 -0
- package/edit/workload/storage/ephemeralVolume/index.vue +1 -1
- package/edit/workload/storage/index.vue +8 -0
- package/edit/workload/storage/persistentVolumeClaim/index.vue +1 -1
- package/layouts/default.vue +57 -44
- package/list/__tests__/workload.test.ts +5 -2
- package/list/catalog.cattle.io.app.vue +1 -0
- package/list/cis.cattle.io.clusterscan.vue +1 -0
- package/list/fleet.cattle.io.bundle.vue +5 -6
- package/list/fleet.cattle.io.cluster.vue +6 -3
- package/list/fleet.cattle.io.clusterregistrationtoken.vue +5 -6
- package/list/fleet.cattle.io.gitrepo.vue +4 -9
- package/list/helm.cattle.io.projecthelmchart.vue +1 -5
- package/list/logging.banzaicloud.io.clusterflow.vue +4 -1
- package/list/logging.banzaicloud.io.flow.vue +6 -5
- package/list/management.cattle.io.cluster.vue +1 -0
- package/list/management.cattle.io.feature.vue +3 -4
- package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +47 -0
- package/list/management.cattle.io.setting.vue +2 -2
- package/list/management.cattle.io.user.vue +4 -10
- package/list/monitoring.coreos.com.alertmanagerconfig.vue +2 -7
- package/list/node.vue +8 -5
- package/list/persistentvolume.vue +3 -3
- package/list/persistentvolumeclaim.vue +3 -4
- package/list/provisioning.cattle.io.cluster.vue +18 -19
- package/list/service.vue +6 -14
- package/list/workload.vue +43 -38
- package/machine-config/azure.vue +429 -60
- package/machine-config/pnap.vue +288 -0
- package/mixins/auth-config.js +1 -3
- package/mixins/browser-tab-visibility.js +8 -14
- package/mixins/chart.js +1 -1
- package/mixins/create-edit-view/impl.js +4 -0
- package/mixins/create-edit-view/index.js +4 -2
- package/mixins/resource-fetch-namespaced.js +98 -0
- package/mixins/resource-fetch.js +79 -45
- package/mixins/resource-manager.js +1 -23
- package/models/apps.controllerrevision.js +7 -0
- package/models/apps.daemonset.js +18 -0
- package/models/apps.deployment.js +44 -0
- package/models/apps.replicaset.js +7 -0
- package/models/apps.statefulset.js +18 -0
- package/models/batch.job.js +7 -14
- package/models/cluster/node.js +10 -2
- package/models/cluster.x-k8s.io.machine.js +26 -4
- package/models/cluster.x-k8s.io.machinedeployment.js +12 -2
- package/models/event.js +7 -0
- package/models/logging.banzaicloud.io.flow.js +4 -0
- package/models/management.cattle.io.cluster.js +1 -1
- package/models/management.cattle.io.clusterroletemplatebinding.js +1 -1
- package/models/management.cattle.io.globalrole.js +2 -2
- package/models/management.cattle.io.node.js +37 -2
- package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.ts +4 -0
- package/models/management.cattle.io.project.js +30 -11
- package/models/management.cattle.io.setting.js +1 -1
- package/models/management.cattle.io.user.js +37 -1
- package/models/namespace.js +42 -5
- package/models/persistentvolume.js +14 -2
- package/models/pod.js +15 -0
- package/models/projectroletemplatebinding.js +7 -0
- package/models/provisioning.cattle.io.cluster.js +61 -10
- package/models/rke-machine.cattle.io.pnapmachinetemplate.js +15 -0
- package/models/service.js +14 -13
- package/models/storage.k8s.io.storageclass.js +33 -18
- package/models/workload.js +38 -7
- package/nuxt.config.js +27 -17
- package/package.json +7 -7
- package/pages/about.vue +14 -2
- package/pages/c/_cluster/apps/charts/index.vue +4 -3
- package/pages/c/_cluster/apps/charts/install.vue +59 -22
- package/pages/c/_cluster/auth/config/_id.vue +6 -0
- package/pages/c/_cluster/auth/config/index.vue +8 -6
- package/pages/c/_cluster/auth/group.principal/assign-edit.vue +1 -1
- package/pages/c/_cluster/auth/roles/index.vue +1 -1
- package/pages/c/_cluster/explorer/index.vue +12 -6
- package/pages/c/_cluster/longhorn/index.vue +1 -1
- package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +15 -4
- package/pages/c/_cluster/monitoring/index.vue +1 -1
- package/pages/c/_cluster/neuvector/index.vue +1 -1
- package/pages/c/_cluster/settings/performance.vue +48 -2
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +34 -1
- package/pages/c/_cluster/uiplugins/index.vue +28 -2
- package/pages/diagnostic.vue +5 -4
- package/pages/home.vue +105 -30
- package/pages/prefs.vue +23 -12
- package/pages/rio/mesh.vue +1 -1
- package/pkg/dynamic-importer.lib.js +8 -0
- package/pkg/vue.config.js +4 -0
- package/plugins/dashboard-store/__tests__/mutations.spec.js +406 -0
- package/plugins/dashboard-store/actions.js +32 -25
- package/plugins/dashboard-store/getters.js +50 -33
- package/plugins/dashboard-store/mutations.js +134 -28
- package/plugins/dashboard-store/resource-class.js +21 -41
- package/plugins/steve/actions.js +30 -0
- package/plugins/steve/caches/resourceCache.js +60 -0
- package/plugins/steve/getters.js +44 -1
- package/plugins/steve/mutations.js +97 -36
- package/plugins/steve/resourceWatcher.js +277 -0
- package/plugins/steve/schema.utils.js +25 -0
- package/plugins/steve/subscribe.js +288 -115
- package/plugins/steve/worker/index.js +17 -0
- package/plugins/steve/worker/web-worker.advanced.js +302 -0
- package/plugins/steve/{web-worker.steve-sub-worker.js → worker/web-worker.basic.js} +3 -44
- package/rancher-components/Card/Card.vue +3 -3
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
- package/rancher-components/StringList/StringList.test.ts +45 -420
- package/rancher-components/StringList/StringList.vue +1 -10
- package/rancher-components/components/Banner/Banner.test.ts +44 -0
- package/rancher-components/components/Banner/Banner.vue +129 -61
- package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +13 -22
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +8 -6
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +9 -9
- package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +0 -1
- package/rancher-components/components/StringList/StringList.test.ts +7 -7
- package/rancher-components/components/StringList/StringList.vue +21 -15
- package/scripts/test-plugins-build.sh +8 -0
- package/static/loading-indicator.html +1 -1
- package/store/index.js +54 -3
- package/store/plugins.js +0 -17
- package/store/pnap.js +128 -0
- package/store/prefs.js +4 -2
- package/store/type-map.js +55 -13
- package/types/pod-security-admission.ts +36 -0
- package/types/shell/index.d.ts +496 -396
- package/utils/__tests__/object.test.ts +17 -1
- package/utils/__tests__/pod-security-admission.test.ts +61 -0
- package/utils/async.ts +36 -0
- package/utils/color.js +45 -0
- package/utils/crypto/browserHashUtils.js +18 -0
- package/utils/dynamic-importer.js +8 -0
- package/utils/install-redirect.js +1 -1
- package/utils/object.js +24 -0
- package/utils/pod-security-admission.ts +39 -0
- package/utils/socket.js +61 -24
- package/utils/string.js +2 -0
- package/utils/svg-filter.js +301 -0
- package/utils/time.js +49 -0
- package/utils/validators/cidr.js +4 -0
- package/utils/validators/formRules/__tests__/index.test.ts +23 -3
- package/utils/validators/formRules/index.ts +14 -0
- package/config/product/harvester-manager.js +0 -162
- package/edit/harvesterhci.io.management.cluster.vue +0 -153
- package/list/harvesterhci.io.management.cluster.vue +0 -241
- package/machine-config/harvester.vue +0 -693
- package/models/harvesterhci.io.management.cluster.js +0 -228
- package/pages/c/_cluster/harvesterManager/index.vue +0 -24
- package/rancher-components/Card/Card.test.ts +0 -39
- package/rancher-components/Utils/DraggableZone/DraggableZone.vue +0 -181
- package/rancher-components/Utils/DraggableZone/index.ts +0 -1
- package/rancher-components/components/Utils/DraggableZone/index.ts +0 -1
|
@@ -95,9 +95,12 @@ export default {
|
|
|
95
95
|
this.errors = [];
|
|
96
96
|
|
|
97
97
|
// If the chart doesn't contain system `systemDefaultRegistry` properties there's no point applying them
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
if (this.showCustomRegistry) {
|
|
99
|
+
// Note: Cluster scoped registry is only supported for node driver clusters
|
|
100
|
+
this.clusterRegistry = await this.getClusterRegistry();
|
|
101
|
+
this.globalRegistry = await this.getGlobalRegistry();
|
|
102
|
+
this.defaultRegistrySetting = this.clusterRegistry || this.globalRegistry;
|
|
103
|
+
}
|
|
101
104
|
|
|
102
105
|
this.serverUrlSetting = await this.$store.dispatch('management/find', {
|
|
103
106
|
type: MANAGEMENT.SETTING,
|
|
@@ -282,13 +285,20 @@ export default {
|
|
|
282
285
|
*/
|
|
283
286
|
this.chartValues = merge(merge({}, this.versionInfo?.values || {}), userValues);
|
|
284
287
|
|
|
285
|
-
|
|
288
|
+
if (this.showCustomRegistry) {
|
|
289
|
+
/**
|
|
290
|
+
* The input to configure the registry should never be
|
|
291
|
+
* shown for third-party charts, which don't have Rancher
|
|
292
|
+
* global values.
|
|
293
|
+
*/
|
|
294
|
+
const existingRegistry = this.chartValues?.global?.systemDefaultRegistry || this.chartValues?.global?.cattle?.systemDefaultRegistry;
|
|
286
295
|
|
|
287
|
-
|
|
288
|
-
|
|
296
|
+
delete this.chartValues?.global?.systemDefaultRegistry;
|
|
297
|
+
delete this.chartValues?.global?.cattle?.systemDefaultRegistry;
|
|
289
298
|
|
|
290
|
-
|
|
291
|
-
|
|
299
|
+
this.customRegistrySetting = existingRegistry || this.defaultRegistrySetting;
|
|
300
|
+
this.showCustomRegistryInput = !!this.customRegistrySetting;
|
|
301
|
+
}
|
|
292
302
|
|
|
293
303
|
/* Serializes an object as a YAML document */
|
|
294
304
|
this.valuesYaml = saferDump(this.chartValues);
|
|
@@ -522,6 +532,10 @@ export default {
|
|
|
522
532
|
return this.formYamlOption === VALUES_STATE.YAML || ( !this.valuesComponent && !this.hasQuestions );
|
|
523
533
|
},
|
|
524
534
|
|
|
535
|
+
showingYamlDiff() {
|
|
536
|
+
return this.formYamlOption === VALUES_STATE.DIFF;
|
|
537
|
+
},
|
|
538
|
+
|
|
525
539
|
formYamlOptions() {
|
|
526
540
|
const options = [];
|
|
527
541
|
|
|
@@ -660,6 +674,22 @@ export default {
|
|
|
660
674
|
return null;
|
|
661
675
|
},
|
|
662
676
|
|
|
677
|
+
/**
|
|
678
|
+
* Check if the chart contains `systemDefaultRegistry` properties.
|
|
679
|
+
* If not we shouldn't apply the setting, because if the option
|
|
680
|
+
* is exposed for third-party Helm charts, it confuses users because
|
|
681
|
+
* it shows a private registry setting that is never used
|
|
682
|
+
* by the chart they are installing. If not hidden, the setting
|
|
683
|
+
* does nothing, and if the user changes it, it will look like
|
|
684
|
+
* there is a bug in the UI when it doesn't work, because UI is
|
|
685
|
+
* exposing a feature that the chart does not have.
|
|
686
|
+
*/
|
|
687
|
+
showCustomRegistry() {
|
|
688
|
+
const global = this.versionInfo?.values?.global || {};
|
|
689
|
+
|
|
690
|
+
return global.systemDefaultRegistry !== undefined || global.cattle?.systemDefaultRegistry !== undefined;
|
|
691
|
+
},
|
|
692
|
+
|
|
663
693
|
},
|
|
664
694
|
|
|
665
695
|
watch: {
|
|
@@ -763,7 +793,7 @@ export default {
|
|
|
763
793
|
|
|
764
794
|
if (hasPermissionToSeeProvCluster) {
|
|
765
795
|
const mgmCluster = this.$store.getters['currentCluster'];
|
|
766
|
-
const provCluster = mgmCluster ? await this.$store.dispatch('management/find', {
|
|
796
|
+
const provCluster = mgmCluster?.provClusterId ? await this.$store.dispatch('management/find', {
|
|
767
797
|
type: CAPI.RANCHER_CLUSTER,
|
|
768
798
|
id: mgmCluster.provClusterId
|
|
769
799
|
}) : {};
|
|
@@ -976,8 +1006,11 @@ export default {
|
|
|
976
1006
|
|
|
977
1007
|
setIfNotSet(cattle, 'clusterId', cluster?.id);
|
|
978
1008
|
setIfNotSet(cattle, 'clusterName', cluster?.nameDisplay);
|
|
979
|
-
|
|
980
|
-
|
|
1009
|
+
|
|
1010
|
+
if (this.showCustomRegistry) {
|
|
1011
|
+
set(cattle, 'systemDefaultRegistry', this.customRegistrySetting);
|
|
1012
|
+
set(global, 'systemDefaultRegistry', this.customRegistrySetting);
|
|
1013
|
+
}
|
|
981
1014
|
|
|
982
1015
|
setIfNotSet(global, 'cattle.systemProjectId', systemProjectId);
|
|
983
1016
|
setIfNotSet(cattle, 'url', serverUrl);
|
|
@@ -1062,7 +1095,7 @@ export default {
|
|
|
1062
1095
|
|
|
1063
1096
|
const errors = [];
|
|
1064
1097
|
|
|
1065
|
-
if ( this.showingYaml ) {
|
|
1098
|
+
if ( this.showingYaml || this.showingYamlDiff ) {
|
|
1066
1099
|
const { errors: yamlErrors } = this.applyYamlToValues();
|
|
1067
1100
|
|
|
1068
1101
|
errors.push(...yamlErrors);
|
|
@@ -1316,13 +1349,15 @@ export default {
|
|
|
1316
1349
|
color="info"
|
|
1317
1350
|
class="description"
|
|
1318
1351
|
>
|
|
1319
|
-
<
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1352
|
+
<div>
|
|
1353
|
+
<span>{{ step1Description }}</span>
|
|
1354
|
+
<span
|
|
1355
|
+
v-if="namespaceNewAllowed"
|
|
1356
|
+
class="mt-10"
|
|
1357
|
+
>
|
|
1358
|
+
{{ t('catalog.install.steps.basics.nsCreationDescription', {}, true) }}
|
|
1359
|
+
</span>
|
|
1360
|
+
</div>
|
|
1326
1361
|
</Banner>
|
|
1327
1362
|
<div
|
|
1328
1363
|
v-if="requires.length || warnings.length"
|
|
@@ -1417,6 +1452,7 @@ export default {
|
|
|
1417
1452
|
/>
|
|
1418
1453
|
|
|
1419
1454
|
<Checkbox
|
|
1455
|
+
v-if="showCustomRegistry"
|
|
1420
1456
|
v-model="showCustomRegistryInput"
|
|
1421
1457
|
class="mb-20"
|
|
1422
1458
|
:label="t('catalog.chart.registry.custom.checkBoxLabel')"
|
|
@@ -1440,10 +1476,11 @@ export default {
|
|
|
1440
1476
|
|
|
1441
1477
|
</div>
|
|
1442
1478
|
<Banner
|
|
1443
|
-
v-if="isNamespaceNew"
|
|
1479
|
+
v-if="isNamespaceNew && value.metadata.namespace.length"
|
|
1444
1480
|
color="info"
|
|
1445
|
-
|
|
1446
|
-
|
|
1481
|
+
>
|
|
1482
|
+
<div v-html="t('catalog.install.steps.basics.createNamespace', {namespace: value.metadata.namespace}, true) " />
|
|
1483
|
+
</Banner>
|
|
1447
1484
|
</div>
|
|
1448
1485
|
</template>
|
|
1449
1486
|
<template #clusterTplVersion>
|
|
@@ -19,6 +19,12 @@ export default {
|
|
|
19
19
|
// Ensure we re-evaluate the redirect in case this auth provider has been disabled
|
|
20
20
|
const authProvs = await authProvidersInfo(this.$store);
|
|
21
21
|
|
|
22
|
+
// Nuxt does not remove it's loading indicator - if we are not changing route, then hide it
|
|
23
|
+
// https://nuxtjs.org/docs/features/loading/
|
|
24
|
+
if (authProvs.enabledLocation) {
|
|
25
|
+
this.$nuxt.$loading.finish();
|
|
26
|
+
}
|
|
27
|
+
|
|
22
28
|
next(!authProvs.enabledLocation);
|
|
23
29
|
} else {
|
|
24
30
|
next();
|
|
@@ -91,12 +91,14 @@ export default {
|
|
|
91
91
|
:label="t('authConfig.noneEnabled')"
|
|
92
92
|
color="info"
|
|
93
93
|
>
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
94
|
+
<div>
|
|
95
|
+
{{ t('authConfig.localEnabled') }}
|
|
96
|
+
<nuxt-link :to="localUsersRoute">
|
|
97
|
+
{{ t('authConfig.manageLocal') }}
|
|
98
|
+
</nuxt-link>
|
|
99
|
+
<br>
|
|
100
|
+
{{ t('authConfig.noneEnabled') }}
|
|
101
|
+
</div>
|
|
100
102
|
</Banner>
|
|
101
103
|
<SelectIconGrid
|
|
102
104
|
:rows="rows"
|
|
@@ -247,9 +247,12 @@ export default {
|
|
|
247
247
|
},
|
|
248
248
|
|
|
249
249
|
cpuReserved() {
|
|
250
|
+
const total = parseSi(this.currentCluster?.status?.allocatable?.cpu);
|
|
251
|
+
|
|
250
252
|
return {
|
|
251
|
-
total
|
|
252
|
-
useful: parseSi(this.currentCluster?.status?.requested?.cpu)
|
|
253
|
+
total,
|
|
254
|
+
useful: parseSi(this.currentCluster?.status?.requested?.cpu),
|
|
255
|
+
units: this.t('clusterIndexPage.hardwareResourceGauge.units.cores', { count: total })
|
|
253
256
|
};
|
|
254
257
|
},
|
|
255
258
|
|
|
@@ -308,9 +311,12 @@ export default {
|
|
|
308
311
|
},
|
|
309
312
|
|
|
310
313
|
cpuUsed() {
|
|
314
|
+
const total = parseSi(this.currentCluster?.status?.capacity?.cpu);
|
|
315
|
+
|
|
311
316
|
return {
|
|
312
|
-
total
|
|
313
|
-
useful: this.metricAggregations?.cpu
|
|
317
|
+
total,
|
|
318
|
+
useful: this.metricAggregations?.cpu,
|
|
319
|
+
units: this.t('clusterIndexPage.hardwareResourceGauge.units.cores', { count: total })
|
|
314
320
|
};
|
|
315
321
|
},
|
|
316
322
|
|
|
@@ -394,7 +400,7 @@ export default {
|
|
|
394
400
|
|
|
395
401
|
<template>
|
|
396
402
|
<section class="dashboard">
|
|
397
|
-
<header
|
|
403
|
+
<header>
|
|
398
404
|
<div class="title">
|
|
399
405
|
<h1>
|
|
400
406
|
<t k="clusterIndexPage.header" />
|
|
@@ -504,6 +510,7 @@ export default {
|
|
|
504
510
|
:name="t('clusterIndexPage.hardwareResourceGauge.cores')"
|
|
505
511
|
:reserved="cpuReserved"
|
|
506
512
|
:used="cpuUsed"
|
|
513
|
+
:units="cpuReserved.units"
|
|
507
514
|
/>
|
|
508
515
|
<HardwareResourceGauge
|
|
509
516
|
:name="t('clusterIndexPage.hardwareResourceGauge.ram')"
|
|
@@ -712,7 +719,6 @@ export default {
|
|
|
712
719
|
|
|
713
720
|
> I {
|
|
714
721
|
text-align: center;
|
|
715
|
-
font-size: 20px;
|
|
716
722
|
padding: 5px 10px;
|
|
717
723
|
border-right: 1px solid var(--border);
|
|
718
724
|
}
|
|
@@ -156,7 +156,7 @@ export default {
|
|
|
156
156
|
// being saved. Therefore we take the save from the
|
|
157
157
|
// AlertmanagerConfig resource and pass it into the
|
|
158
158
|
// receiver config form.
|
|
159
|
-
saveOverride(buttonDone) {
|
|
159
|
+
async saveOverride(buttonDone) {
|
|
160
160
|
if (this.alertmanagerConfigResource.yamlError) {
|
|
161
161
|
this.alertmanagerConfigResource.errors = this.alertmanagerConfigResource.errors || [];
|
|
162
162
|
this.alertmanagerConfigResource.errors.push(this.alertmanagerConfigResource.yamlError);
|
|
@@ -166,8 +166,18 @@ export default {
|
|
|
166
166
|
return;
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
-
|
|
170
|
-
|
|
169
|
+
try {
|
|
170
|
+
await this.alertmanagerConfigResource.save(...arguments);
|
|
171
|
+
|
|
172
|
+
buttonDone(true);
|
|
173
|
+
|
|
174
|
+
this.redirectToAlertmanagerConfigDetail();
|
|
175
|
+
} catch (e) {
|
|
176
|
+
const msg = e?.message ? e.message : this.t('monitoring.alertmanagerConfig.error');
|
|
177
|
+
|
|
178
|
+
this.$refs.config.setError(msg);
|
|
179
|
+
buttonDone(false);
|
|
180
|
+
}
|
|
171
181
|
},
|
|
172
182
|
handleButtonGroupClick(event) {
|
|
173
183
|
if (event === this.yaml) {
|
|
@@ -226,7 +236,7 @@ export default {
|
|
|
226
236
|
|
|
227
237
|
<template>
|
|
228
238
|
<div>
|
|
229
|
-
<header class="header
|
|
239
|
+
<header class="header">
|
|
230
240
|
<div class="title">
|
|
231
241
|
<div class="primaryheader">
|
|
232
242
|
<h1>
|
|
@@ -271,6 +281,7 @@ export default {
|
|
|
271
281
|
/>
|
|
272
282
|
<ReceiverConfig
|
|
273
283
|
v-if="(currentView === config || currentView === detail) && alertmanagerConfigResource"
|
|
284
|
+
ref="config"
|
|
274
285
|
:value="receiverValue"
|
|
275
286
|
:mode="mode"
|
|
276
287
|
:alertmanager-config-id="alertmanagerConfigId"
|
|
@@ -133,7 +133,7 @@ export default {
|
|
|
133
133
|
<p>{{ t('performance.manualRefresh.description') }}</p>
|
|
134
134
|
<Banner
|
|
135
135
|
color="error"
|
|
136
|
-
label-key="performance.
|
|
136
|
+
label-key="performance.experimental"
|
|
137
137
|
/>
|
|
138
138
|
<Checkbox
|
|
139
139
|
v-model="value.manualRefresh.enabled"
|
|
@@ -163,7 +163,7 @@ export default {
|
|
|
163
163
|
<p>{{ t('performance.gc.description') }}</p>
|
|
164
164
|
<Banner
|
|
165
165
|
color="error"
|
|
166
|
-
label-key="performance.
|
|
166
|
+
label-key="performance.experimental"
|
|
167
167
|
/>
|
|
168
168
|
<Checkbox
|
|
169
169
|
v-model="value.garbageCollection.enabled"
|
|
@@ -237,6 +237,52 @@ export default {
|
|
|
237
237
|
</div>
|
|
238
238
|
</div>
|
|
239
239
|
</div>
|
|
240
|
+
<!-- Force NS filter -->
|
|
241
|
+
<div class="mt-40">
|
|
242
|
+
<h2>{{ t('performance.nsFiltering.label') }}</h2>
|
|
243
|
+
<p>{{ t('performance.nsFiltering.description') }}</p>
|
|
244
|
+
<Banner
|
|
245
|
+
color="error"
|
|
246
|
+
label-key="performance.experimental"
|
|
247
|
+
/>
|
|
248
|
+
<Checkbox
|
|
249
|
+
v-model="value.forceNsFilter.enabled"
|
|
250
|
+
:mode="mode"
|
|
251
|
+
:label="t('performance.nsFiltering.checkboxLabel')"
|
|
252
|
+
class="mt-10 mb-20"
|
|
253
|
+
:primary="true"
|
|
254
|
+
/>
|
|
255
|
+
<div class="ml-20">
|
|
256
|
+
<p :class="{ 'text-muted': !value.forceNsFilter.enabled }">
|
|
257
|
+
{{ t('performance.nsFiltering.count.description') }}
|
|
258
|
+
</p>
|
|
259
|
+
<LabeledInput
|
|
260
|
+
v-model="value.forceNsFilter.threshold"
|
|
261
|
+
:mode="mode"
|
|
262
|
+
:label="t('performance.nsFiltering.count.inputLabel')"
|
|
263
|
+
:disabled="!value.forceNsFilter.enabled"
|
|
264
|
+
class="input"
|
|
265
|
+
type="number"
|
|
266
|
+
min="0"
|
|
267
|
+
/>
|
|
268
|
+
</div>
|
|
269
|
+
</div>
|
|
270
|
+
<!-- Advanced Websocket Worker -->
|
|
271
|
+
<div class="mt-40">
|
|
272
|
+
<h2>{{ t('performance.advancedWorker.label') }}</h2>
|
|
273
|
+
<p>{{ t('performance.advancedWorker.description') }}</p>
|
|
274
|
+
<Banner
|
|
275
|
+
color="error"
|
|
276
|
+
label-key="performance.experimental"
|
|
277
|
+
/>
|
|
278
|
+
<Checkbox
|
|
279
|
+
v-model="value.advancedWorker.enabled"
|
|
280
|
+
:mode="mode"
|
|
281
|
+
:label="t('performance.advancedWorker.checkboxLabel')"
|
|
282
|
+
class="mt-10 mb-20"
|
|
283
|
+
:primary="true"
|
|
284
|
+
/>
|
|
285
|
+
</div>
|
|
240
286
|
</div>
|
|
241
287
|
</div>
|
|
242
288
|
<template v-for="err in errors">
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script>
|
|
2
|
+
import { mapGetters } from 'vuex';
|
|
2
3
|
import ChartReadme from '@shell/components/ChartReadme';
|
|
3
4
|
import { Banner } from '@components/Banner';
|
|
4
5
|
import LazyImage from '@shell/components/LazyImage';
|
|
@@ -34,6 +35,18 @@ export default {
|
|
|
34
35
|
};
|
|
35
36
|
},
|
|
36
37
|
|
|
38
|
+
computed: {
|
|
39
|
+
...mapGetters({ theme: 'prefs/theme' }),
|
|
40
|
+
|
|
41
|
+
applyDarkModeBg() {
|
|
42
|
+
if (this.theme === 'dark') {
|
|
43
|
+
return { 'dark-mode': true };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return {};
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
|
|
37
50
|
methods: {
|
|
38
51
|
show(info) {
|
|
39
52
|
this.info = info;
|
|
@@ -111,7 +124,10 @@ export default {
|
|
|
111
124
|
class="plugin-info-content"
|
|
112
125
|
>
|
|
113
126
|
<div class="plugin-header">
|
|
114
|
-
<div
|
|
127
|
+
<div
|
|
128
|
+
class="plugin-icon"
|
|
129
|
+
:class="applyDarkModeBg"
|
|
130
|
+
>
|
|
115
131
|
<LazyImage
|
|
116
132
|
v-if="info.icon"
|
|
117
133
|
:initial-src="defaultIcon"
|
|
@@ -254,6 +270,10 @@ export default {
|
|
|
254
270
|
|
|
255
271
|
transition: right .5s ease;
|
|
256
272
|
|
|
273
|
+
&__header {
|
|
274
|
+
text-transform: capitalize;
|
|
275
|
+
}
|
|
276
|
+
|
|
257
277
|
.plugin-info-content {
|
|
258
278
|
display: flex;
|
|
259
279
|
flex-direction: column;
|
|
@@ -285,10 +305,23 @@ export default {
|
|
|
285
305
|
font-size: 40px;
|
|
286
306
|
margin-right:10px;
|
|
287
307
|
color: #888;
|
|
308
|
+
width: 44px;
|
|
309
|
+
height: 44px;
|
|
310
|
+
|
|
311
|
+
&.dark-mode {
|
|
312
|
+
border-radius: calc(2 * var(--border-radius));
|
|
313
|
+
overflow: hidden;
|
|
314
|
+
background-color: white;
|
|
315
|
+
}
|
|
288
316
|
|
|
289
317
|
.plugin-icon-img {
|
|
290
318
|
height: 40px;
|
|
291
319
|
width: 40px;
|
|
320
|
+
-o-object-fit: contain;
|
|
321
|
+
object-fit: contain;
|
|
322
|
+
position: relative;
|
|
323
|
+
top: 2px;
|
|
324
|
+
left: 2px;
|
|
292
325
|
}
|
|
293
326
|
}
|
|
294
327
|
|
|
@@ -103,6 +103,15 @@ export default {
|
|
|
103
103
|
|
|
104
104
|
...mapGetters({ uiplugins: 'uiplugins/plugins' }),
|
|
105
105
|
...mapGetters({ uiErrors: 'uiplugins/errors' }),
|
|
106
|
+
...mapGetters({ theme: 'prefs/theme' }),
|
|
107
|
+
|
|
108
|
+
applyDarkModeBg() {
|
|
109
|
+
if (this.theme === 'dark') {
|
|
110
|
+
return { 'dark-mode': true };
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return {};
|
|
114
|
+
},
|
|
106
115
|
|
|
107
116
|
menuActions() {
|
|
108
117
|
const menuActions = [];
|
|
@@ -599,7 +608,10 @@ export default {
|
|
|
599
608
|
class="plugin"
|
|
600
609
|
@click="showPluginDetail(plugin)"
|
|
601
610
|
>
|
|
602
|
-
<div
|
|
611
|
+
<div
|
|
612
|
+
class="plugin-icon"
|
|
613
|
+
:class="applyDarkModeBg"
|
|
614
|
+
>
|
|
603
615
|
<LazyImage
|
|
604
616
|
v-if="plugin.icon"
|
|
605
617
|
:initial-src="defaultIcon"
|
|
@@ -781,7 +793,7 @@ export default {
|
|
|
781
793
|
|
|
782
794
|
> i {
|
|
783
795
|
color: var(--success);
|
|
784
|
-
font-size:
|
|
796
|
+
font-size: 14px;
|
|
785
797
|
font-weight: bold;
|
|
786
798
|
}
|
|
787
799
|
|
|
@@ -841,10 +853,23 @@ export default {
|
|
|
841
853
|
font-size: 40px;
|
|
842
854
|
margin-right:10px;
|
|
843
855
|
color: #888;
|
|
856
|
+
width: 44px;
|
|
857
|
+
height: 44px;
|
|
858
|
+
|
|
859
|
+
&.dark-mode {
|
|
860
|
+
border-radius: calc(2 * var(--border-radius));
|
|
861
|
+
overflow: hidden;
|
|
862
|
+
background-color: white;
|
|
863
|
+
}
|
|
844
864
|
|
|
845
865
|
.plugin-icon-img {
|
|
846
866
|
height: 40px;
|
|
847
867
|
width: 40px;
|
|
868
|
+
-o-object-fit: contain;
|
|
869
|
+
object-fit: contain;
|
|
870
|
+
position: relative;
|
|
871
|
+
top: 2px;
|
|
872
|
+
left: 2px;
|
|
848
873
|
}
|
|
849
874
|
}
|
|
850
875
|
|
|
@@ -875,6 +900,7 @@ export default {
|
|
|
875
900
|
font-size: 16px;
|
|
876
901
|
font-weight: bold;
|
|
877
902
|
margin-bottom: 5px;
|
|
903
|
+
text-transform: capitalize;
|
|
878
904
|
}
|
|
879
905
|
|
|
880
906
|
.plugin-badges {
|
package/pages/diagnostic.vue
CHANGED
|
@@ -284,12 +284,13 @@ export default {
|
|
|
284
284
|
},
|
|
285
285
|
|
|
286
286
|
promptDownload(btnCb) {
|
|
287
|
-
const resources = [{ downloadData: this.downloadData, gatherResponseTimes: this.gatherResponseTimes }];
|
|
288
|
-
|
|
289
287
|
if ( !this.responseTimes ) {
|
|
290
288
|
this.$store.dispatch('management/promptModal', {
|
|
291
|
-
component:
|
|
292
|
-
|
|
289
|
+
component: 'DiagnosticTimingsDialog',
|
|
290
|
+
componentProps: {
|
|
291
|
+
downloadData: this.downloadData,
|
|
292
|
+
gatherResponseTimes: this.gatherResponseTimes
|
|
293
|
+
}
|
|
293
294
|
})
|
|
294
295
|
.then(() => btnCb(true))
|
|
295
296
|
.catch(() => btnCb(false));
|