dashboard-shell-shell 1.0.122 → 1.0.1000000082
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/.DS_Store +0 -0
- package/assets/brand/harvester/favicon.png +0 -0
- package/assets/brand/suse/favicon.png +0 -0
- package/assets/icons/iconfont.css +19 -3
- package/assets/icons/iconfont.js +1 -1
- package/assets/icons/iconfont.json +28 -0
- package/assets/icons/iconfont.ttf +0 -0
- package/assets/icons/iconfont.woff +0 -0
- package/assets/icons/iconfont.woff2 +0 -0
- package/assets/images/pl/half-logo.svg +2 -23
- package/assets/styles/base/_functions.scss +0 -0
- package/assets/styles/base/_mixins.scss +0 -0
- package/assets/styles/base/_variables.scss +1 -1
- package/assets/styles/global/_labeled-input.scss +0 -1
- package/assets/styles/global/_layout.scss +1 -1
- package/assets/styles/global/_select.scss +4 -2
- package/assets/styles/global/_table.scss +5 -0
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +1 -1
- package/assets/translations/zh-hans.yaml +25 -15
- package/chart/monitoring/index.vue +3 -1
- package/chart/monitoring/prometheus/index.vue +13 -10
- package/cloud-credential/aws.vue +2 -0
- package/components/ActionDropdown.vue +1 -1
- package/components/ActionDropdownShell.vue +71 -0
- package/components/ActionMenu.vue +2 -2
- package/components/ActionMenuShell.vue +3 -0
- package/components/AppModal.vue +84 -8
- package/components/AssignTo.vue +25 -11
- package/components/AsyncButton.vue +24 -7
- package/components/BannerGraphic.vue +1 -0
- package/components/ButtonDropdown.vue +26 -4
- package/components/ButtonGroup.vue +4 -0
- package/components/ButtonMultiAction.vue +1 -0
- package/components/CodeMirror.vue +19 -6
- package/components/CommunityLinks.vue +3 -3
- package/components/ConsumptionGauge.vue +24 -5
- package/components/CopyToClipboardText.vue +2 -1
- package/components/CruResource.vue +13 -7
- package/components/CruResourceFooter.vue +2 -2
- package/components/DashboardOptions.vue +29 -17
- package/components/DetailText.vue +5 -0
- package/components/DisableAuthProviderModal.vue +1 -0
- package/components/DotState.vue +84 -0
- package/components/ExplorerMembers.vue +1 -1
- package/components/ExplorerProjectsNamespaces.vue +88 -16
- package/components/FixedBanner.vue +19 -12
- package/components/GlobalRoleBindings.vue +5 -1
- package/components/GrafanaDashboard.vue +4 -4
- package/components/GrowlManager.vue +4 -1
- package/components/HardwareResourceGauge.vue +39 -3
- package/components/InfoBox.vue +3 -3
- package/components/InputOrDisplay.vue +28 -2
- package/components/LabelValue.vue +20 -1
- package/components/LandingPagePreference.vue +5 -3
- package/components/LocaleSelector.vue +39 -93
- package/components/ModalManager.vue +55 -0
- package/components/ModalWithCard.vue +13 -3
- package/components/MoveModal.vue +1 -0
- package/components/PodSecurityAdmission.vue +1 -1
- package/components/PromptChangePassword.vue +1 -1
- package/components/PromptModal.vue +16 -3
- package/components/PromptRemove.vue +29 -9
- package/components/PromptRestore.vue +1 -0
- package/components/ResourceCancelModal.vue +1 -0
- package/components/ResourceDetail/Masthead.vue +52 -17
- package/components/ResourceDetail/__tests__/Masthead.test.ts +5 -1
- package/components/ResourceDetail/index.vue +54 -16
- package/components/ResourceList/Masthead.vue +26 -4
- package/components/ResourceList/index.vue +4 -3
- package/components/ResourceTable.vue +1 -0
- package/components/SideNav.vue +20 -15
- package/components/SlideInPanelManager.vue +126 -0
- package/components/SortableTable/THead.vue +10 -4
- package/components/SortableTable/actions.js +1 -1
- package/components/SortableTable/index.vue +542 -553
- package/components/SortableTable/selection.js +2 -13
- package/components/StatusBadge.vue +77 -0
- package/components/Tabbed/Tab.vue +3 -3
- package/components/Tabbed/index.vue +47 -29
- package/components/Wizard.vue +2 -2
- package/components/YamlEditor.vue +1 -1
- package/components/__tests__/AsyncButton.test.ts +2 -2
- package/components/__tests__/FixedBanner.test.ts +3 -3
- package/components/__tests__/ModalManager.spec.ts +176 -0
- package/components/__tests__/SlideInPanelManager.spec.ts +166 -0
- package/components/auth/Principal.vue +10 -3
- package/components/auth/RoleDetailEdit.vue +1 -1
- package/components/auth/__tests__/RoleDetailEdit.test.ts +3 -2
- package/components/form/ArrayList.vue +123 -85
- package/components/form/ArrayListGrouped.vue +10 -2
- package/components/form/ArrayListSelect.vue +1 -1
- package/components/form/Command.vue +6 -15
- package/components/form/EnvVars.vue +16 -8
- package/components/form/Footer.vue +10 -7
- package/components/form/HealthCheck.vue +3 -3
- package/components/form/HookOption.vue +11 -16
- package/components/form/InputWithSelect.vue +6 -5
- package/components/form/KeyValue.vue +39 -10
- package/components/form/LabeledSelect.vue +73 -77
- package/components/form/Labels.vue +6 -3
- package/components/form/LifecycleHooks.vue +3 -3
- package/components/form/MatchExpressions.vue +42 -17
- package/components/form/NameNsDescription.vue +163 -116
- package/components/form/Networking.vue +20 -12
- package/components/form/NodeAffinity.vue +31 -23
- package/components/form/NodeScheduling.vue +13 -3
- package/components/form/Password.vue +11 -5
- package/components/form/PodAffinity.vue +47 -48
- package/components/form/Probe.vue +68 -66
- package/components/form/ResourceQuota/Namespace.vue +4 -4
- package/components/form/ResourceQuota/NamespaceRow.vue +5 -7
- package/components/form/ResourceQuota/Project.vue +9 -5
- package/components/form/ResourceQuota/ProjectRow.vue +4 -6
- package/components/form/ResourceSelector.vue +7 -9
- package/components/form/SSHKnownHosts/KnownHostsEditDialog.vue +6 -3
- package/components/form/SSHKnownHosts/__tests__/KnownHostsEditDialog.test.ts +12 -1
- package/components/form/SSHKnownHosts/index.vue +16 -2
- package/components/form/Security.vue +54 -56
- package/components/form/Select.vue +44 -7
- package/components/form/ShellInput.vue +5 -1
- package/components/form/SimpleSecretSelector.vue +29 -9
- package/components/form/Tolerations.vue +5 -1
- package/components/form/UnitInput.vue +10 -5
- package/components/form/ValueFromResource.vue +134 -121
- package/components/form/WorkloadPorts.vue +18 -18
- package/components/form/__tests__/ArrayList.test.ts +5 -2
- package/components/form/__tests__/MatchExpressions.test.ts +12 -12
- package/components/form/__tests__/NameNsDescription.test.ts +115 -14
- package/components/form/__tests__/Probe.test.ts +12 -8
- package/components/form/__tests__/SSHKnownHosts.test.ts +11 -0
- package/components/form/__tests__/Select.test.ts +37 -0
- package/components/form/__tests__/UnitInput.test.ts +4 -5
- package/components/formatter/BadgeStateFormatter.vue +8 -5
- package/components/formatter/InternalExternalIP.vue +2 -0
- package/components/formatter/LiveDate.vue +3 -3
- package/components/formatter/SecretData.vue +20 -7
- package/components/nav/Favorite.vue +5 -1
- package/components/nav/Group.vue +18 -4
- package/components/nav/Header.vue +39 -13
- package/components/nav/Jump.vue +7 -0
- package/components/nav/NamespaceFilter.vue +21 -11
- package/components/nav/Pinned.vue +1 -1
- package/components/nav/TopLevelMenu.vue +5 -17
- package/components/nav/Type.vue +30 -33
- package/components/nav/__tests__/TopLevelMenu.test.ts +0 -40
- package/components/rancherResourceDetail/Masthead.vue +769 -0
- package/components/rancherResourceDetail/__tests__/Masthead.test.ts +65 -0
- package/components/rancherResourceDetail/index.vue +591 -0
- package/components/rancherResourceList/Masthead-btn.vue +225 -0
- package/components/rancherResourceList/Masthead.vue +375 -0
- package/components/rancherResourceList/ResourceLoadingIndicator.vue +140 -0
- package/components/rancherResourceList/index.vue +307 -0
- package/components/rancherResourceList/resource-list.config.js +7 -0
- package/components/rancherResourceTable.vue +783 -0
- package/components/rancherSortableTable/THead.vue +561 -0
- package/components/rancherSortableTable/actions.js +153 -0
- package/components/rancherSortableTable/advanced-filtering.js +272 -0
- package/components/rancherSortableTable/debug.js +117 -0
- package/components/rancherSortableTable/filtering.js +290 -0
- package/components/rancherSortableTable/grouping.js +48 -0
- package/components/rancherSortableTable/index.vue +2712 -0
- package/components/rancherSortableTable/paging.js +155 -0
- package/components/rancherSortableTable/selection.js +629 -0
- package/components/rancherSortableTable/sortable-config.ts +4 -0
- package/components/rancherSortableTable/sorting.js +129 -0
- package/components/templates/blank.vue +4 -1
- package/components/templates/default.vue +8 -0
- package/components/templates/home.vue +10 -1
- package/components/templates/plain.vue +10 -1
- package/composables/focusTrap.ts +11 -3
- package/composables/useRuntimeFlag.ts +29 -0
- package/config/private-label.js +15 -10
- package/config/router/routes.js +21 -13
- package/config/store.js +4 -0
- package/config/table-headers.js +3 -2
- package/config/uiplugins.js +5 -1
- package/core/plugin-routes.ts +5 -115
- package/core/plugins.js +1 -1
- package/core/types.ts +23 -2
- package/detail/__tests__/autoscaling.horizontalpodautoscaler.test.ts +84 -23
- package/detail/autoscaling.horizontalpodautoscaler/index.vue +13 -3
- package/detail/provisioning.cattle.io.cluster.vue +72 -6
- package/dialog/AddCustomBadgeDialog.vue +1 -0
- package/dialog/DeactivateDriverDialog.vue +5 -4
- package/dialog/ForceMachineRemoveDialog.vue +6 -3
- package/dialog/GitRepoForceUpdateDialog.vue +1 -1
- package/dialog/ScalePoolDownDialog.vue +2 -2
- package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +16 -3
- package/edit/auth/__tests__/oidc.test.ts +162 -88
- package/edit/auth/azuread.vue +2 -1
- package/edit/auth/github.vue +1 -1
- package/edit/auth/googleoauth.vue +5 -1
- package/edit/auth/ldap/__tests__/config.test.ts +0 -14
- package/edit/auth/ldap/config.vue +0 -24
- package/edit/auth/ldap/index.vue +1 -1
- package/edit/auth/oidc.vue +39 -6
- package/edit/auth/saml.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +5 -2
- package/edit/cloudcredential.vue +24 -9
- package/edit/fleet.cattle.io.clustergroup.vue +5 -3
- package/edit/fleet.cattle.io.gitrepo.vue +2 -0
- package/edit/logging-flow/Match.vue +1 -1
- package/edit/logging.banzaicloud.io.output/__tests__/logging.banzaicloud.io.output.test.ts +40 -9
- package/edit/management.cattle.io.user.vue +28 -3
- package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +19 -19
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +31 -31
- package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +36 -12
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +10 -10
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +4 -4
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +4 -4
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +1 -1
- package/edit/monitoring.coreos.com.receiver/auth.vue +29 -29
- package/edit/monitoring.coreos.com.receiver/types/email.vue +6 -6
- package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +10 -10
- package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +5 -5
- package/edit/monitoring.coreos.com.receiver/types/slack.vue +4 -4
- package/edit/namespace.vue +1 -2
- package/edit/networking.k8s.io.ingress/IngressClass.vue +7 -3
- package/edit/networking.k8s.io.ingress/RulePath.vue +1 -1
- package/edit/networking.k8s.io.ingress/__tests__/IngressClass.test.ts +58 -0
- package/edit/persistentvolume/__tests__/persistentvolume.test.ts +14 -2
- package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +4 -1
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +26 -9
- package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +8 -10
- package/edit/provisioning.cattle.io.cluster/rke2.vue +31 -40
- package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +5 -2
- package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +6 -1
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +33 -2
- package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +3 -3
- package/edit/service.vue +0 -3
- package/edit/token.vue +32 -11
- package/edit/workload/Job.vue +6 -6
- package/edit/workload/__tests__/Job.test.ts +0 -1
- package/edit/workload/index.vue +1 -0
- package/edit/workload/mixins/workload.js +3 -3
- package/initialize/install-plugins.js +2 -1
- package/list/harvesterhci.io.management.cluster.vue +4 -1
- package/list/management.cattle.io.feature.vue +1 -0
- package/list/namespace.vue +3 -1
- package/list/provisioning.cattle.io.cluster.vue +20 -12
- package/list/workload.vue +7 -6
- package/machine-config/__tests__/vmwarevsphere.test.ts +48 -3
- package/machine-config/azure.vue +16 -4
- package/machine-config/vmwarevsphere.vue +16 -0
- package/mixins/resource-fetch.js +2 -1
- package/models/__tests__/logging.banzaicloud.io.flow.test.ts +88 -0
- package/models/__tests__/namespace.test.ts +25 -1
- package/models/cloudcredential.js +5 -0
- package/models/kontainerdriver.js +6 -3
- package/models/logging.banzaicloud.io.flow.js +2 -1
- package/models/management.cattle.io.node.js +3 -3
- package/models/management.cattle.io.setting.js +2 -1
- package/models/namespace.js +4 -5
- package/models/nodedriver.js +6 -3
- package/models/storage.k8s.io.storageclass.js +2 -2
- package/models/workload.js +4 -1
- package/package.json +1 -1
- package/pages/about.vue +16 -8
- package/pages/account/index.vue +80 -24
- package/pages/account/pri.vue +229 -0
- package/pages/auth/login.vue +195 -44
- package/pages/auth/logout.vue +4 -1
- package/pages/auth/setup.vue +144 -19
- package/pages/auth/verify.vue +13 -8
- package/pages/auth copy/login.vue +595 -0
- package/pages/auth copy/logout.vue +47 -0
- package/pages/auth copy/setup.vue +523 -0
- package/pages/auth copy/verify.vue +203 -0
- package/pages/c/_cluster/_product/namespaces.vue +5 -5
- package/pages/c/_cluster/apps/charts/chart.vue +1 -1
- package/pages/c/_cluster/apps/charts/install.vue +26 -26
- package/pages/c/_cluster/auth/config/index.vue +10 -12
- package/pages/c/_cluster/explorer/EventsTable.vue +38 -33
- package/pages/c/_cluster/explorer/index.vue +17 -15
- package/pages/c/_cluster/istio/index.vue +2 -2
- package/pages/c/_cluster/longhorn/index.vue +1 -1
- package/pages/c/_cluster/monitoring/index.vue +1 -1
- package/pages/c/_cluster/monitoring/monitor/_namespace/_id.vue +4 -2
- package/pages/c/_cluster/monitoring/monitor/create.vue +4 -2
- package/pages/c/_cluster/monitoring/monitor/index.vue +2 -2
- package/pages/c/_cluster/monitoring/route-receiver/_id.vue +4 -2
- package/pages/c/_cluster/monitoring/route-receiver/create.vue +5 -2
- package/pages/c/_cluster/neuvector/index.vue +1 -1
- package/pages/c/_cluster/settings/brand.vue +3 -3
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +8 -10
- package/pages/diagnostic.vue +59 -11
- package/pages/fail-whale.vue +14 -8
- package/pages/home.vue +24 -18
- package/pages/prefs.vue +9 -7
- package/pages/support/index.vue +4 -1
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/plugins/dashboard-store/normalize.js +3 -1
- package/plugins/dashboard-store/resource-class.js +31 -29
- package/plugins/internal-api/index.ts +37 -0
- package/plugins/internal-api/shared/base-api.ts +13 -0
- package/plugins/internal-api/shell/shell.api.ts +108 -0
- package/promptRemove/management.cattle.io.fleetworkspace.vue +1 -1
- package/promptRemove/management.cattle.io.globalrole.vue +1 -1
- package/promptRemove/management.cattle.io.project.vue +2 -2
- package/promptRemove/management.cattle.io.roletemplate.vue +1 -1
- package/promptRemove/pod.vue +1 -1
- package/public/index.html +2 -1
- package/rancher-components/BadgeState/BadgeState.vue +5 -1
- package/rancher-components/Banner/Banner.vue +8 -2
- package/rancher-components/Card/Card.vue +3 -6
- package/rancher-components/Form/Checkbox/Checkbox.vue +4 -0
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +5 -2
- package/rancher-components/Form/Radio/RadioButton.vue +3 -3
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +1 -5
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/RcDropdown/RcDropdownItem.vue +1 -2
- package/rancher-components/RcDropdown/RcDropdownMenu.vue +7 -3
- package/rancher-components/RcDropdown/types.ts +1 -0
- package/scripts/clean +0 -0
- package/scripts/extension/bundle +20 -0
- package/scripts/extension/helm/charts/ui-plugin-server/templates/_helpers.tpl +2 -2
- package/scripts/extension/helm/charts/ui-plugin-server/templates/cr.yaml +2 -1
- package/scripts/extension/helm/charts/ui-plugin-server/values.yaml +2 -0
- package/scripts/extension/helm/scripts/package +0 -0
- package/scripts/extension/helm/scripts/patch +0 -0
- package/scripts/extension/helm/scripts/version +0 -0
- package/scripts/extension/helmpatch +44 -31
- package/scripts/extension/parse-tag-name +0 -0
- package/scripts/extension/publish +12 -12
- package/scripts/publish-shell.sh +18 -23
- package/scripts/serve-pkgs +0 -0
- package/scripts/sync-shell-deps +0 -0
- package/scripts/test-plugins-build.sh +4 -6
- package/scripts/typegen.sh +28 -46
- package/server/har-file.js +25 -3
- package/static/favicon.ico +0 -0
- package/static/favicon.png +0 -0
- package/static/loading-indicator.html +2 -2
- package/store/aws.js +9 -2
- package/store/features.js +2 -1
- package/store/i18n.js +3 -3
- package/store/modal.ts +71 -0
- package/store/slideInPanel.ts +47 -0
- package/store/type-map.js +9 -1
- package/types/cloud-shell/index.d.ts +11020 -0
- package/types/global-vue.d.ts +5 -0
- package/types/internal-api/shell/growl.d.ts +25 -0
- package/types/internal-api/shell/modal.d.ts +77 -0
- package/types/internal-api/shell/slideIn.d.ts +15 -0
- package/types/shell/index.d.ts +118 -128
- package/types/vue-shim.d.ts +4 -1
- package/utils/__tests__/object.test.ts +38 -4
- package/utils/__tests__/string.test.ts +2 -2
- package/utils/auth.js +1 -0
- package/utils/banners.js +0 -45
- package/utils/cluster.js +35 -0
- package/utils/color.js +9 -8
- package/utils/error.js +61 -3
- package/utils/errorTranslate.json +450 -30
- package/utils/object.js +46 -6
- package/utils/router.js +22 -1
- package/utils/select.js +26 -3
- package/utils/string.js +9 -8
- package/utils/title.ts +1 -1
- package/utils/validators/machine-pool.ts +20 -0
- package/vue.config.js +7 -2
- package/components/formatter/ExtensionCache.vue +0 -74
- package/components/formatter/Port.vue +0 -24
- package/components/formatter/SecretType.vue +0 -41
- package/types/resources/fleet.d.ts +0 -57
- package/types/resources/pod-security-admission.ts +0 -36
- package/types/resources/settings.d.ts +0 -93
- package/types/resources/userPreferences.d.ts +0 -13
- package/types/vue-shim.d +0 -20
|
@@ -22,10 +22,12 @@ import { _CREATE, _EDIT, _VIEW } from '@shell/config/query-params';
|
|
|
22
22
|
import { findBy, removeObject, clear } from '@shell/utils/array';
|
|
23
23
|
import { createYaml } from '@shell/utils/create-yaml';
|
|
24
24
|
import {
|
|
25
|
-
clone, diff, set, get, isEmpty,
|
|
25
|
+
clone, diff, set, get, isEmpty, mergeWithReplace
|
|
26
26
|
} from '@shell/utils/object';
|
|
27
27
|
import { allHash } from '@shell/utils/promise';
|
|
28
|
-
import {
|
|
28
|
+
import {
|
|
29
|
+
getAllOptionsAfterCurrentVersion, filterOutDeprecatedPatchVersions, isHarvesterSatisfiesVersion, labelForAddon, initSchedulingCustomization
|
|
30
|
+
} from '@shell/utils/cluster';
|
|
29
31
|
|
|
30
32
|
import { BadgeState } from '@components/BadgeState';
|
|
31
33
|
import { Banner } from '@components/Banner';
|
|
@@ -63,7 +65,6 @@ import ClusterAppearance from '@shell/components/form/ClusterAppearance';
|
|
|
63
65
|
import AddOnAdditionalManifest from '@shell/edit/provisioning.cattle.io.cluster/tabs/AddOnAdditionalManifest';
|
|
64
66
|
import VsphereUtils, { VMWARE_VSPHERE } from '@shell/utils/v-sphere';
|
|
65
67
|
import { mapGetters } from 'vuex';
|
|
66
|
-
import { SCHEDULING_CUSTOMIZATION } from '@shell/store/features';
|
|
67
68
|
const HARVESTER = 'harvester';
|
|
68
69
|
const HARVESTER_CLOUD_PROVIDER = 'harvester-cloud-provider';
|
|
69
70
|
const NETBIOS_TRUNCATION_LENGTH = 15;
|
|
@@ -149,7 +150,13 @@ export default {
|
|
|
149
150
|
await this.initSpecs();
|
|
150
151
|
await this.initAddons();
|
|
151
152
|
await this.initRegistry();
|
|
152
|
-
await this.
|
|
153
|
+
const sc = await initSchedulingCustomization(this.value.spec, this.features, this.$store, this.mode);
|
|
154
|
+
|
|
155
|
+
this.clusterAgentDefaultPC = sc.clusterAgentDefaultPC;
|
|
156
|
+
this.clusterAgentDefaultPDB = sc.clusterAgentDefaultPDB;
|
|
157
|
+
this.schedulingCustomizationFeatureEnabled = sc.schedulingCustomizationFeatureEnabled;
|
|
158
|
+
this.schedulingCustomizationOriginallyEnabled = sc.schedulingCustomizationOriginallyEnabled;
|
|
159
|
+
this.errors = this.errors.concat(sc.errors);
|
|
153
160
|
|
|
154
161
|
Object.entries(this.chartValues).forEach(([name, value]) => {
|
|
155
162
|
const key = this.chartVersionKey(name);
|
|
@@ -243,20 +250,21 @@ export default {
|
|
|
243
250
|
fvFormRuleSets: [{
|
|
244
251
|
path: 'metadata.name', rules: ['subDomain'], translationKey: 'nameNsDescription.name.label'
|
|
245
252
|
}],
|
|
246
|
-
harvesterVersionRange:
|
|
247
|
-
cisOverride:
|
|
253
|
+
harvesterVersionRange: {},
|
|
254
|
+
cisOverride: false,
|
|
248
255
|
truncateLimit,
|
|
249
|
-
busy:
|
|
250
|
-
machinePoolValidation:
|
|
251
|
-
machinePoolErrors:
|
|
252
|
-
addonConfigValidation:
|
|
253
|
-
allNamespaces:
|
|
254
|
-
extensionTabs:
|
|
255
|
-
clusterAgentDeploymentCustomization:
|
|
256
|
-
schedulingCustomizationFeatureEnabled:
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
256
|
+
busy: false,
|
|
257
|
+
machinePoolValidation: {}, // map of validation states for each machine pool
|
|
258
|
+
machinePoolErrors: {},
|
|
259
|
+
addonConfigValidation: {}, // validation state of each addon config (boolean of whether codemirror's yaml lint passed)
|
|
260
|
+
allNamespaces: [],
|
|
261
|
+
extensionTabs: getApplicableExtensionEnhancements(this, ExtensionPoint.TAB, TabLocation.CLUSTER_CREATE_RKE2, this.$route, this),
|
|
262
|
+
clusterAgentDeploymentCustomization: null,
|
|
263
|
+
schedulingCustomizationFeatureEnabled: false,
|
|
264
|
+
schedulingCustomizationOriginallyEnabled: false,
|
|
265
|
+
clusterAgentDefaultPC: null,
|
|
266
|
+
clusterAgentDefaultPDB: null,
|
|
267
|
+
activeTab: null,
|
|
260
268
|
REGISTRIES_TAB_NAME,
|
|
261
269
|
labelForAddon
|
|
262
270
|
|
|
@@ -568,7 +576,7 @@ export default {
|
|
|
568
576
|
out.tooltip[role] = this.t(`cluster.machinePool.nodeTotals.tooltip.${ role }`, { count: counts[role] });
|
|
569
577
|
}
|
|
570
578
|
|
|
571
|
-
if (counts.etcd
|
|
579
|
+
if (counts.etcd <= 0) {
|
|
572
580
|
out.color.etcd = NODE_TOTAL.error.color;
|
|
573
581
|
out.icon.etcd = NODE_TOTAL.error.icon;
|
|
574
582
|
} else if (counts.etcd === 1 || counts.etcd % 2 === 0 || counts.etcd > 7) {
|
|
@@ -576,7 +584,7 @@ export default {
|
|
|
576
584
|
out.icon.etcd = NODE_TOTAL.warning.icon;
|
|
577
585
|
}
|
|
578
586
|
|
|
579
|
-
if (counts.controlPlane
|
|
587
|
+
if (counts.controlPlane <= 0) {
|
|
580
588
|
out.color.controlPlane = NODE_TOTAL.error.color;
|
|
581
589
|
out.icon.controlPlane = NODE_TOTAL.error.icon;
|
|
582
590
|
} else if (counts.controlPlane === 1) {
|
|
@@ -584,7 +592,7 @@ export default {
|
|
|
584
592
|
out.icon.controlPlane = NODE_TOTAL.warning.icon;
|
|
585
593
|
}
|
|
586
594
|
|
|
587
|
-
if (counts.worker
|
|
595
|
+
if (counts.worker <= 0) {
|
|
588
596
|
out.color.worker = NODE_TOTAL.error.color;
|
|
589
597
|
out.icon.worker = NODE_TOTAL.error.icon;
|
|
590
598
|
} else if (counts.worker === 1) {
|
|
@@ -1062,24 +1070,6 @@ export default {
|
|
|
1062
1070
|
}
|
|
1063
1071
|
},
|
|
1064
1072
|
|
|
1065
|
-
async initSchedulingCustomization() {
|
|
1066
|
-
this.schedulingCustomizationFeatureEnabled = this.features(SCHEDULING_CUSTOMIZATION);
|
|
1067
|
-
try {
|
|
1068
|
-
this.clusterAgentDefaultPC = JSON.parse((await this.$store.dispatch('management/find', { type: MANAGEMENT.SETTING, id: SETTING.CLUSTER_AGENT_DEFAULT_PRIORITY_CLASS })).value) || null;
|
|
1069
|
-
} catch (e) {
|
|
1070
|
-
this.errors.push(e);
|
|
1071
|
-
}
|
|
1072
|
-
try {
|
|
1073
|
-
this.clusterAgentDefaultPDB = JSON.parse((await this.$store.dispatch('management/find', { type: MANAGEMENT.SETTING, id: SETTING.CLUSTER_AGENT_DEFAULT_POD_DISTRIBUTION_BUDGET })).value) || null;
|
|
1074
|
-
} catch (e) {
|
|
1075
|
-
this.errors.push(e);
|
|
1076
|
-
}
|
|
1077
|
-
|
|
1078
|
-
if (this.schedulingCustomizationFeatureEnabled && this.mode === _CREATE && isEmpty(this.value?.spec?.clusterAgentDeploymentCustomization?.schedulingCustomization)) {
|
|
1079
|
-
set(this.value, 'spec.clusterAgentDeploymentCustomization.schedulingCustomization', { priorityClass: this.clusterAgentDefaultPC, podDisruptionBudget: this.clusterAgentDefaultPDB });
|
|
1080
|
-
}
|
|
1081
|
-
},
|
|
1082
|
-
|
|
1083
1073
|
setSchedulingCustomization(val) {
|
|
1084
1074
|
if (val) {
|
|
1085
1075
|
set(this.value, 'spec.clusterAgentDeploymentCustomization.schedulingCustomization', { priorityClass: this.clusterAgentDefaultPC, podDisruptionBudget: this.clusterAgentDefaultPDB });
|
|
@@ -1315,7 +1305,7 @@ export default {
|
|
|
1315
1305
|
delete clonedCurrentConfig.metadata;
|
|
1316
1306
|
|
|
1317
1307
|
if (this.provider === VMWARE_VSPHERE) {
|
|
1318
|
-
machinePool.config =
|
|
1308
|
+
machinePool.config = mergeWithReplace(clonedLatestConfig, clonedCurrentConfig, { mutateOriginal: true });
|
|
1319
1309
|
} else {
|
|
1320
1310
|
machinePool.config = merge(clonedLatestConfig, clonedCurrentConfig);
|
|
1321
1311
|
}
|
|
@@ -1701,7 +1691,7 @@ export default {
|
|
|
1701
1691
|
const defaultChartValue = this.versionInfo[name];
|
|
1702
1692
|
const key = this.chartVersionKey(name);
|
|
1703
1693
|
|
|
1704
|
-
return
|
|
1694
|
+
return mergeWithReplace(defaultChartValue?.values, this.userChartValues[key]);
|
|
1705
1695
|
},
|
|
1706
1696
|
|
|
1707
1697
|
initServerAgentArgs() {
|
|
@@ -2450,6 +2440,7 @@ export default {
|
|
|
2450
2440
|
:scheduling-customization-feature-enabled="schedulingCustomizationFeatureEnabled"
|
|
2451
2441
|
:default-p-c="clusterAgentDefaultPC"
|
|
2452
2442
|
:default-p-d-b="clusterAgentDefaultPDB"
|
|
2443
|
+
:scheduling-customization-originally-enabled="schedulingCustomizationOriginallyEnabled"
|
|
2453
2444
|
@scheduling-customization-changed="setSchedulingCustomization"
|
|
2454
2445
|
/>
|
|
2455
2446
|
</Tab>
|
|
@@ -119,14 +119,17 @@ export default {
|
|
|
119
119
|
>
|
|
120
120
|
<template #default="{row, i}">
|
|
121
121
|
<template v-if="row.value.machineLabelSelector">
|
|
122
|
-
<h3>{{ t('cluster.advanced.argInfo.machineSelector.title') }}</h3>
|
|
123
122
|
<MatchExpressions
|
|
124
123
|
v-model:value="row.value.machineLabelSelector"
|
|
125
124
|
class="mb-20"
|
|
126
125
|
:mode="mode"
|
|
127
126
|
:show-remove="false"
|
|
128
127
|
:initial-empty-row="true"
|
|
129
|
-
|
|
128
|
+
>
|
|
129
|
+
<template #header>
|
|
130
|
+
<h3>{{ t('cluster.advanced.argInfo.machineSelector.title') }}</h3>
|
|
131
|
+
</template>
|
|
132
|
+
</MatchExpressions>
|
|
130
133
|
<h3>{{ t('cluster.advanced.argInfo.machineSelector.subTitle') }}</h3>
|
|
131
134
|
</template>
|
|
132
135
|
<h3 v-else>
|
|
@@ -48,6 +48,11 @@ export default {
|
|
|
48
48
|
type: Boolean,
|
|
49
49
|
required: false
|
|
50
50
|
},
|
|
51
|
+
schedulingCustomizationOriginallyEnabled: {
|
|
52
|
+
type: Boolean,
|
|
53
|
+
default: false
|
|
54
|
+
},
|
|
55
|
+
|
|
51
56
|
defaultPC: {
|
|
52
57
|
type: Object,
|
|
53
58
|
default: () => {},
|
|
@@ -149,7 +154,7 @@ export default {
|
|
|
149
154
|
},
|
|
150
155
|
|
|
151
156
|
schedulingCustomizationVisible() {
|
|
152
|
-
return this.schedulingCustomizationFeatureEnabled ||
|
|
157
|
+
return this.schedulingCustomizationFeatureEnabled || this.schedulingCustomizationOriginallyEnabled;
|
|
153
158
|
},
|
|
154
159
|
|
|
155
160
|
affinityOptions() {
|
|
@@ -8,6 +8,8 @@ import AdvancedSection from '@shell/components/AdvancedSection.vue';
|
|
|
8
8
|
import { Banner } from '@components/Banner';
|
|
9
9
|
import UnitInput from '@shell/components/form/UnitInput.vue';
|
|
10
10
|
import { randomStr } from '@shell/utils/string';
|
|
11
|
+
import FormValidation from '@shell/mixins/form-validation';
|
|
12
|
+
import { MACHINE_POOL_VALIDATION } from '@shell/utils/validators/machine-pool';
|
|
11
13
|
|
|
12
14
|
export default {
|
|
13
15
|
|
|
@@ -25,6 +27,8 @@ export default {
|
|
|
25
27
|
UnitInput
|
|
26
28
|
},
|
|
27
29
|
|
|
30
|
+
mixins: [FormValidation],
|
|
31
|
+
|
|
28
32
|
props: {
|
|
29
33
|
value: {
|
|
30
34
|
type: Object,
|
|
@@ -122,6 +126,12 @@ export default {
|
|
|
122
126
|
uuid: randomStr(),
|
|
123
127
|
|
|
124
128
|
unhealthyNodeTimeoutInteger: this.value.pool.unhealthyNodeTimeout ? parseDuration(this.value.pool.unhealthyNodeTimeout) : 0,
|
|
129
|
+
|
|
130
|
+
validationErrors: [],
|
|
131
|
+
|
|
132
|
+
MACHINE_POOL_VALIDATION,
|
|
133
|
+
|
|
134
|
+
fvFormRuleSets: MACHINE_POOL_VALIDATION.RULESETS,
|
|
125
135
|
};
|
|
126
136
|
},
|
|
127
137
|
|
|
@@ -136,7 +146,7 @@ export default {
|
|
|
136
146
|
|
|
137
147
|
isWindows() {
|
|
138
148
|
return this.value?.config?.os === 'windows';
|
|
139
|
-
}
|
|
149
|
+
}
|
|
140
150
|
},
|
|
141
151
|
|
|
142
152
|
watch: {
|
|
@@ -148,6 +158,20 @@ export default {
|
|
|
148
158
|
} else {
|
|
149
159
|
this.value.pool.machineOS = 'linux';
|
|
150
160
|
}
|
|
161
|
+
},
|
|
162
|
+
|
|
163
|
+
validationErrors: {
|
|
164
|
+
handler(newValue) {
|
|
165
|
+
this.$emit('validationChanged', newValue.length === 0);
|
|
166
|
+
},
|
|
167
|
+
deep: true
|
|
168
|
+
},
|
|
169
|
+
|
|
170
|
+
fvFormIsValid: {
|
|
171
|
+
handler(newValue) {
|
|
172
|
+
this.$emit('validationChanged', newValue);
|
|
173
|
+
},
|
|
174
|
+
deep: true
|
|
151
175
|
}
|
|
152
176
|
},
|
|
153
177
|
|
|
@@ -227,6 +251,8 @@ export default {
|
|
|
227
251
|
:label="t('cluster.machinePool.name.label')"
|
|
228
252
|
:required="true"
|
|
229
253
|
:disabled="!value.config || !!value.config.id || busy"
|
|
254
|
+
:rules="fvGetAndReportPathRules(MACHINE_POOL_VALIDATION.FIELDS.NAME)"
|
|
255
|
+
data-testid="machine-pool-name-input"
|
|
230
256
|
/>
|
|
231
257
|
</div>
|
|
232
258
|
<div class="col span-4">
|
|
@@ -238,6 +264,8 @@ export default {
|
|
|
238
264
|
type="number"
|
|
239
265
|
min="0"
|
|
240
266
|
:required="true"
|
|
267
|
+
:rules="fvGetAndReportPathRules(MACHINE_POOL_VALIDATION.FIELDS.QUANTITY)"
|
|
268
|
+
data-testid="machine-pool-quantity-input"
|
|
241
269
|
/>
|
|
242
270
|
</div>
|
|
243
271
|
<div class="col span-4 pt-5">
|
|
@@ -264,7 +292,10 @@ export default {
|
|
|
264
292
|
/>
|
|
265
293
|
</div>
|
|
266
294
|
</div>
|
|
267
|
-
<hr
|
|
295
|
+
<hr
|
|
296
|
+
class="mt-10"
|
|
297
|
+
role="none"
|
|
298
|
+
>
|
|
268
299
|
<component
|
|
269
300
|
:is="configComponent"
|
|
270
301
|
v-if="value.config && configComponent"
|
|
@@ -48,7 +48,7 @@ export default {
|
|
|
48
48
|
return this.value.spec.rkeConfig.etcd;
|
|
49
49
|
},
|
|
50
50
|
argsEtcdExposeMetrics() {
|
|
51
|
-
return !!this.selectedVersion?.serverArgs['etcd-expose-metrics'];
|
|
51
|
+
return !!this.selectedVersion?.serverArgs?.['etcd-expose-metrics'];
|
|
52
52
|
},
|
|
53
53
|
configEtcdExposeMetrics() {
|
|
54
54
|
return !!this.value.spec.rkeConfig.machineGlobalConfig['etcd-expose-metrics'];
|
|
@@ -90,8 +90,8 @@ export default {
|
|
|
90
90
|
v-model:value="etcd.snapshotRetention"
|
|
91
91
|
:mode="mode"
|
|
92
92
|
:label="t('cluster.rke2.etcd.snapshotRetention.label')"
|
|
93
|
-
:suffix="t('cluster.rke2.snapshots.suffix')"
|
|
94
|
-
:tooltip="t('cluster.rke2.etcd.snapshotRetention.tooltip')"
|
|
93
|
+
:suffix="s3Backup ? t('cluster.rke2.snapshots.s3Suffix') : t('cluster.rke2.snapshots.suffix')"
|
|
94
|
+
:tooltip="s3Backup ? t('cluster.rke2.etcd.snapshotRetention.tooltip') : undefined"
|
|
95
95
|
/>
|
|
96
96
|
</div>
|
|
97
97
|
</div>
|
package/edit/service.vue
CHANGED
|
@@ -521,9 +521,6 @@ export default {
|
|
|
521
521
|
"
|
|
522
522
|
:label="t('servicesPage.affinity.timeout.label')"
|
|
523
523
|
:placeholder="t('servicesPage.affinity.timeout.placeholder')"
|
|
524
|
-
@input="
|
|
525
|
-
(e) => value.spec.sessionAffinityConfig.clientIP.timeoutSeconds = e
|
|
526
|
-
"
|
|
527
524
|
/>
|
|
528
525
|
</div>
|
|
529
526
|
</div>
|
package/edit/token.vue
CHANGED
|
@@ -175,6 +175,15 @@ export default {
|
|
|
175
175
|
|
|
176
176
|
<template>
|
|
177
177
|
<div v-if="!created">
|
|
178
|
+
<div
|
|
179
|
+
v-for="(err,idx) in errors"
|
|
180
|
+
:key="idx"
|
|
181
|
+
>
|
|
182
|
+
<Banner
|
|
183
|
+
color="error"
|
|
184
|
+
:label="err"
|
|
185
|
+
/>
|
|
186
|
+
</div>
|
|
178
187
|
<div class="pl-10 pr-10">
|
|
179
188
|
<LabeledInput
|
|
180
189
|
key="description"
|
|
@@ -184,19 +193,20 @@ export default {
|
|
|
184
193
|
mode="edit"
|
|
185
194
|
:min-height="30"
|
|
186
195
|
/>
|
|
196
|
+
<div class="mt-20">
|
|
197
|
+
<LabeledSelect
|
|
198
|
+
v-model:value="value.clusterId"
|
|
199
|
+
class="scope-select"
|
|
200
|
+
label-key="accountAndKeys.apiKeys.add.scope"
|
|
201
|
+
:options="scopes"
|
|
202
|
+
/>
|
|
203
|
+
</div>
|
|
187
204
|
|
|
188
|
-
<
|
|
189
|
-
v-model:value="value.clusterId"
|
|
190
|
-
class="mt-20 scope-select"
|
|
191
|
-
label-key="accountAndKeys.apiKeys.add.scope"
|
|
192
|
-
:options="scopes"
|
|
193
|
-
/>
|
|
194
|
-
|
|
195
|
-
<h5 class="pt-20">
|
|
205
|
+
<div style="font-size: 14px; margin-top: 32px;">
|
|
196
206
|
{{ t('accountAndKeys.apiKeys.add.expiry.label') }}
|
|
197
|
-
</
|
|
207
|
+
</div>
|
|
198
208
|
|
|
199
|
-
<div class="
|
|
209
|
+
<div class="mt-20">
|
|
200
210
|
<RadioGroup
|
|
201
211
|
v-model:value="form.expiryType"
|
|
202
212
|
:options="expiryOptions"
|
|
@@ -204,12 +214,14 @@ export default {
|
|
|
204
214
|
class="mr-20"
|
|
205
215
|
name="expiryGroup"
|
|
206
216
|
/>
|
|
207
|
-
<div class="
|
|
217
|
+
<div class="mt-20 expiry">
|
|
208
218
|
<input
|
|
209
219
|
v-model="form.customExpiry"
|
|
210
220
|
:disabled="form.expiryType !== 'custom'"
|
|
211
221
|
type="number"
|
|
222
|
+
class="expire-input"
|
|
212
223
|
:mode="mode"
|
|
224
|
+
:aria-label="t('accountAndKeys.apiKeys.add.ariaLabel.expiration')"
|
|
213
225
|
>
|
|
214
226
|
<Select
|
|
215
227
|
v-model:value="form.customExpiryUnits"
|
|
@@ -217,6 +229,7 @@ export default {
|
|
|
217
229
|
:options="expiryUnitsOptions"
|
|
218
230
|
:clearable="false"
|
|
219
231
|
:reduce="opt=>opt.value"
|
|
232
|
+
:aria-label="t('accountAndKeys.apiKeys.add.ariaLabel.expirationUnits')"
|
|
220
233
|
/>
|
|
221
234
|
</div>
|
|
222
235
|
</div>
|
|
@@ -297,6 +310,14 @@ export default {
|
|
|
297
310
|
flex: 0 0 200px;
|
|
298
311
|
margin-right: 10px;
|
|
299
312
|
}
|
|
313
|
+
.expire-input{
|
|
314
|
+
border: solid var(--border-width) var(--input-border);
|
|
315
|
+
padding: 0px 0px 0px 11px;
|
|
316
|
+
line-height: 30px;
|
|
317
|
+
/* &['disabled']{
|
|
318
|
+
border: solid var(--border-width) var(--input-border);
|
|
319
|
+
} */
|
|
320
|
+
}
|
|
300
321
|
}
|
|
301
322
|
|
|
302
323
|
.buttons {
|
package/edit/workload/Job.vue
CHANGED
|
@@ -161,7 +161,7 @@ export default {
|
|
|
161
161
|
:suffix="t('suffix.times', {count: completions})"
|
|
162
162
|
label-key="workload.job.completions.label"
|
|
163
163
|
tooltip-key="workload.job.completions.tip"
|
|
164
|
-
@
|
|
164
|
+
@update:value="update"
|
|
165
165
|
/>
|
|
166
166
|
</div>
|
|
167
167
|
<div
|
|
@@ -174,7 +174,7 @@ export default {
|
|
|
174
174
|
:suffix="t('suffix.times', {count: parallelism})"
|
|
175
175
|
label-key="workload.job.parallelism.label"
|
|
176
176
|
tooltip-key="workload.job.parallelism.tip"
|
|
177
|
-
@
|
|
177
|
+
@update:value="update"
|
|
178
178
|
/>
|
|
179
179
|
</div>
|
|
180
180
|
</div>
|
|
@@ -189,7 +189,7 @@ export default {
|
|
|
189
189
|
:suffix="t('suffix.times', {count: backoffLimit})"
|
|
190
190
|
label-key="workload.job.backoffLimit.label"
|
|
191
191
|
tooltip-key="workload.job.backoffLimit.tip"
|
|
192
|
-
@
|
|
192
|
+
@update:value="update"
|
|
193
193
|
/>
|
|
194
194
|
</div>
|
|
195
195
|
<div
|
|
@@ -202,7 +202,7 @@ export default {
|
|
|
202
202
|
:suffix="t('suffix.seconds', {count: activeDeadlineSeconds})"
|
|
203
203
|
label-key="workload.job.activeDeadlineSeconds.label"
|
|
204
204
|
tooltip-key="workload.job.activeDeadlineSeconds.tip"
|
|
205
|
-
@
|
|
205
|
+
@update:value="update"
|
|
206
206
|
/>
|
|
207
207
|
</div>
|
|
208
208
|
</div>
|
|
@@ -245,7 +245,7 @@ export default {
|
|
|
245
245
|
:suffix="t('suffix.seconds', {count: startingDeadlineSeconds})"
|
|
246
246
|
label-key="workload.job.startingDeadlineSeconds.label"
|
|
247
247
|
tooltip-key="workload.job.startingDeadlineSeconds.tip"
|
|
248
|
-
@
|
|
248
|
+
@update:value="update"
|
|
249
249
|
/>
|
|
250
250
|
</div>
|
|
251
251
|
<div
|
|
@@ -257,7 +257,7 @@ export default {
|
|
|
257
257
|
:suffix="t('suffix.seconds', { count: terminationGracePeriodSeconds })"
|
|
258
258
|
:label="t('workload.upgrading.activeDeadlineSeconds.label')"
|
|
259
259
|
:mode="mode"
|
|
260
|
-
@
|
|
260
|
+
@update:value="update"
|
|
261
261
|
>
|
|
262
262
|
<template #label>
|
|
263
263
|
<label
|
package/edit/workload/index.vue
CHANGED
|
@@ -52,6 +52,8 @@ import { TYPES as SECRET_TYPES } from '@shell/models/secret';
|
|
|
52
52
|
import { defaultContainer } from '@shell/models/workload';
|
|
53
53
|
import { allHash } from '@shell/utils/promise';
|
|
54
54
|
|
|
55
|
+
import { harvesterhci2cloud, cloud2harvesterhci } from '@shell/utils/router'
|
|
56
|
+
|
|
55
57
|
const TAB_WEIGHT_MAP = {
|
|
56
58
|
general: 99,
|
|
57
59
|
healthCheck: 98,
|
|
@@ -169,7 +171,7 @@ export default {
|
|
|
169
171
|
data() {
|
|
170
172
|
serialMaker.setPrefix('container-');
|
|
171
173
|
serialMaker.setSeq(0);
|
|
172
|
-
let type = this.$route.params.resource;
|
|
174
|
+
let type = cloud2harvesterhci(this.$route.params.resource);
|
|
173
175
|
const createSidecar = !!this.$route.query.sidecar;
|
|
174
176
|
|
|
175
177
|
if (type === 'workload') {
|
|
@@ -618,8 +620,6 @@ export default {
|
|
|
618
620
|
this.registerBeforeHook(this.getPorts, 'getPorts');
|
|
619
621
|
|
|
620
622
|
this.registerAfterHook(this.saveService, 'saveService');
|
|
621
|
-
|
|
622
|
-
this.selectContainer(this.container);
|
|
623
623
|
},
|
|
624
624
|
|
|
625
625
|
methods: {
|
|
@@ -26,6 +26,7 @@ import replaceAll from '@shell/plugins/replaceall';
|
|
|
26
26
|
import steveCreateWorker from '@shell/plugins/steve-create-worker';
|
|
27
27
|
import emberCookie from '@shell/plugins/ember-cookie';
|
|
28
28
|
import ShortKey from '@shell/plugins/shortkey';
|
|
29
|
+
import internalApiPlugin from '@shell/plugins/internal-api';
|
|
29
30
|
|
|
30
31
|
import 'floating-vue/dist/style.css';
|
|
31
32
|
import { floatingVueOptions } from '@shell/plugins/floating-vue';
|
|
@@ -46,7 +47,7 @@ export async function installPlugins(vueApp) {
|
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
export async function installInjectedPlugins(app, vueApp) {
|
|
49
|
-
const pluginDefinitions = [config, cookieUniversal, axios, plugins, pluginsLoader, axiosShell, intNumber, codeMirror, nuxtClientInit, replaceAll, plugin, steveCreateWorker, emberCookie];
|
|
50
|
+
const pluginDefinitions = [config, cookieUniversal, axios, plugins, pluginsLoader, axiosShell, intNumber, codeMirror, nuxtClientInit, replaceAll, plugin, steveCreateWorker, emberCookie, internalApiPlugin];
|
|
50
51
|
|
|
51
52
|
const installations = pluginDefinitions.map(async(pluginDefinition) => {
|
|
52
53
|
if (typeof pluginDefinition === 'function') {
|
|
@@ -178,7 +178,10 @@ export default {
|
|
|
178
178
|
<div class="no-clusters">
|
|
179
179
|
{{ t('harvesterManager.cluster.none') }}
|
|
180
180
|
</div>
|
|
181
|
-
<hr
|
|
181
|
+
<hr
|
|
182
|
+
class="info-section"
|
|
183
|
+
role="none"
|
|
184
|
+
>
|
|
182
185
|
<div class="logo">
|
|
183
186
|
<BrandImage
|
|
184
187
|
file-name="harvester.png"
|
package/list/namespace.vue
CHANGED
|
@@ -41,7 +41,9 @@ export default {
|
|
|
41
41
|
},
|
|
42
42
|
headers() {
|
|
43
43
|
const headersFromSchema = this.$store.getters['type-map/headersFor'](this.schema);
|
|
44
|
-
|
|
44
|
+
[headersFromSchema[0], headersFromSchema[1]] = [headersFromSchema[1], headersFromSchema[0]];
|
|
45
|
+
headersFromSchema[0].width = '200px';
|
|
46
|
+
headersFromSchema[1].width = '100px';
|
|
45
47
|
if (this.hasHarvesterResourceQuotaSchema) {
|
|
46
48
|
headersFromSchema.splice(2, 0, NS_SNAPSHOT_QUOTA);
|
|
47
49
|
}
|
|
@@ -113,24 +113,32 @@ export default {
|
|
|
113
113
|
},
|
|
114
114
|
|
|
115
115
|
createLocation() {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
116
|
+
const options = this.$store.getters[`type-map/optionsFor`](this.resource)?.custom || {};
|
|
117
|
+
const params = {
|
|
118
|
+
product: this.$store.getters['currentProduct'].name,
|
|
119
|
+
resource: this.resource
|
|
120
|
+
};
|
|
121
|
+
const defaultLocation = {
|
|
122
|
+
name: 'c-cluster-product-resource-create',
|
|
123
|
+
params
|
|
122
124
|
};
|
|
125
|
+
|
|
126
|
+
return options.createLocation ? options.createLocation(params) : defaultLocation;
|
|
123
127
|
},
|
|
124
128
|
|
|
125
129
|
importLocation() {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
const options = this.$store.getters[`type-map/optionsFor`](this.resource)?.custom || {};
|
|
131
|
+
const params = {
|
|
132
|
+
product: this.$store.getters['currentProduct'].name,
|
|
133
|
+
resource: this.resource
|
|
134
|
+
};
|
|
135
|
+
const defaultLocation = {
|
|
136
|
+
name: 'c-cluster-product-resource-create',
|
|
137
|
+
params,
|
|
132
138
|
query: { [MODE]: _IMPORT }
|
|
133
139
|
};
|
|
140
|
+
|
|
141
|
+
return options.importLocation ? options.importLocation(params) : defaultLocation;
|
|
134
142
|
},
|
|
135
143
|
|
|
136
144
|
canImport() {
|
package/list/workload.vue
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
} from '@shell/config/types';
|
|
6
6
|
import ResourceFetch from '@shell/mixins/resource-fetch';
|
|
7
7
|
import PaginatedResourceTable from '@shell/components/PaginatedResourceTable';
|
|
8
|
+
import { harvesterhci2cloud, cloud2harvesterhci } from '@shell/utils/router'
|
|
8
9
|
|
|
9
10
|
const workloadSchema = {
|
|
10
11
|
id: 'workload',
|
|
@@ -26,10 +27,10 @@ const $loadingResources = ($route, $store) => {
|
|
|
26
27
|
}
|
|
27
28
|
});
|
|
28
29
|
|
|
29
|
-
const allTypes = $route.params.resource === workloadSchema.id;
|
|
30
|
+
const allTypes = cloud2harvesterhci($route.params.resource) === workloadSchema.id;
|
|
30
31
|
|
|
31
32
|
return {
|
|
32
|
-
loadResources: allTypes ? allowedResources : [$route.params.resource],
|
|
33
|
+
loadResources: allTypes ? allowedResources : [cloud2harvesterhci($route.params.resource)],
|
|
33
34
|
loadIndeterminate: allTypes,
|
|
34
35
|
};
|
|
35
36
|
};
|
|
@@ -54,7 +55,7 @@ export default {
|
|
|
54
55
|
if (this.allTypes && this.loadResources.length) {
|
|
55
56
|
this.$initializeFetchData(this.loadResources[0], this.loadResources);
|
|
56
57
|
} else {
|
|
57
|
-
this.$initializeFetchData(this.$route.params.resource);
|
|
58
|
+
this.$initializeFetchData(cloud2harvesterhci(this.$route.params.resource));
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
try {
|
|
@@ -73,7 +74,7 @@ export default {
|
|
|
73
74
|
return this.$fetchType(allowed, this.loadResources);
|
|
74
75
|
}));
|
|
75
76
|
} else {
|
|
76
|
-
const type = this.$route.params.resource;
|
|
77
|
+
const type = cloud2harvesterhci(this.$route.params.resource);
|
|
77
78
|
|
|
78
79
|
if ( this.$store.getters['cluster/schemaFor'](type) ) {
|
|
79
80
|
const resource = await this.$fetchType(type);
|
|
@@ -88,7 +89,7 @@ export default {
|
|
|
88
89
|
const { loadResources, loadIndeterminate } = $loadingResources(this.$route, this.$store);
|
|
89
90
|
|
|
90
91
|
const { params:{ resource: type } } = this.$route;
|
|
91
|
-
const allTypes = this.$route.params.resource === workloadSchema.id;
|
|
92
|
+
const allTypes = cloud2harvesterhci(this.$route.params.resource) === workloadSchema.id;
|
|
92
93
|
const schema = type !== workloadSchema.id ? this.$store.getters['cluster/schemaFor'](type) : workloadSchema;
|
|
93
94
|
const paginationEnabled = !allTypes && this.$store.getters[`cluster/paginationEnabled`]?.({ id: type });
|
|
94
95
|
|
|
@@ -143,7 +144,7 @@ export default {
|
|
|
143
144
|
this.$fetchType(POD);
|
|
144
145
|
this.$fetchType(WORKLOAD_TYPES.JOB);
|
|
145
146
|
} else {
|
|
146
|
-
const type = this.$route.params.resource;
|
|
147
|
+
const type = cloud2harvesterhci(this.$route.params.resource);
|
|
147
148
|
|
|
148
149
|
if (type === WORKLOAD_TYPES.JOB || type === POD) {
|
|
149
150
|
// Ignore job and pods (we're fetching this anyway, plus they contain their own state)
|