@rancher/shell 0.2.3 → 0.2.5
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/brand/csp/dark/rancher-logo.svg +148 -0
- package/assets/brand/csp/favicon.png +0 -0
- package/assets/brand/csp/metadata.json +3 -0
- package/assets/brand/csp/rancher-logo.svg +130 -0
- package/assets/styles/app.scss +2 -1
- package/assets/styles/global/_layout.scss +53 -0
- package/assets/styles/themes/_csp.scss +25 -0
- package/assets/styles/themes/_dark.scss +2 -1
- package/assets/styles/themes/_light.scss +2 -1
- package/assets/styles/vendor/vue-select.scss +0 -5
- package/assets/translations/en-us.yaml +45 -28
- package/chart/istio.vue +81 -22
- package/chart/logging/index.vue +20 -6
- package/chart/monitoring/alerting/index.vue +4 -1
- package/chart/monitoring/index.vue +41 -9
- package/chart/monitoring/prometheus/index.vue +33 -29
- package/chart/monitoring/steps/uninstall-v1.vue +8 -4
- package/chart/rancher-backup/S3.vue +43 -8
- package/chart/rancher-backup/index.vue +23 -5
- package/chart/rancher-gatekeeper.vue +10 -2
- package/cloud-credential/aws.vue +8 -2
- package/cloud-credential/digitalocean.vue +4 -1
- package/cloud-credential/gcp.vue +9 -2
- package/cloud-credential/generic.vue +6 -1
- package/cloud-credential/harvester.vue +4 -1
- package/cloud-credential/linode.vue +4 -1
- package/cloud-credential/s3.vue +4 -1
- package/components/.DS_Store +0 -0
- package/components/ActionDropdown.vue +4 -1
- package/components/ActionMenu.vue +17 -4
- package/components/AdvancedSection.vue +6 -1
- package/components/Alert.vue +5 -1
- package/components/AssignTo.vue +24 -6
- package/components/AsyncButton.vue +10 -0
- package/components/AwsComplianceBanner.vue +4 -1
- package/components/BackLink.vue +5 -1
- package/components/BannerGraphic.vue +16 -4
- package/components/BrandImage.vue +4 -1
- package/components/ButtonDropdown.vue +10 -3
- package/components/ButtonGroup.vue +17 -4
- package/components/Carousel.vue +26 -8
- package/components/ChartHeading.vue +5 -1
- package/components/ChartReadme.vue +17 -5
- package/components/ClusterBadge.vue +5 -1
- package/components/ClusterProviderIcon.vue +15 -3
- package/components/Collapse.vue +17 -5
- package/components/CollapsibleCard.vue +10 -4
- package/components/CommunityLinks.vue +32 -9
- package/components/CompoundStatusBadge.vue +4 -1
- package/components/ContainerResourceLimit.vue +12 -3
- package/components/CopyToClipboardText.vue +10 -2
- package/components/CountBox.vue +13 -3
- package/components/CountGauge.vue +28 -5
- package/components/CruResource.vue +88 -23
- package/components/CruResourceFooter.vue +1 -1
- package/components/DashboardMetrics.vue +12 -3
- package/components/DashboardOptions.vue +14 -3
- package/components/DetailText.vue +28 -6
- package/components/DetailTop.vue +57 -12
- package/components/Dialog.vue +17 -5
- package/components/EmberPage.vue +23 -5
- package/components/EmberPageView.vue +4 -1
- package/components/EtcdInfoBanner.vue +5 -1
- package/components/ExplorerMembers.vue +7 -9
- package/components/ExplorerProjectsNamespaces.vue +42 -10
- package/components/FileDiff.vue +5 -1
- package/components/FixedBanner.vue +27 -7
- package/components/Flag.vue +8 -2
- package/components/Glance.vue +11 -2
- package/components/GlobalRoleBindings.vue +24 -5
- package/components/GradientBox.vue +5 -1
- package/components/GrafanaDashboard.vue +19 -5
- package/components/GrowlManager.vue +27 -6
- package/components/HardwareResourceGauge.vue +8 -2
- package/components/HarvesterServiceAddOnConfig.vue +4 -1
- package/components/IconMessage.vue +8 -2
- package/components/Import.vue +37 -8
- package/components/IndentedPanel.vue +4 -1
- package/components/InfoBox.vue +8 -2
- package/components/KeyValueView.vue +29 -7
- package/components/LandingPagePreference.vue +13 -2
- package/components/LazyImage.vue +5 -1
- package/components/Loading.vue +13 -3
- package/components/LocaleSelector.vue +10 -2
- package/components/Markdown.vue +5 -1
- package/components/MessageLink.vue +19 -4
- package/components/ModalWithCard.vue +24 -8
- package/components/MoveModal.vue +35 -7
- package/components/PercentageBar.vue +9 -2
- package/components/ProgressBarMulti.vue +4 -1
- package/components/PromptChangePassword.vue +17 -4
- package/components/PromptModal.vue +7 -1
- package/components/PromptRemove.vue +31 -10
- package/components/PromptRestore.vue +35 -10
- package/components/Questions/Array.vue +4 -1
- package/components/Questions/Boolean.vue +4 -1
- package/components/Questions/Enum.vue +4 -1
- package/components/Questions/Float.vue +4 -1
- package/components/Questions/Int.vue +4 -1
- package/components/Questions/QuestionMap.vue +4 -1
- package/components/Questions/Reference.vue +8 -2
- package/components/Questions/String.vue +4 -1
- package/components/Questions/index.vue +10 -2
- package/components/Random.vue +11 -3
- package/components/RelatedResources.vue +8 -2
- package/components/RelatedWorkloadsTable.vue +5 -1
- package/components/ResourceCancelModal.vue +15 -3
- package/components/ResourceDetail/Masthead.vue +31 -7
- package/components/ResourceList/Masthead.vue +6 -4
- package/components/ResourceList/ResourceLoadingIndicator.vue +8 -2
- package/components/ResourceList/index.vue +11 -8
- package/components/ResourceSummary.vue +13 -3
- package/components/ResourceTable.vue +59 -11
- package/components/ResourceYaml.vue +8 -2
- package/components/RoleBindings.vue +20 -3
- package/components/SelectIconGrid.vue +29 -7
- package/components/SimpleBox.vue +14 -3
- package/components/SingleClusterInfo.vue +40 -9
- package/components/SortableTable/THead.vue +29 -8
- package/components/SortableTable/filtering.js +7 -0
- package/components/SortableTable/index.vue +204 -45
- package/components/Tabbed/Tab.vue +9 -2
- package/components/Tabbed/index.vue +32 -7
- package/components/TableSparkLine.vue +4 -1
- package/components/Tip.vue +4 -1
- package/components/Wizard.vue +105 -23
- package/components/YamlEditor.vue +5 -1
- package/components/__tests__/.DS_Store +0 -0
- package/components/auth/AllowedPrincipals.vue +21 -5
- package/components/auth/AuthBanner.vue +21 -5
- package/components/auth/AzureWarning.vue +5 -1
- package/components/auth/Principal.vue +37 -9
- package/components/auth/RoleDetailEdit.vue +34 -10
- package/components/auth/SelectPrincipal.vue +20 -3
- package/components/auth/login/github.vue +5 -1
- package/components/auth/login/ldap.vue +10 -2
- package/components/auth/login/oauth.vue +6 -1
- package/components/auth/login/oidc.vue +6 -1
- package/components/auth/login/saml.vue +6 -1
- package/components/fleet/FleetBundles.vue +9 -2
- package/components/fleet/FleetClusters.vue +29 -6
- package/components/fleet/FleetIntro.vue +5 -2
- package/components/fleet/FleetRepos.vue +23 -4
- package/components/fleet/FleetStatus.vue +16 -4
- package/components/fleet/FleetSummary.vue +10 -2
- package/components/fleet/ForceDirectedTreeChart/index.vue +5 -3
- package/components/fleet/ResourcesSummary.vue +5 -1
- package/components/form/ArrayList.vue +31 -8
- package/components/form/ArrayListGrouped.vue +9 -3
- package/components/form/ArrayListSelect.vue +6 -1
- package/components/form/BannerSettings.vue +8 -2
- package/components/form/ChangePassword.vue +50 -10
- package/components/form/ColorInput.vue +28 -5
- package/components/form/Command.vue +5 -2
- package/components/form/EnvVars.vue +4 -1
- package/components/form/Error.vue +10 -2
- package/components/form/FileImageSelector.vue +1 -1
- package/components/form/FileSelector.vue +8 -2
- package/components/form/Footer.vue +14 -4
- package/components/form/GithubPicker.vue +16 -9
- package/components/form/HookOption.vue +5 -1
- package/components/form/InputWithSelect.vue +1 -1
- package/components/form/KeyValue.vue +81 -19
- package/components/form/LabeledSelect.vue +55 -8
- package/components/form/Labels.vue +1 -1
- package/components/form/LifecycleHooks.vue +10 -2
- package/components/form/MatchExpressions.vue +11 -3
- package/components/form/Members/ClusterPermissionsEditor.vue +21 -4
- package/components/form/Members/MembershipEditor.vue +11 -2
- package/components/form/NameNsDescription.vue +16 -10
- package/components/form/Networking.vue +3 -3
- package/components/form/NodeAffinity.vue +4 -1
- package/components/form/NodeScheduling.vue +5 -1
- package/components/form/Password.vue +32 -7
- package/components/form/PlusMinus.vue +18 -3
- package/components/form/PodAffinity.vue +12 -5
- package/components/form/PodSecurity.vue +20 -4
- package/components/form/Ports.vue +37 -11
- package/components/form/Probe.vue +18 -4
- package/components/form/ProjectMemberEditor.vue +24 -4
- package/components/form/ResourceQuota/NamespaceRow.vue +4 -1
- package/components/form/ResourceQuota/Project.vue +7 -1
- package/components/form/ResourceQuota/ProjectRow.vue +11 -2
- package/components/form/ResourceSelector.vue +145 -0
- package/components/form/ResourceTabs/index.vue +38 -7
- package/components/form/RuleSelector.vue +15 -4
- package/components/form/SecretSelector.vue +4 -1
- package/components/form/Security.vue +2 -2
- package/components/form/Select.vue +8 -3
- package/components/form/SelectOrCreateAuthSecret.vue +43 -9
- package/components/form/ServiceNameSelect.vue +2 -2
- package/components/form/ServicePorts.vue +58 -17
- package/components/form/Tolerations.vue +34 -7
- package/components/form/ValueFromResource.vue +10 -2
- package/components/form/WorkloadPorts.vue +36 -8
- package/components/form/__tests__/MatchExpressions.test.ts +1 -2
- package/components/formatter/AppSummaryGraph.vue +24 -6
- package/components/formatter/BadgeStateFormatter.vue +4 -1
- package/components/formatter/Checked.vue +4 -1
- package/components/formatter/ClusterLink.vue +4 -1
- package/components/formatter/Date.vue +1 -1
- package/components/formatter/DelayedValue.vue +4 -1
- package/components/formatter/Endpoints.vue +5 -1
- package/components/formatter/ExternalLink.vue +5 -1
- package/components/formatter/FleetSummaryGraph.vue +20 -5
- package/components/formatter/IconText.vue +4 -1
- package/components/formatter/ImagePercentageBar.vue +5 -1
- package/components/formatter/IngressFullPath.vue +6 -1
- package/components/formatter/IngressTarget.vue +22 -5
- package/components/formatter/InternalExternalIP.vue +12 -2
- package/components/formatter/KeyValue.vue +5 -1
- package/components/formatter/Link.vue +30 -6
- package/components/formatter/LinkDetail.vue +4 -1
- package/components/formatter/LinkDetailImage.vue +1 -1
- package/components/formatter/ListLink.vue +10 -2
- package/components/formatter/ListLinkDetail.vue +6 -1
- package/components/formatter/LiveDate.vue +13 -3
- package/components/formatter/LiveExpiryDate.vue +18 -4
- package/components/formatter/LivePodRestarts.vue +4 -1
- package/components/formatter/MachineSummaryGraph.vue +25 -6
- package/components/formatter/Number.vue +4 -1
- package/components/formatter/PodsUsage.vue +4 -1
- package/components/formatter/Principal.vue +5 -1
- package/components/formatter/PrincipalGroupBindings.vue +4 -1
- package/components/formatter/ReceiverIcons.vue +9 -3
- package/components/formatter/RunBookLink.vue +6 -1
- package/components/formatter/Scale.vue +45 -10
- package/components/formatter/ScanResult.vue +4 -1
- package/components/formatter/SecretData.vue +5 -2
- package/components/formatter/SecretType.vue +4 -1
- package/components/formatter/ServiceTargets.vue +16 -4
- package/components/formatter/Shortened.vue +8 -2
- package/components/formatter/VirtualServiceGateways.vue +8 -2
- package/components/formatter/Weight.vue +19 -4
- package/components/formatter/WorkloadDetailEndpoints.vue +5 -1
- package/components/formatter/WorkloadHealthScale.vue +42 -8
- package/components/graph/AspectPreserver.vue +14 -3
- package/components/graph/Bar.vue +14 -3
- package/components/graph/Circle.vue +36 -7
- package/components/graph/HalfCircle.vue +6 -1
- package/components/graph/LinePlot.vue +3 -6
- package/components/graph/ProgressArc.vue +8 -2
- package/components/nav/GlobalLoading.vue +4 -1
- package/components/nav/Group.vue +39 -9
- package/components/nav/Header.vue +154 -37
- package/components/nav/Jump.vue +6 -2
- package/components/nav/NamespaceFilter.vue +112 -24
- package/components/nav/TopLevelMenu.vue +108 -24
- package/components/nav/Type.vue +18 -4
- package/components/nav/WindowManager/ChartReadme.vue +4 -1
- package/components/nav/WindowManager/ContainerLogs.vue +92 -19
- package/components/nav/WindowManager/ContainerShell.vue +26 -6
- package/components/nav/WindowManager/Window.vue +8 -2
- package/components/nav/WindowManager/index.vue +17 -4
- package/config/labels-annotations.js +5 -42
- package/config/private-label.js +5 -2
- package/config/product/explorer.js +8 -2
- package/config/roles.ts +2 -1
- package/config/{settings.js → settings.ts} +33 -50
- package/config/types.js +2 -0
- package/content/docs/en-us/getting-started.md +3 -3
- package/content/docs/en-us/whats-new.md +9 -123
- package/core/plugins.js +11 -8
- package/creators/app/{files/.eslintignore → .eslintignore} +0 -0
- package/creators/app/{files/.eslintrc.js → .eslintrc.js} +0 -0
- package/creators/app/{files/.vscode → .vscode}/settings.json +0 -0
- package/creators/app/{files/babel.config.js → babel.config.js} +0 -0
- package/creators/app/init +17 -16
- package/creators/app/{files/nuxt.config.js → nuxt.config.js} +0 -0
- package/creators/app/package.json +1 -7
- package/creators/app/{files/tsconfig.json → tsconfig.json} +1 -2
- package/creators/pkg/{files/babel.config.js → babel.config.js} +0 -0
- package/creators/pkg/{files/index.ts → index.ts} +0 -0
- package/creators/pkg/init +1 -1
- package/creators/pkg/nuxt.config.js +6 -0
- package/creators/pkg/package-lock.json +37 -0
- package/creators/pkg/package.json +1 -1
- package/creators/pkg/{files/tsconfig.json → tsconfig.json} +12 -13
- package/creators/pkg/{files/vue.config.js → vue.config.js} +0 -0
- package/detail/autoscaling.horizontalpodautoscaler/index.vue +12 -3
- package/detail/catalog.cattle.io.app.vue +41 -8
- package/detail/catalog.cattle.io.clusterrepo.vue +4 -1
- package/detail/cis.cattle.io.clusterscan.vue +23 -5
- package/detail/configmap.vue +18 -4
- package/detail/constraints.gatekeeper.sh.constraint.vue +4 -1
- package/detail/fleet.cattle.io.cluster.vue +14 -3
- package/detail/fleet.cattle.io.clustergroup.vue +9 -2
- package/detail/fleet.cattle.io.gitrepo.vue +16 -3
- package/detail/harvesterhci.io.management.cluster.vue +5 -1
- package/detail/helm.cattle.io.projecthelmchart.vue +49 -13
- package/detail/management.cattle.io.fleetworkspace.vue +19 -4
- package/detail/management.cattle.io.roletemplate.vue +4 -1
- package/detail/management.cattle.io.user.vue +26 -5
- package/detail/namespace.vue +6 -4
- package/detail/networking.k8s.io.ingress.vue +16 -3
- package/detail/node.vue +83 -18
- package/detail/pod.vue +27 -5
- package/detail/provisioning.cattle.io.cluster.vue +195 -43
- package/detail/secret.vue +78 -19
- package/detail/service.vue +9 -2
- package/detail/workload/index.vue +81 -17
- package/dialog/AddClusterMemberDialog.vue +25 -6
- package/dialog/AddCustomBadgeDialog.vue +43 -10
- package/dialog/AddProjectMemberDialog.vue +27 -7
- package/dialog/AddonConfigConfirmationDialog.vue +17 -4
- package/dialog/DiagnosticTimingsDialog.vue +27 -6
- package/dialog/DrainNode.vue +46 -11
- package/dialog/ForceMachineRemoveDialog.vue +35 -8
- package/dialog/GenericPrompt.vue +28 -7
- package/dialog/RollbackWorkloadDialog.vue +45 -11
- package/dialog/RotateCertificatesDialog.vue +31 -6
- package/dialog/RotateEncryptionKeyDialog.vue +41 -10
- package/dialog/SaveAsRKETemplateDialog.vue +31 -7
- package/dialog/ScaleMachineDownDialog.vue +13 -3
- package/edit/__tests__/management.cattle.io.setting.test.ts +87 -0
- package/edit/auth/azuread.vue +20 -6
- package/edit/auth/github.vue +52 -11
- package/edit/auth/googleoauth.vue +81 -17
- package/edit/auth/ldap/config.vue +164 -31
- package/edit/auth/ldap/index.vue +29 -7
- package/edit/auth/oidc.vue +36 -8
- package/edit/auth/saml.vue +57 -12
- package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +9 -2
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +23 -6
- package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +8 -2
- package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +16 -4
- package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +13 -3
- package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +9 -2
- package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +6 -1
- package/edit/catalog.cattle.io.clusterrepo.vue +15 -3
- package/edit/cis.cattle.io.clusterscan.vue +53 -11
- package/edit/cis.cattle.io.clusterscanbenchmark.vue +15 -3
- package/edit/cis.cattle.io.clusterscanprofile.vue +13 -3
- package/edit/configmap.vue +5 -1
- package/edit/constraints.gatekeeper.sh.constraint/index.vue +40 -9
- package/edit/fleet.cattle.io.cluster.vue +6 -2
- package/edit/fleet.cattle.io.clustergroup.vue +12 -3
- package/edit/fleet.cattle.io.gitrepo.vue +25 -5
- package/edit/group.principal.vue +6 -1
- package/edit/harvesterhci.io.management.cluster.vue +22 -5
- package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +11 -2
- package/edit/logging-flow/Match.vue +2 -2
- package/edit/logging-flow/index.vue +67 -14
- package/edit/logging.banzaicloud.io.output/index.vue +37 -8
- package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +7 -2
- package/edit/logging.banzaicloud.io.output/providers/azurestorage.vue +19 -4
- package/edit/logging.banzaicloud.io.output/providers/cloudwatch.vue +24 -4
- package/edit/logging.banzaicloud.io.output/providers/datadog.vue +20 -5
- package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +21 -5
- package/edit/logging.banzaicloud.io.output/providers/file.vue +6 -1
- package/edit/logging.banzaicloud.io.output/providers/forward.vue +8 -3
- package/edit/logging.banzaicloud.io.output/providers/gcs.vue +25 -5
- package/edit/logging.banzaicloud.io.output/providers/gelf.vue +46 -8
- package/edit/logging.banzaicloud.io.output/providers/kafka.vue +26 -6
- package/edit/logging.banzaicloud.io.output/providers/kinesisStream.vue +7 -2
- package/edit/logging.banzaicloud.io.output/providers/logdna.vue +20 -4
- package/edit/logging.banzaicloud.io.output/providers/logz.vue +8 -3
- package/edit/logging.banzaicloud.io.output/providers/loki.vue +34 -8
- package/edit/logging.banzaicloud.io.output/providers/newrelic.vue +1 -1
- package/edit/logging.banzaicloud.io.output/providers/s3.vue +25 -5
- package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +33 -7
- package/edit/logging.banzaicloud.io.output/providers/syslog.vue +57 -12
- package/edit/management.cattle.io.clusterroletemplatebinding.vue +10 -2
- package/edit/management.cattle.io.fleetworkspace.vue +17 -4
- package/edit/management.cattle.io.project.vue +7 -1
- package/edit/management.cattle.io.roletemplate.vue +4 -1
- package/edit/management.cattle.io.setting.vue +71 -30
- package/edit/management.cattle.io.user.vue +4 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +24 -6
- package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +24 -5
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +29 -6
- package/edit/monitoring.coreos.com.alertmanagerconfig/tls.vue +12 -3
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +50 -9
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +31 -6
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +29 -6
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +8 -2
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +36 -7
- package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +24 -6
- package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +16 -6
- package/edit/monitoring.coreos.com.prometheusrule/index.vue +10 -2
- package/edit/monitoring.coreos.com.receiver/auth.vue +36 -7
- package/edit/monitoring.coreos.com.receiver/index.vue +53 -11
- package/edit/monitoring.coreos.com.receiver/tls.vue +22 -4
- package/edit/monitoring.coreos.com.receiver/types/email.vue +48 -8
- package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +32 -6
- package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +22 -4
- package/edit/monitoring.coreos.com.receiver/types/slack.vue +4 -1
- package/edit/monitoring.coreos.com.receiver/types/webhook.banner.vue +5 -1
- package/edit/monitoring.coreos.com.receiver/types/webhook.vue +31 -6
- package/edit/monitoring.coreos.com.route.vue +71 -15
- package/edit/namespace.vue +35 -7
- package/edit/networking.istio.io.destinationrule/LoadBalancer.vue +12 -3
- package/edit/networking.istio.io.destinationrule/index.vue +5 -3
- package/edit/networking.k8s.io.ingress/Certificate.vue +10 -2
- package/edit/networking.k8s.io.ingress/Certificates.vue +6 -1
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +16 -4
- package/edit/networking.k8s.io.ingress/Rule.vue +21 -5
- package/edit/networking.k8s.io.ingress/RulePath.vue +27 -6
- package/edit/networking.k8s.io.ingress/Rules.vue +7 -1
- package/edit/networking.k8s.io.ingress/index.vue +52 -9
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +20 -4
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +8 -2
- package/edit/networking.k8s.io.networkpolicy/index.vue +36 -8
- package/edit/node.vue +13 -3
- package/edit/persistentvolume/index.vue +48 -8
- package/edit/persistentvolume/plugins/awsElasticBlockStore.vue +19 -3
- package/edit/persistentvolume/plugins/azureDisk.vue +20 -3
- package/edit/persistentvolume/plugins/azureFile.vue +18 -3
- package/edit/persistentvolume/plugins/cephfs.vue +35 -6
- package/edit/persistentvolume/plugins/cinder.vue +24 -4
- package/edit/persistentvolume/plugins/csi.vue +72 -12
- package/edit/persistentvolume/plugins/fc.vue +23 -4
- package/edit/persistentvolume/plugins/flexVolume.vue +30 -5
- package/edit/persistentvolume/plugins/flocker.vue +12 -2
- package/edit/persistentvolume/plugins/gcePersistentDisk.vue +19 -3
- package/edit/persistentvolume/plugins/glusterfs.vue +12 -2
- package/edit/persistentvolume/plugins/hostPath.vue +12 -2
- package/edit/persistentvolume/plugins/iscsi.vue +54 -9
- package/edit/persistentvolume/plugins/local.vue +6 -1
- package/edit/persistentvolume/plugins/longhorn.vue +13 -2
- package/edit/persistentvolume/plugins/nfs.vue +12 -2
- package/edit/persistentvolume/plugins/photonPersistentDisk.vue +12 -2
- package/edit/persistentvolume/plugins/portworxVolume.vue +12 -2
- package/edit/persistentvolume/plugins/quobyte.vue +24 -4
- package/edit/persistentvolume/plugins/rbd.vue +47 -8
- package/edit/persistentvolume/plugins/scaleIO.vue +54 -9
- package/edit/persistentvolume/plugins/storageos.vue +30 -5
- package/edit/persistentvolume/plugins/vsphereVolume.vue +24 -4
- package/edit/persistentvolumeclaim.vue +69 -15
- package/edit/policy.poddisruptionbudget.vue +149 -0
- package/edit/provisioning.cattle.io.cluster/ACE.vue +6 -1
- package/edit/provisioning.cattle.io.cluster/AgentEnv.vue +4 -1
- package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +61 -15
- package/edit/provisioning.cattle.io.cluster/DrainOptions.vue +24 -4
- package/edit/provisioning.cattle.io.cluster/Labels.vue +4 -1
- package/edit/provisioning.cattle.io.cluster/MachinePool.vue +31 -8
- package/edit/provisioning.cattle.io.cluster/RegistryConfigs.vue +16 -3
- package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +4 -1
- package/edit/provisioning.cattle.io.cluster/S3Config.vue +35 -6
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +21 -5
- package/edit/provisioning.cattle.io.cluster/import.vue +23 -5
- package/edit/provisioning.cattle.io.cluster/index.vue +9 -0
- package/edit/provisioning.cattle.io.cluster/rke2.vue +203 -64
- package/edit/resources.cattle.io.backup.vue +42 -8
- package/edit/resources.cattle.io.restore.vue +53 -11
- package/edit/secret/basic.vue +12 -2
- package/edit/secret/index.vue +29 -7
- package/edit/secret/registry.vue +22 -4
- package/edit/secret/ssh.vue +10 -2
- package/edit/secret/tls.vue +10 -2
- package/edit/service.vue +12 -3
- package/edit/serviceaccount.vue +6 -3
- package/edit/storage.k8s.io.storageclass/index.vue +15 -3
- package/edit/storage.k8s.io.storageclass/provisioners/custom.vue +6 -1
- package/edit/storage.k8s.io.storageclass/provisioners/driver.longhorn.io.vue +6 -1
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +20 -3
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/azure-disk.vue +12 -2
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/azure-file.vue +18 -3
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/cinder.vue +13 -2
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +14 -2
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/glusterfs.vue +54 -9
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/portworx-volume.vue +42 -7
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/quobyte.vue +48 -8
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/rbd.vue +66 -11
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/scaleio.vue +48 -8
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/storageos.vue +30 -5
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +36 -6
- package/edit/token.vue +48 -10
- package/edit/workload/Job.vue +20 -5
- package/edit/workload/Upgrading.vue +28 -7
- package/edit/workload/index.vue +244 -48
- package/edit/workload/storage/azureDisk.vue +5 -1
- package/edit/workload/storage/azureFile.vue +5 -1
- package/edit/workload/storage/csi/driver.longhorn.io.vue +6 -1
- package/edit/workload/storage/csi/index.vue +9 -2
- package/edit/workload/storage/ephemeralVolume/index.vue +38 -8
- package/edit/workload/storage/gcePersistentDisk.vue +10 -2
- package/edit/workload/storage/hostPath.vue +18 -3
- package/edit/workload/storage/persistentVolumeClaim/index.vue +4 -1
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +26 -5
- package/edit/workload/storage/vsphereVolume.vue +10 -2
- package/layouts/blank.vue +1 -1
- package/layouts/default.vue +60 -65
- package/layouts/error.vue +25 -5
- package/layouts/home.vue +17 -4
- package/layouts/plain.vue +13 -3
- package/layouts/unauthenticated.vue +1 -1
- package/list/catalog.cattle.io.app.vue +15 -2
- package/list/catalog.cattle.io.clusterrepo.vue +5 -0
- package/list/cis.cattle.io.clusterscan.vue +6 -0
- package/list/fleet.cattle.io.bundle.vue +14 -2
- package/list/fleet.cattle.io.cluster.vue +10 -1
- package/list/fleet.cattle.io.clustergroup.vue +14 -2
- package/list/fleet.cattle.io.clusterregistrationtoken.vue +11 -3
- package/list/fleet.cattle.io.gitrepo.vue +6 -0
- package/list/group.principal.vue +11 -1
- package/list/harvesterhci.io.management.cluster.vue +25 -6
- package/list/helm.cattle.io.projecthelmchart.vue +23 -5
- package/list/logging.banzaicloud.io.clusterflow.vue +11 -1
- package/list/logging.banzaicloud.io.flow.vue +11 -1
- package/list/management.cattle.io.cluster.vue +12 -1
- package/list/management.cattle.io.feature.vue +71 -15
- package/list/management.cattle.io.setting.vue +44 -10
- package/list/management.cattle.io.user.vue +12 -1
- package/list/monitoring.coreos.com.alertmanagerconfig.vue +6 -0
- package/list/namespace.vue +8 -0
- package/list/node.vue +14 -2
- package/list/persistentvolume.vue +13 -1
- package/list/persistentvolumeclaim.vue +6 -0
- package/list/provisioning.cattle.io.cluster.vue +23 -4
- package/list/service.vue +6 -0
- package/list/ui.cattle.io.navlink.vue +20 -3
- package/list/workload.vue +15 -2
- package/machine-config/amazonec2.vue +12 -3
- package/machine-config/azure.vue +16 -7
- package/machine-config/digitalocean.vue +4 -1
- package/machine-config/generic.vue +4 -1
- package/machine-config/harvester.vue +23 -6
- package/machine-config/linode.vue +4 -1
- package/machine-config/vmwarevsphere.vue +91 -21
- package/mixins/__tests__/create-edit-view.test.ts +19 -0
- package/mixins/brand.js +12 -3
- package/mixins/form-validation.js +108 -33
- package/models/clusterroletemplatebinding.js +2 -5
- package/models/management.cattle.io.cluster.js +7 -1
- package/models/secret.js +9 -1
- package/models/workload.js +3 -3
- package/nuxt.config.js +28 -10
- package/package.json +2 -2
- package/pages/about.vue +41 -9
- package/pages/account/index.vue +20 -5
- package/pages/auth/login.vue +83 -22
- package/pages/auth/logout.vue +1 -1
- package/pages/auth/setup.vue +48 -12
- package/pages/auth/verify.vue +1 -1
- package/pages/c/_cluster/_product/members/index.vue +3 -1
- package/pages/c/_cluster/_product/namespaces.vue +4 -1
- package/pages/c/_cluster/apps/charts/chart.vue +124 -27
- package/pages/c/_cluster/apps/charts/index.vue +35 -8
- package/pages/c/_cluster/apps/charts/install.vue +200 -48
- package/pages/c/_cluster/auth/config/_id.vue +4 -1
- package/pages/c/_cluster/auth/config/index.vue +6 -2
- package/pages/c/_cluster/auth/group.principal/assign-edit.vue +10 -5
- package/pages/c/_cluster/auth/roles/index.vue +33 -7
- package/pages/c/_cluster/explorer/ConfigBadge.vue +4 -1
- package/pages/c/_cluster/explorer/index.vue +109 -24
- package/pages/c/_cluster/explorer/tools/index.vue +76 -17
- package/pages/c/_cluster/explorer/tools/pages/_page.vue +4 -1
- package/pages/c/_cluster/fleet/index.vue +9 -2
- package/pages/c/_cluster/gatekeeper/index.vue +4 -1
- package/pages/c/_cluster/istio/index.vue +20 -8
- package/pages/c/_cluster/legacy/pages/_page.vue +4 -1
- package/pages/c/_cluster/legacy/project/_page.vue +4 -1
- package/pages/c/_cluster/legacy/project/index.vue +4 -1
- package/pages/c/_cluster/legacy/project/pipelines.vue +27 -5
- package/pages/c/_cluster/logging/index.vue +4 -1
- package/pages/c/_cluster/longhorn/index.vue +16 -5
- package/pages/c/_cluster/manager/cloudCredential/index.vue +15 -3
- package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +1 -1
- package/pages/c/_cluster/monitoring/index.vue +14 -5
- package/pages/c/_cluster/monitoring/monitor/index.vue +24 -6
- package/pages/c/_cluster/monitoring/route-receiver/index.vue +25 -6
- package/pages/c/_cluster/neuvector/index.vue +16 -5
- package/pages/c/_cluster/settings/DefaultLinksEditor.vue +25 -7
- package/pages/c/_cluster/settings/banners.vue +10 -2
- package/pages/c/_cluster/settings/brand.vue +75 -17
- package/pages/c/_cluster/settings/links.vue +16 -4
- package/pages/c/_cluster/settings/performance.vue +22 -5
- package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +19 -4
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +14 -3
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +54 -12
- package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +18 -4
- package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +14 -3
- package/pages/c/_cluster/uiplugins/UninstallDialog.vue +9 -2
- package/pages/c/_cluster/uiplugins/index.vue +149 -34
- package/pages/diagnostic.vue +14 -5
- package/pages/docs/_doc.vue +22 -5
- package/pages/fail-whale.vue +26 -6
- package/pages/home.vue +54 -14
- package/pages/prefs.vue +65 -22
- package/pages/rio/mesh.vue +6 -2
- package/pages/support/index.vue +35 -7
- package/plugins/steve/subscribe.js +1 -1
- package/promptRemove/management.cattle.io.globalrole.vue +9 -3
- package/promptRemove/management.cattle.io.project.vue +14 -5
- package/promptRemove/management.cattle.io.roletemplate.vue +9 -3
- package/promptRemove/pod.vue +15 -3
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
- package/rancher-components/StringList/StringList.test.ts +80 -0
- package/rancher-components/StringList/StringList.vue +593 -0
- package/rancher-components/StringList/index.ts +1 -0
- package/scripts/publish-shell.sh +5 -38
- package/scripts/test-plugins-build.sh +5 -9
- package/store/prefs.js +1 -1
- package/types/form.ts +1 -0
- package/types/generic.ts +2 -0
- package/types/t.ts +1 -0
- package/types/userPreferences.d.ts +14 -0
- package/utils/array.ts +21 -0
- package/utils/favicon.js +2 -0
- package/utils/settings.ts +50 -0
- package/utils/validators/formRules/__tests__/index.test.ts +22 -1
- package/utils/validators/formRules/index.ts +68 -43
- package/creators/update/init +0 -54
- package/creators/update/package.json +0 -20
- package/creators/update/upgrade +0 -56
- package/scripts/record-deps.js +0 -37
- package/scripts/typegen.sh +0 -84
- package/types/shell/index.d.ts +0 -3046
- package/types/vue-shim.d +0 -20
|
@@ -4,32 +4,54 @@ import formRulesGenerator from '@shell/utils/validators/formRules/index';
|
|
|
4
4
|
export default {
|
|
5
5
|
data() {
|
|
6
6
|
return {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Define the validation rules for the entire form.
|
|
9
|
+
* These should almost always be overridden in the form-component using the mixin
|
|
10
|
+
*
|
|
11
|
+
* path (required): defines the path of the value to be tested against it's rules. Looks for the relevant path in `this.value` unless an is passed in via rootObject
|
|
12
|
+
* rules (required): array of strings that match which validator functions to run against the value of the field defined by the path (and optionally the rulesets rootObject),
|
|
13
|
+
* rootObject (optional): redirects the path to the object passed here,
|
|
14
|
+
* translationKey (optional): defines the displaykey, overrides displaykeys that may otherwise be passed into the translation
|
|
15
|
+
*
|
|
16
|
+
* NOTE: path of type 'value.value' will be only 'value'
|
|
17
|
+
*
|
|
18
|
+
* Example:
|
|
19
|
+
* {
|
|
20
|
+
* path: 'container.image',
|
|
21
|
+
* rules: ['noSpaces', 'noPeriods'],
|
|
22
|
+
* rootObject: { container: { image: 'name' } },
|
|
23
|
+
* translationKey: 'Image Name',
|
|
24
|
+
* }
|
|
25
|
+
*/
|
|
26
|
+
fvFormRuleSets: [],
|
|
27
|
+
/**
|
|
28
|
+
* An array of strings that track which ruleset paths have been bound to a field for error
|
|
29
|
+
* reporting tracked in a separate array from the actual rulesets since we want the option
|
|
30
|
+
* of keeping track of modelValidationRules without mutating the model itself you may place
|
|
31
|
+
* a path in here manually as part of your form's data props or you may place a path in
|
|
32
|
+
* here programmatically by using the "fvGetAndReportPathRules" method
|
|
33
|
+
*/
|
|
34
|
+
fvReportedValidationPaths: []
|
|
24
35
|
};
|
|
25
36
|
},
|
|
26
37
|
|
|
27
38
|
methods: {
|
|
28
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Returns an array of validator functions based off path property of the ruleset, use this if you want
|
|
41
|
+
* the array but you don't want the form to track that the rules have been bound to a field
|
|
42
|
+
* @param {*} path
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
29
45
|
fvGetPathRules(path) {
|
|
30
46
|
return this.fvRulesets.find(ruleset => ruleset.path === path)?.rules || [];
|
|
31
47
|
},
|
|
32
|
-
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Returns an array of validator functions and pushes the path of the relevant ruleset into
|
|
51
|
+
* fvReportedValidationPaths so that we know any error messages are handled by the field using it
|
|
52
|
+
* @param {*} path
|
|
53
|
+
* @returns
|
|
54
|
+
*/
|
|
33
55
|
fvGetAndReportPathRules(path) {
|
|
34
56
|
const rules = this.fvGetPathRules(path);
|
|
35
57
|
|
|
@@ -39,8 +61,16 @@ export default {
|
|
|
39
61
|
|
|
40
62
|
return rules;
|
|
41
63
|
},
|
|
42
|
-
|
|
43
|
-
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Validates that the path is one that belongs to a ruleset (either a formRuleset or from the
|
|
67
|
+
* modelValidationRules) and returns its value(s) in an array
|
|
68
|
+
* @param {*} path
|
|
69
|
+
* @returns
|
|
70
|
+
*/
|
|
71
|
+
fvGetPathValues(path) { //
|
|
72
|
+
// returns even single values as an array to simplify validation logic since
|
|
73
|
+
// some fields may have multiple values
|
|
44
74
|
const relevantRuleset = this.fvRulesets.find(ruleset => ruleset.path === path);
|
|
45
75
|
|
|
46
76
|
if (!relevantRuleset) {
|
|
@@ -49,11 +79,26 @@ export default {
|
|
|
49
79
|
|
|
50
80
|
return getAllValues(relevantRuleset?.rootObject || this.value, relevantRuleset?.path);
|
|
51
81
|
},
|
|
52
|
-
|
|
82
|
+
|
|
83
|
+
fvGetValues(val, idx, arr) {
|
|
84
|
+
return (arr.length > 1 &&
|
|
85
|
+
typeof val === 'object' &&
|
|
86
|
+
!Array.isArray(val) &&
|
|
87
|
+
val !== null ? { ...val, idx } : val
|
|
88
|
+
);
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Gets errors from multiple paths, usually used externally to check a single path but used
|
|
93
|
+
* within the mixin to check all paths for errors
|
|
94
|
+
* @param {*} paths
|
|
95
|
+
* @returns
|
|
96
|
+
*/
|
|
97
|
+
fvGetPathErrors(paths = []) {
|
|
53
98
|
const messages = paths.reduce((acc, path) => {
|
|
54
99
|
const pathErrors = [];
|
|
55
100
|
const relevantRules = this.fvGetPathRules(path);
|
|
56
|
-
const relevantValues = this.fvGetPathValues(path).map(
|
|
101
|
+
const relevantValues = this.fvGetPathValues(path).map(this.fvGetValues);
|
|
57
102
|
|
|
58
103
|
relevantRules.forEach((rule) => {
|
|
59
104
|
relevantValues.forEach((value) => {
|
|
@@ -61,26 +106,41 @@ export default {
|
|
|
61
106
|
});
|
|
62
107
|
});
|
|
63
108
|
|
|
64
|
-
return [...acc, ...pathErrors].filter(
|
|
109
|
+
return [...acc, ...pathErrors].filter(Boolean);
|
|
65
110
|
}, []);
|
|
66
111
|
|
|
67
112
|
return messages;
|
|
68
113
|
},
|
|
69
114
|
},
|
|
115
|
+
|
|
70
116
|
computed: {
|
|
71
|
-
|
|
72
|
-
|
|
117
|
+
/**
|
|
118
|
+
* fvExtraRules allows you to create rules that might be specific to a form inside of
|
|
119
|
+
* that form component and pass them into the mixin's logic.
|
|
120
|
+
* fvExtraRules needs to return an object with a validation rule function in each key.
|
|
121
|
+
* This is a computed property as returning functions in the data props is not considered
|
|
122
|
+
* a best practice
|
|
123
|
+
* @returns
|
|
124
|
+
*/
|
|
73
125
|
fvExtraRules() {
|
|
74
126
|
return {};
|
|
75
127
|
},
|
|
76
|
-
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Rulesets is a combination of the rules defined in the fvFormRuleSets array and the
|
|
131
|
+
* modelValidationRules in the model. Theoretically, a form could just use the rulesets
|
|
132
|
+
* defined in the model however in practice this can be limiting
|
|
133
|
+
* @returns
|
|
134
|
+
*/
|
|
77
135
|
fvRulesets() {
|
|
78
136
|
const nullValidator = () => undefined;
|
|
79
137
|
|
|
80
138
|
return [
|
|
81
139
|
...this.fvFormRuleSets.map((ruleset) => {
|
|
82
140
|
const formRules = {
|
|
83
|
-
...formRulesGenerator(
|
|
141
|
+
...formRulesGenerator(
|
|
142
|
+
this.$store.getters['i18n/t'],
|
|
143
|
+
{ displayKey: ruleset?.translationKey ? this.$store.getters['i18n/t'](ruleset.translationKey) : 'Value' }),
|
|
84
144
|
...this.fvExtraRules
|
|
85
145
|
};
|
|
86
146
|
|
|
@@ -96,25 +156,40 @@ export default {
|
|
|
96
156
|
}))
|
|
97
157
|
];
|
|
98
158
|
},
|
|
99
|
-
|
|
100
|
-
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* If either the fvFormRuleSets or the modelValidationRules throw an error and the associated path
|
|
162
|
+
* isn't in the reportValidationPaths then it'll show up here.
|
|
163
|
+
* Useful for throwing unreported errors into a generic banner
|
|
164
|
+
* @returns
|
|
165
|
+
*/
|
|
166
|
+
fvUnreportedValidationErrors() { //
|
|
101
167
|
const paths = this.fvRulesets
|
|
102
168
|
.filter(ruleset => !!ruleset.formValidationRule && !this.fvReportedValidationPaths.includes(ruleset.path))
|
|
103
169
|
.map(ruleset => ruleset.path);
|
|
104
170
|
|
|
105
171
|
const formErrors = this.fvGetPathErrors(paths);
|
|
106
172
|
|
|
107
|
-
|
|
173
|
+
// the model already has a means of producing errors, not reinventing the wheel... yet...
|
|
174
|
+
const modelErrors = this.value.customValidationErrors ? this.value.customValidationErrors(this.value, this.fvReportedValidationPaths) : [];
|
|
108
175
|
|
|
109
176
|
return [...formErrors, ...modelErrors, ...(this.errors || [])];
|
|
110
177
|
},
|
|
111
|
-
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Checks for any and all errors, regardless of being bound, from the model, or from the form
|
|
181
|
+
* @returns
|
|
182
|
+
*/
|
|
183
|
+
fvValidationErrors() {
|
|
112
184
|
const paths = this.fvRulesets.filter(ruleset => !!ruleset.formValidationRule).map(ruleset => ruleset.path);
|
|
113
185
|
const formErrors = this.fvGetPathErrors(paths);
|
|
114
|
-
|
|
186
|
+
|
|
187
|
+
// the model already has a means of producing errors, not reinventing the wheel... yet...
|
|
188
|
+
const modelErrors = this.value.customValidationErrors ? this.value.customValidationErrors(this.value) : [];
|
|
115
189
|
|
|
116
190
|
return [...formErrors, ...modelErrors];
|
|
117
191
|
},
|
|
192
|
+
|
|
118
193
|
fvFormIsValid() {
|
|
119
194
|
return this.fvValidationErrors.length === 0;
|
|
120
195
|
}
|
|
@@ -18,10 +18,7 @@ export default class CRTB extends NormanModel {
|
|
|
18
18
|
return this.$rootGetters['management/byId'](MANAGEMENT.ROLE_TEMPLATE, this.roleTemplateId);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
get
|
|
22
|
-
return this.$
|
|
23
|
-
type: MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING,
|
|
24
|
-
id: this.id?.replace(':', '/')
|
|
25
|
-
}, { root: true });
|
|
21
|
+
get clusterroletemplatebinding() {
|
|
22
|
+
return this.$rootGetters[`management/byId`](MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING, this.id?.replace(':', '/'));
|
|
26
23
|
}
|
|
27
24
|
}
|
|
@@ -247,6 +247,12 @@ export default class MgmtCluster extends HybridModel {
|
|
|
247
247
|
return isHarvesterCluster(this);
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
+
get isHostedKubernetesProvider() {
|
|
251
|
+
const providers = ['AKS', 'EKS', 'GKE'];
|
|
252
|
+
|
|
253
|
+
return providers.includes(this.provisioner);
|
|
254
|
+
}
|
|
255
|
+
|
|
250
256
|
get providerLogo() {
|
|
251
257
|
const provider = this.status?.provider || 'kubernetes';
|
|
252
258
|
// Only interested in the part before the period
|
|
@@ -437,7 +443,7 @@ export default class MgmtCluster extends HybridModel {
|
|
|
437
443
|
// RKE2 cluster IDs include the name - fleet-default/cluster-name - whereas an RKE1
|
|
438
444
|
// cluster has the less human readable management cluster ID in it: fleet-default/c-khk48
|
|
439
445
|
|
|
440
|
-
const verb = this.isLocal || isRKE1 ? 'to' : 'from';
|
|
446
|
+
const verb = this.isLocal || isRKE1 || this.isHostedKubernetesProvider ? 'to' : 'from';
|
|
441
447
|
const from = `${ verb }Type`;
|
|
442
448
|
const id = `${ verb }Id`;
|
|
443
449
|
|
package/models/secret.js
CHANGED
|
@@ -249,12 +249,20 @@ export default class Secret extends SteveModel {
|
|
|
249
249
|
get certInfo() {
|
|
250
250
|
const pem = base64Decode(this.data['tls.crt']);
|
|
251
251
|
let issuer, notAfter, cn, sans, x;
|
|
252
|
+
const END_MARKER = '-----END CERTIFICATE-----';
|
|
252
253
|
|
|
253
254
|
if (pem) {
|
|
255
|
+
const certs = pem.split(END_MARKER);
|
|
256
|
+
let first = pem;
|
|
257
|
+
|
|
258
|
+
if (certs.length > 1) {
|
|
259
|
+
first = `${ certs[0] }${ END_MARKER }`;
|
|
260
|
+
}
|
|
261
|
+
|
|
254
262
|
try {
|
|
255
263
|
x = new r.X509();
|
|
256
264
|
|
|
257
|
-
x.readCertPEM(
|
|
265
|
+
x.readCertPEM(first);
|
|
258
266
|
const issuerString = x.getIssuerString();
|
|
259
267
|
|
|
260
268
|
issuer = issuerString.slice(issuerString.indexOf('CN=') + 3);
|
package/models/workload.js
CHANGED
|
@@ -499,7 +499,7 @@ export default class Workload extends WorkloadService {
|
|
|
499
499
|
return ports;
|
|
500
500
|
}
|
|
501
501
|
|
|
502
|
-
get
|
|
502
|
+
get ownedByWorkload() {
|
|
503
503
|
const types = Object.values(WORKLOAD_TYPES);
|
|
504
504
|
|
|
505
505
|
if (this.metadata?.ownerReferences) {
|
|
@@ -507,12 +507,12 @@ export default class Workload extends WorkloadService {
|
|
|
507
507
|
const have = (`${ owner.apiVersion.replace(/\/.*/, '') }.${ owner.kind }`).toLowerCase();
|
|
508
508
|
|
|
509
509
|
if ( types.includes(have) ) {
|
|
510
|
-
return
|
|
510
|
+
return true;
|
|
511
511
|
}
|
|
512
512
|
}
|
|
513
513
|
}
|
|
514
514
|
|
|
515
|
-
return
|
|
515
|
+
return false;
|
|
516
516
|
}
|
|
517
517
|
|
|
518
518
|
get isFromNorman() {
|
package/nuxt.config.js
CHANGED
|
@@ -33,6 +33,13 @@ const pl = process.env.PL || STANDARD;
|
|
|
33
33
|
const commit = process.env.COMMIT || 'head';
|
|
34
34
|
const perfTest = (process.env.PERF_TEST === 'true'); // Enable performance testing when in dev
|
|
35
35
|
|
|
36
|
+
// Allow skipping of eslint check
|
|
37
|
+
// 0 = Skip browser and console checks
|
|
38
|
+
// 1 = Skip browser check
|
|
39
|
+
// 2 = Do not skip any checks
|
|
40
|
+
const skipEsLintCheckStr = (process.env.SKIP_ESLINT || '');
|
|
41
|
+
const skipEsLintCheck = parseInt(skipEsLintCheckStr, 10) || 2;
|
|
42
|
+
|
|
36
43
|
// ===============================================================================================
|
|
37
44
|
// Nuxt configuration
|
|
38
45
|
// ===============================================================================================
|
|
@@ -56,7 +63,10 @@ export default function(dir, _appConfig) {
|
|
|
56
63
|
NUXT_SHELL = '~~/shell';
|
|
57
64
|
COMPONENTS_DIR = path.join(dir, 'pkg', 'rancher-components', 'src', 'components');
|
|
58
65
|
|
|
59
|
-
|
|
66
|
+
// Skip eslint check that runs as part of nuxt build in the console
|
|
67
|
+
if (skipEsLintCheck > 0) {
|
|
68
|
+
typescript = { typeCheck: { eslint: { files: './shell/**/*.{ts,js,vue}' } } };
|
|
69
|
+
}
|
|
60
70
|
}
|
|
61
71
|
|
|
62
72
|
// ===============================================================================================
|
|
@@ -259,6 +269,22 @@ export default function(dir, _appConfig) {
|
|
|
259
269
|
|
|
260
270
|
console.log(`API: '${ api }'. Env: '${ rancherEnv }'`); // eslint-disable-line no-console
|
|
261
271
|
|
|
272
|
+
// Nuxt modules
|
|
273
|
+
let nuxtModules = [
|
|
274
|
+
'@nuxtjs/proxy',
|
|
275
|
+
'@nuxtjs/axios',
|
|
276
|
+
'@nuxtjs/eslint-module',
|
|
277
|
+
'@nuxtjs/webpack-profile',
|
|
278
|
+
'cookie-universal-nuxt',
|
|
279
|
+
'portal-vue/nuxt',
|
|
280
|
+
path.join(NUXT_SHELL, 'plugins/dashboard-store/rehydrate-all'),
|
|
281
|
+
];
|
|
282
|
+
|
|
283
|
+
// Remove es-lint nuxt module if env var configures this
|
|
284
|
+
if (skipEsLintCheck < 2) {
|
|
285
|
+
nuxtModules = nuxtModules.filter(s => !s.includes('eslint-module'));
|
|
286
|
+
}
|
|
287
|
+
|
|
262
288
|
const config = {
|
|
263
289
|
dev,
|
|
264
290
|
|
|
@@ -545,15 +571,7 @@ export default function(dir, _appConfig) {
|
|
|
545
571
|
},
|
|
546
572
|
|
|
547
573
|
// Nuxt modules
|
|
548
|
-
modules:
|
|
549
|
-
'@nuxtjs/proxy',
|
|
550
|
-
'@nuxtjs/axios',
|
|
551
|
-
'@nuxtjs/eslint-module',
|
|
552
|
-
'@nuxtjs/webpack-profile',
|
|
553
|
-
'cookie-universal-nuxt',
|
|
554
|
-
'portal-vue/nuxt',
|
|
555
|
-
path.join(NUXT_SHELL, 'plugins/dashboard-store/rehydrate-all'),
|
|
556
|
-
],
|
|
574
|
+
modules: nuxtModules,
|
|
557
575
|
|
|
558
576
|
// Vue plugins
|
|
559
577
|
plugins: [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rancher/shell",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "Rancher Dashboard Shell",
|
|
5
5
|
"repository": "https://github.com/rancherlabs/dashboard",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"nyc": "15.1.0",
|
|
114
114
|
"papaparse": "5.3.0",
|
|
115
115
|
"portal-vue": "2.1.7",
|
|
116
|
-
"rancher-icons": "rancher/icons#v2.0.
|
|
116
|
+
"rancher-icons": "rancher/icons#v2.0.9",
|
|
117
117
|
"require-extension-hooks": "0.3.3",
|
|
118
118
|
"require-extension-hooks-babel": "1.0.0",
|
|
119
119
|
"require-extension-hooks-vue": "3.0.0",
|
package/pages/about.vue
CHANGED
|
@@ -88,7 +88,10 @@ export default {
|
|
|
88
88
|
|
|
89
89
|
<template>
|
|
90
90
|
<Loading v-if="!settings" />
|
|
91
|
-
<div
|
|
91
|
+
<div
|
|
92
|
+
v-else
|
|
93
|
+
class="about"
|
|
94
|
+
>
|
|
92
95
|
<BackLink :link="backLink" />
|
|
93
96
|
<div class="title-block mt-20 mb-40">
|
|
94
97
|
<h1 v-t="'about.title'" />
|
|
@@ -109,28 +112,44 @@ export default {
|
|
|
109
112
|
</thead>
|
|
110
113
|
<tr v-if="rancherVersion">
|
|
111
114
|
<td>
|
|
112
|
-
<a
|
|
115
|
+
<a
|
|
116
|
+
href="https://github.com/rancher/rancher"
|
|
117
|
+
target="_blank"
|
|
118
|
+
rel="nofollow noopener noreferrer"
|
|
119
|
+
>
|
|
113
120
|
{{ appName }}
|
|
114
121
|
</a>
|
|
115
122
|
</td><td>{{ rancherVersion.value }}</td>
|
|
116
123
|
</tr>
|
|
117
124
|
<tr v-if="cliVersion">
|
|
118
125
|
<td>
|
|
119
|
-
<a
|
|
126
|
+
<a
|
|
127
|
+
href="https://github.com/rancher/cli"
|
|
128
|
+
target="_blank"
|
|
129
|
+
rel="nofollow noopener noreferrer"
|
|
130
|
+
>
|
|
120
131
|
{{ appName }} {{ t("about.versions.cli") }}
|
|
121
132
|
</a>
|
|
122
133
|
</td><td>{{ cliVersion.value }}</td>
|
|
123
134
|
</tr>
|
|
124
135
|
<tr v-if="helmVersion">
|
|
125
136
|
<td>
|
|
126
|
-
<a
|
|
137
|
+
<a
|
|
138
|
+
href="https://github.com/rancher/helm"
|
|
139
|
+
target="_blank"
|
|
140
|
+
rel="nofollow noopener noreferrer"
|
|
141
|
+
>
|
|
127
142
|
{{ t("about.versions.helm") }}
|
|
128
143
|
</a>
|
|
129
144
|
</td><td>{{ helmVersion.value }}</td>
|
|
130
145
|
</tr>
|
|
131
146
|
<tr v-if="dockerMachineVersion">
|
|
132
147
|
<td>
|
|
133
|
-
<a
|
|
148
|
+
<a
|
|
149
|
+
href="https://github.com/rancher/machine"
|
|
150
|
+
target="_blank"
|
|
151
|
+
rel="nofollow noopener noreferrer"
|
|
152
|
+
>
|
|
134
153
|
{{ t("about.versions.machine") }}
|
|
135
154
|
</a>
|
|
136
155
|
</td><td>{{ dockerMachineVersion.value }}</td>
|
|
@@ -146,14 +165,20 @@ export default {
|
|
|
146
165
|
{{ t('about.downloadImageList.title') }}
|
|
147
166
|
</h3>
|
|
148
167
|
<table>
|
|
149
|
-
<tr
|
|
168
|
+
<tr
|
|
169
|
+
v-for="d in downloadImageList"
|
|
170
|
+
:key="d.icon"
|
|
171
|
+
>
|
|
150
172
|
<td>
|
|
151
173
|
<div class="os">
|
|
152
174
|
<i :class="`icon ${d.icon} mr-5`" /> {{ t(d.label) }}
|
|
153
175
|
</div>
|
|
154
176
|
</td>
|
|
155
177
|
<td>
|
|
156
|
-
<a
|
|
178
|
+
<a
|
|
179
|
+
v-if="d.imageList"
|
|
180
|
+
@click="d.imageList"
|
|
181
|
+
>
|
|
157
182
|
{{ t('asyncButton.download.action') }}
|
|
158
183
|
</a>
|
|
159
184
|
</td>
|
|
@@ -165,14 +190,21 @@ export default {
|
|
|
165
190
|
{{ t('about.downloadCLI.title') }}
|
|
166
191
|
</h3>
|
|
167
192
|
<table>
|
|
168
|
-
<tr
|
|
193
|
+
<tr
|
|
194
|
+
v-for="d in downloadCli"
|
|
195
|
+
:key="d.icon"
|
|
196
|
+
class="link"
|
|
197
|
+
>
|
|
169
198
|
<td>
|
|
170
199
|
<div class="os">
|
|
171
200
|
<i :class="`icon ${d.icon} mr-5`" /> {{ t(d.label) }}
|
|
172
201
|
</div>
|
|
173
202
|
</td>
|
|
174
203
|
<td>
|
|
175
|
-
<a
|
|
204
|
+
<a
|
|
205
|
+
v-if="d.cliLink"
|
|
206
|
+
:href="d.cliLink"
|
|
207
|
+
>{{ d.cliFile }}</a>
|
|
176
208
|
</td>
|
|
177
209
|
</tr>
|
|
178
210
|
</table>
|
package/pages/account/index.vue
CHANGED
|
@@ -148,7 +148,12 @@ export default {
|
|
|
148
148
|
|
|
149
149
|
<h2 v-t="'accountAndKeys.account.title'" />
|
|
150
150
|
<div class="account">
|
|
151
|
-
<Principal
|
|
151
|
+
<Principal
|
|
152
|
+
:key="principal.id"
|
|
153
|
+
:value="principal.id"
|
|
154
|
+
:use-muted="false"
|
|
155
|
+
:show-labels="true"
|
|
156
|
+
/>
|
|
152
157
|
<div>
|
|
153
158
|
<button
|
|
154
159
|
v-if="canChangePassword"
|
|
@@ -162,7 +167,7 @@ export default {
|
|
|
162
167
|
</div>
|
|
163
168
|
<PromptChangePassword ref="promptChangePassword" />
|
|
164
169
|
|
|
165
|
-
<hr
|
|
170
|
+
<hr>
|
|
166
171
|
<div class="keys-header">
|
|
167
172
|
<div>
|
|
168
173
|
<h2 v-t="'accountAndKeys.apiKeys.title'" />
|
|
@@ -171,11 +176,18 @@ export default {
|
|
|
171
176
|
<CopyToClipboardText :text="apiUrl" />
|
|
172
177
|
</div>
|
|
173
178
|
</div>
|
|
174
|
-
<button
|
|
179
|
+
<button
|
|
180
|
+
v-if="apiKeySchema"
|
|
181
|
+
class="btn role-primary add mb-20"
|
|
182
|
+
@click="addKey"
|
|
183
|
+
>
|
|
175
184
|
{{ t('accountAndKeys.apiKeys.add.label') }}
|
|
176
185
|
</button>
|
|
177
186
|
</div>
|
|
178
|
-
<div
|
|
187
|
+
<div
|
|
188
|
+
v-if="apiKeySchema"
|
|
189
|
+
class="keys"
|
|
190
|
+
>
|
|
179
191
|
<ResourceTable
|
|
180
192
|
:schema="apiKeySchema"
|
|
181
193
|
:rows="apiKeys"
|
|
@@ -187,7 +199,10 @@ export default {
|
|
|
187
199
|
/>
|
|
188
200
|
</div>
|
|
189
201
|
<div v-else>
|
|
190
|
-
<Banner
|
|
202
|
+
<Banner
|
|
203
|
+
color="warning"
|
|
204
|
+
:label="t('accountAndKeys.apiKeys.notAllowed')"
|
|
205
|
+
/>
|
|
191
206
|
</div>
|
|
192
207
|
</div>
|
|
193
208
|
</template>
|