dashboard-shell-shell 3.0.2-test.20250913 → 3.0.5-logTest.2
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/favicon.png +0 -0
- package/assets/data/aws-regions.json +3 -0
- package/assets/icons/demo.css:Zone.Identifier +0 -0
- package/assets/icons/demo_index.html:Zone.Identifier +0 -0
- package/assets/icons/iconfont.css +4 -1
- package/assets/icons/iconfont.css:Zone.Identifier +0 -0
- package/assets/icons/iconfont.js:Zone.Identifier +0 -0
- package/assets/icons/iconfont.json:Zone.Identifier +0 -0
- package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
- package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
- package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
- package/assets/iconsNew/demo.css +539 -0
- package/assets/iconsNew/demo.css:Zone.Identifier +0 -0
- package/assets/iconsNew/demo_index.html +303 -0
- package/assets/iconsNew/demo_index.html:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.css +43 -0
- package/assets/iconsNew/iconfont.css:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.js +1 -0
- package/assets/iconsNew/iconfont.js:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.json +44 -0
- package/assets/iconsNew/iconfont.json:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.ttf +0 -0
- package/assets/iconsNew/iconfont.ttf:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.woff +0 -0
- package/assets/iconsNew/iconfont.woff2 +0 -0
- package/assets/iconsNew/iconfont.woff2:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.woff:Zone.Identifier +0 -0
- package/assets/images/icons/document.svg +3 -0
- package/assets/images/key.svg +17 -0
- package/assets/images/pl/dark/logo.png +0 -0
- package/assets/images/providers/sks.svg +1 -0
- package/assets/images/vendor/cognito.svg +1 -0
- package/assets/styles/all.scss +23 -3
- package/assets/styles/app.scss +4 -0
- package/assets/styles/base/_basic.scss +10 -0
- package/assets/styles/base/_helpers.scss +1 -1
- package/assets/styles/base/_spacing.scss +29 -0
- package/assets/styles/base/_variables.scss +21 -15
- package/assets/styles/fonts/_icons.scss +3 -2
- package/assets/styles/global/_button.scss +8 -8
- package/assets/styles/global/_form.scss +1 -0
- package/assets/styles/global/_labeled-input.scss +1 -1
- package/assets/styles/global/_layout.scss +1 -1
- package/assets/styles/global/_select.scss +1 -1
- package/assets/styles/global/_tooltip.scss +9 -5
- package/assets/styles/themes/_dark.scss +30 -0
- package/assets/styles/themes/_light.scss +85 -5
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +886 -105
- package/assets/translations/zh-hans.yaml +298 -25
- package/chart/__tests__/S3.test.ts +2 -1
- package/chart/monitoring/index.vue +1 -1
- package/cloud-credential/gcp.vue +9 -1
- package/components/ActionDropdown.vue +1 -1
- package/components/ActionMenuShell.vue +3 -7
- package/components/AppModal.vue +9 -28
- package/components/AsyncButton.vue +2 -0
- package/components/BrandImage.vue +0 -21
- package/components/ButtonDropdown.vue +3 -1
- package/components/Certificates.vue +5 -0
- package/components/ClusterIconMenu.vue +1 -1
- package/components/CodeMirror.vue +9 -7
- package/components/CommunityLinks.vue +3 -58
- package/components/ConfigMapSettings/Settings.vue +377 -0
- package/components/ConfigMapSettings/index.vue +354 -0
- package/components/ConsumptionGauge.vue +1 -1
- package/components/ContainerResourceLimit.vue +2 -2
- package/components/CopyToClipboard.vue +15 -0
- package/components/CruResource.vue +106 -18
- package/components/DetailText.vue +61 -11
- package/components/Drawer/Chrome.vue +115 -0
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +64 -0
- package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
- package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
- package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
- package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +106 -0
- package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
- package/components/Drawer/ResourceDetailDrawer/composables.ts +53 -0
- package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
- package/components/Drawer/ResourceDetailDrawer/index.vue +124 -0
- package/components/ExplorerMembers.vue +28 -4
- package/components/ExplorerProjectsNamespaces.vue +46 -29
- package/components/FilterPanel.vue +156 -0
- package/components/FixedBanner.vue +19 -5
- package/components/{fleet/ForceDirectedTreeChart/index.vue → ForceDirectedTreeChart.vue} +47 -41
- package/components/GlobalRoleBindings.vue +69 -114
- package/components/GrowlManager.vue +16 -15
- package/components/IconOrSvg.vue +19 -35
- package/components/KeyValueView.vue +1 -1
- package/components/LandingPagePreference.vue +2 -0
- package/components/Loading.vue +1 -1
- package/components/LocaleSelector.vue +10 -2
- package/components/PaginatedResourceTable.vue +53 -1
- package/components/PodSecurityAdmission.vue +2 -2
- package/components/ProgressBarMulti.vue +1 -0
- package/components/PromptModal.vue +38 -7
- package/components/PromptRemove.vue +28 -2
- package/components/PromptRestore.vue +22 -44
- package/components/RelatedResources.vue +7 -12
- package/components/Resource/Detail/Additional.vue +46 -0
- package/components/Resource/Detail/Card/PodsCard/Bubble.vue +13 -0
- package/components/Resource/Detail/Card/PodsCard/composable.ts +30 -0
- package/components/Resource/Detail/Card/PodsCard/index.vue +118 -0
- package/components/Resource/Detail/Card/ResourceUsageCard/composable.ts +51 -0
- package/components/Resource/Detail/Card/ResourceUsageCard/index.vue +79 -0
- package/components/Resource/Detail/Card/Scaler.vue +89 -0
- package/components/Resource/Detail/Card/StateCard/composables.ts +112 -0
- package/components/Resource/Detail/Card/StateCard/index.vue +39 -0
- package/components/Resource/Detail/Card/VerticalGap.vue +11 -0
- package/components/Resource/Detail/Card/__tests__/Card.test.ts +36 -0
- package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +84 -0
- package/components/Resource/Detail/Card/__tests__/ResourceUsageCard.test.ts +72 -0
- package/components/Resource/Detail/Card/__tests__/Scaler.test.ts +87 -0
- package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +53 -0
- package/components/Resource/Detail/Card/__tests__/VerticalGap.test.ts +14 -0
- package/components/Resource/Detail/Card/__tests__/index.test.ts +36 -0
- package/components/Resource/Detail/Card/index.vue +56 -0
- package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +19 -0
- package/components/Resource/Detail/Metadata/Annotations/composable.ts +12 -0
- package/components/Resource/Detail/Metadata/Annotations/index.vue +31 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +103 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +72 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +317 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +138 -0
- package/components/Resource/Detail/Metadata/KeyValue.vue +144 -0
- package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +18 -0
- package/components/Resource/Detail/Metadata/Labels/composable.ts +12 -0
- package/components/Resource/Detail/Metadata/Labels/index.vue +31 -0
- package/components/Resource/Detail/Metadata/Rectangle.vue +34 -0
- package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +107 -0
- package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +24 -0
- package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
- package/components/Resource/Detail/Metadata/__tests__/index.test.ts +91 -0
- package/components/Resource/Detail/Metadata/composables.ts +81 -0
- package/components/Resource/Detail/Metadata/index.vue +90 -0
- package/components/Resource/Detail/Page.vue +37 -0
- package/components/Resource/Detail/PercentageBar.vue +40 -0
- package/components/Resource/Detail/ResourceRow.vue +138 -0
- package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
- package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
- package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
- package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
- package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
- package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
- package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
- package/components/Resource/Detail/SpacedRow.vue +14 -0
- package/components/Resource/Detail/StatusBar.vue +59 -0
- package/components/Resource/Detail/StatusRow.vue +61 -0
- package/components/Resource/Detail/TitleBar/Title.vue +15 -0
- package/components/Resource/Detail/TitleBar/Top.vue +16 -0
- package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +17 -0
- package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +17 -0
- package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
- package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +142 -0
- package/components/Resource/Detail/TitleBar/composables.ts +61 -0
- package/components/Resource/Detail/TitleBar/index.vue +302 -0
- package/components/Resource/Detail/Top/index.vue +34 -0
- package/components/Resource/Detail/__tests__/Page.test.ts +32 -0
- package/components/Resource/Detail/composables.ts +45 -0
- package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
- package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
- package/components/ResourceDetail/Masthead/index.vue +65 -0
- package/components/ResourceDetail/Masthead/latest.vue +44 -0
- package/components/ResourceDetail/{Masthead.vue → Masthead/legacy.vue} +240 -169
- package/components/ResourceDetail/__tests__/index.test.ts +135 -0
- package/components/ResourceDetail/index.vue +75 -575
- package/components/ResourceDetail/legacy.vue +580 -0
- package/components/ResourceList/Masthead.vue +74 -29
- package/components/ResourceList/index.vue +3 -2
- package/components/ResourceTable.vue +75 -85
- package/components/ResourceYaml.vue +15 -2
- package/components/RichTranslation.vue +106 -0
- package/components/SideNav.vue +21 -21
- package/components/SingleClusterInfo.vue +2 -1
- package/components/SlideInPanelManager.vue +116 -14
- package/components/SortableTable/THead.vue +46 -1
- package/components/SortableTable/index.vue +66 -22
- package/components/SortableTable/paging.js +15 -16
- package/components/SortableTable/selection.js +22 -10
- package/components/StateDot/index.vue +28 -0
- package/components/StatusBadge.vue +6 -4
- package/components/SubtleLink.vue +25 -0
- package/components/Tabbed/index.vue +43 -22
- package/components/Wizard.vue +16 -3
- package/components/YamlEditor.vue +1 -2
- package/components/__tests__/AsyncButton.test.ts +39 -0
- package/components/__tests__/ConfigMapSettings.test.ts +376 -0
- package/components/__tests__/CruResource.test.ts +63 -0
- package/components/__tests__/FilterPanel.test.ts +81 -0
- package/components/__tests__/GrowlManager.test.ts +0 -25
- package/components/__tests__/PromptModal.test.ts +146 -0
- package/components/__tests__/PromptRestore.test.ts +1 -65
- package/components/__tests__/RichTranslation.test.ts +115 -0
- package/components/auth/AuthBanner.vue +15 -14
- package/components/auth/Principal.vue +50 -19
- package/components/auth/RoleDetailEdit.vue +55 -11
- package/components/auth/login/ldap.vue +2 -2
- package/components/auth/login/oidc.vue +6 -1
- package/components/breadcrumb/index.vue +119 -0
- package/components/fleet/FleetApplications.vue +174 -0
- package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
- package/components/fleet/FleetClusterTargets/index.vue +455 -0
- package/components/fleet/FleetClusters.vue +25 -6
- package/components/fleet/FleetGitRepoPaths.vue +476 -0
- package/components/fleet/FleetHelmOps.vue +123 -0
- package/components/fleet/FleetIntro.vue +58 -28
- package/components/fleet/FleetNoWorkspaces.vue +5 -1
- package/components/fleet/FleetOCIStorageSecret.vue +171 -0
- package/components/fleet/FleetRepos.vue +37 -80
- package/components/fleet/FleetResources.vue +69 -27
- package/components/fleet/FleetSummary.vue +26 -51
- package/components/fleet/FleetValuesFrom.vue +295 -0
- package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
- package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
- package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +213 -0
- package/components/fleet/__tests__/FleetSummary.test.ts +39 -39
- package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
- package/components/fleet/dashboard/Empty.vue +73 -0
- package/components/fleet/dashboard/ResourceCard.vue +184 -0
- package/components/fleet/dashboard/ResourceCardSummary.vue +195 -0
- package/components/fleet/dashboard/ResourceDetails.vue +194 -0
- package/components/fleet/dashboard/ResourcePanel.vue +384 -0
- package/components/form/ArrayList.vue +187 -142
- package/components/form/ArrayListGrouped.vue +5 -3
- package/components/form/BannerSettings.vue +117 -50
- package/components/form/ChangePassword.vue +4 -2
- package/components/form/ClusterAppearance.vue +4 -3
- package/components/form/ColorInput.vue +35 -6
- package/components/form/Command.vue +4 -5
- package/components/form/Conditions.vue +15 -1
- package/components/form/FileImageSelector.vue +1 -1
- package/components/form/Footer.vue +11 -4
- package/components/form/HealthCheck.vue +0 -2
- package/components/form/HookOption.vue +87 -58
- package/components/form/InputWithSelect.vue +8 -7
- package/components/form/KeyValue.vue +112 -53
- package/components/form/LabeledSelect.vue +76 -55
- package/components/form/Labels.vue +92 -22
- package/components/form/MatchExpressions.vue +59 -12
- package/components/form/Members/ClusterMembershipEditor.vue +1 -1
- package/components/form/Members/ClusterPermissionsEditor.vue +60 -41
- package/components/form/Members/MembershipEditor.vue +4 -4
- package/components/form/Members/ProjectMembershipEditor.vue +1 -1
- package/components/form/NameNsDescription.vue +15 -10
- package/components/form/Networking.vue +30 -28
- package/components/form/NodeAffinity.vue +29 -28
- package/components/form/NotificationSettings.vue +15 -1
- package/components/form/PodAffinity.vue +23 -23
- package/components/form/Probe.vue +15 -11
- package/components/form/ProjectMemberEditor.vue +66 -48
- package/components/form/ResourceLabeledSelect.vue +22 -8
- package/components/form/ResourceQuota/Namespace.vue +4 -4
- package/components/form/ResourceQuota/NamespaceRow.vue +11 -9
- package/components/form/ResourceQuota/Project.vue +4 -4
- package/components/form/ResourceQuota/ProjectRow.vue +36 -30
- package/components/form/ResourceSelector.vue +28 -24
- package/components/form/ResourceTabs/index.vue +7 -1
- package/components/form/SSHKnownHosts/index.vue +14 -11
- package/components/form/SecretSelector.vue +40 -23
- package/components/form/Security.vue +1 -3
- package/components/form/Select.vue +64 -27
- package/components/form/SelectOrCreateAuthSecret.vue +6 -3
- package/components/form/ServiceNameSelect.vue +2 -5
- package/components/form/ServicePorts.vue +149 -75
- package/components/form/SimpleSecretSelector.vue +17 -4
- package/components/form/Taints.vue +23 -3
- package/components/form/Tolerations.vue +13 -9
- package/components/form/UnitInput.vue +21 -0
- package/components/form/ValueFromResource.vue +136 -110
- package/components/form/WorkloadPorts.vue +143 -123
- package/components/form/__tests__/ArrayList.test.ts +32 -0
- package/components/form/__tests__/ColorInput.test.ts +35 -0
- package/components/form/__tests__/KeyValue.test.ts +36 -0
- package/components/form/__tests__/LabeledSelect.test.ts +79 -2
- package/components/form/__tests__/Labels.test.ts +360 -0
- package/components/form/__tests__/MatchExpressions.test.ts +16 -13
- package/components/form/__tests__/Networking.test.ts +116 -0
- package/components/form/__tests__/SSHKnownHosts.test.ts +11 -2
- package/components/form/__tests__/Select.test.ts +37 -1
- package/components/form/__tests__/UnitInput.test.ts +23 -1
- package/components/form/labeled-select-utils/labeled-select-pagination.ts +3 -38
- package/components/formatter/ClusterLink.vue +5 -8
- package/components/formatter/Description.vue +30 -0
- package/components/formatter/FleetApplicationClustersReady.vue +77 -0
- package/components/formatter/FleetApplicationSource.vue +79 -0
- package/components/formatter/FleetSummaryGraph.vue +7 -0
- package/components/formatter/PodImages.vue +1 -1
- package/components/formatter/WorkloadHealthScale.vue +5 -4
- package/components/formatter/__tests__/ClusterLink.test.ts +2 -32
- package/components/formatter/__tests__/LiveDate.test.ts +10 -2
- package/components/google/AccountAccess.vue +209 -0
- package/components/google/types/gcp.d.ts +136 -0
- package/components/google/types/index.d.ts +101 -0
- package/components/google/util/__mocks__/gcp.ts +465 -0
- package/components/google/util/formatter.ts +82 -0
- package/components/google/util/gcp.ts +134 -0
- package/components/google/util/index.d.ts +11 -0
- package/components/nav/Favorite.vue +1 -1
- package/components/nav/Group.vue +13 -1
- package/components/nav/Header.vue +44 -179
- package/components/nav/NamespaceFilter.vue +126 -75
- package/components/nav/NotificationCenter/Notification.vue +484 -0
- package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
- package/components/nav/NotificationCenter/index.vue +148 -0
- package/components/nav/TopLevelMenu.helper.ts +55 -34
- package/components/nav/TopLevelMenu.vue +110 -125
- package/components/nav/Type.vue +15 -4
- package/components/nav/WindowManager/ContainerLogs.vue +87 -61
- package/components/nav/WindowManager/ContainerLogsActions.vue +76 -0
- package/components/nav/WindowManager/index.vue +3 -2
- package/components/templates/default.vue +0 -3
- package/components/templates/plain.vue +0 -3
- package/composables/drawer.ts +26 -0
- package/composables/focusTrap.ts +3 -3
- package/composables/resources.test.ts +63 -0
- package/composables/resources.ts +38 -0
- package/composables/useI18n.ts +12 -11
- package/composables/useIsNewDetailPageEnabled.ts +17 -0
- package/config/labels-annotations.js +22 -11
- package/config/menuRouteMap.js +10 -0
- package/config/pagination-table-headers.js +8 -1
- package/config/private-label.js +0 -1
- package/config/product/auth.js +20 -3
- package/config/product/{cis.js → compliance.js} +23 -26
- package/config/product/explorer.js +80 -26
- package/config/product/fleet.js +77 -17
- package/config/product/manager.js +29 -46
- package/config/product/settings.js +23 -11
- package/config/product/uiplugins.js +13 -10
- package/config/query-params.js +16 -1
- package/config/roles.ts +2 -1
- package/config/router/navigation-guards/authentication.js +51 -2
- package/config/router/navigation-guards/index.js +16 -20
- package/config/router/routes.js +65 -31
- package/config/secret.ts +15 -0
- package/config/settings.ts +33 -16
- package/config/store.js +2 -0
- package/config/system-namespaces.js +1 -1
- package/config/table-headers.js +91 -30
- package/config/types.js +18 -7
- package/config/version.js +1 -1
- package/core/plugin-helpers.ts +3 -2
- package/core/plugin.ts +32 -7
- package/core/types.ts +25 -7
- package/detail/catalog.cattle.io.app.vue +5 -1
- package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
- package/detail/fleet.cattle.io.bundle.vue +70 -6
- package/detail/fleet.cattle.io.cluster.vue +28 -15
- package/detail/fleet.cattle.io.gitrepo.vue +11 -2
- package/detail/fleet.cattle.io.helmop.vue +157 -0
- package/detail/management.cattle.io.fleetworkspace.vue +18 -27
- package/detail/management.cattle.io.oidcclient.vue +369 -0
- package/detail/namespace.vue +0 -3
- package/detail/node.vue +48 -39
- package/detail/pod.vue +2 -2
- package/detail/provisioning.cattle.io.cluster.vue +16 -50
- package/detail/service.vue +10 -2
- package/detail/workload/index.vue +48 -39
- package/dialog/AddCustomBadgeDialog.vue +17 -10
- package/{pages/c/_cluster/uiplugins/AddExtensionRepos.vue → dialog/AddExtensionReposDialog.vue} +72 -42
- package/dialog/AddonConfigConfirmationDialog.vue +1 -1
- package/dialog/AssignToDialog.vue +176 -0
- package/dialog/ChangePasswordDialog.vue +106 -0
- package/{pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue → dialog/DeveloperLoadExtensionDialog.vue} +74 -71
- package/dialog/DisableAuthProviderDialog.vue +101 -0
- package/dialog/DrainNode.vue +1 -1
- package/{pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue → dialog/ExtensionCatalogInstallDialog.vue} +100 -88
- package/{pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue → dialog/ExtensionCatalogUninstallDialog.vue} +87 -66
- package/dialog/FeatureFlagListDialog.vue +288 -0
- package/dialog/ForceMachineRemoveDialog.vue +1 -1
- package/dialog/GenericPrompt.vue +1 -1
- package/dialog/HelmOpForceUpdateDialog.vue +132 -0
- package/{components/Import.vue → dialog/ImportDialog.vue} +8 -13
- package/{pages/c/_cluster/uiplugins/InstallDialog.vue → dialog/InstallExtensionDialog.vue} +124 -106
- package/{components/form/SSHKnownHosts → dialog}/KnownHostsEditDialog.vue +52 -62
- package/dialog/MoveNamespaceDialog.vue +157 -0
- package/dialog/OidcClientSecretDialog.vue +117 -0
- package/dialog/RedeployWorkloadDialog.vue +164 -0
- package/dialog/RollbackWorkloadDialog.vue +1 -1
- package/dialog/RotateEncryptionKeyDialog.vue +10 -30
- package/dialog/ScalePoolDownDialog.vue +1 -1
- package/{components/nav/Jump.vue → dialog/SearchDialog.vue} +34 -14
- package/{pages/c/_cluster/uiplugins/UninstallDialog.vue → dialog/UninstallExtensionDialog.vue} +67 -58
- package/dialog/WechatDialog.vue +57 -0
- package/{components/form/SSHKnownHosts → dialog}/__tests__/KnownHostsEditDialog.test.ts +15 -34
- package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
- package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +60 -68
- package/edit/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
- package/edit/__tests__/service.test.ts +2 -1
- package/edit/auth/ldap/__tests__/config.test.ts +14 -0
- package/edit/auth/ldap/config.vue +24 -0
- package/edit/auth/oidc.vue +159 -93
- package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +7 -2
- package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
- package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
- package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
- package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
- package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
- package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
- package/edit/configmap.vue +12 -2
- package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
- package/edit/fleet.cattle.io.gitrepo.vue +70 -256
- package/edit/fleet.cattle.io.helmop.vue +786 -0
- package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
- package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
- package/edit/logging-flow/index.vue +2 -2
- package/edit/logging.banzaicloud.io.output/index.vue +2 -1
- package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +8 -9
- package/edit/logging.banzaicloud.io.output/providers/azurestorage.vue +19 -19
- package/edit/logging.banzaicloud.io.output/providers/cloudwatch.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/datadog.vue +19 -19
- package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +14 -14
- package/edit/logging.banzaicloud.io.output/providers/forward.vue +12 -12
- package/edit/logging.banzaicloud.io.output/providers/gcs.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/gelf.vue +6 -6
- package/edit/logging.banzaicloud.io.output/providers/kafka.vue +10 -10
- package/edit/logging.banzaicloud.io.output/providers/kinesisStream.vue +8 -8
- package/edit/logging.banzaicloud.io.output/providers/logdna.vue +17 -17
- package/edit/logging.banzaicloud.io.output/providers/logz.vue +7 -7
- package/edit/logging.banzaicloud.io.output/providers/loki.vue +12 -12
- package/edit/logging.banzaicloud.io.output/providers/newrelic.vue +3 -3
- package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +14 -14
- package/edit/logging.banzaicloud.io.output/providers/redis.vue +6 -6
- package/edit/logging.banzaicloud.io.output/providers/s3.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +13 -13
- package/edit/logging.banzaicloud.io.output/providers/sumologic.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/syslog.vue +54 -54
- package/edit/management.cattle.io.fleetworkspace.vue +44 -10
- package/edit/management.cattle.io.oidcclient.vue +162 -0
- package/edit/management.cattle.io.project.vue +4 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
- package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
- package/edit/monitoring.coreos.com.receiver/auth.vue +3 -3
- package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
- package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
- package/edit/monitoring.coreos.com.route.vue +1 -0
- package/edit/namespace.vue +2 -4
- package/edit/networking.istio.io.destinationrule/index.vue +4 -1
- package/edit/networking.k8s.io.ingress/Certificate.vue +25 -8
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
- package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
- package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
- package/edit/networking.k8s.io.ingress/__tests__/Certificate.test.ts +37 -0
- package/edit/networking.k8s.io.ingress/index.vue +4 -1
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +6 -17
- package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +69 -73
- package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +10 -16
- package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.test.ts +72 -41
- package/edit/networking.k8s.io.networkpolicy/__tests__/utils/mock.json +17 -1
- package/edit/networking.k8s.io.networkpolicy/index.vue +24 -32
- package/edit/node.vue +1 -0
- package/edit/persistentvolume/index.vue +7 -2
- package/edit/persistentvolumeclaim.vue +2 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +26 -12
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +69 -2
- package/edit/provisioning.cattle.io.cluster/__tests__/utils/rke2-test-data.ts +58 -0
- package/edit/provisioning.cattle.io.cluster/index.vue +21 -73
- package/edit/provisioning.cattle.io.cluster/rke2.vue +535 -428
- package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +49 -40
- package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +5 -3
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
- package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -2
- package/edit/resources.cattle.io.restore.vue +1 -1
- package/edit/secret/basic.vue +1 -0
- package/edit/secret/index.vue +129 -17
- package/edit/service.vue +21 -30
- package/edit/serviceaccount.vue +4 -1
- package/edit/storage.k8s.io.storageclass/index.vue +14 -9
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
- package/edit/workload/Job.vue +31 -34
- package/edit/workload/Upgrading.vue +5 -5
- package/edit/workload/index.vue +32 -32
- package/edit/workload/mixins/workload.js +0 -2
- package/edit/workload/storage/Mount.vue +1 -0
- package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
- package/edit/workload/storage/azureDisk.vue +14 -10
- package/edit/workload/storage/azureFile.vue +9 -7
- package/edit/workload/storage/csi/index.vue +6 -9
- package/edit/workload/storage/emptyDir.vue +7 -5
- package/edit/workload/storage/gcePersistentDisk.vue +9 -7
- package/edit/workload/storage/hostPath.vue +7 -5
- package/edit/workload/storage/nfs.vue +8 -6
- package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
- package/edit/workload/storage/secret.vue +9 -6
- package/edit/workload/storage/vsphereVolume.vue +11 -7
- package/initialize/app-extended.js +7 -1
- package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
- package/list/fleet.cattle.io.gitrepo.vue +1 -1
- package/list/fleet.cattle.io.helmop.vue +108 -0
- package/list/harvesterhci.io.management.cluster.vue +0 -17
- package/list/management.cattle.io.feature.vue +4 -288
- package/list/management.cattle.io.oidcclient.vue +108 -0
- package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +8 -6
- package/list/management.cattle.io.user.vue +13 -20
- package/list/namespace.vue +6 -2
- package/list/node.vue +2 -0
- package/list/projectsecret.vue +345 -0
- package/list/secret.vue +109 -0
- package/list/workload.vue +6 -2
- package/machine-config/__tests__/vmwarevsphere.test.ts +5 -7
- package/machine-config/amazonec2.vue +3 -24
- package/machine-config/components/GCEImage.vue +374 -0
- package/machine-config/google.vue +617 -0
- package/machine-config/vmwarevsphere.vue +7 -17
- package/mixins/__tests__/brand.spec.ts +170 -0
- package/mixins/auth-config.js +8 -1
- package/mixins/brand.js +16 -17
- package/mixins/create-edit-view/impl.js +20 -1
- package/mixins/create-edit-view/index.js +5 -0
- package/mixins/preset.js +100 -0
- package/mixins/resource-fetch-api-pagination.js +73 -44
- package/mixins/resource-fetch.js +18 -8
- package/mixins/resource-table-watch.js +45 -0
- package/mixins/vue-select-overrides.js +1 -4
- package/models/__tests__/chart.test.ts +296 -0
- package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
- package/models/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
- package/models/__tests__/node.test.ts +7 -63
- package/models/__tests__/workload.test.ts +1 -0
- package/models/chart.js +157 -2
- package/models/cluster/node.js +2 -1
- package/models/cluster.js +32 -2
- package/models/cluster.x-k8s.io.machinedeployment.js +11 -2
- package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
- package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
- package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
- package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
- package/models/fleet-application.js +297 -0
- package/models/fleet.cattle.io.bundle.js +9 -8
- package/models/fleet.cattle.io.cluster.js +21 -4
- package/models/fleet.cattle.io.gitrepo.js +46 -382
- package/models/fleet.cattle.io.helmop.js +202 -0
- package/models/management.cattle.io.authconfig.js +1 -0
- package/models/management.cattle.io.cluster.js +0 -20
- package/models/management.cattle.io.feature.js +7 -1
- package/models/management.cattle.io.fleetworkspace.js +14 -1
- package/models/management.cattle.io.node.js +7 -22
- package/models/management.cattle.io.nodepool.js +12 -0
- package/models/management.cattle.io.oidcclient.js +18 -0
- package/models/management.cattle.io.registration.js +3 -0
- package/models/management.cattle.io.setting.js +0 -1
- package/models/namespace.js +12 -1
- package/models/provisioning.cattle.io.cluster.js +79 -115
- package/models/secret.js +157 -2
- package/models/service.js +28 -9
- package/models/storage.k8s.io.storageclass.js +2 -2
- package/models/workload.js +93 -53
- package/package.json +6 -5
- package/pages/about.vue +17 -61
- package/pages/account/index.vue +105 -116
- package/pages/auth/login.vue +2 -3
- package/pages/auth/setup.vue +36 -17
- package/pages/auth/verify.vue +13 -1
- package/pages/c/_cluster/apps/charts/AddRepoLink.vue +36 -0
- package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +80 -0
- package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +57 -0
- package/pages/c/_cluster/apps/charts/StatusLabel.vue +33 -0
- package/pages/c/_cluster/apps/charts/index.vue +501 -468
- package/pages/c/_cluster/apps/charts/install.vue +0 -1
- package/pages/c/_cluster/auth/roles/index.vue +72 -44
- package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
- package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
- package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
- package/pages/c/_cluster/explorer/index.vue +16 -4
- package/pages/c/_cluster/explorer/projectsecret.vue +34 -0
- package/pages/c/_cluster/explorer/tools/index.vue +6 -6
- package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
- package/pages/c/_cluster/fleet/__tests__/index.test.ts +720 -0
- package/pages/c/_cluster/fleet/application/_resource/_id.vue +14 -0
- package/pages/c/_cluster/fleet/application/_resource/create.vue +14 -0
- package/pages/c/_cluster/fleet/application/create.vue +341 -0
- package/pages/c/_cluster/fleet/application/index.vue +139 -0
- package/pages/c/_cluster/fleet/graph/config.js +277 -0
- package/pages/c/_cluster/fleet/index.vue +866 -328
- package/pages/c/_cluster/fleet/settings/index.vue +229 -0
- package/pages/c/_cluster/longhorn/index.vue +5 -2
- package/pages/c/_cluster/settings/banners.vue +56 -2
- package/pages/c/_cluster/settings/brand.vue +2 -1
- package/pages/c/_cluster/settings/performance.vue +7 -26
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
- package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +4 -7
- package/pages/c/_cluster/uiplugins/index.vue +98 -55
- package/pages/explorer/resource/detail/configmap.vue +42 -0
- package/pages/explorer/resource/detail/projectsecret.vue +9 -0
- package/pages/explorer/resource/detail/secret.vue +63 -0
- package/pages/home.vue +63 -117
- package/pages/prefs.vue +0 -1
- package/pages/support/index.vue +4 -6
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/plugins/clean-html.js +2 -0
- package/plugins/dashboard-store/__tests__/actions.test.ts +4 -1
- package/plugins/dashboard-store/__tests__/normalize.test.ts +223 -0
- package/plugins/dashboard-store/__tests__/resource-class.test.ts +191 -0
- package/plugins/dashboard-store/__tests__/utils/normalize-usecases.ts +1526 -0
- package/plugins/dashboard-store/actions.js +213 -56
- package/plugins/dashboard-store/getters.js +112 -24
- package/plugins/dashboard-store/mutations.js +61 -12
- package/plugins/dashboard-store/normalize.js +29 -19
- package/plugins/dashboard-store/resource-class.js +105 -21
- package/plugins/steve/__tests__/getters.test.ts +19 -12
- package/plugins/steve/__tests__/steve-class.test.ts +1 -0
- package/plugins/steve/__tests__/subscribe.spec.ts +324 -1
- package/plugins/steve/actions.js +37 -24
- package/plugins/steve/getters.js +47 -12
- package/plugins/steve/resourceWatcher.js +10 -3
- package/plugins/steve/steve-class.js +5 -0
- package/plugins/steve/steve-pagination-utils.ts +225 -43
- package/plugins/steve/subscribe.js +418 -53
- package/plugins/steve/worker/web-worker.advanced.js +5 -1
- package/public/favicon.png +0 -0
- package/public/index.html +1 -1
- package/rancher-components/BadgeState/BadgeState.vue +33 -52
- package/rancher-components/Banner/Banner.test.ts +51 -3
- package/rancher-components/Banner/Banner.vue +53 -10
- package/rancher-components/Form/Checkbox/Checkbox.test.ts +59 -1
- package/rancher-components/Form/Checkbox/Checkbox.vue +27 -9
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +51 -0
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +21 -3
- package/rancher-components/Form/Radio/RadioButton.test.ts +36 -1
- package/rancher-components/Form/Radio/RadioButton.vue +21 -5
- package/rancher-components/Form/Radio/RadioGroup.test.ts +60 -0
- package/rancher-components/Form/Radio/RadioGroup.vue +90 -39
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +4 -0
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +22 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +32 -2
- package/rancher-components/RcButton/RcButton.vue +1 -1
- package/rancher-components/RcDropdown/RcDropdown.test.ts +98 -0
- package/rancher-components/RcDropdown/RcDropdown.vue +6 -0
- package/rancher-components/RcDropdown/RcDropdownItem.vue +8 -55
- package/rancher-components/RcDropdown/RcDropdownItemCheckbox.vue +69 -0
- package/rancher-components/RcDropdown/RcDropdownItemSelect.vue +93 -0
- package/rancher-components/RcDropdown/index.ts +2 -0
- package/rancher-components/RcDropdown/useDropdownContext.ts +21 -0
- package/rancher-components/RcDropdown/useDropdownItem.ts +92 -0
- package/rancher-components/RcItemCard/RcItemCard.test.ts +189 -0
- package/rancher-components/RcItemCard/RcItemCard.vue +430 -0
- package/rancher-components/RcItemCard/RcItemCardAction.vue +24 -0
- package/rancher-components/RcItemCard/index.ts +2 -0
- package/rancher-components/StringList/StringList.vue +1 -1
- package/scripts/build-pkg.sh +18 -23
- package/scripts/extension/publish +1 -1
- package/scripts/publish-shell.sh +1 -1
- package/static/loading-indicator.html +1 -1
- package/store/action-menu.js +26 -56
- package/store/auth.js +3 -0
- package/store/catalog.js +85 -25
- package/store/features.js +0 -1
- package/store/growl.js +97 -8
- package/store/i18n.js +5 -1
- package/store/index.js +48 -18
- package/store/notifications.ts +426 -0
- package/store/prefs.js +2 -8
- package/store/slideInPanel.ts +6 -0
- package/store/type-map.js +35 -20
- package/store/type-map.utils.ts +49 -6
- package/store/uiplugins.ts +15 -1
- package/types/fleet.d.ts +60 -1
- package/types/kube/kube-api.ts +34 -0
- package/types/notifications/index.ts +74 -0
- package/types/resources/fleet.d.ts +43 -0
- package/types/resources/pod-security-admission.ts +36 -0
- package/types/resources/settings.d.ts +107 -0
- package/types/resources/userPreferences.d.ts +13 -0
- package/types/shell/index.d.ts +949 -741
- package/types/store/dashboard-store.types.ts +57 -4
- package/types/store/pagination.types.ts +41 -9
- package/types/store/subscribe.types.ts +50 -0
- package/utils/__mocks__/tabbable.js +13 -0
- package/utils/__tests__/back-off.test.ts +354 -0
- package/utils/__tests__/create-yaml.test.ts +235 -0
- package/utils/__tests__/fleet.test.ts +148 -0
- package/utils/__tests__/kontainer.test.ts +19 -0
- package/utils/__tests__/object.test.ts +54 -1
- package/utils/__tests__/string.test.ts +273 -1
- package/utils/__tests__/time.test.ts +31 -0
- package/utils/auth.js +41 -6
- package/utils/back-off.ts +176 -0
- package/utils/cluster.js +24 -20
- package/utils/create-yaml.js +103 -9
- package/utils/crypto/encryption.ts +103 -0
- package/utils/cspAdaptor.ts +51 -0
- package/utils/error.js +26 -9
- package/utils/errorTranslate.json +410 -6
- package/utils/errorTranslateNew.json +39 -0
- package/utils/fleet-types.ts +0 -0
- package/utils/fleet.ts +204 -74
- package/utils/grafana.js +1 -0
- package/utils/kontainer.ts +3 -5
- package/utils/object.js +36 -12
- package/utils/pagination-utils.ts +50 -3
- package/utils/pagination-wrapper.ts +132 -50
- package/utils/perf-setting.utils.ts +28 -0
- package/utils/release-notes.ts +48 -0
- package/utils/roleFiltering.js +33 -0
- package/utils/selector-typed.ts +210 -0
- package/utils/selector.js +29 -6
- package/utils/settings.ts +4 -1
- package/utils/string.js +24 -0
- package/utils/style.ts +39 -0
- package/utils/{time.js → time.ts} +25 -6
- package/utils/uiplugins.ts +41 -8
- package/utils/v-sphere.ts +5 -1
- package/utils/validators/formRules/__tests__/index.test.ts +76 -6
- package/utils/validators/formRules/index.ts +99 -4
- package/utils/window.js +11 -7
- package/vue.config.js +1 -1
- package/.DS_Store +0 -0
- package/components/AssignTo.vue +0 -199
- package/components/DisableAuthProviderModal.vue +0 -115
- package/components/MoveModal.vue +0 -167
- package/components/PromptChangePassword.vue +0 -123
- package/components/ResourceList/Masthead-btn.vue +0 -225
- package/components/__tests__/ApplicationCard.test.ts +0 -27
- package/components/cards/ApplicationCard.vue +0 -145
- package/components/fleet/FleetBundleResources.vue +0 -86
- package/components/fleet/ForceDirectedTreeChart/chartIcons.js +0 -17
- package/components/formatter/RKETemplateName.vue +0 -37
- package/config/product/legacy.js +0 -62
- package/config/secret.js +0 -14
- package/dialog/SaveAsRKETemplateDialog.vue +0 -139
- package/models/etcdbackup.js +0 -45
- package/pages/auth copy/login.vue +0 -595
- package/pages/auth copy/logout.vue +0 -47
- package/pages/auth copy/setup.vue +0 -523
- package/pages/auth copy/verify.vue +0 -203
- package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +0 -249
- package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
- package/pages/c/_cluster/legacy/project/_page.vue +0 -57
- package/pages/c/_cluster/legacy/project/index.vue +0 -32
- package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
|
@@ -15,9 +15,13 @@ import {
|
|
|
15
15
|
HPA,
|
|
16
16
|
SECRET
|
|
17
17
|
} from '@shell/config/types';
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
CAPI as CAPI_LAB_AND_ANO, CATTLE_PUBLIC_ENDPOINTS, STORAGE, UI_PROJECT_SECRET, UI_PROJECT_SECRET_COPY
|
|
20
|
+
} from '@shell/config/labels-annotations';
|
|
19
21
|
import { Schema } from '@shell/plugins/steve/schema';
|
|
20
22
|
import { PaginationSettingsStore } from '@shell/types/resources/settings';
|
|
23
|
+
import paginationUtils from '@shell/utils/pagination-utils';
|
|
24
|
+
import { KubeLabelSelector, KubeLabelSelectorExpression } from '@shell/types/kube/kube-api';
|
|
21
25
|
|
|
22
26
|
/**
|
|
23
27
|
* This is a workaround for a ts build issue found in check-plugins-build.
|
|
@@ -25,19 +29,30 @@ import { PaginationSettingsStore } from '@shell/types/resources/settings';
|
|
|
25
29
|
* The build would error on <ns>.name, it somehow doesn't know about the steve model's properties (they are included in typegen)
|
|
26
30
|
*/
|
|
27
31
|
interface Namespace extends ModelNamespace {
|
|
32
|
+
id: string;
|
|
28
33
|
name: string;
|
|
34
|
+
metadata: {
|
|
35
|
+
name: string
|
|
36
|
+
}
|
|
29
37
|
}
|
|
30
38
|
|
|
31
39
|
class NamespaceProjectFilters {
|
|
32
40
|
/**
|
|
33
41
|
* User needs all resources.... except if there's some settings which should remove resources in specific circumstances
|
|
34
42
|
*/
|
|
35
|
-
protected handlePrefAndSettingFilter(
|
|
43
|
+
protected handlePrefAndSettingFilter(args: {
|
|
44
|
+
allNamespaces: Namespace[],
|
|
45
|
+
showReservedRancherNamespaces: boolean,
|
|
46
|
+
productHidesSystemNamespaces: boolean,
|
|
47
|
+
}): PaginationParamFilter[] {
|
|
48
|
+
const { allNamespaces, showReservedRancherNamespaces, productHidesSystemNamespaces } = args;
|
|
49
|
+
|
|
36
50
|
// These are AND'd together
|
|
37
51
|
// Not ns 1 AND ns 2
|
|
38
52
|
return allNamespaces.reduce((res, ns) => {
|
|
39
53
|
// Links to ns.isObscure and covers things like `c-`, `user-`, etc (see OBSCURE_NAMESPACE_PREFIX)
|
|
40
|
-
const hideObscure =
|
|
54
|
+
const hideObscure = showReservedRancherNamespaces ? false : ns.isObscure;
|
|
55
|
+
|
|
41
56
|
// Links to ns.isSystem and covers things like ns with system annotation, hardcoded list, etc
|
|
42
57
|
const hideSystem = productHidesSystemNamespaces ? ns.isSystem : false;
|
|
43
58
|
|
|
@@ -58,7 +73,12 @@ class NamespaceProjectFilters {
|
|
|
58
73
|
*
|
|
59
74
|
* Users resources are those not in system namespaces
|
|
60
75
|
*/
|
|
61
|
-
protected handleSystemOrUserFilter(
|
|
76
|
+
protected handleSystemOrUserFilter(args: {
|
|
77
|
+
allNamespaces: Namespace[],
|
|
78
|
+
isAllSystem: boolean,
|
|
79
|
+
isAllUser: boolean,
|
|
80
|
+
}) {
|
|
81
|
+
const { allNamespaces, isAllSystem } = args;
|
|
62
82
|
const allSystem = allNamespaces.filter((ns) => ns.isSystem);
|
|
63
83
|
|
|
64
84
|
// > Neither of these use projectsOrNamespaces to avoid scenarios where the local cluster provides a namespace which has
|
|
@@ -118,6 +138,14 @@ class NamespaceProjectFilters {
|
|
|
118
138
|
* Helper functions for steve pagination
|
|
119
139
|
*/
|
|
120
140
|
class StevePaginationUtils extends NamespaceProjectFilters {
|
|
141
|
+
/**
|
|
142
|
+
* Match
|
|
143
|
+
* - a-z (case insensitive)
|
|
144
|
+
* - 0-9
|
|
145
|
+
* - `-`, `_`, `.`
|
|
146
|
+
*/
|
|
147
|
+
static VALID_FIELD_VALUE_REGEX = /^[\w\-.]+$/;
|
|
148
|
+
|
|
121
149
|
/**
|
|
122
150
|
* Filtering with the vai cache supports specific fields
|
|
123
151
|
* 1) Those listed here
|
|
@@ -158,6 +186,10 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
158
186
|
[CONFIG_MAP]: [
|
|
159
187
|
{ field: 'metadata.labels[harvesterhci.io/cloud-init-template]' }
|
|
160
188
|
],
|
|
189
|
+
[SECRET]: [
|
|
190
|
+
{ field: `metadata.labels[${ UI_PROJECT_SECRET }]` },
|
|
191
|
+
{ field: `metadata.annotations[${ UI_PROJECT_SECRET_COPY }]` },
|
|
192
|
+
],
|
|
161
193
|
[NAMESPACE]: [
|
|
162
194
|
{ field: 'metadata.labels[field.cattle.io/projectId]' }
|
|
163
195
|
],
|
|
@@ -168,7 +200,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
168
200
|
{ field: '_type' },
|
|
169
201
|
{ field: 'reason' },
|
|
170
202
|
{ field: 'involvedObject.kind' },
|
|
171
|
-
|
|
203
|
+
{ field: 'involvedObject.uid' },
|
|
172
204
|
{ field: 'message' },
|
|
173
205
|
],
|
|
174
206
|
[CATALOG.CLUSTER_REPO]: [
|
|
@@ -189,17 +221,17 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
189
221
|
],
|
|
190
222
|
[SERVICE]: [
|
|
191
223
|
{ field: 'spec.type' },
|
|
192
|
-
|
|
224
|
+
{ field: 'spec.clusterIP' },
|
|
193
225
|
],
|
|
194
226
|
[INGRESS]: [
|
|
195
|
-
|
|
196
|
-
|
|
227
|
+
{ field: 'spec.rules.host' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
|
|
228
|
+
{ field: 'spec.ingressClassName' },
|
|
197
229
|
],
|
|
198
230
|
[HPA]: [
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
231
|
+
{ field: 'spec.scaleTargetRef.name' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50527
|
|
232
|
+
{ field: 'spec.minReplicas' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50527
|
|
233
|
+
{ field: 'spec.maxReplicas' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50527
|
|
234
|
+
{ field: 'spec.currentReplicas' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50527
|
|
203
235
|
],
|
|
204
236
|
[PVC]: [
|
|
205
237
|
{ field: 'spec.volumeName' },
|
|
@@ -210,27 +242,37 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
210
242
|
],
|
|
211
243
|
[STORAGE_CLASS]: [
|
|
212
244
|
{ field: 'provisioner' },
|
|
213
|
-
|
|
245
|
+
{ field: `metadata.annotations[${ STORAGE.DEFAULT_STORAGE_CLASS }]` },
|
|
214
246
|
],
|
|
215
247
|
[CATALOG.APP]: [
|
|
216
248
|
{ field: 'spec.chart.metadata.name' }
|
|
217
249
|
],
|
|
218
250
|
[WORKLOAD_TYPES.CRON_JOB]: [
|
|
219
|
-
{ field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` }
|
|
251
|
+
{ field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` },
|
|
252
|
+
{ field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
|
|
220
253
|
],
|
|
221
254
|
[WORKLOAD_TYPES.DAEMON_SET]: [
|
|
222
|
-
{ field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` }
|
|
255
|
+
{ field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` },
|
|
256
|
+
{ field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
|
|
223
257
|
],
|
|
224
258
|
[WORKLOAD_TYPES.DEPLOYMENT]: [
|
|
225
|
-
{ field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` }
|
|
259
|
+
{ field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` },
|
|
260
|
+
{ field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
|
|
226
261
|
],
|
|
227
262
|
[WORKLOAD_TYPES.JOB]: [
|
|
228
|
-
{ field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` }
|
|
263
|
+
{ field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` },
|
|
264
|
+
{ field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
|
|
229
265
|
],
|
|
230
266
|
[WORKLOAD_TYPES.STATEFUL_SET]: [
|
|
231
|
-
{ field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` }
|
|
232
|
-
|
|
233
|
-
|
|
267
|
+
{ field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` },
|
|
268
|
+
{ field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
|
|
269
|
+
],
|
|
270
|
+
[WORKLOAD_TYPES.REPLICA_SET]: [
|
|
271
|
+
{ field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
|
|
272
|
+
],
|
|
273
|
+
[WORKLOAD_TYPES.REPLICATION_CONTROLLER]: [
|
|
274
|
+
{ field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
|
|
275
|
+
],
|
|
234
276
|
}
|
|
235
277
|
|
|
236
278
|
private convertArrayPath(path: string): string {
|
|
@@ -253,7 +295,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
253
295
|
selection,
|
|
254
296
|
isAllNamespaces,
|
|
255
297
|
isLocalCluster,
|
|
256
|
-
|
|
298
|
+
showReservedRancherNamespaces,
|
|
257
299
|
productHidesSystemNamespaces,
|
|
258
300
|
}: {
|
|
259
301
|
allNamespaces: Namespace[],
|
|
@@ -263,14 +305,18 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
263
305
|
*/
|
|
264
306
|
isAllNamespaces: boolean,
|
|
265
307
|
/**
|
|
266
|
-
* Weird things be happening if the target cluster is local / upstream.
|
|
308
|
+
* Weird things be happening if the target cluster is local / upstream. Use this to check what cluster we're in
|
|
267
309
|
*/
|
|
268
310
|
isLocalCluster: boolean,
|
|
269
311
|
/**
|
|
312
|
+
* User preference states we should show reserved rancher namespaces. Preference description "Show dynamic Namespaces managed by Rancher (not intended for editing or deletion)"
|
|
313
|
+
*
|
|
270
314
|
* Links to ns.isObscure and covers things like `c-`, `user-`, etc (see OBSCURE_NAMESPACE_PREFIX)
|
|
271
315
|
*/
|
|
272
|
-
|
|
316
|
+
showReservedRancherNamespaces: boolean,
|
|
273
317
|
/**
|
|
318
|
+
* Product config states that system namespaces should be hidden
|
|
319
|
+
*
|
|
274
320
|
* Links to ns.isSystem and covers things like ns with system annotation, hardcoded list, etc
|
|
275
321
|
*/
|
|
276
322
|
productHidesSystemNamespaces: boolean,
|
|
@@ -288,7 +334,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
288
334
|
// - Only System Namespaces - Gimme resources in the system namespaces (which shouldn't be many namespaces)
|
|
289
335
|
// - Only User Namespaces - Gimme resources NOT in system namespaces
|
|
290
336
|
// - User selection - Gimme resources in specific Projects or Namespaces
|
|
291
|
-
if (isAllNamespaces && (
|
|
337
|
+
if (isAllNamespaces && (showReservedRancherNamespaces && !productHidesSystemNamespaces)) {
|
|
292
338
|
// No-op. Everything is returned
|
|
293
339
|
return {
|
|
294
340
|
projectsOrNamespaces: [],
|
|
@@ -303,9 +349,11 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
303
349
|
// &filter=metadata.namespace=abc
|
|
304
350
|
let filters: PaginationParamFilter[] = [];
|
|
305
351
|
|
|
306
|
-
if (!
|
|
307
|
-
// We need to hide
|
|
308
|
-
filters = this.handlePrefAndSettingFilter(
|
|
352
|
+
if (!showReservedRancherNamespaces || productHidesSystemNamespaces) {
|
|
353
|
+
// We need to hide reserved namespaces ('c-', 'user-', etc) OR system namespaces
|
|
354
|
+
filters = this.handlePrefAndSettingFilter({
|
|
355
|
+
allNamespaces, showReservedRancherNamespaces, productHidesSystemNamespaces
|
|
356
|
+
});
|
|
309
357
|
}
|
|
310
358
|
|
|
311
359
|
const isAllSystem = selection[0] === NAMESPACE_FILTER_ALL_SYSTEM;
|
|
@@ -313,7 +361,9 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
313
361
|
|
|
314
362
|
if (selection.length === 1 && (isAllSystem || isAllUser)) {
|
|
315
363
|
// Filter by resources either in or not in system namespaces
|
|
316
|
-
filters.push(...this.handleSystemOrUserFilter(
|
|
364
|
+
filters.push(...this.handleSystemOrUserFilter({
|
|
365
|
+
allNamespaces, isAllSystem, isAllUser
|
|
366
|
+
}));
|
|
317
367
|
} else {
|
|
318
368
|
// User has one or more projects or namespaces
|
|
319
369
|
const res = this.handleSelectionFilter(selection, isLocalCluster);
|
|
@@ -328,13 +378,13 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
328
378
|
};
|
|
329
379
|
}
|
|
330
380
|
|
|
331
|
-
public createParamsForPagination(schema: Schema, opt: ActionFindPageArgs): string | undefined {
|
|
381
|
+
public createParamsForPagination({ schema, opt }: {schema?: Schema, opt: ActionFindPageArgs}): string | undefined {
|
|
332
382
|
if (!opt.pagination) {
|
|
333
383
|
return;
|
|
334
384
|
}
|
|
335
385
|
|
|
336
386
|
const params: string[] = [];
|
|
337
|
-
const namespaceParam = this.convertPaginationParams(schema, opt.pagination.projectsOrNamespaces);
|
|
387
|
+
const namespaceParam = this.convertPaginationParams({ schema, filters: opt.pagination.projectsOrNamespaces });
|
|
338
388
|
|
|
339
389
|
if (namespaceParam) {
|
|
340
390
|
params.push(namespaceParam);
|
|
@@ -344,8 +394,11 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
344
394
|
params.push(`page=${ opt.pagination.page }`);
|
|
345
395
|
}
|
|
346
396
|
|
|
347
|
-
if (opt.pagination.pageSize) {
|
|
397
|
+
if (!!opt.pagination.pageSize || opt.pagination.pageSize === 0) {
|
|
348
398
|
params.push(`pagesize=${ opt.pagination.pageSize }`);
|
|
399
|
+
} else {
|
|
400
|
+
// Prevent unlimited resources in response
|
|
401
|
+
params.push(`pagesize=${ paginationUtils.defaultPageSize }`);
|
|
349
402
|
}
|
|
350
403
|
|
|
351
404
|
if (opt.pagination.sort?.length) {
|
|
@@ -365,12 +418,20 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
365
418
|
params.push(`sort=${ joined }`);
|
|
366
419
|
|
|
367
420
|
if (validateFields.invalid.length) {
|
|
368
|
-
console.warn(`Pagination API does not support sorting '${ schema
|
|
421
|
+
console.warn(`Pagination API does not support sorting '${ schema?.id || opt.url }' by the requested fields: ${ uniq(validateFields.invalid).join(', ') }`); // eslint-disable-line no-console
|
|
369
422
|
}
|
|
370
423
|
}
|
|
371
424
|
|
|
372
425
|
if (opt.pagination.filters?.length) {
|
|
373
|
-
const filters = this.convertPaginationParams(schema, opt.pagination.filters);
|
|
426
|
+
const filters = this.convertPaginationParams({ schema, filters: opt.pagination.filters });
|
|
427
|
+
|
|
428
|
+
if (filters) {
|
|
429
|
+
params.push(filters);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
if (opt.pagination.labelSelector) {
|
|
434
|
+
const filters = this.convertLabelSelectorPaginationParams({ labelSelector: opt.pagination.labelSelector });
|
|
374
435
|
|
|
375
436
|
if (filters) {
|
|
376
437
|
params.push(filters);
|
|
@@ -386,7 +447,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
386
447
|
/**
|
|
387
448
|
* Check if the API supports filtering by this field
|
|
388
449
|
*/
|
|
389
|
-
private validateField(state: { checked: string[], invalid: string[]}, schema
|
|
450
|
+
private validateField(state: { checked: string[], invalid: string[]}, schema?: Schema, field?: string) {
|
|
390
451
|
if (!field) {
|
|
391
452
|
return; // no field, so not invalid
|
|
392
453
|
}
|
|
@@ -399,7 +460,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
399
460
|
|
|
400
461
|
// First check in our hardcoded list of supported filters
|
|
401
462
|
if (
|
|
402
|
-
|
|
463
|
+
!!schema &&
|
|
403
464
|
[
|
|
404
465
|
StevePaginationUtils.VALID_FIELDS[''], // Global
|
|
405
466
|
StevePaginationUtils.VALID_FIELDS[schema.id], // Type specific
|
|
@@ -430,7 +491,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
430
491
|
/**
|
|
431
492
|
* Convert our {@link PaginationParam} definition of params to a set of url params
|
|
432
493
|
*/
|
|
433
|
-
private convertPaginationParams(schema: Schema, filters: PaginationParam[]
|
|
494
|
+
private convertPaginationParams({ schema, filters = [] }: {schema?: Schema, filters: PaginationParam[]}): string {
|
|
434
495
|
const validateFields = {
|
|
435
496
|
checked: new Array<string>(),
|
|
436
497
|
invalid: new Array<string>(),
|
|
@@ -444,15 +505,29 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
444
505
|
// Check if the API supports filtering by this field
|
|
445
506
|
this.validateField(validateFields, schema, field.field);
|
|
446
507
|
|
|
447
|
-
|
|
508
|
+
// we're just checking that the field exists, so there's no value
|
|
509
|
+
if (field.exists) {
|
|
510
|
+
return field.field;
|
|
511
|
+
}
|
|
512
|
+
const encodedValue = encodeURIComponent(field.value || '');
|
|
448
513
|
|
|
449
514
|
// = exact match (equals + exact)
|
|
450
515
|
// ~ partial match (equals + !exact)
|
|
451
516
|
// != not exact match (!equals + exact)
|
|
452
517
|
// !~ not partial match (!equals + !exact)
|
|
453
518
|
const operator = `${ field.equals ? '' : '!' }${ field.exact ? '=' : '~' }`;
|
|
454
|
-
|
|
455
|
-
|
|
519
|
+
let safeValue;
|
|
520
|
+
|
|
521
|
+
if (StevePaginationUtils.VALID_FIELD_VALUE_REGEX.test(field.value || '')) {
|
|
522
|
+
// Does not contain any protected characters, send as is
|
|
523
|
+
safeValue = encodedValue;
|
|
524
|
+
} else {
|
|
525
|
+
// Contains protected characters, wrap in quotes to ensure backend doesn't fail
|
|
526
|
+
// - replace reserver `"`/`%22` with empty string - see https://github.com/rancher/dashboard/issues/14549 for improvement
|
|
527
|
+
safeValue = `"${ encodedValue.replaceAll('%22', '') }"`;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
return `${ this.convertArrayPath(field.field) }${ operator }${ safeValue }`;
|
|
456
531
|
}
|
|
457
532
|
|
|
458
533
|
return field.value;
|
|
@@ -470,11 +545,116 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|
|
470
545
|
const res = Object.keys(unique).join('&'); // This means AND
|
|
471
546
|
|
|
472
547
|
if (validateFields.invalid.length) {
|
|
473
|
-
console.warn(`Pagination API does not support filtering '${ schema
|
|
548
|
+
console.warn(`Pagination API does not support filtering '${ schema?.id || 'unknown' }' by the requested fields: ${ uniq(validateFields.invalid).join(', ') }`); // eslint-disable-line no-console
|
|
474
549
|
}
|
|
475
550
|
|
|
476
551
|
return res;
|
|
477
552
|
}
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* Convert kube labelSelector object into steve filter params
|
|
556
|
+
*
|
|
557
|
+
* A lot of the requirements and details are taken directly from
|
|
558
|
+
* https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
|
559
|
+
*/
|
|
560
|
+
private convertLabelSelectorPaginationParams({ labelSelector }: { labelSelector: KubeLabelSelector}): string {
|
|
561
|
+
// Get a list of matchExpressions
|
|
562
|
+
const expressions: KubeLabelSelectorExpression[] = labelSelector.matchExpressions ? [...labelSelector.matchExpressions] : [];
|
|
563
|
+
|
|
564
|
+
// matchLabels are just simpler versions of matchExpressions, for ease convert them
|
|
565
|
+
if (labelSelector.matchLabels) {
|
|
566
|
+
Object.entries(labelSelector.matchLabels).forEach(([key, value]) => {
|
|
567
|
+
const expression: KubeLabelSelectorExpression = {
|
|
568
|
+
key,
|
|
569
|
+
values: [value],
|
|
570
|
+
operator: 'In'
|
|
571
|
+
};
|
|
572
|
+
|
|
573
|
+
expressions.push(expression);
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// concert all matchExpressions into string params
|
|
578
|
+
const filters: string[] = expressions.reduce((res, exp) => {
|
|
579
|
+
const labelKey = `metadata.labels[${ exp.key }]`;
|
|
580
|
+
|
|
581
|
+
switch (exp.operator) {
|
|
582
|
+
case 'In':
|
|
583
|
+
if (!exp.values?.length) {
|
|
584
|
+
console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(IN) as no value was supplied`); // eslint-disable-line no-console
|
|
585
|
+
|
|
586
|
+
return res;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
// foo IN [bar] => ?filter=foo+IN+(bar)
|
|
590
|
+
// foo IN [bar, baz2] => ?filter=foo+IN+(bar,baz2)
|
|
591
|
+
res.push(`filter=${ labelKey } IN (${ exp.values.join(',') })`);
|
|
592
|
+
break;
|
|
593
|
+
case 'NotIn':
|
|
594
|
+
|
|
595
|
+
if (!exp.values?.length) {
|
|
596
|
+
console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(NOTIN) as no value was supplied`); // eslint-disable-line no-console
|
|
597
|
+
|
|
598
|
+
return res;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
// aaa NotIn [bar, baz2]=> ?filter=foo+NOTIN+(bar,baz2)
|
|
602
|
+
res.push(`filter=${ labelKey } NOTIN (${ exp.values.join(',') })`);
|
|
603
|
+
break;
|
|
604
|
+
case 'Exists':
|
|
605
|
+
|
|
606
|
+
if (exp.values?.length) {
|
|
607
|
+
console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(Exists) as no value was supplied`); // eslint-disable-line no-console
|
|
608
|
+
|
|
609
|
+
return res;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
// bbb Exists=> ?filter=bbb
|
|
613
|
+
res.push(`filter=${ labelKey }`);
|
|
614
|
+
break;
|
|
615
|
+
case 'DoesNotExist':
|
|
616
|
+
if (exp.values?.length) {
|
|
617
|
+
console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(DoesNotExist) as no value was supplied`); // eslint-disable-line no-console
|
|
618
|
+
|
|
619
|
+
return res;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
// ccc DoesNotExist ?filter=!bbb. # or %21bbb
|
|
623
|
+
res.push(`filter=!${ labelKey }`);
|
|
624
|
+
break;
|
|
625
|
+
case 'Gt':
|
|
626
|
+
// Currently broken - see https://github.com/rancher/rancher/issues/50057
|
|
627
|
+
// Only applicable to node affinity (atm) - https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#operators
|
|
628
|
+
|
|
629
|
+
if (typeof exp.values !== 'string') {
|
|
630
|
+
console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(Gt) as no value was supplied`); // eslint-disable-line no-console
|
|
631
|
+
|
|
632
|
+
return res;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
// ddd Gt 1=> ?filter=ddd+>+1
|
|
636
|
+
res.push(`filter=${ labelKey } > (${ exp.values })`);
|
|
637
|
+
break;
|
|
638
|
+
case 'Lt':
|
|
639
|
+
// Currently broken - see https://github.com/rancher/rancher/issues/50057
|
|
640
|
+
// Only applicable to node affinity (atm) - https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#operators
|
|
641
|
+
if (typeof exp.values !== 'string') {
|
|
642
|
+
console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(Lt) as no value was supplied`); // eslint-disable-line no-console
|
|
643
|
+
|
|
644
|
+
return res;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
// eee Lt 2=> ?filter=eee+<+2
|
|
648
|
+
res.push(`filter=${ labelKey } < (${ exp.values })`);
|
|
649
|
+
break;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
return res;
|
|
653
|
+
}, [] as string[]);
|
|
654
|
+
|
|
655
|
+
// "All of the requirements, from both matchLabels and matchExpressions are ANDed together -- they must all be satisfied in order to match"
|
|
656
|
+
return filters.join('&');
|
|
657
|
+
}
|
|
478
658
|
}
|
|
479
659
|
|
|
480
660
|
export const PAGINATION_SETTINGS_STORE_DEFAULTS: PaginationSettingsStore = {
|
|
@@ -487,7 +667,7 @@ export const PAGINATION_SETTINGS_STORE_DEFAULTS: PaginationSettingsStore = {
|
|
|
487
667
|
enabled: [
|
|
488
668
|
NODE, EVENT,
|
|
489
669
|
WORKLOAD_TYPES.CRON_JOB, WORKLOAD_TYPES.DAEMON_SET, WORKLOAD_TYPES.DEPLOYMENT, WORKLOAD_TYPES.JOB, WORKLOAD_TYPES.STATEFUL_SET, POD,
|
|
490
|
-
CATALOG.APP, CATALOG.
|
|
670
|
+
CATALOG.APP, CATALOG.OPERATION,
|
|
491
671
|
HPA, INGRESS, SERVICE,
|
|
492
672
|
PV, CONFIG_MAP, STORAGE_CLASS, PVC, SECRET,
|
|
493
673
|
WORKLOAD_TYPES.REPLICA_SET, WORKLOAD_TYPES.REPLICATION_CONTROLLER
|
|
@@ -501,8 +681,10 @@ export const PAGINATION_SETTINGS_STORE_DEFAULTS: PaginationSettingsStore = {
|
|
|
501
681
|
enableAll: false,
|
|
502
682
|
enableSome: {
|
|
503
683
|
enabled: [
|
|
504
|
-
{ resource: CAPI.RANCHER_CLUSTER, context: ['home', 'side-bar'] },
|
|
505
|
-
{ resource: MANAGEMENT.CLUSTER, context: ['side-bar'] },
|
|
684
|
+
// { resource: CAPI.RANCHER_CLUSTER, context: ['home', 'side-bar'] }, // Disabled due to https://github.com/rancher/dashboard/issues/14493
|
|
685
|
+
// { resource: MANAGEMENT.CLUSTER, context: ['side-bar'] }, // Disabled due to https://github.com/rancher/dashboard/issues/14493
|
|
686
|
+
{ resource: CATALOG.APP, context: ['branding'] },
|
|
687
|
+
SECRET
|
|
506
688
|
],
|
|
507
689
|
generic: false,
|
|
508
690
|
}
|