@rancher/shell 0.3.13 → 0.3.15
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/nutanix.svg +1 -0
- package/assets/translations/en-us.yaml +89 -2
- package/chart/gatekeeper.vue +2 -2
- package/chart/monitoring/alerting/index.vue +3 -3
- package/chart/monitoring/index.vue +2 -2
- package/chart/monitoring/prometheus/index.vue +1 -1
- package/chart/rancher-backup/index.vue +2 -2
- package/cloud-credential/harvester.vue +2 -2
- package/components/AssignTo.vue +1 -1
- package/components/AwsComplianceBanner.vue +1 -1
- package/components/BackLink.vue +7 -0
- package/components/BrandImage.vue +3 -3
- package/components/ClusterProviderIcon.vue +1 -1
- package/components/CommunityLinks.vue +2 -2
- package/components/ConsumptionGauge.vue +17 -2
- package/components/CruResource.vue +2 -1
- package/components/DashboardMetrics.vue +8 -0
- package/components/DetailTop.vue +1 -1
- package/components/ExplorerMembers.vue +8 -8
- package/components/ExplorerProjectsNamespaces.vue +9 -9
- package/components/FixedBanner.vue +1 -1
- package/components/GlobalRoleBindings.vue +11 -11
- package/components/GrafanaDashboard.vue +7 -1
- package/components/GrowlManager.vue +1 -1
- package/components/HarvesterServiceAddOnConfig.vue +117 -2
- package/components/IconOrSvg.vue +10 -3
- package/components/LandingPagePreference.vue +2 -2
- package/components/MoveModal.vue +1 -1
- package/components/PodSecurityAdmission.vue +3 -3
- package/components/ProgressBarMulti.vue +2 -2
- package/components/PromptRemove.vue +52 -28
- package/components/PromptRestore.vue +3 -3
- package/components/Questions/index.vue +5 -5
- package/components/RelatedWorkloadsTable.vue +1 -1
- package/components/ResourceList/Masthead.vue +1 -1
- package/components/ResourceTable.vue +3 -3
- package/components/ResourceYaml.vue +1 -1
- package/components/RoleBindings.vue +2 -2
- package/components/SingleClusterInfo.vue +1 -1
- package/components/SortableTable/actions.js +3 -3
- package/components/SortableTable/advanced-filtering.js +7 -7
- package/components/SortableTable/filtering.js +1 -1
- package/components/SortableTable/index.vue +9 -9
- package/components/SortableTable/selection.js +5 -5
- package/components/SortableTable/sorting.js +5 -5
- package/components/Tabbed/index.vue +7 -7
- package/components/TableSparkLine.vue +1 -1
- package/components/Wizard.vue +11 -23
- package/components/__tests__/Collapse.spec.ts +1 -1
- package/components/__tests__/CruResource.test.ts +74 -0
- package/components/__tests__/SimpleBox.spec.ts +1 -1
- package/components/auth/RoleDetailEdit.vue +7 -3
- package/components/auth/SelectPrincipal.vue +3 -3
- package/components/fleet/FleetResources.vue +1 -1
- package/components/fleet/FleetStatus.vue +4 -4
- package/components/fleet/FleetSummary.vue +1 -1
- package/components/fleet/ForceDirectedTreeChart/chartIcons.js +1 -1
- package/components/fleet/ForceDirectedTreeChart/index.vue +1 -1
- package/components/form/ArrayList.vue +11 -3
- package/components/form/ArrayListSelect.vue +2 -2
- package/components/form/FileSelector.vue +6 -0
- package/components/form/GitPicker.vue +528 -0
- package/components/form/KeyValue.vue +82 -41
- package/components/form/LabeledSelect.vue +2 -2
- package/components/form/MatchExpressions.vue +2 -2
- package/components/form/Members/ClusterMembershipEditor.vue +1 -2
- package/components/form/Members/ClusterPermissionsEditor.vue +6 -5
- package/components/form/Members/MembershipEditor.vue +4 -4
- package/components/form/Members/ProjectMembershipEditor.vue +1 -2
- package/components/form/NameNsDescription.vue +13 -6
- package/components/form/Networking.vue +2 -2
- package/components/form/NodeScheduling.vue +1 -1
- package/components/form/PodAffinity.vue +1 -1
- package/components/form/ProjectMemberEditor.vue +4 -4
- package/components/form/ResourceQuota/Namespace.vue +2 -2
- package/components/form/ResourceQuota/NamespaceRow.vue +2 -2
- package/components/form/ResourceQuota/Project.vue +1 -1
- package/components/form/ResourceQuota/shared.js +2 -2
- package/components/form/ResourceSelector.vue +1 -1
- package/components/form/ResourceTabs/index.vue +1 -1
- package/components/form/RuleSelector.vue +1 -1
- package/components/form/SecretSelector.vue +4 -4
- package/components/form/Select.vue +2 -2
- package/components/form/SelectOrCreateAuthSecret.vue +3 -3
- package/components/form/ServiceNameSelect.vue +1 -1
- package/components/form/ServicePorts.vue +1 -1
- package/components/form/ShellInput.vue +1 -1
- package/components/form/SimpleSecretSelector.vue +4 -4
- package/components/form/Taints.vue +1 -1
- package/components/form/ValueFromResource.vue +3 -3
- package/components/form/WorkloadPorts.vue +8 -7
- package/components/form/__tests__/Error.test.ts +1 -1
- package/components/form/__tests__/KeyValue.test.ts +21 -0
- package/components/formatter/ClusterLink.vue +1 -1
- package/components/formatter/ClusterProvider.vue +13 -2
- package/components/formatter/Endpoints.vue +1 -1
- package/components/formatter/FleetSummaryGraph.vue +2 -2
- package/components/formatter/IngressTarget.vue +2 -2
- package/components/formatter/PodImages.vue +1 -1
- package/components/formatter/PrincipalGroupBindings.vue +1 -1
- package/components/formatter/ReceiverIcons.vue +3 -3
- package/components/formatter/ServiceType.vue +1 -1
- package/components/formatter/WorkloadDetailEndpoints.vue +1 -1
- package/components/formatter/WorkloadHealthScale.vue +1 -1
- package/components/formatter/__tests__/LiveDate.test.ts +1 -1
- package/components/graph/Bar.vue +1 -1
- package/components/graph/LinePlot.vue +3 -3
- package/components/nav/Group.vue +2 -2
- package/components/nav/Header.vue +5 -5
- package/components/nav/NamespaceFilter.vue +14 -14
- package/components/nav/TopLevelMenu.vue +76 -11
- package/components/nav/WindowManager/ContainerLogs.vue +2 -2
- package/components/nav/WindowManager/ContainerShell.vue +1 -1
- package/components/nav/WorkspaceSwitcher.vue +1 -1
- package/config/home-links.js +4 -4
- package/config/labels-annotations.js +8 -8
- package/config/pod-security-admission.ts +1 -1
- package/config/product/auth.js +4 -4
- package/config/product/explorer.js +14 -0
- package/config/router.js +5 -0
- package/config/store.js +2 -0
- package/config/table-headers.js +13 -13
- package/config/uiplugins.js +8 -1
- package/core/plugin-routes.ts +3 -2
- package/core/plugin.ts +3 -3
- package/core/plugins.js +7 -7
- package/creators/app/files/.gitignore +0 -3
- package/creators/pkg/files/index.ts +1 -1
- package/detail/cis.cattle.io.clusterscan.vue +3 -3
- package/detail/fleet.cattle.io.bundle.vue +1 -1
- package/detail/helm.cattle.io.projecthelmchart.vue +16 -29
- package/detail/management.cattle.io.user.vue +12 -12
- package/detail/namespace.vue +4 -4
- package/detail/networking.k8s.io.ingress.vue +3 -3
- package/detail/node.vue +2 -2
- package/detail/provisioning.cattle.io.cluster.vue +9 -10
- package/detail/service.vue +1 -1
- package/detail/workload/index.vue +3 -3
- package/dialog/AddProjectMemberDialog.vue +2 -2
- package/dialog/DrainNode.vue +1 -1
- package/dialog/GenericPrompt.vue +9 -5
- package/dialog/RotateEncryptionKeyDialog.vue +2 -2
- package/dialog/ScaleMachineDownDialog.vue +2 -2
- package/edit/auth/azuread.vue +3 -3
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +5 -5
- package/edit/cis.cattle.io.clusterscan.vue +5 -5
- package/edit/cloudcredential.vue +4 -4
- package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +1 -1
- package/edit/constraints.gatekeeper.sh.constraint/index.vue +4 -4
- package/edit/fleet.cattle.io.gitrepo.vue +6 -6
- package/edit/helm.cattle.io.projecthelmchart.vue +3 -3
- package/edit/logging-flow/index.vue +4 -4
- package/edit/logging.banzaicloud.io.output/index.vue +3 -3
- package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/forward.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/logz.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/redis.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +1 -1
- package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -1
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +1 -1
- package/edit/management.cattle.io.project.vue +3 -3
- package/edit/management.cattle.io.projectroletemplatebinding.vue +2 -2
- package/edit/management.cattle.io.setting.vue +1 -1
- package/edit/management.cattle.io.user.vue +2 -2
- package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +2 -2
- package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +1 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +3 -3
- package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +5 -5
- package/edit/monitoring.coreos.com.prometheusrule/duration.js +1 -1
- package/edit/monitoring.coreos.com.receiver/auth.vue +2 -2
- package/edit/monitoring.coreos.com.receiver/tls.vue +3 -4
- package/edit/monitoring.coreos.com.receiver/types/__tests__/email.test.ts +53 -0
- package/edit/monitoring.coreos.com.receiver/types/email.vue +2 -0
- package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +3 -3
- package/edit/monitoring.coreos.com.receiver/types/webhook.add.vue +1 -1
- package/edit/monitoring.coreos.com.route.vue +2 -2
- package/edit/namespace.vue +21 -13
- package/edit/networking.k8s.io.ingress/Certificate.vue +2 -2
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
- package/edit/networking.k8s.io.ingress/RulePath.vue +2 -2
- package/edit/networking.k8s.io.ingress/Rules.vue +2 -2
- package/edit/networking.k8s.io.ingress/index.vue +4 -4
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +3 -3
- package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
- package/edit/persistentvolume/index.vue +4 -4
- package/edit/persistentvolumeclaim.vue +3 -3
- package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/index.vue +7 -7
- package/edit/provisioning.cattle.io.cluster/rke2.vue +28 -29
- package/edit/resources.cattle.io.backup.vue +2 -2
- package/edit/resources.cattle.io.restore.vue +3 -3
- package/edit/secret/generic.vue +1 -1
- package/edit/secret/index.vue +3 -3
- package/edit/service.vue +3 -21
- package/edit/serviceaccount.vue +2 -2
- package/edit/storage.k8s.io.storageclass/index.vue +4 -4
- package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +1 -1
- package/edit/token.vue +5 -5
- package/edit/workload/index.vue +1 -1
- package/edit/workload/mixins/workload.js +8 -8
- package/edit/workload/storage/ContainerMountPaths.vue +9 -9
- package/edit/workload/storage/Mount.vue +2 -2
- package/edit/workload/storage/csi/index.vue +1 -1
- package/edit/workload/storage/ephemeralVolume/index.vue +1 -1
- package/edit/workload/storage/index.vue +6 -6
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -2
- package/initialize/client.js +8 -8
- package/initialize/index.js +1 -4
- package/layouts/default.vue +38 -11
- package/list/catalog.cattle.io.clusterrepo.vue +9 -1
- package/list/cis.cattle.io.clusterscan.vue +1 -1
- package/list/fleet.cattle.io.cluster.vue +2 -2
- package/list/group.principal.vue +1 -1
- package/list/helm.cattle.io.projecthelmchart.vue +2 -2
- package/list/management.cattle.io.cluster.vue +1 -1
- package/list/management.cattle.io.feature.vue +1 -1
- package/list/management.cattle.io.user.vue +2 -2
- package/list/node.vue +5 -5
- package/list/provisioning.cattle.io.cluster.vue +4 -5
- package/machine-config/amazonec2.vue +2 -2
- package/machine-config/digitalocean.vue +4 -4
- package/machine-config/linode.vue +4 -4
- package/machine-config/vmwarevsphere.vue +12 -12
- package/middleware/authenticated.js +7 -6
- package/mixins/brand.js +1 -1
- package/mixins/chart.js +6 -6
- package/mixins/fetch.client.js +2 -2
- package/mixins/form-validation.js +7 -7
- package/mixins/resource-fetch-namespaced.js +1 -1
- package/mixins/resource-fetch.js +2 -2
- package/models/apps.statefulset.js +2 -2
- package/models/batch.cronjob.js +1 -1
- package/models/catalog.cattle.io.app.js +4 -4
- package/models/cis.cattle.io.clusterscan.js +1 -1
- package/models/cis.cattle.io.clusterscanbenchmark.js +1 -1
- package/models/cis.cattle.io.clusterscanreport.js +1 -1
- package/models/cloudcredential.js +1 -1
- package/models/cluster/node.js +5 -5
- package/models/cluster.x-k8s.io.machinedeployment.js +2 -2
- package/models/fleet.cattle.io.gitrepo.js +3 -3
- package/models/group.principal.js +4 -4
- package/models/helm.cattle.io.projecthelmchart.js +2 -2
- package/models/logging.banzaicloud.io.clusterflow.js +2 -2
- package/models/logging.banzaicloud.io.flow.js +5 -5
- package/models/logging.banzaicloud.io.output.js +2 -2
- package/models/management.cattle.io.cluster.js +10 -14
- package/models/management.cattle.io.globalrole.js +4 -4
- package/models/management.cattle.io.node.js +2 -2
- package/models/management.cattle.io.nodepool.js +3 -3
- package/models/management.cattle.io.nodetemplate.js +4 -4
- package/models/management.cattle.io.project.js +2 -2
- package/models/management.cattle.io.roletemplate.js +1 -1
- package/models/management.cattle.io.setting.js +1 -1
- package/models/management.cattle.io.user.js +5 -5
- package/models/monitoring.coreos.com.receiver.js +9 -9
- package/models/namespace.js +1 -1
- package/models/networking.k8s.io.ingress.js +5 -5
- package/models/persistentvolume.js +3 -3
- package/models/pod.js +3 -3
- package/models/provisioning.cattle.io.cluster.js +39 -27
- package/models/rbac.authorization.k8s.io.clusterrole.js +2 -2
- package/models/rbac.authorization.k8s.io.role.js +3 -3
- package/models/secret.js +1 -1
- package/models/service.js +2 -2
- package/models/storage.k8s.io.storageclass.js +2 -2
- package/models/token.js +1 -1
- package/models/workload.js +6 -6
- package/models/workload.service.js +5 -21
- package/package.json +2 -1
- package/pages/about.vue +9 -9
- package/pages/account/index.vue +2 -2
- package/pages/auth/login.vue +15 -12
- package/pages/auth/verify.vue +6 -0
- package/pages/c/_cluster/apps/charts/index.vue +4 -4
- package/pages/c/_cluster/apps/charts/install.vue +28 -20
- package/pages/c/_cluster/auth/roles/index.vue +9 -9
- package/pages/c/_cluster/explorer/index.vue +41 -16
- package/pages/c/_cluster/explorer/tools/index.vue +8 -8
- package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +1 -1
- package/pages/c/_cluster/fleet/index.vue +11 -11
- package/pages/c/_cluster/monitoring/index.vue +1 -1
- package/pages/c/_cluster/settings/links.vue +3 -3
- package/pages/c/_cluster/settings/performance.vue +1 -1
- package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +6 -6
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +3 -3
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +3 -3
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +1 -1
- package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +3 -3
- package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +6 -6
- package/pages/c/_cluster/uiplugins/UninstallDialog.vue +4 -4
- package/pages/c/_cluster/uiplugins/index.vue +22 -19
- package/pages/diagnostic.vue +6 -6
- package/pages/home.vue +3 -3
- package/pages/prefs.vue +2 -2
- package/pages/rio/mesh.vue +3 -3
- package/pages/support/index.vue +10 -1
- package/pkg/auto-import.js +1 -1
- package/pkg/tsconfig.json +1 -0
- package/pkg/vue.config.js +1 -1
- package/plugins/axios.js +1 -1
- package/plugins/clean-html-directive.js +1 -1
- package/plugins/dashboard-store/__tests__/mutations.spec.js +4 -4
- package/plugins/dashboard-store/actions.js +4 -4
- package/plugins/dashboard-store/getters.js +1 -1
- package/plugins/dashboard-store/index.js +1 -1
- package/plugins/dashboard-store/mutations.js +2 -2
- package/plugins/dashboard-store/resource-class.js +8 -8
- package/plugins/i18n.js +1 -1
- package/plugins/plugin.js +5 -1
- package/plugins/steve/actions.js +3 -3
- package/plugins/steve/getters.js +3 -3
- package/plugins/steve/hybrid-class.js +1 -1
- package/plugins/steve/mutations.js +1 -1
- package/plugins/steve/performanceTesting.js +1 -1
- package/plugins/steve/resourceWatcher.js +1 -1
- package/plugins/steve/subscribe.js +6 -6
- package/plugins/steve/worker/web-worker.basic.js +1 -1
- package/promptRemove/management.cattle.io.project.vue +3 -3
- package/promptRemove/mixin/roleDeletionCheck.js +4 -4
- package/promptRemove/pod.vue +1 -1
- package/rancher-components/StringList/StringList.test.ts +80 -0
- package/rancher-components/StringList/StringList.vue +577 -0
- package/rancher-components/StringList/index.ts +1 -0
- package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +2 -2
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +1 -1
- package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -1
- package/rancher-components/components/Form/Radio/RadioButton.vue +2 -2
- package/rancher-components/components/Form/Radio/RadioGroup.vue +2 -2
- package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +1 -1
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -7
- package/rancher-components/components/StringList/StringList.test.ts +10 -9
- package/rancher-components/components/StringList/StringList.vue +5 -5
- package/scripts/extension/helm/charts/ui-plugin-server/Chart.yaml +1 -1
- package/store/action-menu.js +4 -4
- package/store/auth.js +40 -7
- package/store/aws.js +1 -1
- package/store/catalog.js +12 -11
- package/store/digitalocean.js +4 -4
- package/store/features.js +1 -0
- package/store/github.js +70 -213
- package/store/gitlab.js +159 -0
- package/store/growl.js +1 -1
- package/store/i18n.js +7 -7
- package/store/index.js +63 -22
- package/store/linode.js +1 -1
- package/store/plugins.js +5 -5
- package/store/pnap.js +1 -1
- package/store/prefs.js +6 -6
- package/store/resource-fetch.js +3 -3
- package/store/type-map.js +61 -42
- package/store/uiplugins.ts +2 -1
- package/store/wm.js +5 -4
- package/tsconfig.default.json +10 -0
- package/tsconfig.json +2 -9
- package/types/shell/index.d.ts +12 -4
- package/utils/__tests__/version.test.ts +28 -0
- package/utils/alertmanagerconfig.js +4 -4
- package/utils/array.ts +4 -4
- package/utils/async.ts +1 -1
- package/utils/auth.js +3 -3
- package/utils/axios.js +5 -5
- package/utils/cluster.js +4 -3
- package/utils/color.js +10 -0
- package/utils/create-yaml.js +4 -4
- package/utils/crypto/browserHashUtils.js +1 -1
- package/utils/crypto/browserMd5.js +1 -1
- package/utils/crypto/browserSha1.js +1 -1
- package/utils/crypto/browserSha256.js +1 -1
- package/utils/crypto/index.js +3 -3
- package/utils/favicon.js +2 -3
- package/utils/gatekeeper/util.js +3 -3
- package/utils/gc/gc.ts +2 -2
- package/utils/git.ts +92 -0
- package/utils/grafana.js +4 -4
- package/utils/monitoring.js +2 -2
- package/utils/nuxt.js +2 -2
- package/utils/object.js +5 -5
- package/utils/pod-security-admission.ts +1 -1
- package/utils/projectAndNamespaceFiltering.utils.ts +1 -1
- package/utils/select.js +2 -2
- package/utils/selector.js +2 -2
- package/utils/settings.ts +17 -2
- package/utils/socket.js +30 -6
- package/utils/sort.js +1 -1
- package/utils/string.js +1 -1
- package/utils/url.ts +1 -1
- package/utils/validators/formRules/index.ts +3 -3
- package/utils/validators/role-template.js +4 -4
- package/utils/version.js +14 -1
- package/vue.config.js +19 -13
- package/components/form/GithubPicker.vue +0 -390
|
@@ -63,20 +63,20 @@ export default {
|
|
|
63
63
|
selectedNamespaceQuestions() {
|
|
64
64
|
const inStore = this.$store.getters['currentStore']();
|
|
65
65
|
|
|
66
|
-
const configMapRelationship = this.currentNamespace?.metadata?.relationships.find(relationship => relationship?.toType === 'configmap');
|
|
66
|
+
const configMapRelationship = this.currentNamespace?.metadata?.relationships.find((relationship) => relationship?.toType === 'configmap');
|
|
67
67
|
|
|
68
68
|
const questionsYaml = this.$store.getters[`${ inStore }/byId`](configMapRelationship?.toType, configMapRelationship?.toId)?.data?.['questions.yaml'];
|
|
69
69
|
|
|
70
70
|
return jsyaml.load(questionsYaml)?.questions;
|
|
71
71
|
},
|
|
72
72
|
currentNamespace() {
|
|
73
|
-
return this.namespaces.find(namespace => namespace.id === this.value?.metadata?.namespace);
|
|
73
|
+
return this.namespaces.find((namespace) => namespace.id === this.value?.metadata?.namespace);
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
|
|
77
77
|
methods: {
|
|
78
78
|
getNamespaceConfigMapId(namespace) {
|
|
79
|
-
return this.currentNamespace?.metadata?.relationships.find(relationship => relationship?.toType === 'configmap')?.toId;
|
|
79
|
+
return this.currentNamespace?.metadata?.relationships.find((relationship) => relationship?.toType === 'configmap')?.toId;
|
|
80
80
|
},
|
|
81
81
|
async getConfigMap(id) {
|
|
82
82
|
return await this.$store.dispatch('cluster/find', { type: CONFIG_MAP, id });
|
|
@@ -109,8 +109,8 @@ export default {
|
|
|
109
109
|
matches.push(emptyMatch(true));
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
const globalOutputRefs = (this.value.spec.globalOutputRefs || []).map(ref => ({ label: ref, value: ref }));
|
|
113
|
-
const localOutputRefs = (this.value.spec.localOutputRefs || []).map(ref => ({ label: ref, value: ref }));
|
|
112
|
+
const globalOutputRefs = (this.value.spec.globalOutputRefs || []).map((ref) => ({ label: ref, value: ref }));
|
|
113
|
+
const localOutputRefs = (this.value.spec.localOutputRefs || []).map((ref) => ({ label: ref, value: ref }));
|
|
114
114
|
|
|
115
115
|
return {
|
|
116
116
|
formSupported,
|
|
@@ -309,7 +309,7 @@ export default {
|
|
|
309
309
|
|
|
310
310
|
const select = match.select || {};
|
|
311
311
|
const exclude = match.exclude || {};
|
|
312
|
-
const allValuesAreEmpty = o => Object.values(o).every(isEmpty);
|
|
312
|
+
const allValuesAreEmpty = (o) => Object.values(o).every(isEmpty);
|
|
313
313
|
|
|
314
314
|
return allValuesAreEmpty(select) && allValuesAreEmpty(exclude);
|
|
315
315
|
});
|
|
@@ -329,7 +329,7 @@ export default {
|
|
|
329
329
|
cm.execCommand('unfold');
|
|
330
330
|
},
|
|
331
331
|
isTag(options, option) {
|
|
332
|
-
return !options.find(o => o.value === option.value);
|
|
332
|
+
return !options.find((o) => o.value === option.value);
|
|
333
333
|
}
|
|
334
334
|
}
|
|
335
335
|
};
|
|
@@ -37,7 +37,7 @@ export default {
|
|
|
37
37
|
|
|
38
38
|
set(this.value, 'spec', this.value.spec || {});
|
|
39
39
|
|
|
40
|
-
const providers = PROVIDERS.map(provider => ({
|
|
40
|
+
const providers = PROVIDERS.map((provider) => ({
|
|
41
41
|
...provider,
|
|
42
42
|
value: provider.name,
|
|
43
43
|
label: this.t(provider.labelKey)
|
|
@@ -89,7 +89,7 @@ export default {
|
|
|
89
89
|
return EDITOR_MODES;
|
|
90
90
|
},
|
|
91
91
|
enabledProviders() {
|
|
92
|
-
return this.providers.filter(p => p.enabled);
|
|
92
|
+
return this.providers.filter((p) => p.enabled);
|
|
93
93
|
},
|
|
94
94
|
isNamespaced() {
|
|
95
95
|
return this.value.type !== LOGGING?.CLUSTER_OUTPUT;
|
|
@@ -114,7 +114,7 @@ export default {
|
|
|
114
114
|
const t = this.$store.getters['i18n/t'];
|
|
115
115
|
|
|
116
116
|
if (this.selectedProvider === 'loki') {
|
|
117
|
-
const urlCheck = ['https://', 'http://'].some(checkValue => this.value.spec['loki'].url.toLowerCase().startsWith(checkValue));
|
|
117
|
+
const urlCheck = ['https://', 'http://'].some((checkValue) => this.value.spec['loki'].url.toLowerCase().startsWith(checkValue));
|
|
118
118
|
const isLokiHttps = this.value.spec['loki'].url ? urlCheck : undefined;
|
|
119
119
|
|
|
120
120
|
if (!isLokiHttps) {
|
|
@@ -71,7 +71,7 @@ export default (Vue as VueConstructor<Vue & InstanceType<typeof CreateEditView>>
|
|
|
71
71
|
if (!this.value.configuration) {
|
|
72
72
|
this.value.configuration = {
|
|
73
73
|
defaults: {},
|
|
74
|
-
exemptions: Object.assign({}, ...PSADimensions.map(dimension => ({ [dimension]: [] }))),
|
|
74
|
+
exemptions: Object.assign({}, ...PSADimensions.map((dimension) => ({ [dimension]: [] }))),
|
|
75
75
|
} as PSAConfig;
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -14,8 +14,8 @@ import NameNsDescription from '@shell/components/form/NameNsDescription';
|
|
|
14
14
|
import { MANAGEMENT } from '@shell/config/types';
|
|
15
15
|
import { NAME } from '@shell/config/product/explorer';
|
|
16
16
|
import { PROJECT_ID, _VIEW, _CREATE, _EDIT } from '@shell/config/query-params';
|
|
17
|
-
import ProjectMembershipEditor from '@shell/components/form/Members/ProjectMembershipEditor';
|
|
18
|
-
|
|
17
|
+
import ProjectMembershipEditor, { canViewProjectMembershipEditor } from '@shell/components/form/Members/ProjectMembershipEditor';
|
|
18
|
+
|
|
19
19
|
import { HARVESTER_NAME as HARVESTER } from '@shell/config/features';
|
|
20
20
|
import { Banner } from '@components/Banner';
|
|
21
21
|
|
|
@@ -109,7 +109,7 @@ export default {
|
|
|
109
109
|
|
|
110
110
|
const cur = this.value.status?.podSecurityPolicyTemplateId;
|
|
111
111
|
|
|
112
|
-
if ( cur && !out.find(x => x.value === cur) ) {
|
|
112
|
+
if ( cur && !out.find((x) => x.value === cur) ) {
|
|
113
113
|
out.unshift({ label: this.t('project.psp.current', { value: cur }), value: cur });
|
|
114
114
|
}
|
|
115
115
|
|
|
@@ -47,7 +47,7 @@ export default {
|
|
|
47
47
|
this.$set(this, 'principalId', principalId);
|
|
48
48
|
},
|
|
49
49
|
async saveOverride() {
|
|
50
|
-
const asyncBindings = this.binding.roleTemplateIds.map(roleTemplateId => this.$store.dispatch(`management/create`, {
|
|
50
|
+
const asyncBindings = this.binding.roleTemplateIds.map((roleTemplateId) => this.$store.dispatch(`management/create`, {
|
|
51
51
|
type: MANAGEMENT.PROJECT_ROLE_TEMPLATE_BINDING,
|
|
52
52
|
roleTemplateName: roleTemplateId,
|
|
53
53
|
principalName: this.member.principalId,
|
|
@@ -56,7 +56,7 @@ export default {
|
|
|
56
56
|
|
|
57
57
|
const bindings = await Promise.all(asyncBindings);
|
|
58
58
|
|
|
59
|
-
await Promise.all(bindings.map(binding => binding.save()));
|
|
59
|
+
await Promise.all(bindings.map((binding) => binding.save()));
|
|
60
60
|
await this.$store.dispatch(`management/findAll`, { type: MANAGEMENT.PROJECT_ROLE_TEMPLATE_BINDING, opt: { force: true } });
|
|
61
61
|
|
|
62
62
|
this.$router.replace(this.doneLocationOverride);
|
|
@@ -39,7 +39,7 @@ export default {
|
|
|
39
39
|
|
|
40
40
|
created() {
|
|
41
41
|
this.value.value = this.value.value || this.value.default;
|
|
42
|
-
this.enumOptions = this.setting?.kind === 'enum' ? this.setting.options.map(id => ({
|
|
42
|
+
this.enumOptions = this.setting?.kind === 'enum' ? this.setting.options.map((id) => ({
|
|
43
43
|
label: `advancedSettings.enum.${ this.value.id }.${ id }`,
|
|
44
44
|
value: id,
|
|
45
45
|
})) : [];
|
|
@@ -120,7 +120,7 @@ export default {
|
|
|
120
120
|
// Ensure username is unique (this does not happen in the backend)
|
|
121
121
|
const users = await this.$store.dispatch('management/findAll', { type: MANAGEMENT.USER });
|
|
122
122
|
|
|
123
|
-
if (users.find(u => u.username === this.form.username)) {
|
|
123
|
+
if (users.find((u) => u.username === this.form.username)) {
|
|
124
124
|
throw new Error(this.t('user.edit.credentials.username.exists'));
|
|
125
125
|
}
|
|
126
126
|
|
|
@@ -159,7 +159,7 @@ export default {
|
|
|
159
159
|
// - Fetching the norman user again sometimes shows the correct value, sometimes not
|
|
160
160
|
// - Even if the fetched norman user shows the correct value, it doesn't show up in the steve user
|
|
161
161
|
// - Looks like we re-request the stale version via socket?
|
|
162
|
-
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
162
|
+
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
// Save user updates
|
|
@@ -39,9 +39,9 @@ export default {
|
|
|
39
39
|
default: {},
|
|
40
40
|
},
|
|
41
41
|
];
|
|
42
|
-
const authTypes = authOptions.map(option => option.value);
|
|
42
|
+
const authTypes = authOptions.map((option) => option.value);
|
|
43
43
|
const authType =
|
|
44
|
-
authTypes.find(authType => !isEmpty(this.value[authType])) ||
|
|
44
|
+
authTypes.find((authType) => !isEmpty(this.value[authType])) ||
|
|
45
45
|
authTypes[0];
|
|
46
46
|
|
|
47
47
|
this.initializeType(authOptions, authType);
|
|
@@ -50,7 +50,7 @@ export default {
|
|
|
50
50
|
const defaultReceiverValues = {};
|
|
51
51
|
const receiverSchema = this.$store.getters['cluster/schemaFor'](MONITORING.SPOOFED.ALERTMANAGERCONFIG_RECEIVER_SPEC);
|
|
52
52
|
const routeSchema = this.$store.getters['cluster/schemaFor'](MONITORING.SPOOFED.ALERTMANAGERCONFIG_ROUTE_SPEC);
|
|
53
|
-
const receiverOptions = (this.value?.spec?.receivers || []).map(receiver => receiver.name);
|
|
53
|
+
const receiverOptions = (this.value?.spec?.receivers || []).map((receiver) => receiver.name);
|
|
54
54
|
|
|
55
55
|
return {
|
|
56
56
|
actionMenuTargetElement: null,
|
|
@@ -185,7 +185,7 @@ export default {
|
|
|
185
185
|
return {
|
|
186
186
|
duplicateName: () => {
|
|
187
187
|
const receiversArray = this.alertmanagerConfigResource.spec.receivers;
|
|
188
|
-
const receiverNamesArray = receiversArray.map(R => R.name);
|
|
188
|
+
const receiverNamesArray = receiversArray.map((R) => R.name);
|
|
189
189
|
const receiversSet = new Set(receiverNamesArray);
|
|
190
190
|
|
|
191
191
|
if (receiversArray.length !== receiversSet.size) {
|
|
@@ -65,7 +65,7 @@ export default {
|
|
|
65
65
|
this.$set(this.value, 'responders', this.value.responders || []);
|
|
66
66
|
|
|
67
67
|
const responders = this.value.responders.map((responder) => {
|
|
68
|
-
const target = TARGETS.find(target => responder[target.value]);
|
|
68
|
+
const target = TARGETS.find((target) => responder[target.value]);
|
|
69
69
|
|
|
70
70
|
return {
|
|
71
71
|
type: responder.type,
|
|
@@ -118,10 +118,10 @@ export default {
|
|
|
118
118
|
row.value = text;
|
|
119
119
|
},
|
|
120
120
|
typeLabel(type) {
|
|
121
|
-
return TYPES.find(t => t.value === type).label;
|
|
121
|
+
return TYPES.find((t) => t.value === type).label;
|
|
122
122
|
},
|
|
123
123
|
targetLabel(target) {
|
|
124
|
-
return TARGETS.find(t => t.value === target).label;
|
|
124
|
+
return TARGETS.find((t) => t.value === target).label;
|
|
125
125
|
},
|
|
126
126
|
updateApiKeySecretName(name) {
|
|
127
127
|
const existingKey = this.value.apiKey?.key || '';
|
|
@@ -51,18 +51,18 @@ export default {
|
|
|
51
51
|
recordingRules() {
|
|
52
52
|
const { value: rules } = this;
|
|
53
53
|
|
|
54
|
-
return rules.filter(rule => has(rule, 'record'));
|
|
54
|
+
return rules.filter((rule) => has(rule, 'record'));
|
|
55
55
|
},
|
|
56
56
|
alertingRules() {
|
|
57
57
|
const { value: rules } = this;
|
|
58
58
|
|
|
59
|
-
return rules.filter(rule => has(rule, 'alert'));
|
|
59
|
+
return rules.filter((rule) => has(rule, 'alert'));
|
|
60
60
|
},
|
|
61
61
|
customRules() {
|
|
62
62
|
const { value: rules } = this;
|
|
63
63
|
|
|
64
64
|
return rules.filter(
|
|
65
|
-
rule => !has(rule, 'alert') && !has(rule, 'record')
|
|
65
|
+
(rule) => !has(rule, 'alert') && !has(rule, 'record')
|
|
66
66
|
);
|
|
67
67
|
},
|
|
68
68
|
hideRecordingRulesOnView() {
|
|
@@ -77,12 +77,12 @@ export default {
|
|
|
77
77
|
disableAddRecord() {
|
|
78
78
|
const { value: rules } = this;
|
|
79
79
|
|
|
80
|
-
return rules.find(rule => has(rule, 'alert'));
|
|
80
|
+
return rules.find((rule) => has(rule, 'alert'));
|
|
81
81
|
},
|
|
82
82
|
disableAddAlert() {
|
|
83
83
|
const { value: rules } = this;
|
|
84
84
|
|
|
85
|
-
return rules.find(rule => has(rule, 'record'));
|
|
85
|
+
return rules.find((rule) => has(rule, 'record'));
|
|
86
86
|
},
|
|
87
87
|
},
|
|
88
88
|
|
|
@@ -21,7 +21,7 @@ export function toMilliseconds(input) {
|
|
|
21
21
|
|
|
22
22
|
if (d) {
|
|
23
23
|
const properties = d.slice(1);
|
|
24
|
-
const numberD = properties.map(value => ([null, undefined].includes(value) ? 0 : Number(value)));
|
|
24
|
+
const numberD = properties.map((value) => ([null, undefined].includes(value) ? 0 : Number(value)));
|
|
25
25
|
const data = {};
|
|
26
26
|
|
|
27
27
|
[
|
|
@@ -47,8 +47,8 @@ export default {
|
|
|
47
47
|
default: ''
|
|
48
48
|
}
|
|
49
49
|
];
|
|
50
|
-
const authTypes = authOptions.map(option => option.value);
|
|
51
|
-
const authType = authTypes.find(authType => !isEmpty(this.value[authType])) || authTypes[0];
|
|
50
|
+
const authTypes = authOptions.map((option) => option.value);
|
|
51
|
+
const authType = authTypes.find((authType) => !isEmpty(this.value[authType])) || authTypes[0];
|
|
52
52
|
|
|
53
53
|
this.initializeType(authOptions, authType);
|
|
54
54
|
|
|
@@ -35,10 +35,9 @@ export default {
|
|
|
35
35
|
<div class="row">
|
|
36
36
|
<div class="col span-12">
|
|
37
37
|
<h3>{{ t('monitoring.receiver.tls.label') }}</h3>
|
|
38
|
-
<Banner
|
|
39
|
-
v-clean-html="t('monitoring.receiver.tls.secretsBanner', {}, true)"
|
|
40
|
-
|
|
41
|
-
/>
|
|
38
|
+
<Banner color="info">
|
|
39
|
+
<span v-clean-html="t('monitoring.receiver.tls.secretsBanner', {}, true)" />
|
|
40
|
+
</Banner>
|
|
42
41
|
</div>
|
|
43
42
|
</div>
|
|
44
43
|
<div class="row mb-20">
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { mount } from '@vue/test-utils';
|
|
2
|
+
import Email from '@shell/edit/monitoring.coreos.com.receiver/types/email.vue';
|
|
3
|
+
|
|
4
|
+
describe('page: Routes and Receivers', () => {
|
|
5
|
+
it('should have host field with a valid integer value under Email form', () => {
|
|
6
|
+
const wrapper = mount(Email, {
|
|
7
|
+
propsData: {
|
|
8
|
+
mode: 'create',
|
|
9
|
+
value: {}
|
|
10
|
+
},
|
|
11
|
+
mocks: {
|
|
12
|
+
t: (text: string) => text, // Mock i18n global function used as alternative to the getter
|
|
13
|
+
$store: {
|
|
14
|
+
getters: {
|
|
15
|
+
'i18n/t': jest.fn(),
|
|
16
|
+
'i18n/exists': jest.fn()
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const host = wrapper.find('[data-testid="input-email-host"]');
|
|
23
|
+
|
|
24
|
+
host.setValue('10.2.300.3');
|
|
25
|
+
|
|
26
|
+
expect(host.exists()).toBe(true);
|
|
27
|
+
expect(host.element.value).toStrictEqual('10.2.300.3');
|
|
28
|
+
});
|
|
29
|
+
it('should have port field with a valid integer value under Email form', () => {
|
|
30
|
+
const wrapper = mount(Email, {
|
|
31
|
+
propsData: {
|
|
32
|
+
mode: 'create',
|
|
33
|
+
value: {}
|
|
34
|
+
},
|
|
35
|
+
mocks: {
|
|
36
|
+
t: (text: string) => text, // Mock i18n global function used as alternative to the getter
|
|
37
|
+
$store: {
|
|
38
|
+
getters: {
|
|
39
|
+
'i18n/t': jest.fn(),
|
|
40
|
+
'i18n/exists': jest.fn()
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const port = wrapper.find('[data-testid="input-email-port"]');
|
|
47
|
+
|
|
48
|
+
port.setValue('8080');
|
|
49
|
+
|
|
50
|
+
expect(port.exists()).toBe(true);
|
|
51
|
+
expect(port.element.value).toStrictEqual('8080');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -78,6 +78,7 @@ export default {
|
|
|
78
78
|
v-model="value.host"
|
|
79
79
|
:mode="mode"
|
|
80
80
|
label="Host"
|
|
81
|
+
data-testid="input-email-host"
|
|
81
82
|
placeholder="e.g. 192.168.1.121"
|
|
82
83
|
/>
|
|
83
84
|
</div>
|
|
@@ -86,6 +87,7 @@ export default {
|
|
|
86
87
|
v-model="value.port"
|
|
87
88
|
:mode="mode"
|
|
88
89
|
label="Port"
|
|
90
|
+
data-testid="input-email-port"
|
|
89
91
|
placeholder="e.g. 80"
|
|
90
92
|
/>
|
|
91
93
|
</div>
|
|
@@ -68,7 +68,7 @@ export default {
|
|
|
68
68
|
this.$set(this.value, 'responders', this.value.responders || []);
|
|
69
69
|
|
|
70
70
|
const responders = this.value.responders.map((responder) => {
|
|
71
|
-
const target = TARGETS.find(target => responder[target.value]);
|
|
71
|
+
const target = TARGETS.find((target) => responder[target.value]);
|
|
72
72
|
|
|
73
73
|
return {
|
|
74
74
|
type: responder.type,
|
|
@@ -117,10 +117,10 @@ export default {
|
|
|
117
117
|
row.value = text;
|
|
118
118
|
},
|
|
119
119
|
typeLabel(type) {
|
|
120
|
-
return TYPES.find(t => t.value === type).label;
|
|
120
|
+
return TYPES.find((t) => t.value === type).label;
|
|
121
121
|
},
|
|
122
122
|
targetLabel(target) {
|
|
123
|
-
return TARGETS.find(t => t.value === target).label;
|
|
123
|
+
return TARGETS.find((t) => t.value === target).label;
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
};
|
|
@@ -39,10 +39,10 @@ export default {
|
|
|
39
39
|
const receivers = this.$store.dispatch('cluster/findAll', { type: MONITORING.SPOOFED.RECEIVER });
|
|
40
40
|
const routes = this.$store.dispatch('cluster/findAll', { type: MONITORING.SPOOFED.ROUTE });
|
|
41
41
|
|
|
42
|
-
this.receiverOptions = (await receivers).map(receiver => receiver.spec.name);
|
|
42
|
+
this.receiverOptions = (await receivers).map((receiver) => receiver.spec.name);
|
|
43
43
|
|
|
44
44
|
if (this.isCreate) {
|
|
45
|
-
const nonRootRoutes = (await routes).filter(route => !route.isRoot);
|
|
45
|
+
const nonRootRoutes = (await routes).filter((route) => !route.isRoot);
|
|
46
46
|
|
|
47
47
|
this.$set(this.value.spec, 'name', createDefaultRouteName(nonRootRoutes.length));
|
|
48
48
|
}
|
package/edit/namespace.vue
CHANGED
|
@@ -39,7 +39,7 @@ export default {
|
|
|
39
39
|
if (this.$store.getters['management/schemaFor'](MANAGEMENT.PROJECT)) {
|
|
40
40
|
this.projects = await this.$store.dispatch('management/findAll', { type: MANAGEMENT.PROJECT });
|
|
41
41
|
|
|
42
|
-
this.project = this.projects.find(p => p.id.includes(this.projectName));
|
|
42
|
+
this.project = this.projects.find((p) => p.id.includes(this.projectName));
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
|
|
@@ -65,22 +65,18 @@ export default {
|
|
|
65
65
|
},
|
|
66
66
|
|
|
67
67
|
computed: {
|
|
68
|
-
...mapGetters(['
|
|
68
|
+
...mapGetters(['isStandaloneHarvester']),
|
|
69
69
|
|
|
70
70
|
isCreate() {
|
|
71
71
|
return this.mode === _CREATE;
|
|
72
72
|
},
|
|
73
73
|
|
|
74
|
-
isSingleHarvester() {
|
|
75
|
-
return this.$store.getters['currentProduct'].inStore === HARVESTER && this.isSingleProduct;
|
|
76
|
-
},
|
|
77
|
-
|
|
78
74
|
projectOpts() {
|
|
79
75
|
const clusterId = this.$store.getters['currentCluster'].id;
|
|
80
76
|
let projects = this.$store.getters['management/all'](MANAGEMENT.PROJECT);
|
|
81
77
|
|
|
82
78
|
// Filter out projects not for the current cluster
|
|
83
|
-
projects = projects.filter(c => c.spec?.clusterName === clusterId);
|
|
79
|
+
projects = projects.filter((c) => c.spec?.clusterName === clusterId);
|
|
84
80
|
const out = projects.map((project) => {
|
|
85
81
|
return {
|
|
86
82
|
label: project.nameDisplay,
|
|
@@ -101,16 +97,24 @@ export default {
|
|
|
101
97
|
},
|
|
102
98
|
|
|
103
99
|
showResourceQuota() {
|
|
104
|
-
return !this.
|
|
100
|
+
return (!this.isStandaloneHarvester) && Object.keys(this.project?.spec?.resourceQuota?.limit || {}).length > 0;
|
|
105
101
|
},
|
|
106
102
|
|
|
107
103
|
showContainerResourceLimit() {
|
|
108
|
-
return !this.
|
|
104
|
+
return !this.isStandaloneHarvester;
|
|
109
105
|
},
|
|
110
106
|
|
|
111
107
|
flatView() {
|
|
112
108
|
return (this.$route.query[FLAT_VIEW] || false);
|
|
113
|
-
}
|
|
109
|
+
},
|
|
110
|
+
|
|
111
|
+
showPodSecurityAdmission() {
|
|
112
|
+
return !this.isStandaloneHarvester;
|
|
113
|
+
},
|
|
114
|
+
|
|
115
|
+
showHarvesterHelpText() {
|
|
116
|
+
return !this.isStandaloneHarvester && this.$store.getters['currentProduct'].inStore === HARVESTER;
|
|
117
|
+
},
|
|
114
118
|
},
|
|
115
119
|
|
|
116
120
|
watch: {
|
|
@@ -121,7 +125,7 @@ export default {
|
|
|
121
125
|
},
|
|
122
126
|
|
|
123
127
|
projectName(newProjectName) {
|
|
124
|
-
this.$set(this, 'project', this.projects.find(p => p.id.includes(newProjectName)));
|
|
128
|
+
this.$set(this, 'project', this.projects.find((p) => p.id.includes(newProjectName)));
|
|
125
129
|
}
|
|
126
130
|
},
|
|
127
131
|
|
|
@@ -145,7 +149,7 @@ export default {
|
|
|
145
149
|
}
|
|
146
150
|
|
|
147
151
|
const projects = this.$store.getters['management/all'](MANAGEMENT.PROJECT);
|
|
148
|
-
const project = projects.find(p => p.id.includes(projectName));
|
|
152
|
+
const project = projects.find((p) => p.id.includes(projectName));
|
|
149
153
|
|
|
150
154
|
return project?.spec?.containerDefaultResourceLimit || {};
|
|
151
155
|
}
|
|
@@ -205,6 +209,9 @@ export default {
|
|
|
205
209
|
v-else
|
|
206
210
|
k="resourceQuota.helpText"
|
|
207
211
|
/>
|
|
212
|
+
<span v-if="showHarvesterHelpText">
|
|
213
|
+
{{ t('resourceQuota.helpTextHarvester') }}
|
|
214
|
+
</span>
|
|
208
215
|
</p>
|
|
209
216
|
</div>
|
|
210
217
|
</div>
|
|
@@ -212,7 +219,7 @@ export default {
|
|
|
212
219
|
v-model="value"
|
|
213
220
|
:mode="mode"
|
|
214
221
|
:project="project"
|
|
215
|
-
:types="
|
|
222
|
+
:types="isStandaloneHarvester ? HARVESTER_TYPES : RANCHER_TYPES"
|
|
216
223
|
/>
|
|
217
224
|
</Tab>
|
|
218
225
|
<Tab
|
|
@@ -242,6 +249,7 @@ export default {
|
|
|
242
249
|
/>
|
|
243
250
|
</Tab>
|
|
244
251
|
<Tab
|
|
252
|
+
v-if="showPodSecurityAdmission"
|
|
245
253
|
name="pod-security-admission"
|
|
246
254
|
label-key="podSecurityAdmission.name"
|
|
247
255
|
:label="t('podSecurityAdmission.name')"
|
|
@@ -37,10 +37,10 @@ export default {
|
|
|
37
37
|
},
|
|
38
38
|
computed: {
|
|
39
39
|
certsWithDefault() {
|
|
40
|
-
return [this.defaultCert, ...this.certs.map(c => ({ label: c, value: c }))];
|
|
40
|
+
return [this.defaultCert, ...this.certs.map((c) => ({ label: c, value: c }))];
|
|
41
41
|
},
|
|
42
42
|
certificateStatus() {
|
|
43
|
-
const isValueAnOption = !this.secretName || this.certsWithDefault.find(cert => this.secretName === cert.value);
|
|
43
|
+
const isValueAnOption = !this.secretName || this.certsWithDefault.find((cert) => this.secretName === cert.value);
|
|
44
44
|
|
|
45
45
|
return isValueAnOption ? null : 'warning';
|
|
46
46
|
},
|
|
@@ -44,12 +44,12 @@ export default {
|
|
|
44
44
|
return this.mode === _VIEW;
|
|
45
45
|
},
|
|
46
46
|
portOptions() {
|
|
47
|
-
const service = this.serviceTargets.find(s => s.label === this.serviceName);
|
|
47
|
+
const service = this.serviceTargets.find((s) => s.label === this.serviceName);
|
|
48
48
|
|
|
49
49
|
return service?.ports || [];
|
|
50
50
|
},
|
|
51
51
|
serviceTargetStatus() {
|
|
52
|
-
const isValueAnOption = !this.serviceName || this.serviceTargets.find(target => this.serviceName === target.value);
|
|
52
|
+
const isValueAnOption = !this.serviceName || this.serviceTargets.find((target) => this.serviceName === target.value);
|
|
53
53
|
|
|
54
54
|
return isValueAnOption ? null : 'warning';
|
|
55
55
|
},
|
|
@@ -55,13 +55,13 @@ export default {
|
|
|
55
55
|
},
|
|
56
56
|
computed: {
|
|
57
57
|
portOptions() {
|
|
58
|
-
const service = this.serviceTargets.find(s => s.label === this.serviceName);
|
|
58
|
+
const service = this.serviceTargets.find((s) => s.label === this.serviceName);
|
|
59
59
|
|
|
60
60
|
return service?.ports || [];
|
|
61
61
|
},
|
|
62
62
|
serviceTargetStatus() {
|
|
63
63
|
const serviceName = this.serviceName?.label || this.serviceName;
|
|
64
|
-
const isValueAnOption = !serviceName || this.serviceTargets.find(target => serviceName === target.value);
|
|
64
|
+
const isValueAnOption = !serviceName || this.serviceTargets.find((target) => serviceName === target.value);
|
|
65
65
|
|
|
66
66
|
return isValueAnOption ? null : 'warning';
|
|
67
67
|
},
|
|
@@ -45,7 +45,7 @@ export default {
|
|
|
45
45
|
},
|
|
46
46
|
|
|
47
47
|
async fetch() {
|
|
48
|
-
await Promise.all(Object.values(WORKLOAD_TYPES).map(type => this.$store.dispatch('cluster/findAll', { type })));
|
|
48
|
+
await Promise.all(Object.values(WORKLOAD_TYPES).map((type) => this.$store.dispatch('cluster/findAll', { type })));
|
|
49
49
|
},
|
|
50
50
|
|
|
51
51
|
beforeUpdate() {
|
|
@@ -58,7 +58,7 @@ export default {
|
|
|
58
58
|
|
|
59
59
|
computed: {
|
|
60
60
|
workloads() {
|
|
61
|
-
return Object.values(WORKLOAD_TYPES).flatMap(type => this.$store.getters['cluster/all'](type));
|
|
61
|
+
return Object.values(WORKLOAD_TYPES).flatMap((type) => this.$store.getters['cluster/all'](type));
|
|
62
62
|
},
|
|
63
63
|
isView() {
|
|
64
64
|
return this.mode === _VIEW;
|