@rancher/shell 0.5.3 → 2.0.0
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 +9 -0
- package/assets/images/vendor/openid.svg +18 -0
- package/assets/styles/app.scss +1 -2
- package/assets/styles/fonts/_icons.scss +3 -3
- package/assets/styles/global/_columns.scss +1 -1
- package/assets/styles/global/_labeled-input.scss +2 -0
- package/assets/styles/themes/_csp.scss +2 -2
- package/assets/styles/themes/_dark.scss +8 -2
- package/assets/styles/themes/_light.scss +2 -1
- package/assets/styles/themes/_suse.scss +1 -1
- package/assets/styles/vendor/vue-select.scss +5 -0
- package/assets/translations/en-us.yaml +296 -58
- package/assets/translations/zh-hans.yaml +5 -27
- package/babel.config.js +1 -1
- package/chart/__tests__/S3.test.ts +9 -2
- package/chart/monitoring/grafana/index.vue +6 -2
- package/chart/monitoring/prometheus/index.vue +2 -2
- package/chart/rancher-backup/S3.vue +11 -9
- package/chart/rancher-backup/index.vue +15 -5
- package/cloud-credential/__tests__/harvester.test.ts +18 -0
- package/cloud-credential/generic.vue +18 -9
- package/cloud-credential/harvester.vue +11 -3
- package/components/AppModal.vue +167 -0
- package/components/AssignTo.vue +7 -4
- package/components/AsyncButton.vue +18 -5
- package/components/BackLink.vue +4 -4
- package/components/BannerGraphic.vue +1 -0
- package/components/BrandImage.vue +47 -1
- package/components/Carousel.vue +14 -8
- package/components/Certificates.vue +8 -11
- package/components/ClusterBadge.vue +12 -3
- package/components/ClusterIconMenu.vue +44 -16
- package/components/ClusterProviderIcon.vue +14 -3
- package/components/CodeMirror.vue +73 -38
- package/components/CommunityLinks.vue +12 -8
- package/components/CreateDriver.vue +81 -0
- package/components/CruResource.vue +51 -27
- package/components/DetailTop.vue +2 -2
- package/components/Dialog.vue +6 -5
- package/components/DisableAuthProviderModal.vue +14 -8
- package/components/DraggableZone.vue +2 -2
- package/components/ExplorerMembers.vue +3 -3
- package/components/ExplorerProjectsNamespaces.vue +6 -6
- package/components/FixedBanner.vue +47 -36
- package/components/GlobalRoleBindings.vue +26 -0
- package/components/Import.vue +10 -6
- package/components/Inactivity.vue +1 -5
- package/components/KeyValueView.vue +14 -10
- package/components/MessageLink.vue +2 -2
- package/components/ModalWithCard.vue +5 -8
- package/components/MoveModal.vue +35 -33
- package/components/PodSecurityAdmission.vue +3 -3
- package/components/PromptChangePassword.vue +33 -33
- package/components/PromptModal.vue +11 -21
- package/components/PromptRemove.vue +11 -17
- package/components/PromptRestore.vue +18 -16
- package/components/Questions/__tests__/Boolean.test.ts +9 -19
- package/components/Questions/__tests__/Float.test.ts +9 -19
- package/components/Questions/__tests__/Int.test.ts +9 -19
- package/components/Questions/__tests__/String.test.ts +9 -19
- package/components/Questions/__tests__/Yaml.test.ts +9 -20
- package/components/Questions/__tests__/utils/questions-defaults.ts +20 -0
- package/components/Questions/index.vue +18 -2
- package/components/ResourceCancelModal.vue +34 -29
- package/components/ResourceDetail/Masthead.vue +23 -7
- package/components/ResourceDetail/index.vue +5 -0
- package/components/ResourceList/Masthead.vue +28 -10
- package/components/ResourceList/index.vue +65 -14
- package/components/ResourceTable.vue +73 -19
- package/components/ResourceYaml.vue +1 -0
- package/components/SelectIconGrid.vue +3 -3
- package/components/SideNav.vue +15 -37
- package/components/SingleClusterInfo.vue +4 -4
- package/components/SortableTable/THead.vue +26 -12
- package/components/SortableTable/filtering.js +9 -1
- package/components/SortableTable/grouping.js +8 -1
- package/components/SortableTable/index.vue +142 -42
- package/components/SortableTable/paging.js +36 -7
- package/components/SortableTable/selection.js +2 -1
- package/components/SortableTable/sorting.js +24 -7
- package/components/TabTitle.vue +84 -0
- package/components/Tabbed/index.vue +6 -1
- package/components/TableDataUserIcon.vue +47 -0
- package/components/TypeDescription.vue +1 -0
- package/components/Wizard.vue +1 -0
- package/components/__tests__/AppModal.test.ts +98 -0
- package/components/__tests__/AsyncButton.test.ts +1 -3
- package/components/__tests__/BackLink.test.ts +1 -1
- package/components/__tests__/ButtonGroup.test.ts +3 -6
- package/components/__tests__/Carousel.test.ts +43 -0
- package/components/__tests__/Certificates.test.ts +29 -0
- package/components/__tests__/{CodeMirror.spec.ts → CodeMirror.test.ts} +5 -17
- package/components/__tests__/CruResource.test.ts +10 -9
- package/components/__tests__/EtcdInfoBanner.test.ts +37 -0
- package/components/__tests__/FixedBanner.test.ts +5 -20
- package/components/__tests__/NamespaceFilter.test.ts +9 -18
- package/components/__tests__/TabTitle.test.ts +129 -0
- package/components/auth/AzureWarning.vue +2 -2
- package/components/auth/RoleDetailEdit.vue +10 -0
- package/components/auth/__tests__/RoleDetailEdit.test.ts +3 -2
- package/components/auth/login/oidc.vue +7 -1
- package/components/fleet/FleetClusters.vue +9 -9
- package/components/fleet/FleetIntro.vue +11 -17
- package/components/fleet/FleetNoWorkspaces.vue +2 -2
- package/components/fleet/FleetRepos.vue +1 -0
- package/components/fleet/ForceDirectedTreeChart/index.vue +9 -3
- package/components/form/ArrayList.vue +30 -19
- package/components/form/ArrayListSelect.vue +9 -4
- package/components/form/ClusterAppearance.vue +132 -0
- package/components/form/ColorInput.vue +1 -0
- package/components/form/Error.vue +3 -3
- package/components/form/Footer.vue +2 -2
- package/components/form/GitPicker.vue +83 -38
- package/components/form/KeyValue.vue +67 -48
- package/components/form/LabeledSelect.vue +143 -43
- package/components/form/Labels.vue +3 -1
- package/components/form/NameNsDescription.vue +26 -9
- package/components/form/ResourceLabeledSelect.vue +187 -0
- package/components/form/ResourceTabs/index.vue +31 -15
- package/components/form/SecretSelector.vue +93 -18
- package/components/form/Select.vue +1 -1
- package/components/form/SelectOrCreateAuthSecret.vue +135 -62
- package/components/form/SimpleSecretSelector.vue +88 -28
- package/components/form/__tests__/BannerSettings.test.ts +53 -0
- package/components/form/__tests__/KeyValue.test.ts +121 -12
- package/components/form/__tests__/LabeledSelect.test.ts +0 -18
- package/components/form/__tests__/NameNsDescription.test.ts +25 -15
- package/components/form/labeled-select-utils/labeled-select-pagination.ts +151 -0
- package/components/form/labeled-select-utils/labeled-select.utils.ts +122 -0
- package/components/formatter/AppSummaryGraph.vue +2 -2
- package/components/formatter/CloudCredPublicData.vue +30 -0
- package/components/formatter/ClusterLink.vue +2 -2
- package/components/formatter/FleetSummaryGraph.vue +2 -1
- package/components/formatter/ImagePercentageBar.vue +0 -4
- package/components/formatter/IngressTarget.vue +18 -7
- package/components/formatter/Link.vue +2 -2
- package/components/formatter/LinkDetail.vue +2 -2
- package/components/formatter/LinkDetailImage.vue +2 -2
- package/components/formatter/LinkName.vue +2 -2
- package/components/formatter/LiveDate.vue +16 -0
- package/components/formatter/PrincipalGroupBindings.vue +2 -2
- package/components/formatter/SecretType.vue +2 -2
- package/components/formatter/VirtualServiceGateways.vue +2 -2
- package/components/formatter/__tests__/LinkDetail.test.ts +5 -5
- package/components/nav/Group.vue +7 -5
- package/components/nav/Header.vue +82 -43
- package/components/nav/NamespaceFilter.vue +8 -1
- package/components/nav/TopLevelMenu.vue +336 -125
- package/components/nav/Type.vue +58 -102
- package/components/nav/__tests__/TopLevelMenu.test.ts +370 -9
- package/components/nav/__tests__/Type.test.ts +321 -126
- package/components/nuxt/nuxt-child.js +0 -5
- package/components/nuxt/nuxt-error.vue +1 -1
- package/components/nuxt/nuxt-link.client.js +13 -95
- package/components/templates/default.vue +3 -3
- package/components/templates/error.vue +6 -10
- package/components/templates/standalone.vue +0 -4
- package/components/templates/unauthenticated.vue +1 -2
- package/components/user.retention/user-retention-header.vue +34 -0
- package/composables/useCompactInput.test.ts +36 -0
- package/composables/useCompactInput.ts +2 -2
- package/composables/useI18n.ts +26 -0
- package/composables/useLabeledFormElement.test.ts +135 -0
- package/composables/useStore.ts +16 -0
- package/config/home-links.js +32 -1
- package/config/labels-annotations.js +2 -1
- package/config/middleware.js +0 -6
- package/config/pagination-table-headers.js +57 -0
- package/config/pod-security-admission.ts +1 -1
- package/config/private-label.js +1 -3
- package/config/product/auth.js +1 -0
- package/config/product/explorer.js +167 -46
- package/config/product/legacy.js +3 -95
- package/config/product/manager.js +44 -11
- package/config/query-params.js +1 -0
- package/config/roles.ts +23 -0
- package/config/router/index.js +23 -0
- package/config/router/navigation-guards/attempt-first-login.js +73 -0
- package/config/router/navigation-guards/authentication.js +63 -0
- package/config/router/navigation-guards/index.js +15 -0
- package/config/router/navigation-guards/load-initial-settings.js +15 -0
- package/config/router/routes.js +487 -0
- package/config/settings.ts +38 -2
- package/config/store.js +7 -3
- package/config/table-headers.js +46 -1
- package/config/types.js +36 -16
- package/config/uiplugins.js +10 -5
- package/core/plugin-helpers.js +1 -1
- package/core/plugin.ts +2 -1
- package/core/plugins.js +289 -282
- package/creators/app/files/.eslintignore +0 -2
- package/creators/app/files/.vscode/settings.json +0 -1
- package/creators/pkg/files/.github/workflows/build-extension-catalog.yml +2 -6
- package/creators/pkg/files/.github/workflows/build-extension-charts.yml +2 -6
- package/creators/pkg/init +32 -0
- package/detail/__tests__/service.test.ts +62 -0
- package/detail/catalog.cattle.io.app.vue +1 -1
- package/detail/cis.cattle.io.clusterscan.vue +14 -3
- package/detail/fleet.cattle.io.gitrepo.vue +15 -9
- package/detail/namespace.vue +2 -2
- package/detail/networking.k8s.io.ingress.vue +52 -19
- package/detail/node.vue +20 -43
- package/detail/pod.vue +1 -68
- package/detail/provisioning.cattle.io.cluster.vue +2 -1
- package/detail/service.vue +1 -1
- package/detail/workload/index.vue +2 -15
- package/dialog/AddCustomBadgeDialog.vue +318 -161
- package/dialog/DeactivateDriverDialog.vue +118 -0
- package/dialog/RollbackWorkloadDialog.vue +2 -2
- package/dialog/RotateCertificatesDialog.vue +0 -21
- package/directives/clean-html.js +15 -0
- package/directives/clean-tooltip.js +32 -0
- package/directives/focus.js +41 -0
- package/directives/int-number.js +21 -0
- package/directives/positive-int-number.js +19 -0
- package/directives/trim-whitespace.js +19 -0
- package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +3 -2
- package/edit/__tests__/kontainerDriver.test.ts +107 -0
- package/edit/__tests__/management.cattle.io.clusterroletemplatebinding.test.ts +12 -1
- package/edit/__tests__/management.cattle.io.setting.test.ts +2 -1
- package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +2 -3
- package/edit/__tests__/nodeDriver.test.ts +107 -0
- package/edit/__tests__/service.test.ts +1 -5
- package/edit/__tests__/ui.cattle.io.navlink.test.ts +3 -1
- package/edit/auth/AuthProviderWarningBanners.vue +34 -0
- package/edit/auth/__tests__/AuthProviderWarningBanners.test.ts +19 -0
- package/edit/auth/__tests__/azuread.test.ts +241 -0
- package/edit/auth/__tests__/oidc.test.ts +137 -0
- package/edit/auth/azuread.vue +133 -31
- package/edit/auth/github.vue +5 -17
- package/edit/auth/googleoauth.vue +5 -18
- package/edit/auth/ldap/index.vue +5 -17
- package/edit/auth/oidc.vue +143 -42
- package/edit/auth/saml.vue +5 -14
- package/edit/catalog.cattle.io.clusterrepo.vue +175 -20
- package/edit/cis.cattle.io.clusterscan.vue +5 -2
- package/edit/cis.cattle.io.clusterscanbenchmark.vue +41 -9
- package/edit/cloudcredential.vue +26 -4
- package/edit/configmap.vue +10 -4
- package/edit/fleet.cattle.io.gitrepo.vue +7 -4
- package/edit/helm.cattle.io.projecthelmchart.vue +29 -19
- package/edit/kontainerDriver.vue +65 -0
- package/edit/logging-flow/Match.vue +10 -9
- package/edit/logging-flow/index.vue +4 -19
- package/edit/logging.banzaicloud.io.output/__tests__/logging.banzaicloud.io.output.test.ts +232 -2
- package/edit/logging.banzaicloud.io.output/index.vue +43 -26
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +3 -3
- package/edit/management.cattle.io.project.vue +2 -1
- package/edit/management.cattle.io.setting.vue +20 -0
- package/edit/management.cattle.io.user.vue +2 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +10 -7
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +21 -16
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +1 -0
- package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +3 -0
- package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +2 -0
- package/edit/monitoring.coreos.com.prometheusrule/RecordingRule.vue +2 -0
- package/edit/monitoring.coreos.com.prometheusrule/index.vue +2 -0
- package/edit/networking.k8s.io.ingress/Rules.vue +8 -3
- package/edit/networking.k8s.io.ingress/index.vue +64 -8
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +1 -0
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +6 -2
- package/edit/networking.k8s.io.networkpolicy/__tests__/{PolicyRuleTarget.spec.ts → PolicyRuleTarget.test.ts} +45 -6
- package/edit/networking.k8s.io.networkpolicy/__tests__/utils/selectors.test.ts +1 -1
- package/edit/networking.k8s.io.networkpolicy/index.vue +2 -0
- package/edit/nodeDriver.vue +65 -0
- package/edit/persistentvolume/index.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +18 -9
- package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +165 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +1 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/CustomCommand.test.ts +0 -3
- package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +228 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +70 -12
- package/edit/provisioning.cattle.io.cluster/__tests__/utils/cluster.ts +5 -0
- package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/index.vue +21 -15
- package/edit/provisioning.cattle.io.cluster/rke2.vue +185 -114
- package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +67 -7
- package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +19 -6
- package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +132 -0
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +7 -0
- package/edit/provisioning.cattle.io.cluster/tabs/etcd/S3Config.vue +1 -0
- package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +1 -0
- package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +3 -0
- package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +1 -0
- package/edit/resources.cattle.io.backup.vue +139 -124
- package/edit/resources.cattle.io.restore.vue +146 -126
- package/edit/service.vue +1 -0
- package/edit/serviceaccount.vue +46 -4
- package/edit/workload/__tests__/Job.test.ts +1 -3
- package/edit/workload/__tests__/Upgrading.test.ts +2 -2
- package/edit/workload/mixins/workload.js +34 -1
- package/edit/workload/storage/emptyDir.vue +2 -2
- package/initialize/App.vue +75 -0
- package/initialize/app-extended.js +128 -0
- package/initialize/entry-helpers.js +549 -0
- package/initialize/entry.js +32 -0
- package/initialize/install-components.js +23 -0
- package/initialize/install-directives.js +59 -0
- package/initialize/install-plugins.js +123 -0
- package/list/__tests__/workload.test.ts +1 -1
- package/list/cis.cattle.io.clusterscan.vue +16 -10
- package/list/group.principal.vue +2 -2
- package/list/management.cattle.io.feature.vue +11 -7
- package/list/management.cattle.io.user.vue +36 -3
- package/list/networking.k8s.io.ingress.vue +36 -0
- package/list/node.vue +211 -73
- package/list/provisioning.cattle.io.cluster.vue +17 -4
- package/list/ui.cattle.io.navlink.vue +2 -2
- package/list/workload.vue +22 -0
- package/machine-config/__tests__/vmwarevsphere-pool-config-merge.test.ts +30 -0
- package/machine-config/__tests__/vmwarevsphere.test.ts +162 -59
- package/machine-config/amazonec2.vue +1 -1
- package/machine-config/azure.vue +38 -21
- package/machine-config/generic.vue +11 -15
- package/machine-config/vmwarevsphere-pool-config-merge.ts +25 -0
- package/machine-config/vmwarevsphere.vue +20 -11
- package/middleware/authenticated.js +9 -361
- package/mixins/__tests__/chart.test.ts +48 -6
- package/mixins/__tests__/create-edit-view.test.ts +2 -3
- package/mixins/auth-config.js +3 -2
- package/mixins/brand.js +75 -57
- package/mixins/chart.js +27 -13
- package/mixins/create-edit-view/index.js +2 -2
- package/mixins/fetch.client.js +42 -48
- package/mixins/labeled-form-element.ts +21 -1
- package/mixins/page-actions.js +7 -5
- package/mixins/resource-fetch-api-pagination.js +304 -0
- package/mixins/resource-fetch-namespaced.js +1 -1
- package/mixins/resource-fetch.js +46 -5
- package/models/__tests__/cluster.test.ts +44 -0
- package/models/__tests__/fleet.cattle.io.cluster.test.ts +36 -0
- package/models/__tests__/schema.tests.ts +24 -0
- package/models/__tests__/steve-schema.test.ts +73 -0
- package/models/__tests__/workload.test.ts +1 -1
- package/models/catalog.cattle.io.app.js +8 -0
- package/models/catalog.cattle.io.clusterrepo.js +9 -1
- package/models/catalog.cattle.io.uiplugin.js +7 -8
- package/models/cis.cattle.io.clusterscan.js +29 -8
- package/models/cloudcredential.js +9 -1
- package/models/cluster/node.js +4 -0
- package/models/cluster/schema.js +6 -0
- package/models/cluster.js +33 -0
- package/models/driver.js +62 -0
- package/models/fleet.cattle.io.cluster.js +23 -11
- package/models/fleet.cattle.io.gitrepo.js +10 -0
- package/models/helm.cattle.io.projecthelmchart.js +1 -1
- package/models/kontainerdriver.js +68 -0
- package/models/management/schema.js +6 -0
- package/models/management.cattle.io.authconfig.js +3 -2
- package/models/management.cattle.io.cluster.js +5 -4
- package/models/management.cattle.io.globalrole.js +2 -0
- package/models/management.cattle.io.user.js +67 -2
- package/models/monitoring.coreos.com.receiver.js +3 -1
- package/models/monitoring.coreos.com.route.js +1 -1
- package/models/networking.k8s.io.ingress.js +2 -1
- package/models/nodedriver.js +68 -0
- package/models/provisioning.cattle.io.cluster.js +34 -1
- package/models/schema.js +28 -7
- package/models/service.js +2 -0
- package/models/steve-schema.ts +254 -0
- package/models/workload.js +1 -0
- package/package.json +6 -5
- package/pages/about.vue +12 -5
- package/pages/account/index.vue +7 -2
- package/pages/auth/login.vue +106 -102
- package/pages/auth/logout.vue +2 -2
- package/pages/auth/setup.vue +57 -64
- package/pages/auth/verify.vue +17 -17
- package/pages/c/_cluster/apps/charts/chart.vue +54 -9
- package/pages/c/_cluster/apps/charts/index.vue +37 -13
- package/pages/c/_cluster/apps/charts/install.vue +4 -4
- package/pages/c/_cluster/auth/config/_id.vue +0 -6
- package/pages/c/_cluster/auth/config/index.vue +15 -9
- package/pages/c/_cluster/auth/roles/index.vue +8 -10
- package/pages/c/_cluster/auth/user.retention/index.vue +384 -0
- package/pages/c/_cluster/explorer/ConfigBadge.vue +13 -8
- package/pages/c/_cluster/explorer/EventsTable.vue +18 -0
- package/pages/c/_cluster/explorer/__tests__/index.test.ts +181 -0
- package/pages/c/_cluster/explorer/index.vue +231 -72
- package/pages/c/_cluster/explorer/tools/__tests__/index.test.ts +69 -0
- package/pages/c/_cluster/explorer/tools/index.vue +12 -176
- package/pages/c/_cluster/fleet/index.vue +88 -93
- package/pages/c/_cluster/longhorn/__tests__/longhorn.index.test.ts +89 -0
- package/pages/c/_cluster/longhorn/index.vue +52 -17
- package/pages/c/_cluster/manager/cloudCredential/index.vue +18 -25
- package/pages/c/_cluster/manager/drivers/kontainerDriver/_id.vue +12 -0
- package/pages/c/_cluster/manager/drivers/kontainerDriver/create.vue +15 -0
- package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +94 -0
- package/pages/c/_cluster/manager/drivers/nodeDriver/_id.vue +12 -0
- package/pages/c/_cluster/manager/drivers/nodeDriver/create.vue +15 -0
- package/pages/c/_cluster/manager/drivers/nodeDriver/index.vue +63 -0
- package/pages/c/_cluster/manager/jwt.authentication/index.vue +235 -0
- package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +4 -0
- package/pages/c/_cluster/monitoring/index.vue +1 -17
- package/pages/c/_cluster/monitoring/route-receiver/index.vue +2 -2
- package/pages/c/_cluster/neuvector/index.vue +1 -0
- package/pages/c/_cluster/settings/DefaultLinksEditor.vue +1 -0
- package/pages/c/_cluster/settings/banners.vue +86 -8
- package/pages/c/_cluster/settings/brand.vue +258 -36
- package/pages/c/_cluster/settings/index.vue +4 -4
- package/pages/c/_cluster/settings/links.vue +5 -3
- package/pages/c/_cluster/settings/performance.vue +71 -2
- package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +5 -2
- package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +10 -7
- package/pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue +9 -6
- package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +11 -5
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +53 -18
- package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +36 -301
- package/pages/c/_cluster/uiplugins/UninstallDialog.vue +14 -6
- package/pages/c/_cluster/uiplugins/__tests__/SetupUIPlugins.test.ts +52 -106
- package/pages/c/_cluster/uiplugins/index.vue +38 -52
- package/pages/diagnostic.vue +1 -0
- package/pages/fail-whale.vue +103 -41
- package/pages/home.vue +81 -24
- package/pages/prefs.vue +8 -3
- package/pages/support/index.vue +12 -2
- package/plugins/clean-html-directive.js +5 -12
- package/plugins/clean-tooltip-directive.js +6 -31
- package/plugins/codemirror.js +0 -9
- package/plugins/dashboard-store/__tests__/mutations.test.ts +296 -313
- package/plugins/dashboard-store/actions.js +140 -32
- package/plugins/dashboard-store/getters.js +86 -39
- package/plugins/dashboard-store/index.js +0 -99
- package/plugins/dashboard-store/mutations.js +150 -48
- package/plugins/dashboard-store/resource-class.js +14 -109
- package/plugins/directives.js +6 -39
- package/plugins/ember-cookie.js +13 -0
- package/plugins/global-formatters.js +26 -5
- package/plugins/i18n.js +90 -56
- package/plugins/int-number.js +6 -20
- package/plugins/plugin.js +3 -3
- package/plugins/positive-int-number.js +6 -17
- package/plugins/steve/__tests__/{getters.spec.ts → getters.test.ts} +124 -31
- package/plugins/steve/__tests__/mutations.test.ts +49 -0
- package/plugins/steve/__tests__/subscribe.spec.ts +109 -0
- package/plugins/steve/__tests__/utils/mutation.test.helpers.ts +105 -0
- package/plugins/steve/accept-or-reject-socket-message.ts +103 -0
- package/plugins/steve/actions.js +0 -1
- package/plugins/steve/getters.js +183 -63
- package/plugins/steve/hybrid-class.js +5 -1
- package/plugins/steve/mutations.js +29 -5
- package/plugins/steve/norman-class.js +123 -2
- package/{utils → plugins/steve}/projectAndNamespaceFiltering.utils.ts +28 -10
- package/plugins/steve/schema.d.ts +22 -0
- package/plugins/steve/steve-pagination-utils.ts +368 -0
- package/plugins/steve/subscribe.js +37 -75
- package/plugins/trim-whitespace.js +6 -34
- package/plugins/vue-js-modal.js +1 -1
- package/public/index.html +1 -0
- package/rancher-components/Accordion/Accordion.vue +3 -2
- package/rancher-components/BadgeState/BadgeState.vue +3 -3
- package/rancher-components/Banner/Banner.test.ts +1 -5
- package/rancher-components/Banner/Banner.vue +2 -2
- package/rancher-components/Card/Card.vue +4 -4
- package/rancher-components/Form/Checkbox/Checkbox.vue +4 -3
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +1 -1
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +66 -30
- package/rancher-components/Form/Radio/RadioButton.test.ts +1 -3
- package/rancher-components/Form/Radio/RadioButton.vue +13 -7
- package/rancher-components/Form/Radio/RadioGroup.vue +4 -3
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +7 -5
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/StringList/StringList.vue +8 -8
- package/rancher-components/components/Accordion/Accordion.vue +3 -2
- package/rancher-components/components/BadgeState/BadgeState.vue +3 -3
- package/rancher-components/components/Banner/Banner.test.ts +1 -5
- package/rancher-components/components/Banner/Banner.vue +2 -2
- package/rancher-components/components/Card/Card.vue +4 -4
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +4 -3
- package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +1 -1
- package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +66 -30
- package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -3
- package/rancher-components/components/Form/Radio/RadioButton.vue +13 -7
- package/rancher-components/components/Form/Radio/RadioGroup.vue +4 -3
- package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +7 -5
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
- package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/components/StringList/StringList.vue +8 -8
- package/scripts/.gitlab/workflows/build-extension-catalog.gitlab-ci.yml +27 -8
- package/scripts/clean +1 -1
- package/scripts/extension/helm/charts/ui-plugin-server/templates/_helpers.tpl +11 -0
- package/scripts/extension/helm/charts/ui-plugin-server/templates/cr.yaml +2 -0
- package/scripts/extension/helm/charts/ui-plugin-server/values.yaml +2 -0
- package/scripts/extension/helm/package/Dockerfile +1 -1
- package/scripts/extension/helm/scripts/patch +27 -0
- package/scripts/extension/publish +6 -6
- package/scripts/serve-pkgs +0 -2
- package/scripts/test-plugins-build.sh +6 -6
- package/scripts/vue-migrate.js +683 -0
- package/store/__tests__/catalog.test.ts +224 -0
- package/store/auth.js +23 -4
- package/store/aws.js +53 -6
- package/store/catalog.js +21 -5
- package/store/cru-resource.ts +26 -0
- package/store/customisation.js +35 -0
- package/store/features.js +6 -4
- package/store/index.js +132 -39
- package/store/plugins.js +8 -4
- package/store/type-map.js +143 -143
- package/store/type-map.utils.ts +226 -0
- package/tsconfig.json +0 -1
- package/tsconfig.paths.json +4 -1
- package/types/components/labeledSelect.ts +50 -0
- package/types/resources/settings.d.ts +32 -0
- package/types/{userPreferences.d.ts → resources/userPreferences.d.ts} +0 -1
- package/types/shell/index.d.ts +996 -782
- package/types/store/dashboard-store.types.ts +42 -0
- package/types/store/pagination.types.ts +457 -0
- package/types/store/type-map.ts +30 -0
- package/types/store/vuex.d.ts +9 -0
- package/types/vue-shim.d.ts +51 -0
- package/utils/__tests__/cluster.test.ts +20 -18
- package/utils/__tests__/create-yaml.test.ts +359 -2
- package/utils/__tests__/kontainer.test.ts +92 -0
- package/utils/__tests__/pod-security-admission.test.ts +1 -1
- package/utils/alertmanagerconfig.js +19 -0
- package/utils/array.ts +40 -1
- package/utils/async.ts +2 -0
- package/utils/auth.js +152 -4
- package/utils/axios.js +2 -2
- package/utils/banners.js +103 -0
- package/utils/cluster.js +1 -1
- package/utils/config.js +4 -0
- package/utils/create-yaml.js +54 -27
- package/utils/error.js +25 -0
- package/utils/formatter.js +5 -3
- package/utils/git.ts +1 -1
- package/utils/install-redirect.js +1 -1
- package/utils/kontainer.ts +186 -0
- package/utils/monitoring.js +2 -37
- package/utils/pagination-utils.ts +154 -0
- package/utils/pod-security-admission.ts +1 -1
- package/utils/router.js +86 -0
- package/utils/settings.ts +46 -0
- package/utils/socket.js +1 -0
- package/utils/time.js +1 -0
- package/utils/title.ts +3 -0
- package/utils/unit-tests/ChildRenderingRouterLinkStub.ts +36 -0
- package/utils/validators/formRules/__tests__/index.test.ts +21 -0
- package/utils/validators/formRules/index.ts +3 -0
- package/utils/validators/index.js +1 -0
- package/vue.config.js +376 -421
- package/assets/styles/vendor/vue-js-modal.scss +0 -16
- package/chart/monitoring/steps/uninstall-v1.vue +0 -135
- package/components/EventsTable.vue +0 -67
- package/components/TabbedLinks/index.vue +0 -94
- package/components/nuxt/nuxt-link.server.js +0 -16
- package/components/nuxt/nuxt.js +0 -101
- package/config/router.js +0 -425
- package/initialize/App.js +0 -152
- package/initialize/client.js +0 -734
- package/initialize/index.js +0 -287
- package/middleware/i18n.js +0 -10
- package/middleware/unauthenticated.js +0 -22
- package/mixins/v1-workload-metrics.js +0 -43
- package/pages/c/_cluster/apps/index.vue +0 -15
- package/pages/c/_cluster/auth/index.vue +0 -17
- package/pages/c/_cluster/index.vue +0 -15
- package/pages/c/_cluster/legacy/index.vue +0 -22
- package/pages/c/_cluster/manager/index.vue +0 -22
- package/pages/c/_cluster/mcapps/index.vue +0 -21
- package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +0 -232
- package/plugins/dashboard-store/rehydrate-all.js +0 -44
- package/plugins/index.js +0 -11
- package/plugins/portal-vue.js +0 -4
- package/plugins/portal.js +0 -4
- package/plugins/resize.js +0 -5
- package/plugins/shortkey.js +0 -4
- package/plugins/tooltip.js +0 -4
- package/plugins/v-select.js +0 -4
- package/utils/group.js +0 -70
- package/utils/nuxt.js +0 -638
- package/utils/router.scrollBehavior.js +0 -78
- /package/components/__tests__/{Collapse.spec.ts → Collapse.test.ts} +0 -0
- /package/models/__tests__/{node.ts → node.test.ts} +0 -0
- /package/plugins/steve/__tests__/{header-warnings.spec.ts → header-warnings.test.ts} +0 -0
- /package/plugins/steve/__tests__/{steve-class.spec.ts → steve-class.test.ts} +0 -0
- /package/rancher-components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
- /package/rancher-components/components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
- /package/types/{pod-security-admission.ts → resources/pod-security-admission.ts} +0 -0
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
} from '@shell/utils/object';
|
|
27
27
|
import { allHash } from '@shell/utils/promise';
|
|
28
28
|
import { sortBy } from '@shell/utils/sort';
|
|
29
|
+
import { vspherePoolConfigMerge } from '@shell/machine-config/vmwarevsphere-pool-config-merge';
|
|
29
30
|
|
|
30
31
|
import { compare, sortable } from '@shell/utils/version';
|
|
31
32
|
import { isHarvesterSatisfiesVersion } from '@shell/utils/cluster';
|
|
@@ -43,7 +44,7 @@ import semver from 'semver';
|
|
|
43
44
|
|
|
44
45
|
import { SETTING } from '@shell/config/settings';
|
|
45
46
|
import { base64Encode } from '@shell/utils/crypto';
|
|
46
|
-
import { CAPI as CAPI_ANNOTATIONS } from '@shell/config/labels-annotations';
|
|
47
|
+
import { CAPI as CAPI_ANNOTATIONS, CLUSTER_BADGE } from '@shell/config/labels-annotations';
|
|
47
48
|
import AgentEnv from '@shell/edit/provisioning.cattle.io.cluster/AgentEnv';
|
|
48
49
|
import Labels from '@shell/edit/provisioning.cattle.io.cluster/Labels';
|
|
49
50
|
import MachinePool from '@shell/edit/provisioning.cattle.io.cluster/tabs/MachinePool';
|
|
@@ -60,11 +61,14 @@ import Upgrade from '@shell/edit/provisioning.cattle.io.cluster/tabs/upgrade';
|
|
|
60
61
|
import Registries from '@shell/edit/provisioning.cattle.io.cluster/tabs/registries';
|
|
61
62
|
import AddOnConfig from '@shell/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig';
|
|
62
63
|
import Advanced from '@shell/edit/provisioning.cattle.io.cluster/tabs/Advanced';
|
|
64
|
+
import ClusterAppearance from '@shell/components/form/ClusterAppearance';
|
|
63
65
|
|
|
64
66
|
const HARVESTER = 'harvester';
|
|
65
67
|
const HARVESTER_CLOUD_PROVIDER = 'harvester-cloud-provider';
|
|
66
68
|
const NETBIOS_TRUNCATION_LENGTH = 15;
|
|
67
69
|
|
|
70
|
+
const VMWARE_VSPHERE = 'vmwarevsphere';
|
|
71
|
+
|
|
68
72
|
/**
|
|
69
73
|
* Classes to be adopted by the node badges in Machine pools
|
|
70
74
|
*/
|
|
@@ -106,7 +110,8 @@ export default {
|
|
|
106
110
|
Upgrade,
|
|
107
111
|
Registries,
|
|
108
112
|
AddOnConfig,
|
|
109
|
-
Advanced
|
|
113
|
+
Advanced,
|
|
114
|
+
ClusterAppearance
|
|
110
115
|
},
|
|
111
116
|
|
|
112
117
|
mixins: [CreateEditView, FormValidation],
|
|
@@ -149,15 +154,15 @@ export default {
|
|
|
149
154
|
},
|
|
150
155
|
|
|
151
156
|
data() {
|
|
152
|
-
if (
|
|
157
|
+
if (!this.value.spec.rkeConfig) {
|
|
153
158
|
set(this.value.spec, 'rkeConfig', {});
|
|
154
159
|
}
|
|
155
160
|
|
|
156
|
-
if (
|
|
161
|
+
if (!this.value.spec.rkeConfig.chartValues) {
|
|
157
162
|
set(this.value.spec.rkeConfig, 'chartValues', {});
|
|
158
163
|
}
|
|
159
164
|
|
|
160
|
-
if (
|
|
165
|
+
if (!this.value.spec.rkeConfig.upgradeStrategy) {
|
|
161
166
|
set(this.value.spec.rkeConfig, 'upgradeStrategy', {
|
|
162
167
|
controlPlaneConcurrency: '1',
|
|
163
168
|
controlPlaneDrainOptions: {},
|
|
@@ -166,11 +171,19 @@ export default {
|
|
|
166
171
|
});
|
|
167
172
|
}
|
|
168
173
|
|
|
169
|
-
if (
|
|
174
|
+
if (!this.value.spec.rkeConfig.dataDirectories) {
|
|
175
|
+
set(this.value.spec.rkeConfig, 'dataDirectories', {
|
|
176
|
+
systemAgent: '',
|
|
177
|
+
provisioning: '',
|
|
178
|
+
k8sDistro: '',
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (!this.value.spec.rkeConfig.machineGlobalConfig) {
|
|
170
183
|
set(this.value.spec, 'rkeConfig.machineGlobalConfig', {});
|
|
171
184
|
}
|
|
172
185
|
|
|
173
|
-
if (
|
|
186
|
+
if (!this.value.spec.rkeConfig.machineSelectorConfig?.length) {
|
|
174
187
|
set(this.value.spec, 'rkeConfig.machineSelectorConfig', [{ config: {} }]);
|
|
175
188
|
}
|
|
176
189
|
|
|
@@ -221,6 +234,15 @@ export default {
|
|
|
221
234
|
},
|
|
222
235
|
|
|
223
236
|
computed: {
|
|
237
|
+
clusterName() {
|
|
238
|
+
return this.value.metadata?.name || '';
|
|
239
|
+
},
|
|
240
|
+
showClusterAppearance() {
|
|
241
|
+
return this.mode === _CREATE;
|
|
242
|
+
},
|
|
243
|
+
clusterBadgeAbbreviation() {
|
|
244
|
+
return this.$store.getters['customisation/getPreviewCluster'];
|
|
245
|
+
},
|
|
224
246
|
rkeConfig() {
|
|
225
247
|
return this.value.spec.rkeConfig;
|
|
226
248
|
},
|
|
@@ -251,11 +273,11 @@ export default {
|
|
|
251
273
|
// If there are any other properties set, or multiple configs with no selector
|
|
252
274
|
// show a warning that you're editing only part of the config in the UI.
|
|
253
275
|
|
|
254
|
-
for (
|
|
255
|
-
if (
|
|
276
|
+
for (const conf of this.value.spec?.rkeConfig?.machineSelectorConfig) {
|
|
277
|
+
if (conf.machineLabelSelector) {
|
|
256
278
|
const keys = Object.keys(conf.config || {});
|
|
257
279
|
|
|
258
|
-
if (
|
|
280
|
+
if (keys.length === 0 || (keys.length === 1 && keys[0] === 'kubelet-arg')) {
|
|
259
281
|
kubeletOnly++;
|
|
260
282
|
} else {
|
|
261
283
|
other++;
|
|
@@ -268,7 +290,7 @@ export default {
|
|
|
268
290
|
// eslint-disable-next-line no-console
|
|
269
291
|
console.log(`Global: ${ global }, Kubelet Only: ${ kubeletOnly }, Other: ${ other }`);
|
|
270
292
|
|
|
271
|
-
return (
|
|
293
|
+
return (global > 1 || other > 0);
|
|
272
294
|
},
|
|
273
295
|
|
|
274
296
|
versionOptions() {
|
|
@@ -291,26 +313,26 @@ export default {
|
|
|
291
313
|
const showK3s = allValidK3sVersions.length && !existingRke2;
|
|
292
314
|
const out = [];
|
|
293
315
|
|
|
294
|
-
if (
|
|
295
|
-
if (
|
|
316
|
+
if (showRke2) {
|
|
317
|
+
if (showK3s) {
|
|
296
318
|
out.push({ kind: 'group', label: this.t('cluster.provider.rke2') });
|
|
297
319
|
}
|
|
298
320
|
|
|
299
321
|
out.push(...allValidRke2Versions);
|
|
300
322
|
}
|
|
301
323
|
|
|
302
|
-
if (
|
|
303
|
-
if (
|
|
324
|
+
if (showK3s) {
|
|
325
|
+
if (showRke2) {
|
|
304
326
|
out.push({ kind: 'group', label: this.t('cluster.provider.k3s') });
|
|
305
327
|
}
|
|
306
328
|
|
|
307
329
|
out.push(...allValidK3sVersions);
|
|
308
330
|
}
|
|
309
331
|
|
|
310
|
-
if (
|
|
332
|
+
if (cur) {
|
|
311
333
|
const existing = out.find((x) => x.value === cur);
|
|
312
334
|
|
|
313
|
-
if (
|
|
335
|
+
if (existing) {
|
|
314
336
|
existing.disabled = false;
|
|
315
337
|
}
|
|
316
338
|
}
|
|
@@ -324,7 +346,7 @@ export default {
|
|
|
324
346
|
selectedVersion() {
|
|
325
347
|
const str = this.value.spec.kubernetesVersion;
|
|
326
348
|
|
|
327
|
-
if (
|
|
349
|
+
if (!str) {
|
|
328
350
|
return;
|
|
329
351
|
}
|
|
330
352
|
|
|
@@ -363,7 +385,7 @@ export default {
|
|
|
363
385
|
},
|
|
364
386
|
|
|
365
387
|
needCredential() {
|
|
366
|
-
if (
|
|
388
|
+
if (this.provider === 'custom' || this.provider === 'import' || this.isElementalCluster || this.mode === _VIEW || (this.providerConfig?.spec?.builtin === false && this.providerConfig?.spec?.addCloudCredential === false)) {
|
|
367
389
|
return false;
|
|
368
390
|
}
|
|
369
391
|
|
|
@@ -382,7 +404,7 @@ export default {
|
|
|
382
404
|
},
|
|
383
405
|
|
|
384
406
|
hasMachinePools() {
|
|
385
|
-
if (
|
|
407
|
+
if (this.provider === 'custom' || this.provider === 'import') {
|
|
386
408
|
return false;
|
|
387
409
|
}
|
|
388
410
|
|
|
@@ -423,7 +445,7 @@ export default {
|
|
|
423
445
|
machineConfigSchema() {
|
|
424
446
|
let schema;
|
|
425
447
|
|
|
426
|
-
if (
|
|
448
|
+
if (!this.hasMachinePools) {
|
|
427
449
|
return null;
|
|
428
450
|
} else if (this.isElementalCluster) {
|
|
429
451
|
schema = ELEMENTAL_SCHEMA_IDS.MACHINE_INV_SELECTOR_TEMPLATES;
|
|
@@ -457,53 +479,53 @@ export default {
|
|
|
457
479
|
tooltip: {},
|
|
458
480
|
};
|
|
459
481
|
|
|
460
|
-
for (
|
|
482
|
+
for (const role of roles) {
|
|
461
483
|
counts[role] = 0;
|
|
462
484
|
out.color[role] = NODE_TOTAL.success.color;
|
|
463
485
|
out.icon[role] = NODE_TOTAL.success.icon;
|
|
464
486
|
}
|
|
465
487
|
|
|
466
|
-
for (
|
|
467
|
-
if (
|
|
488
|
+
for (const row of this.machinePools || []) {
|
|
489
|
+
if (row.remove) {
|
|
468
490
|
continue;
|
|
469
491
|
}
|
|
470
492
|
|
|
471
493
|
const qty = parseInt(row.pool.quantity, 10);
|
|
472
494
|
|
|
473
|
-
if (
|
|
495
|
+
if (isNaN(qty)) {
|
|
474
496
|
continue;
|
|
475
497
|
}
|
|
476
498
|
|
|
477
|
-
for (
|
|
499
|
+
for (const role of roles) {
|
|
478
500
|
counts[role] = counts[role] + (row.pool[`${ role }Role`] ? qty : 0);
|
|
479
501
|
}
|
|
480
502
|
}
|
|
481
503
|
|
|
482
|
-
for (
|
|
504
|
+
for (const role of roles) {
|
|
483
505
|
out.label[role] = this.t(`cluster.machinePool.nodeTotals.label.${ role }`, { count: counts[role] });
|
|
484
506
|
out.tooltip[role] = this.t(`cluster.machinePool.nodeTotals.tooltip.${ role }`, { count: counts[role] });
|
|
485
507
|
}
|
|
486
508
|
|
|
487
|
-
if (
|
|
509
|
+
if (counts.etcd === 0) {
|
|
488
510
|
out.color.etcd = NODE_TOTAL.error.color;
|
|
489
511
|
out.icon.etcd = NODE_TOTAL.error.icon;
|
|
490
|
-
} else if (
|
|
512
|
+
} else if (counts.etcd === 1 || counts.etcd % 2 === 0 || counts.etcd > 7) {
|
|
491
513
|
out.color.etcd = NODE_TOTAL.warning.color;
|
|
492
514
|
out.icon.etcd = NODE_TOTAL.warning.icon;
|
|
493
515
|
}
|
|
494
516
|
|
|
495
|
-
if (
|
|
517
|
+
if (counts.controlPlane === 0) {
|
|
496
518
|
out.color.controlPlane = NODE_TOTAL.error.color;
|
|
497
519
|
out.icon.controlPlane = NODE_TOTAL.error.icon;
|
|
498
|
-
} else if (
|
|
520
|
+
} else if (counts.controlPlane === 1) {
|
|
499
521
|
out.color.controlPlane = NODE_TOTAL.warning.color;
|
|
500
522
|
out.icon.controlPlane = NODE_TOTAL.warning.icon;
|
|
501
523
|
}
|
|
502
524
|
|
|
503
|
-
if (
|
|
525
|
+
if (counts.worker === 0) {
|
|
504
526
|
out.color.worker = NODE_TOTAL.error.color;
|
|
505
527
|
out.icon.worker = NODE_TOTAL.error.icon;
|
|
506
|
-
} else if (
|
|
528
|
+
} else if (counts.worker === 1) {
|
|
507
529
|
out.color.worker = NODE_TOTAL.warning.color;
|
|
508
530
|
out.icon.worker = NODE_TOTAL.warning.icon;
|
|
509
531
|
}
|
|
@@ -533,11 +555,11 @@ export default {
|
|
|
533
555
|
}
|
|
534
556
|
|
|
535
557
|
if (this.showCloudProvider) { // Shouldn't be removed such that changes to it will re-trigger this watch
|
|
536
|
-
if (
|
|
558
|
+
if (this.agentConfig?.['cloud-provider-name'] === 'rancher-vsphere') {
|
|
537
559
|
names.push('rancher-vsphere-cpi', 'rancher-vsphere-csi');
|
|
538
560
|
}
|
|
539
561
|
|
|
540
|
-
if (
|
|
562
|
+
if (this.agentConfig?.['cloud-provider-name'] === HARVESTER) {
|
|
541
563
|
names.push(HARVESTER_CLOUD_PROVIDER);
|
|
542
564
|
}
|
|
543
565
|
}
|
|
@@ -562,11 +584,11 @@ export default {
|
|
|
562
584
|
value: '',
|
|
563
585
|
}];
|
|
564
586
|
|
|
565
|
-
if (
|
|
587
|
+
if (!!this.agentArgs['cloud-provider-name']?.options) {
|
|
566
588
|
const preferred = this.$store.getters['plugins/cloudProviderForDriver'](this.provider);
|
|
567
589
|
|
|
568
|
-
for (
|
|
569
|
-
|
|
590
|
+
for (const opt of this.agentArgs['cloud-provider-name']?.options) {
|
|
591
|
+
// If we don't have a preferred provider... show all options
|
|
570
592
|
const showAllOptions = preferred === undefined;
|
|
571
593
|
// If we have a preferred provider... only show default, preferred and external
|
|
572
594
|
const isPreferred = opt === preferred;
|
|
@@ -589,7 +611,7 @@ export default {
|
|
|
589
611
|
|
|
590
612
|
const cur = this.agentConfig?.['cloud-provider-name'];
|
|
591
613
|
|
|
592
|
-
if (
|
|
614
|
+
if (cur && !out.find((x) => x.value === cur)) {
|
|
593
615
|
out.unshift({ label: `${ cur } (Current)`, value: cur });
|
|
594
616
|
}
|
|
595
617
|
|
|
@@ -623,7 +645,7 @@ export default {
|
|
|
623
645
|
}
|
|
624
646
|
}
|
|
625
647
|
|
|
626
|
-
if (
|
|
648
|
+
if (!out) {
|
|
627
649
|
out = preferred || first;
|
|
628
650
|
}
|
|
629
651
|
|
|
@@ -631,7 +653,7 @@ export default {
|
|
|
631
653
|
},
|
|
632
654
|
|
|
633
655
|
appsOSWarning() {
|
|
634
|
-
if (this.mode !== _EDIT
|
|
656
|
+
if (this.mode !== _EDIT) {
|
|
635
657
|
return null;
|
|
636
658
|
}
|
|
637
659
|
const { linuxWorkerCount, windowsWorkerCount } = this.value?.mgmt?.status || {};
|
|
@@ -698,12 +720,40 @@ export default {
|
|
|
698
720
|
|
|
699
721
|
return validRequiredPools && base;
|
|
700
722
|
},
|
|
723
|
+
currentCluster() {
|
|
724
|
+
if (this.mode === _EDIT) {
|
|
725
|
+
return { ...this.value };
|
|
726
|
+
} else {
|
|
727
|
+
return this.$store.getters['customisation/getPreviewCluster'];
|
|
728
|
+
}
|
|
729
|
+
}
|
|
701
730
|
},
|
|
702
731
|
|
|
703
732
|
watch: {
|
|
733
|
+
clusterBadgeAbbreviation: {
|
|
734
|
+
immediate: true,
|
|
735
|
+
handler(neu) {
|
|
736
|
+
if (!neu) {
|
|
737
|
+
return;
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
if (Object.keys(neu.badge).length <= 0) {
|
|
741
|
+
return { ...this.value };
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
const obj = {
|
|
745
|
+
[CLUSTER_BADGE.ICON_TEXT]: neu.badge.iconText, [CLUSTER_BADGE.COLOR]: neu.badge.color, [CLUSTER_BADGE.TEXT]: neu.badge.text
|
|
746
|
+
};
|
|
747
|
+
|
|
748
|
+
this.value.metadata.annotations = {
|
|
749
|
+
...this.value.metadata.annotations,
|
|
750
|
+
...obj
|
|
751
|
+
};
|
|
752
|
+
}
|
|
753
|
+
},
|
|
704
754
|
|
|
705
755
|
credentialId(val) {
|
|
706
|
-
if (
|
|
756
|
+
if (val) {
|
|
707
757
|
this.credential = this.$store.getters['rancher/byId'](NORMAN.CLOUD_CREDENTIAL, this.credentialId);
|
|
708
758
|
|
|
709
759
|
if (this.isHarvesterDriver) {
|
|
@@ -718,7 +768,7 @@ export default {
|
|
|
718
768
|
|
|
719
769
|
addonNames(neu, old) {
|
|
720
770
|
// To catch the 'some addons' --> 'no addons' case also check array length (`difference([], [1,2,3]) === []`)
|
|
721
|
-
const diff = old.length !== neu.length || difference(neu, old).length
|
|
771
|
+
const diff = old.length !== neu.length || difference(neu, old).length;
|
|
722
772
|
|
|
723
773
|
if (diff) {
|
|
724
774
|
// Allow time for addonNames to update... then fetch any missing addons
|
|
@@ -780,32 +830,32 @@ export default {
|
|
|
780
830
|
* Initialize all the cluster specs
|
|
781
831
|
*/
|
|
782
832
|
async initSpecs() {
|
|
783
|
-
if (
|
|
833
|
+
if (!this.value.spec) {
|
|
784
834
|
set(this.value, 'spec', {});
|
|
785
835
|
}
|
|
786
836
|
|
|
787
|
-
if (
|
|
837
|
+
if (!this.value.spec.machineSelectorConfig) {
|
|
788
838
|
set(this.value.spec, 'machineSelectorConfig', []);
|
|
789
839
|
}
|
|
790
840
|
|
|
791
|
-
if (
|
|
841
|
+
if (!this.value.spec.machineSelectorConfig.find((x) => !x.machineLabelSelector)) {
|
|
792
842
|
this.value.spec.machineSelectorConfig.unshift({ config: {} });
|
|
793
843
|
}
|
|
794
844
|
|
|
795
|
-
if (
|
|
845
|
+
if (this.value.spec.cloudCredentialSecretName) {
|
|
796
846
|
await this.$store.dispatch('rancher/findAll', { type: NORMAN.CLOUD_CREDENTIAL });
|
|
797
847
|
this.credentialId = `${ this.value.spec.cloudCredentialSecretName }`;
|
|
798
848
|
}
|
|
799
849
|
|
|
800
|
-
if (
|
|
850
|
+
if (!this.value.spec.kubernetesVersion) {
|
|
801
851
|
set(this.value.spec, 'kubernetesVersion', this.defaultVersion);
|
|
802
852
|
}
|
|
803
853
|
|
|
804
|
-
if (
|
|
854
|
+
if (this.rkeConfig.etcd?.s3?.bucket) {
|
|
805
855
|
this.s3Backup = true;
|
|
806
856
|
}
|
|
807
857
|
|
|
808
|
-
if (
|
|
858
|
+
if (!this.rkeConfig.etcd) {
|
|
809
859
|
set(this.rkeConfig, 'etcd', {
|
|
810
860
|
disableSnapshots: false,
|
|
811
861
|
s3: null,
|
|
@@ -824,14 +874,14 @@ export default {
|
|
|
824
874
|
this.allNamespaces = await this.$store.dispatch('management/findAll', { type: NAMESPACE });
|
|
825
875
|
}
|
|
826
876
|
|
|
827
|
-
if (
|
|
877
|
+
if (!this.machinePools) {
|
|
828
878
|
await this.initMachinePools(this.value.spec.rkeConfig.machinePools);
|
|
829
|
-
if (
|
|
879
|
+
if (this.mode === _CREATE && !this.machinePools.length) {
|
|
830
880
|
await this.addMachinePool();
|
|
831
881
|
}
|
|
832
882
|
}
|
|
833
883
|
|
|
834
|
-
if (
|
|
884
|
+
if (this.value.spec.defaultPodSecurityAdmissionConfigurationTemplateName === undefined) {
|
|
835
885
|
set(this.value.spec, 'defaultPodSecurityAdmissionConfigurationTemplateName', '');
|
|
836
886
|
}
|
|
837
887
|
},
|
|
@@ -840,7 +890,7 @@ export default {
|
|
|
840
890
|
* Fetch RKE versions and their configurations to be mapped to the form
|
|
841
891
|
*/
|
|
842
892
|
async fetchRke2Versions() {
|
|
843
|
-
if (
|
|
893
|
+
if (!this.rke2Versions) {
|
|
844
894
|
const hash = {
|
|
845
895
|
rke2Versions: this.$store.dispatch('management/request', { url: '/v1-rke2-release/releases' }),
|
|
846
896
|
k3sVersions: this.$store.dispatch('management/request', { url: '/v1-k3s-release/releases' }),
|
|
@@ -886,7 +936,7 @@ export default {
|
|
|
886
936
|
defaultK3s = k3sChannels.find((x) => x.id === 'default')?.latest;
|
|
887
937
|
}
|
|
888
938
|
|
|
889
|
-
if (
|
|
939
|
+
if (!this.rke2Versions.length && !this.k3sVersions.length) {
|
|
890
940
|
throw new Error('No version info found in KDM');
|
|
891
941
|
}
|
|
892
942
|
|
|
@@ -938,12 +988,12 @@ export default {
|
|
|
938
988
|
*/
|
|
939
989
|
setAgentConfiguration() {
|
|
940
990
|
// Cluster Agent Configuration
|
|
941
|
-
if (
|
|
991
|
+
if (!this.value.spec[CLUSTER_AGENT_CUSTOMIZATION]) {
|
|
942
992
|
set(this.value.spec, CLUSTER_AGENT_CUSTOMIZATION, {});
|
|
943
993
|
}
|
|
944
994
|
|
|
945
995
|
// Fleet Agent Configuration
|
|
946
|
-
if (
|
|
996
|
+
if (!this.value.spec[FLEET_AGENT_CUSTOMIZATION]) {
|
|
947
997
|
set(this.value.spec, FLEET_AGENT_CUSTOMIZATION, {});
|
|
948
998
|
}
|
|
949
999
|
},
|
|
@@ -968,8 +1018,8 @@ export default {
|
|
|
968
1018
|
async initMachinePools(existing) {
|
|
969
1019
|
const out = [];
|
|
970
1020
|
|
|
971
|
-
if (
|
|
972
|
-
for (
|
|
1021
|
+
if (existing?.length) {
|
|
1022
|
+
for (const pool of existing) {
|
|
973
1023
|
let type;
|
|
974
1024
|
|
|
975
1025
|
if (this.isElementalCluster) {
|
|
@@ -981,7 +1031,7 @@ export default {
|
|
|
981
1031
|
let config;
|
|
982
1032
|
let configMissing = false;
|
|
983
1033
|
|
|
984
|
-
if (
|
|
1034
|
+
if (this.$store.getters['management/canList'](type)) {
|
|
985
1035
|
try {
|
|
986
1036
|
config = await this.$store.dispatch('management/find', {
|
|
987
1037
|
type,
|
|
@@ -1018,7 +1068,7 @@ export default {
|
|
|
1018
1068
|
|
|
1019
1069
|
async addMachinePool(idx) {
|
|
1020
1070
|
// this.machineConfigSchema is the schema for the Machine Pool's machine configuration for the given provider
|
|
1021
|
-
if (
|
|
1071
|
+
if (!this.machineConfigSchema) {
|
|
1022
1072
|
return;
|
|
1023
1073
|
}
|
|
1024
1074
|
|
|
@@ -1065,7 +1115,7 @@ export default {
|
|
|
1065
1115
|
},
|
|
1066
1116
|
};
|
|
1067
1117
|
|
|
1068
|
-
if (this.provider ===
|
|
1118
|
+
if (this.provider === VMWARE_VSPHERE) {
|
|
1069
1119
|
pool.pool.machineOS = 'linux';
|
|
1070
1120
|
}
|
|
1071
1121
|
|
|
@@ -1076,7 +1126,7 @@ export default {
|
|
|
1076
1126
|
this.machinePools.push(pool);
|
|
1077
1127
|
|
|
1078
1128
|
this.$nextTick(() => {
|
|
1079
|
-
if (
|
|
1129
|
+
if (this.$refs.pools?.select) {
|
|
1080
1130
|
this.$refs.pools.select(name);
|
|
1081
1131
|
}
|
|
1082
1132
|
});
|
|
@@ -1085,11 +1135,11 @@ export default {
|
|
|
1085
1135
|
removeMachinePool(idx) {
|
|
1086
1136
|
const entry = this.machinePools[idx];
|
|
1087
1137
|
|
|
1088
|
-
if (
|
|
1138
|
+
if (!entry) {
|
|
1089
1139
|
return;
|
|
1090
1140
|
}
|
|
1091
1141
|
|
|
1092
|
-
if (
|
|
1142
|
+
if (entry.create) {
|
|
1093
1143
|
// If this is a new pool that isn't saved yet, it can just be dropped
|
|
1094
1144
|
removeObject(this.machinePools, entry);
|
|
1095
1145
|
} else {
|
|
@@ -1110,7 +1160,12 @@ export default {
|
|
|
1110
1160
|
// We don't allow the user to edit any of the fields in metadata from the UI so it's safe to override it with the
|
|
1111
1161
|
// metadata defined by the latest backend value. This is primarily used to ensure the resourceVersion is up to date.
|
|
1112
1162
|
delete clonedCurrentConfig.metadata;
|
|
1113
|
-
|
|
1163
|
+
|
|
1164
|
+
if (this.provider === VMWARE_VSPHERE) {
|
|
1165
|
+
machinePool.config = vspherePoolConfigMerge(clonedLatestConfig, clonedCurrentConfig);
|
|
1166
|
+
} else {
|
|
1167
|
+
machinePool.config = merge(clonedLatestConfig, clonedCurrentConfig);
|
|
1168
|
+
}
|
|
1114
1169
|
}
|
|
1115
1170
|
},
|
|
1116
1171
|
|
|
@@ -1148,8 +1203,8 @@ export default {
|
|
|
1148
1203
|
return await this.extensionProvider.saveMachinePoolConfigs(this.machinePools, this.value);
|
|
1149
1204
|
}
|
|
1150
1205
|
|
|
1151
|
-
for (
|
|
1152
|
-
if (
|
|
1206
|
+
for (const entry of this.machinePools) {
|
|
1207
|
+
if (entry.remove) {
|
|
1153
1208
|
continue;
|
|
1154
1209
|
}
|
|
1155
1210
|
|
|
@@ -1160,8 +1215,8 @@ export default {
|
|
|
1160
1215
|
|
|
1161
1216
|
const prefix = `${ this.value.metadata.name }-${ entry.pool.name }`.substr(0, 50).toLowerCase();
|
|
1162
1217
|
|
|
1163
|
-
if (
|
|
1164
|
-
if (
|
|
1218
|
+
if (entry.create) {
|
|
1219
|
+
if (!entry.config.metadata?.name) {
|
|
1165
1220
|
entry.config.metadata.generateName = `nc-${ prefix }-`;
|
|
1166
1221
|
}
|
|
1167
1222
|
|
|
@@ -1171,12 +1226,12 @@ export default {
|
|
|
1171
1226
|
entry.pool.machineConfigRef.name = neu.metadata.name;
|
|
1172
1227
|
entry.create = false;
|
|
1173
1228
|
entry.update = true;
|
|
1174
|
-
} else if (
|
|
1229
|
+
} else if (entry.update) {
|
|
1175
1230
|
entry.config = await entry.config.save();
|
|
1176
1231
|
}
|
|
1177
1232
|
|
|
1178
1233
|
// Ensure Elemental clusters have a hostname prefix
|
|
1179
|
-
if (this.isElementalCluster && !entry.pool.hostnamePrefix
|
|
1234
|
+
if (this.isElementalCluster && !entry.pool.hostnamePrefix) {
|
|
1180
1235
|
entry.pool.hostnamePrefix = `${ prefix }-`;
|
|
1181
1236
|
}
|
|
1182
1237
|
|
|
@@ -1187,11 +1242,11 @@ export default {
|
|
|
1187
1242
|
},
|
|
1188
1243
|
|
|
1189
1244
|
async cleanupMachinePools() {
|
|
1190
|
-
for (
|
|
1191
|
-
if (
|
|
1245
|
+
for (const entry of this.machinePools) {
|
|
1246
|
+
if (entry.remove && entry.config) {
|
|
1192
1247
|
try {
|
|
1193
1248
|
await entry.config.remove();
|
|
1194
|
-
} catch (e) {}
|
|
1249
|
+
} catch (e) { }
|
|
1195
1250
|
}
|
|
1196
1251
|
}
|
|
1197
1252
|
},
|
|
@@ -1212,7 +1267,7 @@ export default {
|
|
|
1212
1267
|
},
|
|
1213
1268
|
|
|
1214
1269
|
cancelCredential() {
|
|
1215
|
-
if (
|
|
1270
|
+
if (this.$refs.cruresource) {
|
|
1216
1271
|
this.$refs.cruresource.emitOrRoute();
|
|
1217
1272
|
}
|
|
1218
1273
|
},
|
|
@@ -1220,7 +1275,7 @@ export default {
|
|
|
1220
1275
|
done() {
|
|
1221
1276
|
let routeName = 'c-cluster-product-resource';
|
|
1222
1277
|
|
|
1223
|
-
if (
|
|
1278
|
+
if (this.mode === _CREATE && (this.provider === 'import' || this.provider === 'custom')) {
|
|
1224
1279
|
// Go show the registration command
|
|
1225
1280
|
routeName = 'c-cluster-product-resource-namespace-id';
|
|
1226
1281
|
}
|
|
@@ -1329,7 +1384,9 @@ export default {
|
|
|
1329
1384
|
set(this.chartValues, `${ HARVESTER_CLOUD_PROVIDER }.global.cattle.clusterName`, this.value.metadata.name);
|
|
1330
1385
|
}
|
|
1331
1386
|
|
|
1332
|
-
|
|
1387
|
+
const distroRoot = this.value?.spec?.rkeConfig?.dataDirectories?.k8sDistro?.length ? this.value?.spec?.rkeConfig?.dataDirectories?.k8sDistro : '/var/lib/rancher/rke2';
|
|
1388
|
+
|
|
1389
|
+
set(this.chartValues, `${ HARVESTER_CLOUD_PROVIDER }.cloudConfigPath`, `${ distroRoot }/etc/config-files/cloud-provider-config`);
|
|
1333
1390
|
}
|
|
1334
1391
|
} catch (err) {
|
|
1335
1392
|
this.errors.push(err);
|
|
@@ -1365,7 +1422,7 @@ export default {
|
|
|
1365
1422
|
return await this.extensionProvider?.saveCluster(this.value, this.schema);
|
|
1366
1423
|
}
|
|
1367
1424
|
|
|
1368
|
-
if (
|
|
1425
|
+
if (this.isCreate) {
|
|
1369
1426
|
url = url || this.schema.linkFor('collection');
|
|
1370
1427
|
const res = await this.value.save({ url });
|
|
1371
1428
|
|
|
@@ -1410,12 +1467,12 @@ export default {
|
|
|
1410
1467
|
* 2) We're ready to cache any values the user provides for each addon
|
|
1411
1468
|
*/
|
|
1412
1469
|
async initAddons() {
|
|
1413
|
-
for (
|
|
1470
|
+
for (const chartName of this.addonNames) {
|
|
1414
1471
|
const entry = this.chartVersions[chartName];
|
|
1415
1472
|
|
|
1416
1473
|
// prevent fetching of addon config for 'none' CNI option
|
|
1417
1474
|
// https://github.com/rancher/dashboard/issues/10338
|
|
1418
|
-
if (
|
|
1475
|
+
if (this.versionInfo[chartName] || chartName.includes('none')) {
|
|
1419
1476
|
continue;
|
|
1420
1477
|
}
|
|
1421
1478
|
|
|
@@ -1451,7 +1508,7 @@ export default {
|
|
|
1451
1508
|
refreshComponentWithYamls(key) {
|
|
1452
1509
|
const component = this.$refs[key];
|
|
1453
1510
|
|
|
1454
|
-
if (
|
|
1511
|
+
if (component) {
|
|
1455
1512
|
this.refreshYamls(component.$refs);
|
|
1456
1513
|
}
|
|
1457
1514
|
},
|
|
@@ -1459,11 +1516,11 @@ export default {
|
|
|
1459
1516
|
refreshYamls(refs) {
|
|
1460
1517
|
const keys = Object.keys(refs).filter((x) => x.startsWith('yaml'));
|
|
1461
1518
|
|
|
1462
|
-
for (
|
|
1519
|
+
for (const k of keys) {
|
|
1463
1520
|
const entry = refs[k];
|
|
1464
1521
|
const list = isArray(entry) ? entry : [entry];
|
|
1465
1522
|
|
|
1466
|
-
for (
|
|
1523
|
+
for (const component of list) {
|
|
1467
1524
|
component?.refresh(); // `yaml` ref can be undefined on switching from Basic to Addon tab (Azure --> Amazon --> addon)
|
|
1468
1525
|
}
|
|
1469
1526
|
}
|
|
@@ -1490,23 +1547,23 @@ export default {
|
|
|
1490
1547
|
},
|
|
1491
1548
|
|
|
1492
1549
|
initServerAgentArgs() {
|
|
1493
|
-
for (
|
|
1494
|
-
if (
|
|
1550
|
+
for (const k in this.serverArgs) {
|
|
1551
|
+
if (this.serverConfig[k] === undefined) {
|
|
1495
1552
|
const def = this.serverArgs[k].default;
|
|
1496
1553
|
|
|
1497
1554
|
set(this.serverConfig, k, (def !== undefined ? def : undefined));
|
|
1498
1555
|
}
|
|
1499
1556
|
}
|
|
1500
1557
|
|
|
1501
|
-
for (
|
|
1502
|
-
if (
|
|
1558
|
+
for (const k in this.agentArgs) {
|
|
1559
|
+
if (this.agentConfig?.[k] === undefined) {
|
|
1503
1560
|
const def = this.agentArgs[k].default;
|
|
1504
1561
|
|
|
1505
1562
|
set(this.agentConfig, k, (def !== undefined ? def : undefined));
|
|
1506
1563
|
}
|
|
1507
1564
|
}
|
|
1508
1565
|
|
|
1509
|
-
if (
|
|
1566
|
+
if (!this.serverConfig?.profile) {
|
|
1510
1567
|
set(this.serverConfig, 'profile', null);
|
|
1511
1568
|
}
|
|
1512
1569
|
},
|
|
@@ -1539,22 +1596,22 @@ export default {
|
|
|
1539
1596
|
let registrySecret = null;
|
|
1540
1597
|
let regs = this.rkeConfig.registries;
|
|
1541
1598
|
|
|
1542
|
-
if (
|
|
1599
|
+
if (!regs) {
|
|
1543
1600
|
regs = {};
|
|
1544
1601
|
set(this.rkeConfig, 'registries', regs);
|
|
1545
1602
|
}
|
|
1546
1603
|
|
|
1547
|
-
if (
|
|
1604
|
+
if (!regs.configs) {
|
|
1548
1605
|
set(regs, 'configs', {});
|
|
1549
1606
|
}
|
|
1550
1607
|
|
|
1551
|
-
if (
|
|
1608
|
+
if (!regs.mirrors) {
|
|
1552
1609
|
set(regs, 'mirrors', {});
|
|
1553
1610
|
}
|
|
1554
1611
|
|
|
1555
1612
|
const config = regs.configs[this.registryHost];
|
|
1556
1613
|
|
|
1557
|
-
if (
|
|
1614
|
+
if (config) {
|
|
1558
1615
|
registrySecret = config.authConfigSecretName;
|
|
1559
1616
|
}
|
|
1560
1617
|
|
|
@@ -1574,21 +1631,21 @@ export default {
|
|
|
1574
1631
|
setRegistryConfig() {
|
|
1575
1632
|
const hostname = (this.registryHost || '').trim();
|
|
1576
1633
|
|
|
1577
|
-
if (
|
|
1634
|
+
if (this.systemRegistry) {
|
|
1578
1635
|
// Empty string overrides the system default to nothing
|
|
1579
1636
|
set(this.agentConfig, 'system-default-registry', '');
|
|
1580
1637
|
} else {
|
|
1581
1638
|
// No need to set anything
|
|
1582
1639
|
set(this.agentConfig, 'system-default-registry', undefined);
|
|
1583
1640
|
}
|
|
1584
|
-
if (
|
|
1641
|
+
if (!hostname || hostname === this.systemRegistry) {
|
|
1585
1642
|
// Undefined removes the key which uses the global setting without hardcoding it into the config
|
|
1586
1643
|
set(this.agentConfig, 'system-default-registry', undefined);
|
|
1587
1644
|
} else {
|
|
1588
1645
|
set(this.agentConfig, 'system-default-registry', hostname);
|
|
1589
1646
|
}
|
|
1590
1647
|
|
|
1591
|
-
if (
|
|
1648
|
+
if (hostname && this.registrySecret) {
|
|
1592
1649
|
// For a registry with basic auth, but no mirrors,
|
|
1593
1650
|
// add a single registry config with the basic auth secret.
|
|
1594
1651
|
const basicAuthConfig = {
|
|
@@ -1637,12 +1694,12 @@ export default {
|
|
|
1637
1694
|
let isCurrentVersion = false;
|
|
1638
1695
|
let label = obj.id;
|
|
1639
1696
|
|
|
1640
|
-
if (
|
|
1697
|
+
if (currentVersion) {
|
|
1641
1698
|
disabled = compare(obj.id, currentVersion) < 0;
|
|
1642
1699
|
isCurrentVersion = compare(obj.id, currentVersion) === 0;
|
|
1643
1700
|
}
|
|
1644
1701
|
|
|
1645
|
-
if (
|
|
1702
|
+
if (defaultVersion) {
|
|
1646
1703
|
experimental = compare(defaultVersion, obj.id) < 0;
|
|
1647
1704
|
}
|
|
1648
1705
|
|
|
@@ -1914,7 +1971,7 @@ export default {
|
|
|
1914
1971
|
return this.t('cluster.banner.machinePoolError', {
|
|
1915
1972
|
count: x[1].length, pool_name: x[0], fields: formattedFields
|
|
1916
1973
|
}, true);
|
|
1917
|
-
}
|
|
1974
|
+
})
|
|
1918
1975
|
.filter((x) => x);
|
|
1919
1976
|
|
|
1920
1977
|
if (!errors) {
|
|
@@ -1925,7 +1982,7 @@ export default {
|
|
|
1925
1982
|
},
|
|
1926
1983
|
handleS3BackupChanged(neu) {
|
|
1927
1984
|
this.s3Backup = neu;
|
|
1928
|
-
if (
|
|
1985
|
+
if (neu) {
|
|
1929
1986
|
// We need to make sure that s3 doesn't already have an existing value otherwise when editing a cluster with s3 defined this will clear s3.
|
|
1930
1987
|
if (isEmpty(this.rkeConfig.etcd?.s3)) {
|
|
1931
1988
|
set(this.rkeConfig.etcd, 's3', {});
|
|
@@ -1961,7 +2018,7 @@ export default {
|
|
|
1961
2018
|
}
|
|
1962
2019
|
|
|
1963
2020
|
for (const [index] of this.machinePools.entries()) { // validator machine config
|
|
1964
|
-
if (
|
|
2021
|
+
if (typeof this.$refs.pool[index]?.test === 'function') {
|
|
1965
2022
|
try {
|
|
1966
2023
|
const res = await this.$refs.pool[index].test();
|
|
1967
2024
|
|
|
@@ -2001,12 +2058,13 @@ export default {
|
|
|
2001
2058
|
@done="done"
|
|
2002
2059
|
@finish="saveOverride"
|
|
2003
2060
|
@cancel="cancel"
|
|
2004
|
-
@error="e=>errors = e"
|
|
2061
|
+
@error="e => errors = e"
|
|
2005
2062
|
>
|
|
2006
2063
|
<div class="header-warnings">
|
|
2007
2064
|
<Banner
|
|
2008
2065
|
v-if="isEdit"
|
|
2009
2066
|
color="warning"
|
|
2067
|
+
data-testid="edit-cluster-reprovisioning-documentation"
|
|
2010
2068
|
>
|
|
2011
2069
|
<span v-clean-html="t('cluster.banner.rke2-k3-reprovisioning', {}, true)" />
|
|
2012
2070
|
</Banner>
|
|
@@ -2038,8 +2096,18 @@ export default {
|
|
|
2038
2096
|
name-placeholder="cluster.name.placeholder"
|
|
2039
2097
|
description-label="cluster.description.label"
|
|
2040
2098
|
description-placeholder="cluster.description.placeholder"
|
|
2041
|
-
:rules="{name:fvGetAndReportPathRules('metadata.name')}"
|
|
2042
|
-
|
|
2099
|
+
:rules="{ name: fvGetAndReportPathRules('metadata.name') }"
|
|
2100
|
+
>
|
|
2101
|
+
<template
|
|
2102
|
+
slot="customize"
|
|
2103
|
+
>
|
|
2104
|
+
<ClusterAppearance
|
|
2105
|
+
:name="clusterName"
|
|
2106
|
+
:currentCluster="currentCluster"
|
|
2107
|
+
:mode="mode"
|
|
2108
|
+
/>
|
|
2109
|
+
</template>
|
|
2110
|
+
</NameNsDescription>
|
|
2043
2111
|
|
|
2044
2112
|
<Banner
|
|
2045
2113
|
v-if="appsOSWarning"
|
|
@@ -2110,8 +2178,9 @@ export default {
|
|
|
2110
2178
|
:machine-pools="machinePools"
|
|
2111
2179
|
:busy="busy"
|
|
2112
2180
|
:pool-id="obj.id"
|
|
2181
|
+
:pool-create-mode="obj.create"
|
|
2113
2182
|
@error="handleMachinePoolError"
|
|
2114
|
-
@validationChanged="v=>machinePoolValidationChanged(obj.id, v)"
|
|
2183
|
+
@validationChanged="v => machinePoolValidationChanged(obj.id, v)"
|
|
2115
2184
|
/>
|
|
2116
2185
|
</Tab>
|
|
2117
2186
|
</template>
|
|
@@ -2351,13 +2420,15 @@ export default {
|
|
|
2351
2420
|
</template>
|
|
2352
2421
|
|
|
2353
2422
|
<style lang="scss" scoped>
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2423
|
+
.min-height {
|
|
2424
|
+
min-height: 40em;
|
|
2425
|
+
}
|
|
2426
|
+
|
|
2427
|
+
.patch-version {
|
|
2428
|
+
margin-top: 5px;
|
|
2429
|
+
}
|
|
2430
|
+
|
|
2431
|
+
.header-warnings .banner {
|
|
2432
|
+
margin-bottom: 0;
|
|
2433
|
+
}
|
|
2363
2434
|
</style>
|