@rancher/shell 0.3.14 → 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 +83 -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 +4 -3
- 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 -9
- 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/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.vue +34 -50
- 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 +21 -13
- 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/.DS_Store +0 -0
- package/components/__tests__/.DS_Store +0 -0
- package/components/form/GithubPicker.vue +0 -390
- package/creators/pkg/package-lock.json +0 -37
- package/yarn-error.log +0 -196
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" x="0px" y="0px" viewBox="0 0 70.7 48.2" style="enable-background:new 0 0 70.7 48.2;" xml:space="preserve"> <style type="text/css"> .st0{fill:#A8CB3A;} .st1{fill:#174489;} </style> <title>nutanix logo</title> <g> <path id="Fill-1" class="st0" d="M15.6,47.8c-0.2,0.2-0.4,0.3-0.7,0.3H1.1c-0.4,0-0.9-0.2-1-0.6c-0.2-0.5-0.1-1,0.3-1.3L25.5,25 c0.6-0.5,0.6-1.3,0-1.8L0.4,2C0.1,1.7-0.1,1.3,0,0.9C0.1,0.4,0.6,0,1.1,0h13.2c0.3,0,0.5,0.1,0.7,0.3l27.3,23l0.2,0.2 c0.4,0.4,0.4,1,0,1.4l-0.3,0.2L15.6,47.8"></path> <path id="Fill-8" class="st1" d="M46.6,20.2c0.4,0.4,1.1,0.4,1.5,0L70,2c0.3-0.3,0.5-0.7,0.4-1C70.3,0.4,69.8,0,69.3,0H56.1 c-0.3,0-0.5,0.1-0.7,0.3L40,12.8c-0.6,0.5-0.6,1.3,0,1.8L46.6,20.2"></path> <path id="Fill-9" class="st1" d="M46.5,28.1c0.4-0.4,1.1-0.4,1.5,0l22.2,18.2c0.3,0.3,0.5,0.7,0.4,1c-0.1,0.5-0.6,0.9-1.1,0.9H56.3 c-0.3,0-0.5-0.1-0.7-0.3L40.4,35.3c-0.6-0.5-0.6-1.3,0-1.8L46.5,28.1"></path> </g> </svg>
|
|
@@ -73,6 +73,7 @@ generic:
|
|
|
73
73
|
techPreview: Tech Preview
|
|
74
74
|
type: Type
|
|
75
75
|
unknown: Unknown
|
|
76
|
+
upload: Upload
|
|
76
77
|
provisioning: '—'
|
|
77
78
|
key: Key
|
|
78
79
|
value: Value
|
|
@@ -117,6 +118,7 @@ locale:
|
|
|
117
118
|
none: (None)
|
|
118
119
|
|
|
119
120
|
nav:
|
|
121
|
+
harvesterDashboard: Harvester Dashboard
|
|
120
122
|
backToRancher: Cluster Manager
|
|
121
123
|
clusterTools: Cluster Tools
|
|
122
124
|
kubeconfig:
|
|
@@ -179,6 +181,7 @@ nav:
|
|
|
179
181
|
multiCluster: Global Apps
|
|
180
182
|
legacy: Legacy Apps
|
|
181
183
|
configuration: Configuration
|
|
184
|
+
hci: HCI
|
|
182
185
|
search:
|
|
183
186
|
placeholder: Type to search clusters
|
|
184
187
|
noResults: No matching clusters
|
|
@@ -4007,6 +4010,7 @@ plugins:
|
|
|
4007
4010
|
host: This Extension is not compatible with this application
|
|
4008
4011
|
version: This Extension is not compatible with this version of Rancher
|
|
4009
4012
|
load: An error occurred loading the code for this Extension
|
|
4013
|
+
developerPkg: This Extension has been loaded internally, so we won't load the external version
|
|
4010
4014
|
success:
|
|
4011
4015
|
title: Loaded extension {name}
|
|
4012
4016
|
message: Extension was loaded successfully
|
|
@@ -5583,8 +5587,8 @@ validation:
|
|
|
5583
5587
|
tooLongPrefix: '"{key}" cannot have a prefix longer than {max} characters'
|
|
5584
5588
|
minLength: '"{key}" must contain more than {min} characters'
|
|
5585
5589
|
maxLength: '"{key}" must contain less than {max} characters'
|
|
5586
|
-
minValue: '"{key}" must be higher than {min}'
|
|
5587
|
-
maxValue: '"{key}" must be lower than {max}'
|
|
5590
|
+
minValue: '"{key}" must be equal or higher than {min}'
|
|
5591
|
+
maxValue: '"{key}" must be equal or lower than {max}'
|
|
5588
5592
|
betweenLengths: '"{key}" must contain between {min} and {max} characters'
|
|
5589
5593
|
betweenValues: '"{key}" must be between {min} and {max}'
|
|
5590
5594
|
noSchema: No schema found to validate
|
|
@@ -7168,6 +7172,7 @@ resourceQuota:
|
|
|
7168
7172
|
resourceType: Resource Type
|
|
7169
7173
|
helpText: Configure how much of the resources the namespace as a whole can consume.
|
|
7170
7174
|
helpTextDetail: The amount of resources the namespace as a whole can consume.
|
|
7175
|
+
helpTextHarvester: VMs need to reserve additional memory overhead.
|
|
7171
7176
|
configMaps: Config Maps
|
|
7172
7177
|
limitsCpu: CPU Limit
|
|
7173
7178
|
limitsMemory: Memory Limit
|
|
@@ -7325,6 +7330,82 @@ vncConsole:
|
|
|
7325
7330
|
error:
|
|
7326
7331
|
message: Web VNC console connection is disconnected
|
|
7327
7332
|
|
|
7333
|
+
gitPicker:
|
|
7334
|
+
github:
|
|
7335
|
+
label: GitHub
|
|
7336
|
+
tableHeaders:
|
|
7337
|
+
choose:
|
|
7338
|
+
label: Select
|
|
7339
|
+
sha:
|
|
7340
|
+
label: SHA
|
|
7341
|
+
author:
|
|
7342
|
+
label: Author
|
|
7343
|
+
unknown: Unknown
|
|
7344
|
+
message:
|
|
7345
|
+
label: Message
|
|
7346
|
+
date:
|
|
7347
|
+
label: Date
|
|
7348
|
+
username:
|
|
7349
|
+
label: Username / Organization
|
|
7350
|
+
inputLabel: Username / Organization
|
|
7351
|
+
tooltip: Username / Organization of the Git Repository
|
|
7352
|
+
branch:
|
|
7353
|
+
label: Branch
|
|
7354
|
+
inputLabel: Branch
|
|
7355
|
+
tooltip: Branch to deploy
|
|
7356
|
+
repo:
|
|
7357
|
+
label: Repository
|
|
7358
|
+
inputLabel: Repository
|
|
7359
|
+
tooltip: Branch to deploy from
|
|
7360
|
+
commits:
|
|
7361
|
+
label: Commits
|
|
7362
|
+
tooltip: Commits to deploy from
|
|
7363
|
+
commit:
|
|
7364
|
+
label: Commit
|
|
7365
|
+
inputLabel: Commit
|
|
7366
|
+
commitMessage:
|
|
7367
|
+
label: Commit Message
|
|
7368
|
+
errors:
|
|
7369
|
+
noAccount: No GitHub account or Organization found. Please review your query and try again.
|
|
7370
|
+
noBranch: No branch found. Please review your query and try again."
|
|
7371
|
+
gitlab:
|
|
7372
|
+
label: GitLab
|
|
7373
|
+
tableHeaders:
|
|
7374
|
+
choose:
|
|
7375
|
+
label: Select
|
|
7376
|
+
sha:
|
|
7377
|
+
label: SHA
|
|
7378
|
+
author:
|
|
7379
|
+
label: Author
|
|
7380
|
+
unknown: Unknown
|
|
7381
|
+
message:
|
|
7382
|
+
label: Message
|
|
7383
|
+
date:
|
|
7384
|
+
label: Date
|
|
7385
|
+
username:
|
|
7386
|
+
label: Username / Organization
|
|
7387
|
+
inputLabel: Username / Organization
|
|
7388
|
+
tooltip: Username / Organization of the Git Repository
|
|
7389
|
+
branch:
|
|
7390
|
+
label: Branch
|
|
7391
|
+
inputLabel: Branch
|
|
7392
|
+
tooltip: Branch to deploy
|
|
7393
|
+
repo:
|
|
7394
|
+
label: Repository
|
|
7395
|
+
inputLabel: Repository
|
|
7396
|
+
tooltip: Branch to deploy from
|
|
7397
|
+
commits:
|
|
7398
|
+
label: Commits
|
|
7399
|
+
tooltip: Commits to deploy from
|
|
7400
|
+
commit:
|
|
7401
|
+
label: Commit
|
|
7402
|
+
inputLabel: Commit
|
|
7403
|
+
commitMessage:
|
|
7404
|
+
label: Commit Message
|
|
7405
|
+
errors:
|
|
7406
|
+
noAccount: No GitLab account or Organization found. Please review your query and try again.
|
|
7407
|
+
noBranch: No branch found. Please review your query and try again."
|
|
7408
|
+
|
|
7328
7409
|
networkAttachmentDefinition:
|
|
7329
7410
|
tabs:
|
|
7330
7411
|
config: Config
|
package/chart/gatekeeper.vue
CHANGED
|
@@ -25,13 +25,13 @@ export default {
|
|
|
25
25
|
...mapGetters(['currentCluster']),
|
|
26
26
|
crdValues: {
|
|
27
27
|
get() {
|
|
28
|
-
const crdInfo = this.autoInstallInfo.find(info => info.chart.name.includes('crd'));
|
|
28
|
+
const crdInfo = this.autoInstallInfo.find((info) => info.chart.name.includes('crd'));
|
|
29
29
|
|
|
30
30
|
// values are defaults from the chart; allValues are defaults + anything set on previous install if this is an update/upgrade
|
|
31
31
|
return crdInfo ? crdInfo.allValues : null;
|
|
32
32
|
},
|
|
33
33
|
set(values) {
|
|
34
|
-
const crdInfo = this.autoInstallInfo.find(info => info.chart.name.includes('crd'));
|
|
34
|
+
const crdInfo = this.autoInstallInfo.find((info) => info.chart.name.includes('crd'));
|
|
35
35
|
|
|
36
36
|
this.$set(crdInfo, 'allValues', values);
|
|
37
37
|
}
|
|
@@ -47,9 +47,9 @@ export default {
|
|
|
47
47
|
|
|
48
48
|
return secrets
|
|
49
49
|
.filter(
|
|
50
|
-
sec => sec.metadata.namespace === DEFAULT_MONITORING_NAMESPACE
|
|
50
|
+
(sec) => sec.metadata.namespace === DEFAULT_MONITORING_NAMESPACE
|
|
51
51
|
)
|
|
52
|
-
.map(sec => ({ label: sec.metadata.name, value: sec.metadata.name }));
|
|
52
|
+
.map((sec) => ({ label: sec.metadata.name, value: sec.metadata.name }));
|
|
53
53
|
},
|
|
54
54
|
|
|
55
55
|
canUseExistingSecret() {
|
|
@@ -63,7 +63,7 @@ export default {
|
|
|
63
63
|
|
|
64
64
|
existingSecret() {
|
|
65
65
|
return this.secrets.find(
|
|
66
|
-
sec => sec?.metadata?.name ===
|
|
66
|
+
(sec) => sec?.metadata?.name ===
|
|
67
67
|
'alertmanager-rancher-monitoring-alertmanager' &&
|
|
68
68
|
sec?.metadata?.namespace === DEFAULT_MONITORING_NAMESPACE
|
|
69
69
|
);
|
|
@@ -62,7 +62,7 @@ export default {
|
|
|
62
62
|
});
|
|
63
63
|
|
|
64
64
|
await Promise.all(
|
|
65
|
-
Object.values(WORKLOAD_TYPES).map(type => this.$store.dispatch('cluster/findAll', { type })
|
|
65
|
+
Object.values(WORKLOAD_TYPES).map((type) => this.$store.dispatch('cluster/findAll', { type })
|
|
66
66
|
)
|
|
67
67
|
);
|
|
68
68
|
|
|
@@ -113,7 +113,7 @@ export default {
|
|
|
113
113
|
return this.currentCluster.status.provider.toLowerCase();
|
|
114
114
|
},
|
|
115
115
|
workloads() {
|
|
116
|
-
return Object.values(WORKLOAD_TYPES).flatMap(type => this.$store.getters['cluster/all'](type)
|
|
116
|
+
return Object.values(WORKLOAD_TYPES).flatMap((type) => this.$store.getters['cluster/all'](type)
|
|
117
117
|
);
|
|
118
118
|
},
|
|
119
119
|
},
|
|
@@ -88,7 +88,7 @@ export default {
|
|
|
88
88
|
workloads = workloads.filter((workload) => {
|
|
89
89
|
if (
|
|
90
90
|
!isEmpty(workload?.spec?.template?.spec?.containers) &&
|
|
91
|
-
(workload.spec.template.spec.containers.find(c => c.image.includes('quay.io/coreos/prometheus-operator') ||
|
|
91
|
+
(workload.spec.template.spec.containers.find((c) => c.image.includes('quay.io/coreos/prometheus-operator') ||
|
|
92
92
|
c.image.includes('rancher/coreos-prometheus-operator'))
|
|
93
93
|
)
|
|
94
94
|
) {
|
|
@@ -67,11 +67,11 @@ export default {
|
|
|
67
67
|
|
|
68
68
|
computed: {
|
|
69
69
|
defaultStorageClass() {
|
|
70
|
-
return this.storageClasses.filter(sc => sc.metadata.annotations[STORAGE.DEFAULT_STORAGE_CLASS] && sc.metadata.annotations[STORAGE.DEFAULT_STORAGE_CLASS] !== 'false' )[0] || '';
|
|
70
|
+
return this.storageClasses.filter((sc) => sc.metadata.annotations[STORAGE.DEFAULT_STORAGE_CLASS] && sc.metadata.annotations[STORAGE.DEFAULT_STORAGE_CLASS] !== 'false' )[0] || '';
|
|
71
71
|
},
|
|
72
72
|
|
|
73
73
|
availablePVs() {
|
|
74
|
-
return this.persistentVolumes.filter(pv => pv.status.phase.toLowerCase() !== 'bound');
|
|
74
|
+
return this.persistentVolumes.filter((pv) => pv.status.phase.toLowerCase() !== 'bound');
|
|
75
75
|
},
|
|
76
76
|
|
|
77
77
|
radioOptions() {
|
|
@@ -26,7 +26,7 @@ export default {
|
|
|
26
26
|
|
|
27
27
|
computed: {
|
|
28
28
|
clusterOptions() {
|
|
29
|
-
return this.clusters.filter(c => c.status?.provider === VIRTUAL_HARVESTER_PROVIDER).map( (cluster) => {
|
|
29
|
+
return this.clusters.filter((c) => c.status?.provider === VIRTUAL_HARVESTER_PROVIDER).map( (cluster) => {
|
|
30
30
|
return {
|
|
31
31
|
value: cluster.id,
|
|
32
32
|
label: cluster.nameDisplay
|
|
@@ -45,7 +45,7 @@ export default {
|
|
|
45
45
|
set(this.value, 'harvestercredentialConfig.clusterId', neu);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
const currentCluster = this.$store.getters['management/all'](MANAGEMENT.CLUSTER).find(x => x.id === neu);
|
|
48
|
+
const currentCluster = this.$store.getters['management/all'](MANAGEMENT.CLUSTER).find((x) => x.id === neu);
|
|
49
49
|
|
|
50
50
|
this.$nuxt.$loading.start();
|
|
51
51
|
|
package/components/AssignTo.vue
CHANGED
|
@@ -34,7 +34,7 @@ export default {
|
|
|
34
34
|
...mapGetters(['workspace']),
|
|
35
35
|
|
|
36
36
|
workspaceOptions() {
|
|
37
|
-
const out = this.allWorkspaces.map(x => x.metadata?.name).filter(x => !!x && x !== 'fleet-local');
|
|
37
|
+
const out = this.allWorkspaces.map((x) => x.metadata?.name).filter((x) => !!x && x !== 'fleet-local');
|
|
38
38
|
|
|
39
39
|
return out;
|
|
40
40
|
},
|
|
@@ -17,7 +17,7 @@ export default {
|
|
|
17
17
|
// The notification will always come from the csp-adapter component & there will be no more than one
|
|
18
18
|
// Backend will remove the notification when its no longer relevant
|
|
19
19
|
awsNotification() {
|
|
20
|
-
return this.notifications.find(notification => notification.componentName === 'csp-adapter');
|
|
20
|
+
return this.notifications.find((notification) => notification.componentName === 'csp-adapter');
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
};
|
package/components/BackLink.vue
CHANGED
|
@@ -16,6 +16,13 @@ export default {
|
|
|
16
16
|
>
|
|
17
17
|
<i class="icon icon-chevron-left" /> {{ t('generic.back') }}
|
|
18
18
|
</nuxt-link>
|
|
19
|
+
<nuxt-link
|
|
20
|
+
v-else
|
|
21
|
+
to="/"
|
|
22
|
+
class="back-link"
|
|
23
|
+
>
|
|
24
|
+
<i class="icon icon-chevron-left" /> {{ t('nav.home') }}
|
|
25
|
+
</nuxt-link>
|
|
19
26
|
</template>
|
|
20
27
|
|
|
21
28
|
<style lang="scss" scoped>
|
|
@@ -21,19 +21,19 @@ export default {
|
|
|
21
21
|
...mapGetters({ theme: 'prefs/theme' }),
|
|
22
22
|
|
|
23
23
|
brand() {
|
|
24
|
-
const setting = this.managementSettings.filter(setting => setting.id === SETTING.BRAND)[0] || {};
|
|
24
|
+
const setting = this.managementSettings.filter((setting) => setting.id === SETTING.BRAND)[0] || {};
|
|
25
25
|
|
|
26
26
|
return setting.value;
|
|
27
27
|
},
|
|
28
28
|
|
|
29
29
|
uiLogoLight() {
|
|
30
|
-
const setting = this.managementSettings.filter(setting => setting.id === SETTING.LOGO_LIGHT)[0] || {};
|
|
30
|
+
const setting = this.managementSettings.filter((setting) => setting.id === SETTING.LOGO_LIGHT)[0] || {};
|
|
31
31
|
|
|
32
32
|
return setting.value;
|
|
33
33
|
},
|
|
34
34
|
|
|
35
35
|
uiLogoDark() {
|
|
36
|
-
const setting = this.managementSettings.filter(setting => setting.id === SETTING.LOGO_DARK)[0] || {};
|
|
36
|
+
const setting = this.managementSettings.filter((setting) => setting.id === SETTING.LOGO_DARK)[0] || {};
|
|
37
37
|
|
|
38
38
|
return setting.value;
|
|
39
39
|
},
|
|
@@ -33,7 +33,7 @@ export default {
|
|
|
33
33
|
{{ cluster.badge.iconText }}
|
|
34
34
|
</div>
|
|
35
35
|
<!-- eslint-disable -->
|
|
36
|
-
<svg v-else-if="cluster.isLocal" class="cluster-local-logo" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve">
|
|
36
|
+
<svg v-else-if="cluster.isLocal && !cluster.isHarvester" class="cluster-local-logo" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100;" xml:space="preserve">
|
|
37
37
|
<g>
|
|
38
38
|
<g>
|
|
39
39
|
<path class="rancher-icon-fill" d="M26.0862026,44.4953918H8.6165142c-5.5818157,0-9.3979139-4.6252708-8.4802637-10.1311035l2.858391-17.210701
|
|
@@ -28,7 +28,7 @@ export default {
|
|
|
28
28
|
mixins: [Closeable],
|
|
29
29
|
|
|
30
30
|
async fetch() {
|
|
31
|
-
this.links = await fetchLinks(this.$store, this.hasSupport, this.isSupportPage, str => this.t(str));
|
|
31
|
+
this.links = await fetchLinks(this.$store, this.hasSupport, this.isSupportPage, (str) => this.t(str));
|
|
32
32
|
},
|
|
33
33
|
|
|
34
34
|
data() {
|
|
@@ -72,7 +72,7 @@ export default {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
if (this.links.defaults) {
|
|
75
|
-
all.push(...this.links.defaults.filter(link => link.enabled));
|
|
75
|
+
all.push(...this.links.defaults.filter((link) => link.enabled));
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
return all;
|
|
@@ -41,7 +41,7 @@ export default {
|
|
|
41
41
|
*/
|
|
42
42
|
numberFormatter: {
|
|
43
43
|
type: Function,
|
|
44
|
-
default: value => Number.isInteger(value) ? value : value.toFixed(2)
|
|
44
|
+
default: (value) => Number.isInteger(value) ? value : value.toFixed(2)
|
|
45
45
|
},
|
|
46
46
|
|
|
47
47
|
/**
|
|
@@ -106,7 +106,10 @@ export default {
|
|
|
106
106
|
{{ resourceName }}
|
|
107
107
|
</h4>
|
|
108
108
|
<span v-else>{{ t('node.detail.glance.consumptionGauge.used') }}</span>
|
|
109
|
-
<span
|
|
109
|
+
<span class="numbers-stats">
|
|
110
|
+
{{ t('node.detail.glance.consumptionGauge.amount', amountTemplateValues) }}
|
|
111
|
+
<span class="percentage"><i>/ </i>{{ formattedPercentage }}</span>
|
|
112
|
+
</span>
|
|
110
113
|
</slot>
|
|
111
114
|
</div>
|
|
112
115
|
<div class="mt-10">
|
|
@@ -125,8 +128,20 @@ export default {
|
|
|
125
128
|
flex-direction: row;
|
|
126
129
|
justify-content: space-between;
|
|
127
130
|
|
|
131
|
+
&-stats {
|
|
132
|
+
display: flex;
|
|
133
|
+
flex-direction: row;
|
|
134
|
+
align-items: center;
|
|
135
|
+
gap: 10px;
|
|
136
|
+
align-self: baseline;
|
|
137
|
+
|
|
138
|
+
}
|
|
139
|
+
|
|
128
140
|
.percentage {
|
|
129
141
|
font-weight: bold;
|
|
142
|
+
i {
|
|
143
|
+
margin-right: 10px;
|
|
144
|
+
}
|
|
130
145
|
}
|
|
131
146
|
}
|
|
132
147
|
}
|
|
@@ -184,7 +184,7 @@ export default {
|
|
|
184
184
|
const { validationPassed, showAsForm, steps } = this;
|
|
185
185
|
|
|
186
186
|
if (showAsForm && steps?.length) {
|
|
187
|
-
return validationPassed && this.steps.every(step => step.ready);
|
|
187
|
+
return validationPassed && this.steps.every((step) => step.ready);
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
// Don't apply validation rules if the form is not shown.
|
|
@@ -412,6 +412,7 @@ export default {
|
|
|
412
412
|
</p>
|
|
413
413
|
<form
|
|
414
414
|
:is="(isView? 'div' : 'form')"
|
|
415
|
+
data-testid="cru-form"
|
|
415
416
|
class="create-resource-container cru__form"
|
|
416
417
|
@submit.prevent
|
|
417
418
|
@keydown.enter="onPressEnter($event)"
|
|
@@ -26,6 +26,12 @@ export default {
|
|
|
26
26
|
type: Boolean,
|
|
27
27
|
default: true,
|
|
28
28
|
},
|
|
29
|
+
// change the grafana url prefix for local clusters in certain monitoring versions
|
|
30
|
+
// project monitoring (projectHelmCharts) supply a grafana url that never needs to be modified in this way
|
|
31
|
+
modifyPrefix: {
|
|
32
|
+
type: Boolean,
|
|
33
|
+
default: true
|
|
34
|
+
}
|
|
29
35
|
},
|
|
30
36
|
data() {
|
|
31
37
|
return {
|
|
@@ -74,6 +80,7 @@ export default {
|
|
|
74
80
|
:range="graphOptions.range"
|
|
75
81
|
:url="detailUrl"
|
|
76
82
|
:vars="vars"
|
|
83
|
+
:modify-prefix="modifyPrefix"
|
|
77
84
|
/>
|
|
78
85
|
<GrafanaDashboard
|
|
79
86
|
v-else
|
|
@@ -85,6 +92,7 @@ export default {
|
|
|
85
92
|
:range="graphOptions.range"
|
|
86
93
|
:url="summaryUrl"
|
|
87
94
|
:vars="vars"
|
|
95
|
+
:modify-prefix="modifyPrefix"
|
|
88
96
|
/>
|
|
89
97
|
</div>
|
|
90
98
|
</div>
|
package/components/DetailTop.vue
CHANGED
|
@@ -72,7 +72,7 @@ export default {
|
|
|
72
72
|
const items = [
|
|
73
73
|
...(this.moreDetails || []),
|
|
74
74
|
...(this.value?.details || []),
|
|
75
|
-
].filter(x => x.separator || (!!`${ x.content }` && x.content !== undefined && x.content !== null));
|
|
75
|
+
].filter((x) => x.separator || (!!`${ x.content }` && x.content !== undefined && x.content !== null));
|
|
76
76
|
|
|
77
77
|
const groups = [];
|
|
78
78
|
let currentGroup = [];
|
|
@@ -70,7 +70,7 @@ export default {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
this.$store.dispatch('management/findAll', { type: MANAGEMENT.PROJECT })
|
|
73
|
-
.then(projects => this.$set(this, 'projects', projects));
|
|
73
|
+
.then((projects) => this.$set(this, 'projects', projects));
|
|
74
74
|
|
|
75
75
|
const hydration = {
|
|
76
76
|
normanPrincipals: this.$store.dispatch('rancher/findAll', { type: NORMAN.PRINCIPAL }),
|
|
@@ -123,11 +123,11 @@ export default {
|
|
|
123
123
|
computed: {
|
|
124
124
|
...mapGetters(['currentCluster']),
|
|
125
125
|
clusterRoleTemplateBindings() {
|
|
126
|
-
return this.normanClusterRoleTemplateBindings.map(b => b.clusterroletemplatebinding) ;
|
|
126
|
+
return this.normanClusterRoleTemplateBindings.map((b) => b.clusterroletemplatebinding) ;
|
|
127
127
|
},
|
|
128
128
|
filteredClusterRoleTemplateBindings() {
|
|
129
129
|
return this.clusterRoleTemplateBindings.filter(
|
|
130
|
-
b => b?.clusterName === this.$store.getters['currentCluster'].id
|
|
130
|
+
(b) => b?.clusterName === this.$store.getters['currentCluster'].id
|
|
131
131
|
);
|
|
132
132
|
},
|
|
133
133
|
filteredProjects() {
|
|
@@ -222,10 +222,10 @@ export default {
|
|
|
222
222
|
return this.$store.getters['currentCluster'].isLocal;
|
|
223
223
|
},
|
|
224
224
|
canEditProjectMembers() {
|
|
225
|
-
return this.normanProjectRTBSchema?.collectionMethods.find(x => x.toLowerCase() === 'post');
|
|
225
|
+
return this.normanProjectRTBSchema?.collectionMethods.find((x) => x.toLowerCase() === 'post');
|
|
226
226
|
},
|
|
227
227
|
canEditClusterMembers() {
|
|
228
|
-
return this.normanClusterRTBSchema?.collectionMethods.find(x => x.toLowerCase() === 'post');
|
|
228
|
+
return this.normanClusterRTBSchema?.collectionMethods.find((x) => x.toLowerCase() === 'post');
|
|
229
229
|
},
|
|
230
230
|
},
|
|
231
231
|
methods: {
|
|
@@ -250,12 +250,12 @@ export default {
|
|
|
250
250
|
},
|
|
251
251
|
|
|
252
252
|
getProjectRoleBinding(row, role) {
|
|
253
|
-
// Each row is a combination of user/group
|
|
254
|
-
// So find the specfic roleBindingTemplate corresponding to the specific role +
|
|
253
|
+
// Each row is a combination of project, role and user/group
|
|
254
|
+
// So find the specfic roleBindingTemplate corresponding to the specific project, role + user/group
|
|
255
255
|
const userOrGroupKey = row.userId ? 'userId' : 'groupPrincipalId';
|
|
256
256
|
|
|
257
257
|
return this.projectRoleTemplateBindings.find((r) => {
|
|
258
|
-
return r.roleTemplateId === role.id && r[userOrGroupKey] === row[userOrGroupKey];
|
|
258
|
+
return r.projectId === row.projectId && r.roleTemplateId === role.id && r[userOrGroupKey] === row[userOrGroupKey];
|
|
259
259
|
});
|
|
260
260
|
},
|
|
261
261
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { mapGetters } from 'vuex';
|
|
3
|
-
import ResourceTable from '@shell/components/ResourceTable';
|
|
3
|
+
import ResourceTable, { defaultTableSortGenerationFn } from '@shell/components/ResourceTable';
|
|
4
4
|
import { STATE, AGE, NAME } from '@shell/config/table-headers';
|
|
5
5
|
import { uniq } from '@shell/utils/array';
|
|
6
6
|
import { MANAGEMENT, NAMESPACE, VIRTUAL_TYPES } from '@shell/config/types';
|
|
@@ -8,7 +8,7 @@ import { PROJECT_ID, FLAT_VIEW } from '@shell/config/query-params';
|
|
|
8
8
|
import Masthead from '@shell/components/ResourceList/Masthead';
|
|
9
9
|
import { mapPref, GROUP_RESOURCES, ALL_NAMESPACES } from '@shell/store/prefs';
|
|
10
10
|
import MoveModal from '@shell/components/MoveModal';
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
import { NAMESPACE_FILTER_ALL_ORPHANS } from '@shell/utils/namespace-filter';
|
|
13
13
|
import ResourceFetch from '@shell/mixins/resource-fetch';
|
|
14
14
|
import DOMPurify from 'dompurify';
|
|
@@ -97,12 +97,12 @@ export default {
|
|
|
97
97
|
NAME,
|
|
98
98
|
this.groupPreference === 'none' ? project : null,
|
|
99
99
|
AGE
|
|
100
|
-
].filter(h => h);
|
|
100
|
+
].filter((h) => h);
|
|
101
101
|
},
|
|
102
102
|
projectIdsWithNamespaces() {
|
|
103
103
|
const ids = this.rows
|
|
104
|
-
.map(row => row.projectId)
|
|
105
|
-
.filter(id => id);
|
|
104
|
+
.map((row) => row.projectId)
|
|
105
|
+
.filter((id) => id);
|
|
106
106
|
|
|
107
107
|
return uniq(ids);
|
|
108
108
|
},
|
|
@@ -117,13 +117,13 @@ export default {
|
|
|
117
117
|
return this.$store.getters[`${ this.currentProduct.inStore }/filterProject`];
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
const clustersInProjects = projectsInAllClusters.filter(project => project.spec.clusterName === clusterId);
|
|
120
|
+
const clustersInProjects = projectsInAllClusters.filter((project) => project.spec.clusterName === clusterId);
|
|
121
121
|
|
|
122
122
|
return clustersInProjects;
|
|
123
123
|
},
|
|
124
124
|
projectsWithoutNamespaces() {
|
|
125
125
|
return this.activeProjects.filter((project) => {
|
|
126
|
-
return !this.projectIdsWithNamespaces.find(item => project?.id?.endsWith(`/${ item }`));
|
|
126
|
+
return !this.projectIdsWithNamespaces.find((item) => project?.id?.endsWith(`/${ item }`));
|
|
127
127
|
});
|
|
128
128
|
},
|
|
129
129
|
// We're using this because we need to show projects as groups even if the project doesn't have any namespaces.
|
|
@@ -226,7 +226,7 @@ export default {
|
|
|
226
226
|
return false;
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
const someNamespacesAreNotInProject = !this.rows.some(row => !row.project);
|
|
229
|
+
const someNamespacesAreNotInProject = !this.rows.some((row) => !row.project);
|
|
230
230
|
|
|
231
231
|
// Hide the "Not in a Project" group if the user is filtering
|
|
232
232
|
// for specific namespaces or projects.
|
|
@@ -250,7 +250,7 @@ export default {
|
|
|
250
250
|
const dictionary = row.psaTooltipsDescription;
|
|
251
251
|
const list = Object.values(dictionary)
|
|
252
252
|
.sort()
|
|
253
|
-
.map(text => `<li>${ text }</li>`).join('');
|
|
253
|
+
.map((text) => `<li>${ text }</li>`).join('');
|
|
254
254
|
const title = `<p>${ this.t('podSecurityAdmission.name') }: </p>`;
|
|
255
255
|
|
|
256
256
|
return `${ title }<ul class="psa-tooltip">${ list }</ul>`;
|
|
@@ -41,7 +41,7 @@ export default {
|
|
|
41
41
|
handleLineBreaksConsentText(banner) {
|
|
42
42
|
if (banner.text?.length) {
|
|
43
43
|
// split text by newline char
|
|
44
|
-
const textArray = banner.text.split(/\\n/).filter(element => element);
|
|
44
|
+
const textArray = banner.text.split(/\\n/).filter((element) => element);
|
|
45
45
|
|
|
46
46
|
if (textArray.length > 1) {
|
|
47
47
|
textArray.forEach((str, i) => {
|
|
@@ -120,7 +120,7 @@ export default {
|
|
|
120
120
|
},
|
|
121
121
|
methods: {
|
|
122
122
|
getRoleType(role) {
|
|
123
|
-
if (this.globalPermissions.find(p => p === role.id)) {
|
|
123
|
+
if (this.globalPermissions.find((p) => p === role.id)) {
|
|
124
124
|
return 'global';
|
|
125
125
|
} else if (role.builtin) {
|
|
126
126
|
return 'builtin';
|
|
@@ -159,7 +159,7 @@ export default {
|
|
|
159
159
|
|
|
160
160
|
Object.values(this.sortedRoles).forEach((roles) => {
|
|
161
161
|
roles.forEach((mappedRole) => {
|
|
162
|
-
const boundRole = boundRoles.find(boundRole => boundRole.globalRoleName === mappedRole.id);
|
|
162
|
+
const boundRole = boundRoles.find((boundRole) => boundRole.globalRoleName === mappedRole.id);
|
|
163
163
|
|
|
164
164
|
if (!!boundRole) {
|
|
165
165
|
this.selectedRoles.push(mappedRole.id);
|
|
@@ -184,10 +184,10 @@ export default {
|
|
|
184
184
|
},
|
|
185
185
|
checkboxChanged() {
|
|
186
186
|
const addRoles = this.selectedRoles
|
|
187
|
-
.filter(selected => !this.startingSelectedRoles.find(startingRole => startingRole.roleId === selected));
|
|
187
|
+
.filter((selected) => !this.startingSelectedRoles.find((startingRole) => startingRole.roleId === selected));
|
|
188
188
|
const removeBindings = this.startingSelectedRoles
|
|
189
|
-
.filter(startingRole => !this.selectedRoles.find(selected => selected === startingRole.roleId))
|
|
190
|
-
.map(startingRole => startingRole.bindingId);
|
|
189
|
+
.filter((startingRole) => !this.selectedRoles.find((selected) => selected === startingRole.roleId))
|
|
190
|
+
.map((startingRole) => startingRole.bindingId);
|
|
191
191
|
|
|
192
192
|
this.roleChanges = {
|
|
193
193
|
initialRoles: this.startingSelectedRoles,
|
|
@@ -210,22 +210,22 @@ export default {
|
|
|
210
210
|
} else {
|
|
211
211
|
requestOptions.userName = userId || this.userId;
|
|
212
212
|
}
|
|
213
|
-
const newBindings = await Promise.all(this.roleChanges.addRoles.map(role => this.$store.dispatch(`management/create`, {
|
|
213
|
+
const newBindings = await Promise.all(this.roleChanges.addRoles.map((role) => this.$store.dispatch(`management/create`, {
|
|
214
214
|
...requestOptions,
|
|
215
215
|
globalRoleName: role,
|
|
216
216
|
})));
|
|
217
217
|
|
|
218
218
|
// Save all changes (and ensure user isn't logged out if they don't have permissions to make a change)
|
|
219
|
-
await Promise.all(newBindings.map(newBinding => newBinding.save({ redirectUnauthorized: false })));
|
|
219
|
+
await Promise.all(newBindings.map((newBinding) => newBinding.save({ redirectUnauthorized: false })));
|
|
220
220
|
},
|
|
221
221
|
async saveRemovedRoles() {
|
|
222
|
-
const existingBindings = await Promise.all(this.roleChanges.removeBindings.map(bindingId => this.$store.dispatch('management/find', {
|
|
222
|
+
const existingBindings = await Promise.all(this.roleChanges.removeBindings.map((bindingId) => this.$store.dispatch('management/find', {
|
|
223
223
|
type: MANAGEMENT.GLOBAL_ROLE_BINDING,
|
|
224
224
|
id: bindingId
|
|
225
225
|
})));
|
|
226
226
|
|
|
227
227
|
// Save all changes (and ensure user isn't logged out if they don't have permissions to make a change)
|
|
228
|
-
await Promise.all(existingBindings.map(existingBinding => existingBinding.remove({ redirectUnauthorized: false })));
|
|
228
|
+
await Promise.all(existingBindings.map((existingBinding) => existingBinding.remove({ redirectUnauthorized: false })));
|
|
229
229
|
},
|
|
230
230
|
/**
|
|
231
231
|
* userId is optional, used when a user has just been created
|
|
@@ -250,7 +250,7 @@ export default {
|
|
|
250
250
|
});
|
|
251
251
|
});
|
|
252
252
|
|
|
253
|
-
return allRolesRules.some(rule => this.isRuleValid(rule));
|
|
253
|
+
return allRolesRules.some((rule) => this.isRuleValid(rule));
|
|
254
254
|
},
|
|
255
255
|
isRuleValid(rule) {
|
|
256
256
|
// Brought over from Ember
|
|
@@ -281,7 +281,7 @@ export default {
|
|
|
281
281
|
|
|
282
282
|
if (isArray(verbs) && verbs.length > 1) {
|
|
283
283
|
// console.log(`verbsRequiredForLogin status 1: `, restrictedTarget.every(rt => verbs.includes(rt)), verbs);
|
|
284
|
-
return restrictedTarget.every(rt => verbs.includes(rt));
|
|
284
|
+
return restrictedTarget.every((rt) => verbs.includes(rt));
|
|
285
285
|
}
|
|
286
286
|
|
|
287
287
|
// console.log(`verbsRequiredForLogin status 2: `, verbsRequiredForLogin.includes(verbs[0]), verbsRequiredForLogin, verbs);
|
|
@@ -23,6 +23,12 @@ export default {
|
|
|
23
23
|
type: String,
|
|
24
24
|
default: null
|
|
25
25
|
},
|
|
26
|
+
// change the grafana url prefix for local clusters in certain monitoring versions
|
|
27
|
+
// project monitoring (projectHelmCharts) supply a grafana url that never needs to be modified in this way
|
|
28
|
+
modifyPrefix: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: true
|
|
31
|
+
},
|
|
26
32
|
backgroundColor: {
|
|
27
33
|
type: String,
|
|
28
34
|
default: '#1b1c21'
|
|
@@ -138,7 +144,7 @@ export default {
|
|
|
138
144
|
const clusterId = this.$store.getters['currentCluster'].id;
|
|
139
145
|
const params = this.computeParams();
|
|
140
146
|
|
|
141
|
-
return computeDashboardUrl(this.monitoringVersion, embedUrl, clusterId, params);
|
|
147
|
+
return computeDashboardUrl(this.monitoringVersion, embedUrl, clusterId, params, this.modifyPrefix);
|
|
142
148
|
},
|
|
143
149
|
computeParams() {
|
|
144
150
|
const params = {};
|