@rancher/shell 3.0.5-rc.5 → 3.0.5-rc.7
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/data/aws-regions.json +1 -0
- package/assets/images/key.svg +17 -0
- package/assets/styles/base/_spacing.scss +2 -2
- package/assets/styles/base/_variables.scss +17 -11
- package/assets/styles/global/_form.scss +1 -1
- package/assets/styles/global/_labeled-input.scss +1 -1
- package/assets/styles/themes/_dark.scss +5 -0
- package/assets/styles/themes/_light.scss +11 -2
- package/assets/styles/vendor/vue-select.scss +1 -1
- package/assets/translations/en-us.yaml +426 -64
- package/assets/translations/zh-hans.yaml +3 -4
- package/cloud-credential/gcp.vue +9 -1
- package/components/AppModal.vue +2 -0
- package/components/CodeMirror.vue +2 -2
- package/components/ConfigMapSettings/Settings.vue +377 -0
- package/components/ConfigMapSettings/index.vue +354 -0
- package/components/CruResource.vue +1 -2
- package/components/DetailText.vue +61 -11
- package/components/Drawer/Chrome.vue +115 -0
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +61 -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 +111 -0
- package/components/GrowlManager.vue +16 -15
- package/components/IconOrSvg.vue +5 -0
- package/components/KeyValueView.vue +1 -1
- package/components/Loading.vue +1 -1
- package/components/LocaleSelector.vue +9 -1
- package/components/PaginatedResourceTable.vue +46 -1
- package/components/ProgressBarMulti.vue +1 -0
- package/components/PromptModal.vue +6 -1
- package/components/PromptRestore.vue +22 -44
- package/components/RelatedResources.vue +4 -12
- package/components/Resource/Detail/Additional.vue +46 -0
- package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +1 -1
- package/components/Resource/Detail/Metadata/Annotations/index.vue +5 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +47 -256
- package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +317 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +34 -5
- package/components/Resource/Detail/Metadata/KeyValue.vue +32 -22
- package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +1 -1
- package/components/Resource/Detail/Metadata/Labels/index.vue +4 -0
- package/components/Resource/Detail/Metadata/Rectangle.vue +3 -1
- package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +1 -1
- package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +1 -1
- package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
- package/components/Resource/Detail/Metadata/composables.ts +60 -11
- package/components/Resource/Detail/Metadata/index.vue +12 -5
- package/components/Resource/Detail/Page.vue +15 -0
- package/components/Resource/Detail/ResourceRow.vue +37 -18
- 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 +1 -1
- package/components/Resource/Detail/TitleBar/Title.vue +2 -1
- package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +1 -1
- package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +1 -1
- package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
- package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +1 -1
- package/components/Resource/Detail/TitleBar/composables.ts +45 -0
- package/components/Resource/Detail/TitleBar/index.vue +85 -13
- 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} +1 -1
- package/components/ResourceDetail/__tests__/index.test.ts +26 -5
- package/components/ResourceDetail/index.vue +33 -17
- package/components/ResourceDetail/legacy.vue +18 -1
- package/components/ResourceList/Masthead.vue +6 -0
- package/components/ResourceList/index.vue +1 -0
- package/components/ResourceTable.vue +6 -1
- package/components/ResourceYaml.vue +15 -2
- package/components/RichTranslation.vue +106 -0
- package/components/SlideInPanelManager.vue +46 -11
- package/components/SortableTable/index.vue +1 -1
- package/components/SortableTable/selection.js +0 -1
- package/components/StateDot/index.vue +28 -0
- package/components/Tabbed/index.vue +17 -16
- package/components/Wizard.vue +4 -2
- package/components/__tests__/ConfigMapSettings.test.ts +376 -0
- package/components/__tests__/GrowlManager.test.ts +0 -25
- package/components/__tests__/PromptRestore.test.ts +1 -65
- package/components/__tests__/RichTranslation.test.ts +115 -0
- package/components/auth/login/ldap.vue +1 -1
- package/components/fleet/FleetApplications.vue +0 -7
- 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 +8 -0
- package/components/fleet/FleetRepos.vue +1 -6
- package/components/fleet/FleetResources.vue +4 -5
- 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 +13 -13
- package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
- package/components/fleet/dashboard/ResourceCard.vue +1 -0
- package/components/fleet/dashboard/ResourceCardSummary.vue +1 -5
- package/components/fleet/dashboard/ResourceDetails.vue +8 -10
- package/components/fleet/dashboard/ResourcePanel.vue +17 -9
- package/components/form/ArrayList.vue +13 -2
- package/components/form/ChangePassword.vue +3 -1
- package/components/form/FileImageSelector.vue +1 -1
- package/components/form/Footer.vue +10 -4
- package/components/form/KeyValue.vue +81 -43
- package/components/form/LabeledSelect.vue +56 -16
- package/components/form/Labels.vue +90 -17
- package/components/form/MatchExpressions.vue +46 -5
- package/components/form/NameNsDescription.vue +2 -1
- package/components/form/Networking.vue +24 -19
- package/components/form/ResourceLabeledSelect.vue +4 -3
- package/components/form/ResourceSelector.vue +1 -0
- package/components/form/ResourceTabs/index.vue +5 -0
- package/components/form/SecretSelector.vue +9 -2
- package/components/form/Select.vue +57 -19
- package/components/form/SelectOrCreateAuthSecret.vue +6 -3
- package/components/form/SimpleSecretSelector.vue +9 -2
- package/components/form/Taints.vue +21 -2
- package/components/form/UnitInput.vue +8 -0
- package/components/form/ValueFromResource.vue +1 -1
- package/components/form/__tests__/LabeledSelect.test.ts +8 -4
- 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__/Select.test.ts +5 -2
- package/components/formatter/FleetApplicationSource.vue +1 -1
- package/components/formatter/PodImages.vue +1 -1
- package/components/formatter/WorkloadHealthScale.vue +1 -1
- 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 +71 -45
- package/components/nav/Header.vue +5 -1
- package/components/nav/NamespaceFilter.vue +13 -1
- package/components/nav/NotificationCenter/Notification.vue +510 -0
- package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
- package/components/nav/NotificationCenter/index.vue +148 -0
- package/composables/drawer.ts +26 -0
- package/composables/resources.test.ts +63 -0
- package/composables/resources.ts +38 -0
- package/composables/useIsNewDetailPageEnabled.ts +17 -0
- package/config/labels-annotations.js +8 -0
- package/config/pagination-table-headers.js +8 -1
- package/config/product/auth.js +16 -1
- package/config/product/{cis.js → compliance.js} +23 -26
- package/config/product/explorer.js +32 -3
- package/config/product/fleet.js +7 -0
- package/config/product/manager.js +0 -1
- package/config/product/settings.js +22 -11
- package/config/query-params.js +13 -0
- package/config/roles.ts +1 -1
- package/config/router/navigation-guards/authentication.js +51 -2
- package/config/router/routes.js +47 -31
- package/config/settings.ts +21 -3
- package/config/store.js +2 -0
- package/config/system-namespaces.js +1 -1
- package/config/table-headers.js +32 -3
- package/config/types.js +16 -7
- package/config/version.js +1 -1
- package/core/plugin.ts +32 -7
- package/core/types.ts +18 -1
- package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
- package/detail/management.cattle.io.fleetworkspace.vue +18 -27
- package/detail/management.cattle.io.oidcclient.vue +369 -0
- package/detail/node.vue +2 -2
- package/detail/pod.vue +2 -2
- package/detail/provisioning.cattle.io.cluster.vue +3 -47
- package/detail/service.vue +10 -1
- package/detail/workload/index.vue +8 -2
- package/dialog/ExtensionCatalogUninstallDialog.vue +7 -4
- package/dialog/GenericPrompt.vue +1 -1
- package/dialog/ImportDialog.vue +8 -8
- package/dialog/OidcClientSecretDialog.vue +117 -0
- package/dialog/RotateEncryptionKeyDialog.vue +10 -30
- package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
- package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +5 -2
- package/edit/auth/ldap/__tests__/config.test.ts +14 -0
- package/edit/auth/ldap/config.vue +24 -0
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -1
- 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 +8 -2
- package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
- package/edit/fleet.cattle.io.gitrepo.vue +44 -222
- package/edit/fleet.cattle.io.helmop.vue +44 -269
- 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 +1 -0
- package/edit/logging.banzaicloud.io.output/index.vue +1 -0
- package/edit/management.cattle.io.fleetworkspace.vue +1 -0
- 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 +30 -30
- 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 +1 -0
- package/edit/networking.istio.io.destinationrule/index.vue +4 -1
- package/edit/networking.k8s.io.ingress/Certificate.vue +12 -12
- package/edit/networking.k8s.io.ingress/__tests__/Certificate.test.ts +165 -0
- package/edit/networking.k8s.io.ingress/index.vue +4 -1
- package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +7 -2
- package/edit/networking.k8s.io.networkpolicy/index.vue +6 -2
- package/edit/node.vue +1 -0
- package/edit/persistentvolume/index.vue +4 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +3 -2
- package/edit/provisioning.cattle.io.cluster/rke2.vue +516 -426
- package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +48 -39
- 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 +127 -15
- package/edit/service.vue +4 -1
- package/edit/serviceaccount.vue +4 -1
- package/edit/storage.k8s.io.storageclass/index.vue +4 -1
- package/edit/workload/index.vue +5 -0
- package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
- package/list/management.cattle.io.oidcclient.vue +108 -0
- package/list/node.vue +2 -0
- package/list/projectsecret.vue +345 -0
- package/list/secret.vue +109 -0
- package/machine-config/amazonec2.vue +3 -24
- package/machine-config/components/GCEImage.vue +374 -0
- package/machine-config/google.vue +617 -0
- package/mixins/__tests__/brand.spec.ts +170 -0
- package/mixins/brand.js +16 -17
- package/mixins/create-edit-view/impl.js +10 -1
- package/mixins/create-edit-view/index.js +5 -0
- package/mixins/resource-fetch-api-pagination.js +24 -8
- package/mixins/resource-fetch.js +3 -1
- package/mixins/vue-select-overrides.js +1 -0
- 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 +8 -79
- package/models/fleet.cattle.io.cluster.js +13 -2
- package/models/fleet.cattle.io.gitrepo.js +2 -2
- package/models/fleet.cattle.io.helmop.js +9 -39
- package/models/management.cattle.io.fleetworkspace.js +2 -1
- package/models/management.cattle.io.oidcclient.js +18 -0
- package/models/management.cattle.io.registration.js +3 -0
- package/models/provisioning.cattle.io.cluster.js +29 -33
- package/models/secret.js +157 -2
- package/models/service.js +4 -0
- package/models/workload.js +5 -0
- package/package.json +2 -2
- package/pages/about.vue +4 -58
- package/pages/auth/login.vue +1 -1
- package/pages/c/_cluster/apps/charts/AddRepoLink.vue +0 -1
- package/pages/c/_cluster/apps/charts/index.vue +296 -81
- package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
- package/pages/c/_cluster/explorer/index.vue +3 -3
- package/pages/c/_cluster/explorer/projectsecret.vue +34 -0
- package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
- package/pages/c/_cluster/fleet/application/create.vue +3 -2
- package/pages/c/_cluster/fleet/index.vue +94 -57
- package/pages/c/_cluster/fleet/settings/index.vue +229 -0
- package/pages/c/_cluster/longhorn/index.vue +5 -2
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
- package/pages/explorer/resource/detail/configmap.vue +30 -7
- package/pages/explorer/resource/detail/projectsecret.vue +9 -0
- package/pages/explorer/resource/detail/secret.vue +63 -0
- package/pages/home.vue +9 -55
- package/pages/support/index.vue +4 -6
- 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 +19 -5
- package/plugins/dashboard-store/getters.js +4 -0
- package/plugins/dashboard-store/normalize.js +29 -17
- package/plugins/dashboard-store/resource-class.js +68 -19
- package/plugins/steve/steve-pagination-utils.ts +38 -19
- package/plugins/steve/subscribe.js +6 -1
- package/rancher-components/Banner/Banner.vue +13 -0
- package/rancher-components/Form/Checkbox/Checkbox.vue +9 -4
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +1 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -0
- package/rancher-components/RcItemCard/RcItemCard.vue +8 -3
- package/store/auth.js +2 -0
- package/store/catalog.js +23 -1
- package/store/growl.js +97 -8
- package/store/index.js +6 -0
- package/store/notifications.ts +426 -0
- package/store/prefs.js +0 -1
- package/store/type-map.js +19 -16
- package/store/uiplugins.ts +15 -1
- package/types/fleet.d.ts +24 -0
- package/types/kube/kube-api.ts +12 -0
- package/types/notifications/index.ts +74 -0
- package/types/shell/index.d.ts +661 -589
- package/types/store/dashboard-store.types.ts +16 -0
- package/types/store/pagination.types.ts +16 -6
- package/utils/__tests__/create-yaml.test.ts +235 -0
- package/utils/__tests__/fleet.test.ts +148 -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 +9 -2
- package/utils/create-yaml.js +103 -9
- package/utils/crypto/encryption.ts +103 -0
- package/utils/cspAdaptor.ts +51 -0
- package/utils/fleet.ts +54 -65
- package/utils/object.js +36 -0
- package/utils/pagination-utils.ts +19 -1
- package/utils/release-notes.ts +48 -0
- package/utils/selector-typed.ts +7 -2
- package/utils/string.js +24 -0
- package/utils/{time.js → time.ts} +25 -6
- package/utils/uiplugins.ts +22 -0
- package/utils/validators/formRules/index.ts +3 -0
- package/components/Resource/Detail/TitleBar/composable.ts +0 -31
- package/config/product/legacy.js +0 -62
- package/models/etcdbackup.js +0 -45
- 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
|
@@ -3,7 +3,6 @@ import difference from 'lodash/difference';
|
|
|
3
3
|
import { mapGetters } from 'vuex';
|
|
4
4
|
import CreateEditView from '@shell/mixins/create-edit-view';
|
|
5
5
|
import FormValidation from '@shell/mixins/form-validation';
|
|
6
|
-
|
|
7
6
|
import { set, get } from '@shell/utils/object';
|
|
8
7
|
import { Banner } from '@components/Banner';
|
|
9
8
|
import { Checkbox } from '@components/Form/Checkbox';
|
|
@@ -11,12 +10,11 @@ import LabeledSelect from '@shell/components/form/LabeledSelect';
|
|
|
11
10
|
import YamlEditor from '@shell/components/YamlEditor';
|
|
12
11
|
import { LEGACY } from '@shell/store/features';
|
|
13
12
|
import semver from 'semver';
|
|
14
|
-
import { _CREATE, _EDIT } from '@shell/config/query-params';
|
|
15
13
|
|
|
16
14
|
const HARVESTER = 'harvester';
|
|
17
15
|
|
|
18
16
|
export default {
|
|
19
|
-
emits: ['enabled-system-services-changed', 'cilium-values-changed', 'kubernetes-changed', 'show-deprecated-patch-versions-changed', '
|
|
17
|
+
emits: ['enabled-system-services-changed', 'cilium-values-changed', 'kubernetes-changed', 'show-deprecated-patch-versions-changed', 'compliance-changed', 'psa-default-changed'],
|
|
20
18
|
|
|
21
19
|
components: {
|
|
22
20
|
Banner,
|
|
@@ -53,7 +51,7 @@ export default {
|
|
|
53
51
|
type: Object,
|
|
54
52
|
required: true
|
|
55
53
|
},
|
|
56
|
-
|
|
54
|
+
complianceOverride: {
|
|
57
55
|
type: Boolean,
|
|
58
56
|
required: true
|
|
59
57
|
},
|
|
@@ -119,12 +117,23 @@ export default {
|
|
|
119
117
|
}
|
|
120
118
|
},
|
|
121
119
|
|
|
120
|
+
data() {
|
|
121
|
+
return {
|
|
122
|
+
showEnablingComplianceWarning: false,
|
|
123
|
+
initialAgentProfile: this.value.agentConfig?.profile || ''
|
|
124
|
+
};
|
|
125
|
+
},
|
|
126
|
+
|
|
122
127
|
watch: {
|
|
123
128
|
selectedVersion(neu, old) {
|
|
124
129
|
if (neu?.value !== old?.value && this.ciliumIpv6) {
|
|
125
130
|
// Re-assign so that the setter updates the structure for the new k8s version if needed
|
|
126
131
|
this.ciliumIpv6 = !!this.ciliumIpv6;
|
|
127
132
|
}
|
|
133
|
+
},
|
|
134
|
+
|
|
135
|
+
'agentConfig.profile'(newValue) {
|
|
136
|
+
this.showEnablingComplianceWarning = this.provider === 'custom' && this.isEdit && !!newValue && newValue !== this.initialAgentProfile;
|
|
128
137
|
}
|
|
129
138
|
},
|
|
130
139
|
|
|
@@ -157,7 +166,7 @@ export default {
|
|
|
157
166
|
});
|
|
158
167
|
|
|
159
168
|
out.unshift({
|
|
160
|
-
label: this.$store.getters['i18n/t']('cluster.rke2.
|
|
169
|
+
label: this.$store.getters['i18n/t']('cluster.rke2.complianceProfile.option'),
|
|
161
170
|
value: ''
|
|
162
171
|
});
|
|
163
172
|
|
|
@@ -167,19 +176,19 @@ export default {
|
|
|
167
176
|
/**
|
|
168
177
|
* Allow to display override if PSA is needed and profile is set
|
|
169
178
|
*/
|
|
170
|
-
|
|
179
|
+
hasComplianceOverride() {
|
|
171
180
|
return (this.serverConfig?.profile || this.agentConfig?.profile) &&
|
|
172
181
|
// Also check other cases on when to display the override
|
|
173
|
-
this.
|
|
182
|
+
this.showComplianceProfile && this.isComplianceSupported;
|
|
174
183
|
},
|
|
175
184
|
|
|
176
185
|
/**
|
|
177
|
-
* Disable PSA if
|
|
186
|
+
* Disable PSA if Compliance hardening is enabled, except override
|
|
178
187
|
*/
|
|
179
188
|
isPsaDisabled() {
|
|
180
|
-
const
|
|
189
|
+
const complianceValue = this.agentConfig?.profile || this.serverConfig?.profile;
|
|
181
190
|
|
|
182
|
-
return !(!
|
|
191
|
+
return !(!complianceValue || this.complianceOverride) && this.isComplianceSupported;
|
|
183
192
|
},
|
|
184
193
|
|
|
185
194
|
/**
|
|
@@ -218,12 +227,12 @@ export default {
|
|
|
218
227
|
},
|
|
219
228
|
|
|
220
229
|
/**
|
|
221
|
-
* Check if current
|
|
230
|
+
* Check if current compliance profile is required and listed in the options
|
|
222
231
|
*/
|
|
223
|
-
|
|
224
|
-
const
|
|
232
|
+
isComplianceSupported() {
|
|
233
|
+
const complianceProfile = this.serverConfig?.profile || this.agentConfig?.profile;
|
|
225
234
|
|
|
226
|
-
return !
|
|
235
|
+
return !complianceProfile || this.profileOptions.map((option) => option.value).includes(complianceProfile);
|
|
227
236
|
},
|
|
228
237
|
|
|
229
238
|
disableOptions() {
|
|
@@ -252,7 +261,7 @@ export default {
|
|
|
252
261
|
return this.selectedVersion?.charts || {};
|
|
253
262
|
},
|
|
254
263
|
|
|
255
|
-
|
|
264
|
+
showComplianceProfile() {
|
|
256
265
|
return (this.provider === 'custom' || this.isElementalCluster) && ( this.serverArgs?.profile || this.agentArgs?.profile );
|
|
257
266
|
},
|
|
258
267
|
|
|
@@ -382,10 +391,6 @@ export default {
|
|
|
382
391
|
}
|
|
383
392
|
},
|
|
384
393
|
|
|
385
|
-
isEdit() {
|
|
386
|
-
return this.mode === _EDIT;
|
|
387
|
-
},
|
|
388
|
-
|
|
389
394
|
canNotEditCloudProvider() {
|
|
390
395
|
if (!this.isEdit) {
|
|
391
396
|
return false;
|
|
@@ -405,14 +410,14 @@ export default {
|
|
|
405
410
|
* Display warning about unsupported Azure provider if k8s >= 1.30
|
|
406
411
|
*/
|
|
407
412
|
showCloudProviderUnsupportedAzureWarning() {
|
|
408
|
-
return this.showCloudProvider && this.
|
|
413
|
+
return this.showCloudProvider && this.isCreate && this.isAzureProviderUnsupported;
|
|
409
414
|
},
|
|
410
415
|
|
|
411
416
|
/**
|
|
412
417
|
* Display warning about Azure provider migration from k8s versions >= 1.27 to External provider
|
|
413
418
|
*/
|
|
414
419
|
showCloudProviderMigrateAzureWarning() {
|
|
415
|
-
return this.showCloudProvider && this.
|
|
420
|
+
return this.showCloudProvider && this.isEdit && this.canAzureMigrateOnEdit;
|
|
416
421
|
}
|
|
417
422
|
},
|
|
418
423
|
|
|
@@ -573,52 +578,56 @@ export default {
|
|
|
573
578
|
</h3>
|
|
574
579
|
|
|
575
580
|
<Banner
|
|
576
|
-
v-if="
|
|
581
|
+
v-if="showComplianceProfile && !isComplianceSupported && isEdit"
|
|
577
582
|
color="info"
|
|
578
583
|
>
|
|
579
|
-
<p v-clean-html="t('cluster.rke2.banner.
|
|
584
|
+
<p v-clean-html="t('cluster.rke2.banner.complianceUnsupported', {profile: serverConfig.profile || agentConfig.profile}, true)" />
|
|
580
585
|
</Banner>
|
|
581
586
|
|
|
582
|
-
<div
|
|
583
|
-
<div
|
|
584
|
-
v-if="showCisProfile"
|
|
585
|
-
class="col span-6"
|
|
586
|
-
>
|
|
587
|
+
<div v-if="showComplianceProfile">
|
|
588
|
+
<div class="col span-6">
|
|
587
589
|
<LabeledSelect
|
|
588
590
|
v-if="serverArgs && serverArgs.profile && serverConfig"
|
|
589
591
|
v-model:value="serverConfig.profile"
|
|
590
592
|
:mode="mode"
|
|
591
593
|
:options="profileOptions"
|
|
592
|
-
:label="t('cluster.rke2.
|
|
593
|
-
@update:value="$emit('
|
|
594
|
+
:label="t('cluster.rke2.compliance.sever')"
|
|
595
|
+
@update:value="$emit('compliance-changed')"
|
|
594
596
|
/>
|
|
595
597
|
<LabeledSelect
|
|
596
598
|
v-else-if="agentArgs && agentArgs.profile && agentConfig"
|
|
597
599
|
v-model:value="agentConfig.profile"
|
|
598
|
-
data-testid="rke2-custom-edit-
|
|
600
|
+
data-testid="rke2-custom-edit-compliance-agent"
|
|
599
601
|
:mode="mode"
|
|
600
602
|
:options="profileOptions"
|
|
601
|
-
:label="t('cluster.rke2.
|
|
602
|
-
@update:value="$emit('
|
|
603
|
+
:label="t('cluster.rke2.compliance.agent')"
|
|
604
|
+
@update:value="$emit('compliance-changed')"
|
|
605
|
+
/>
|
|
606
|
+
</div>
|
|
607
|
+
<div class="row mb-10">
|
|
608
|
+
<Banner
|
|
609
|
+
v-if="showEnablingComplianceWarning"
|
|
610
|
+
color="warning"
|
|
611
|
+
label-key="cluster.rke2.compliance.warning"
|
|
603
612
|
/>
|
|
604
613
|
</div>
|
|
605
614
|
</div>
|
|
606
615
|
|
|
607
|
-
<template v-if="
|
|
616
|
+
<template v-if="hasComplianceOverride">
|
|
608
617
|
<Checkbox
|
|
609
|
-
:value="
|
|
618
|
+
:value="complianceOverride"
|
|
610
619
|
:mode="mode"
|
|
611
|
-
:label="t('cluster.rke2.
|
|
620
|
+
:label="t('cluster.rke2.compliance.override')"
|
|
612
621
|
@update:value="$emit('psa-default-changed')"
|
|
613
622
|
/>
|
|
614
623
|
|
|
615
624
|
<Banner
|
|
616
|
-
v-if="
|
|
625
|
+
v-if="complianceOverride"
|
|
617
626
|
color="warning"
|
|
618
|
-
:label="t('cluster.rke2.banner.
|
|
627
|
+
:label="t('cluster.rke2.banner.complianceOverride')"
|
|
619
628
|
/>
|
|
620
629
|
<Banner
|
|
621
|
-
v-if="!
|
|
630
|
+
v-if="!complianceOverride"
|
|
622
631
|
color="info"
|
|
623
632
|
:label="t('cluster.rke2.banner.psaChange')"
|
|
624
633
|
/>
|
|
@@ -45,6 +45,10 @@ export default {
|
|
|
45
45
|
type: String,
|
|
46
46
|
default: null
|
|
47
47
|
},
|
|
48
|
+
projectId: {
|
|
49
|
+
type: String,
|
|
50
|
+
default: null
|
|
51
|
+
},
|
|
48
52
|
|
|
49
53
|
mode: {
|
|
50
54
|
type: String,
|
|
@@ -306,6 +310,7 @@ export default {
|
|
|
306
310
|
:value="value.config"
|
|
307
311
|
:provider="provider"
|
|
308
312
|
:credential-id="credentialId"
|
|
313
|
+
:project-id="projectId"
|
|
309
314
|
:pool-index="idx"
|
|
310
315
|
:pool-id="poolId"
|
|
311
316
|
:pool-create-mode="value.create"
|
|
@@ -104,7 +104,7 @@ export default {
|
|
|
104
104
|
|
|
105
105
|
configs[h] = {
|
|
106
106
|
...entry,
|
|
107
|
-
caBundle: base64Encode(entry.caBundle)
|
|
107
|
+
caBundle: entry.caBundle ? base64Encode(entry.caBundle) : null
|
|
108
108
|
};
|
|
109
109
|
|
|
110
110
|
delete configs[h].hostname;
|
|
@@ -172,7 +172,7 @@ export default {
|
|
|
172
172
|
:mode="mode"
|
|
173
173
|
generate-name="registryconfig-auth-"
|
|
174
174
|
:data-testid="`registry-auth-select-or-create-${i}`"
|
|
175
|
-
:cache-secrets="
|
|
175
|
+
:cache-secrets="false"
|
|
176
176
|
@update:value="update"
|
|
177
177
|
/>
|
|
178
178
|
</div>
|
|
@@ -48,7 +48,7 @@ export default {
|
|
|
48
48
|
async fetch() {
|
|
49
49
|
const hash = await allHash({
|
|
50
50
|
catalog: this.$store.dispatch('catalog/load'),
|
|
51
|
-
resourceSet: this.$store.dispatch('cluster/find', { type: BACKUP_RESTORE.RESOURCE_SET, id: this.value?.spec?.resourceSetName || 'rancher-resource-set' }),
|
|
51
|
+
resourceSet: this.$store.dispatch('cluster/find', { type: BACKUP_RESTORE.RESOURCE_SET, id: this.value?.spec?.resourceSetName || 'rancher-resource-set-full' }),
|
|
52
52
|
apps: this.$store.dispatch('cluster/findAll', { type: CATALOG.APP })
|
|
53
53
|
});
|
|
54
54
|
|
package/edit/secret/basic.vue
CHANGED
package/edit/secret/index.vue
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { SECRET_TYPES as TYPES } from '@shell/config/secret';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
SECRET_SCOPE, SECRET_QUERY_PARAMS,
|
|
5
|
+
CLOUD_CREDENTIAL, _CLONE, _CREATE, _EDIT, _FLAGGED
|
|
6
|
+
} from '@shell/config/query-params';
|
|
7
|
+
import { MANAGEMENT, NAMESPACE, DEFAULT_WORKSPACE, VIRTUAL_TYPES } from '@shell/config/types';
|
|
8
|
+
import { CAPI, UI_PROJECT_SECRET } from '@shell/config/labels-annotations';
|
|
9
|
+
import FormValidation from '@shell/mixins/form-validation';
|
|
4
10
|
import CreateEditView from '@shell/mixins/create-edit-view';
|
|
5
11
|
import NameNsDescription from '@shell/components/form/NameNsDescription';
|
|
6
12
|
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
7
13
|
import LabeledSelect from '@shell/components/form/LabeledSelect';
|
|
8
14
|
import CruResource from '@shell/components/CruResource';
|
|
9
|
-
import {
|
|
10
|
-
CLOUD_CREDENTIAL, _CLONE, _CREATE, _EDIT, _FLAGGED
|
|
11
|
-
} from '@shell/config/query-params';
|
|
12
15
|
import Loading from '@shell/components/Loading';
|
|
13
16
|
import Tabbed from '@shell/components/Tabbed';
|
|
14
17
|
import Tab from '@shell/components/Tabbed/Tab';
|
|
15
18
|
import Labels from '@shell/components/form/Labels';
|
|
16
19
|
import { HIDE_SENSITIVE } from '@shell/store/prefs';
|
|
17
|
-
import { CAPI } from '@shell/config/labels-annotations';
|
|
18
20
|
import { clear, uniq } from '@shell/utils/array';
|
|
19
|
-
import { NAME as MANAGER } from '@shell/config/product/manager';
|
|
20
21
|
import SelectIconGrid from '@shell/components/SelectIconGrid';
|
|
21
22
|
import { sortBy } from '@shell/utils/sort';
|
|
22
23
|
import { ucFirst } from '@shell/utils/string';
|
|
@@ -46,12 +47,34 @@ export default {
|
|
|
46
47
|
SelectIconGrid
|
|
47
48
|
},
|
|
48
49
|
|
|
49
|
-
mixins: [CreateEditView],
|
|
50
|
+
mixins: [CreateEditView, FormValidation],
|
|
50
51
|
|
|
51
52
|
async fetch() {
|
|
52
53
|
if ( this.isCloud ) {
|
|
53
54
|
this.nodeDrivers = await this.$store.dispatch('management/findAll', { type: MANAGEMENT.NODE_DRIVER });
|
|
54
55
|
}
|
|
56
|
+
|
|
57
|
+
const projectScopedLabel = this.value.metadata?.labels?.[UI_PROJECT_SECRET];
|
|
58
|
+
const isProjectScoped = !!projectScopedLabel || (this.isCreate && this.$route.query[SECRET_SCOPE] === SECRET_QUERY_PARAMS.PROJECT_SCOPED);
|
|
59
|
+
|
|
60
|
+
this.isProjectScoped = isProjectScoped;
|
|
61
|
+
|
|
62
|
+
if (isProjectScoped) {
|
|
63
|
+
// If ssp is enabled the store not have all projects. ensure we have them all
|
|
64
|
+
await this.$store.dispatch('management/findAll', { type: MANAGEMENT.PROJECT });
|
|
65
|
+
if (this.isCreate) {
|
|
66
|
+
// Pick first project as default
|
|
67
|
+
this.projectName = this.filteredProjects[0].metadata.name;
|
|
68
|
+
|
|
69
|
+
this.value.metadata.labels = this.value.metadata.labels || {};
|
|
70
|
+
|
|
71
|
+
// Set namespace and project-scoped label
|
|
72
|
+
this.value.metadata.namespace = this.filteredProjects[0].status.backingNamespace;
|
|
73
|
+
this.value.metadata.labels[UI_PROJECT_SECRET] = this.filteredProjects[0].metadata.name;
|
|
74
|
+
} else {
|
|
75
|
+
this.projectName = this.filteredProjects.find((p) => p.metadata.name === projectScopedLabel).metadata.name;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
55
78
|
},
|
|
56
79
|
|
|
57
80
|
data() {
|
|
@@ -89,14 +112,50 @@ export default {
|
|
|
89
112
|
|
|
90
113
|
return {
|
|
91
114
|
isCloud,
|
|
115
|
+
isProjectScoped: false,
|
|
92
116
|
nodeDrivers: null,
|
|
93
117
|
secretTypes,
|
|
94
118
|
secretType: this.value._type,
|
|
95
|
-
initialSecretType: this.value._type
|
|
119
|
+
initialSecretType: this.value._type,
|
|
120
|
+
projectName: null,
|
|
121
|
+
fvFormRuleSets: [
|
|
122
|
+
{
|
|
123
|
+
path: 'metadata.name',
|
|
124
|
+
rules: ['required'],
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
path: 'metadata.namespace',
|
|
128
|
+
rules: ['required'],
|
|
129
|
+
},
|
|
130
|
+
],
|
|
96
131
|
};
|
|
97
132
|
},
|
|
98
133
|
|
|
99
134
|
computed: {
|
|
135
|
+
clusterId() {
|
|
136
|
+
return this.$store.getters['currentCluster'].id;
|
|
137
|
+
},
|
|
138
|
+
|
|
139
|
+
filteredProjects() {
|
|
140
|
+
const allProjects = this.$store.getters['management/all'](MANAGEMENT.PROJECT);
|
|
141
|
+
|
|
142
|
+
return allProjects.filter((p) => p.spec?.clusterName === this.clusterId);
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
projectOpts() {
|
|
146
|
+
let projects = this.$store.getters['management/all'](MANAGEMENT.PROJECT);
|
|
147
|
+
|
|
148
|
+
// Filter out projects not for the current cluster
|
|
149
|
+
projects = projects.filter((c) => c.spec?.clusterName === this.clusterId);
|
|
150
|
+
const out = projects.map((project) => {
|
|
151
|
+
return {
|
|
152
|
+
label: project.nameDisplay,
|
|
153
|
+
value: project.metadata.name,
|
|
154
|
+
};
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
return out;
|
|
158
|
+
},
|
|
100
159
|
isCustomSecretCreate() {
|
|
101
160
|
return this.mode === _CREATE && this.$route.query.type === 'custom';
|
|
102
161
|
},
|
|
@@ -214,12 +273,15 @@ export default {
|
|
|
214
273
|
}
|
|
215
274
|
},
|
|
216
275
|
|
|
217
|
-
|
|
218
|
-
if (
|
|
219
|
-
return
|
|
220
|
-
|
|
221
|
-
|
|
276
|
+
doneLocationOverride() {
|
|
277
|
+
if (this.isProjectScoped) {
|
|
278
|
+
return {
|
|
279
|
+
...this.value.listLocation,
|
|
280
|
+
params: { resource: VIRTUAL_TYPES.PROJECT_SECRETS }
|
|
281
|
+
};
|
|
222
282
|
}
|
|
283
|
+
|
|
284
|
+
return this.value.listLocation;
|
|
223
285
|
},
|
|
224
286
|
},
|
|
225
287
|
|
|
@@ -251,6 +313,13 @@ export default {
|
|
|
251
313
|
}
|
|
252
314
|
}
|
|
253
315
|
|
|
316
|
+
if (this.isProjectScoped) {
|
|
317
|
+
// Always create project-scoped secrets in the upstream local cluster
|
|
318
|
+
const url = this.$store.getters['management/urlFor'](this.value.type, this.value.id);
|
|
319
|
+
|
|
320
|
+
return this.save(btnCb, url);
|
|
321
|
+
}
|
|
322
|
+
|
|
254
323
|
return this.save(btnCb);
|
|
255
324
|
},
|
|
256
325
|
|
|
@@ -301,8 +370,25 @@ export default {
|
|
|
301
370
|
if (type !== 'custom') {
|
|
302
371
|
this.value['_type'] = type;
|
|
303
372
|
}
|
|
373
|
+
},
|
|
374
|
+
|
|
375
|
+
redirectAfterCancel() {
|
|
376
|
+
this.$router.replace(this.doneLocationOverride);
|
|
304
377
|
}
|
|
305
378
|
},
|
|
379
|
+
|
|
380
|
+
watch: {
|
|
381
|
+
projectName(neu) {
|
|
382
|
+
if (this.isCreate && neu) {
|
|
383
|
+
this.value.metadata.labels = this.value.metadata.labels || {};
|
|
384
|
+
this.value.metadata.labels[UI_PROJECT_SECRET] = neu;
|
|
385
|
+
|
|
386
|
+
const projectScopedNamespace = this.filteredProjects.find((p) => p.metadata.name === neu).status.backingNamespace;
|
|
387
|
+
|
|
388
|
+
this.value.metadata.namespace = projectScopedNamespace;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
306
392
|
};
|
|
307
393
|
</script>
|
|
308
394
|
|
|
@@ -312,22 +398,47 @@ export default {
|
|
|
312
398
|
<CruResource
|
|
313
399
|
v-else
|
|
314
400
|
:mode="mode"
|
|
315
|
-
:validation-passed="
|
|
401
|
+
:validation-passed="fvFormIsValid"
|
|
316
402
|
:selected-subtype="value._type"
|
|
317
403
|
:resource="value"
|
|
318
404
|
:errors="errors"
|
|
319
|
-
:done-route="doneRoute"
|
|
320
405
|
:subtypes="secretSubTypes"
|
|
406
|
+
:cancel-event="true"
|
|
407
|
+
:done-route="doneLocationOverride"
|
|
321
408
|
@finish="saveSecret"
|
|
322
409
|
@select-type="selectType"
|
|
323
410
|
@error="e=>errors = e"
|
|
411
|
+
@cancel="redirectAfterCancel"
|
|
324
412
|
>
|
|
325
413
|
<NameNsDescription
|
|
414
|
+
v-if="!isProjectScoped"
|
|
326
415
|
:value="value"
|
|
327
416
|
:mode="mode"
|
|
328
417
|
:namespaced="!isCloud"
|
|
329
418
|
@update:value="$emit('input', $event)"
|
|
330
419
|
/>
|
|
420
|
+
<NameNsDescription
|
|
421
|
+
v-else
|
|
422
|
+
:value="value"
|
|
423
|
+
:namespaced="false"
|
|
424
|
+
:mode="mode"
|
|
425
|
+
:rules="{
|
|
426
|
+
name: fvGetAndReportPathRules('metadata.name'),
|
|
427
|
+
namespace: fvGetAndReportPathRules('metadata.namespace'),
|
|
428
|
+
}"
|
|
429
|
+
>
|
|
430
|
+
<template #project-selector>
|
|
431
|
+
<LabeledSelect
|
|
432
|
+
v-model:value="projectName"
|
|
433
|
+
class="mr-20"
|
|
434
|
+
:disabled="!isCreate"
|
|
435
|
+
:label="t('namespace.project.label')"
|
|
436
|
+
:options="projectOpts"
|
|
437
|
+
required
|
|
438
|
+
data-testid="secret-project-select"
|
|
439
|
+
/>
|
|
440
|
+
</template>
|
|
441
|
+
</NameNsDescription>
|
|
331
442
|
|
|
332
443
|
<div
|
|
333
444
|
v-if="isCustomSecretCreate"
|
|
@@ -373,6 +484,7 @@ export default {
|
|
|
373
484
|
<Tabbed
|
|
374
485
|
v-else
|
|
375
486
|
:side-tabs="true"
|
|
487
|
+
:use-hash="useTabbedHash"
|
|
376
488
|
default-tab="data"
|
|
377
489
|
>
|
|
378
490
|
<Tab
|
package/edit/service.vue
CHANGED
|
@@ -344,7 +344,10 @@ export default {
|
|
|
344
344
|
:rules="{ name: fvGetAndReportPathRules('metadata.name'), namespace: [], description: [] }"
|
|
345
345
|
/>
|
|
346
346
|
|
|
347
|
-
<Tabbed
|
|
347
|
+
<Tabbed
|
|
348
|
+
:side-tabs="true"
|
|
349
|
+
:use-hash="useTabbedHash"
|
|
350
|
+
>
|
|
348
351
|
<Tab
|
|
349
352
|
v-if="checkTypeIs('ExternalName')"
|
|
350
353
|
name="define-external-name"
|
package/edit/serviceaccount.vue
CHANGED
|
@@ -237,7 +237,10 @@ export default {
|
|
|
237
237
|
:provisioner="provisionerLabel(value.provisioner)"
|
|
238
238
|
/>
|
|
239
239
|
</Banner>
|
|
240
|
-
<Tabbed
|
|
240
|
+
<Tabbed
|
|
241
|
+
:side-tabs="true"
|
|
242
|
+
:use-hash="useTabbedHash"
|
|
243
|
+
>
|
|
241
244
|
<Tab
|
|
242
245
|
name="parameters"
|
|
243
246
|
:label="t('storageClass.parameters.label')"
|
package/edit/workload/index.vue
CHANGED
|
@@ -163,6 +163,7 @@ export default {
|
|
|
163
163
|
:show-tabs-add-remove="true"
|
|
164
164
|
:default-tab="defaultTab"
|
|
165
165
|
:flat="true"
|
|
166
|
+
:use-hash="useTabbedHash"
|
|
166
167
|
data-testid="workload-horizontal-tabs"
|
|
167
168
|
@changed="changed"
|
|
168
169
|
>
|
|
@@ -178,6 +179,7 @@ export default {
|
|
|
178
179
|
:side-tabs="true"
|
|
179
180
|
:weight="99"
|
|
180
181
|
:data-testid="`workload-container-tabs-${i}`"
|
|
182
|
+
:use-hash="useTabbedHash"
|
|
181
183
|
>
|
|
182
184
|
<Tab
|
|
183
185
|
:label="t('workload.container.titles.general')"
|
|
@@ -266,6 +268,7 @@ export default {
|
|
|
266
268
|
v-stripped-aria-label="t('workload.container.ports.toolTip')"
|
|
267
269
|
class="icon icon-info"
|
|
268
270
|
tabindex="0"
|
|
271
|
+
role="tooltip"
|
|
269
272
|
/>
|
|
270
273
|
</h3>
|
|
271
274
|
<p class="padded">
|
|
@@ -373,6 +376,7 @@ export default {
|
|
|
373
376
|
<Tabbed
|
|
374
377
|
data-testid="workload-general-tabs"
|
|
375
378
|
:side-tabs="true"
|
|
379
|
+
:use-hash="useTabbedHash"
|
|
376
380
|
>
|
|
377
381
|
<Tab
|
|
378
382
|
name="labels"
|
|
@@ -414,6 +418,7 @@ export default {
|
|
|
414
418
|
<Tabbed
|
|
415
419
|
data-testid="workload-pod-tabs"
|
|
416
420
|
:side-tabs="true"
|
|
421
|
+
:use-hash="useTabbedHash"
|
|
417
422
|
>
|
|
418
423
|
<Tab
|
|
419
424
|
:label="t('workload.storage.title')"
|
|
@@ -3,7 +3,7 @@ import ResourceTable from '@shell/components/ResourceTable';
|
|
|
3
3
|
import { AGE } from '@shell/config/table-headers';
|
|
4
4
|
import ResourceFetch from '@shell/mixins/resource-fetch';
|
|
5
5
|
import { allHash } from '@shell/utils/promise';
|
|
6
|
-
import { fetchSpecsScheduledScanConfig } from '@shell/models/
|
|
6
|
+
import { fetchSpecsScheduledScanConfig } from '@shell/models/compliance.cattle.io.clusterscan';
|
|
7
7
|
|
|
8
8
|
export default {
|
|
9
9
|
components: { ResourceTable },
|
|
@@ -40,7 +40,7 @@ export default {
|
|
|
40
40
|
},
|
|
41
41
|
|
|
42
42
|
computed: {
|
|
43
|
-
// warning state and scheduling added in the same version of
|
|
43
|
+
// warning state and scheduling added in the same version of compliance so a check for one is a check for the other
|
|
44
44
|
hasWarningState() {
|
|
45
45
|
return this.hasScheduledScanConfig;
|
|
46
46
|
},
|