@rancher/shell 3.0.5-rc.5 → 3.0.5-rc.6

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.
Files changed (312) hide show
  1. package/assets/data/aws-regions.json +1 -0
  2. package/assets/images/key.svg +17 -0
  3. package/assets/styles/base/_spacing.scss +2 -2
  4. package/assets/styles/global/_form.scss +1 -1
  5. package/assets/styles/global/_labeled-input.scss +1 -1
  6. package/assets/styles/themes/_dark.scss +3 -0
  7. package/assets/styles/themes/_light.scss +3 -0
  8. package/assets/styles/vendor/vue-select.scss +1 -1
  9. package/assets/translations/en-us.yaml +404 -64
  10. package/assets/translations/zh-hans.yaml +3 -4
  11. package/cloud-credential/gcp.vue +9 -1
  12. package/components/AppModal.vue +2 -0
  13. package/components/CodeMirror.vue +1 -1
  14. package/components/ConfigMapSettings/Settings.vue +377 -0
  15. package/components/ConfigMapSettings/index.vue +354 -0
  16. package/components/CruResource.vue +1 -2
  17. package/components/DetailText.vue +61 -11
  18. package/components/Drawer/Chrome.vue +116 -0
  19. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +61 -0
  20. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
  21. package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
  22. package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
  23. package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +82 -0
  24. package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
  25. package/components/Drawer/ResourceDetailDrawer/composables.ts +50 -0
  26. package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
  27. package/components/Drawer/ResourceDetailDrawer/index.vue +110 -0
  28. package/components/GrowlManager.vue +16 -15
  29. package/components/IconOrSvg.vue +5 -0
  30. package/components/KeyValueView.vue +1 -1
  31. package/components/LocaleSelector.vue +9 -1
  32. package/components/ProgressBarMulti.vue +1 -0
  33. package/components/PromptModal.vue +6 -1
  34. package/components/RelatedResources.vue +4 -12
  35. package/components/Resource/Detail/Additional.vue +46 -0
  36. package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +1 -1
  37. package/components/Resource/Detail/Metadata/Annotations/index.vue +5 -0
  38. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
  39. package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +37 -254
  40. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +298 -0
  41. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +27 -5
  42. package/components/Resource/Detail/Metadata/KeyValue.vue +25 -17
  43. package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +1 -1
  44. package/components/Resource/Detail/Metadata/Labels/index.vue +4 -0
  45. package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +1 -1
  46. package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +1 -1
  47. package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
  48. package/components/Resource/Detail/Metadata/composables.ts +60 -11
  49. package/components/Resource/Detail/Metadata/index.vue +12 -5
  50. package/components/Resource/Detail/Page.vue +15 -0
  51. package/components/Resource/Detail/ResourceRow.vue +37 -18
  52. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
  53. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
  54. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
  55. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
  56. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
  57. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
  58. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
  59. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
  60. package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
  61. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
  62. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
  63. package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
  64. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
  65. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
  66. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
  67. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
  68. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
  69. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
  70. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
  71. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
  72. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
  73. package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
  74. package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
  75. package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
  76. package/components/Resource/Detail/TitleBar/Title.vue +2 -1
  77. package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +1 -1
  78. package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +1 -1
  79. package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
  80. package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +1 -1
  81. package/components/Resource/Detail/TitleBar/composables.ts +44 -0
  82. package/components/Resource/Detail/TitleBar/index.vue +83 -11
  83. package/components/Resource/Detail/composables.ts +45 -0
  84. package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
  85. package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
  86. package/components/ResourceDetail/Masthead/index.vue +65 -0
  87. package/components/ResourceDetail/Masthead/latest.vue +44 -0
  88. package/components/ResourceDetail/__tests__/index.test.ts +26 -5
  89. package/components/ResourceDetail/index.vue +30 -16
  90. package/components/ResourceDetail/legacy.vue +18 -1
  91. package/components/ResourceList/Masthead.vue +6 -0
  92. package/components/ResourceYaml.vue +14 -1
  93. package/components/SlideInPanelManager.vue +46 -7
  94. package/components/StateDot/index.vue +28 -0
  95. package/components/Tabbed/index.vue +11 -15
  96. package/components/Wizard.vue +4 -2
  97. package/components/__tests__/ConfigMapSettings.test.ts +376 -0
  98. package/components/__tests__/GrowlManager.test.ts +0 -25
  99. package/components/auth/login/ldap.vue +1 -1
  100. package/components/fleet/FleetApplications.vue +0 -7
  101. package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
  102. package/components/fleet/FleetClusterTargets/index.vue +455 -0
  103. package/components/fleet/FleetClusters.vue +25 -6
  104. package/components/fleet/FleetGitRepoPaths.vue +476 -0
  105. package/components/fleet/FleetHelmOps.vue +8 -0
  106. package/components/fleet/FleetRepos.vue +1 -6
  107. package/components/fleet/FleetResources.vue +4 -5
  108. package/components/fleet/FleetValuesFrom.vue +295 -0
  109. package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
  110. package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
  111. package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +13 -13
  112. package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
  113. package/components/fleet/dashboard/ResourceCard.vue +1 -0
  114. package/components/fleet/dashboard/ResourceCardSummary.vue +1 -5
  115. package/components/fleet/dashboard/ResourceDetails.vue +8 -10
  116. package/components/fleet/dashboard/ResourcePanel.vue +15 -8
  117. package/components/form/ArrayList.vue +13 -2
  118. package/components/form/ChangePassword.vue +3 -1
  119. package/components/form/Footer.vue +10 -4
  120. package/components/form/KeyValue.vue +81 -43
  121. package/components/form/LabeledSelect.vue +56 -16
  122. package/components/form/Labels.vue +90 -17
  123. package/components/form/MatchExpressions.vue +46 -5
  124. package/components/form/NameNsDescription.vue +1 -1
  125. package/components/form/ResourceSelector.vue +1 -0
  126. package/components/form/ResourceTabs/index.vue +5 -0
  127. package/components/form/SecretSelector.vue +9 -2
  128. package/components/form/Select.vue +57 -19
  129. package/components/form/SimpleSecretSelector.vue +9 -2
  130. package/components/form/Taints.vue +21 -2
  131. package/components/form/UnitInput.vue +8 -0
  132. package/components/form/ValueFromResource.vue +1 -1
  133. package/components/form/__tests__/LabeledSelect.test.ts +8 -4
  134. package/components/form/__tests__/Labels.test.ts +360 -0
  135. package/components/form/__tests__/MatchExpressions.test.ts +16 -13
  136. package/components/form/__tests__/Select.test.ts +5 -2
  137. package/components/formatter/FleetApplicationSource.vue +1 -1
  138. package/components/formatter/WorkloadHealthScale.vue +1 -1
  139. package/components/google/AccountAccess.vue +211 -0
  140. package/components/google/types/gcp.d.ts +136 -0
  141. package/components/google/types/index.d.ts +101 -0
  142. package/components/google/util/__mocks__/gcp.ts +465 -0
  143. package/components/google/util/formatter.ts +82 -0
  144. package/components/google/util/gcp.ts +134 -0
  145. package/components/google/util/index.d.ts +11 -0
  146. package/components/nav/Favorite.vue +1 -1
  147. package/components/nav/Group.vue +70 -47
  148. package/components/nav/Header.vue +5 -1
  149. package/components/nav/NamespaceFilter.vue +13 -1
  150. package/components/nav/NotificationCenter/Notification.vue +510 -0
  151. package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
  152. package/components/nav/NotificationCenter/index.vue +148 -0
  153. package/composables/drawer.ts +26 -0
  154. package/composables/resources.test.ts +63 -0
  155. package/composables/resources.ts +38 -0
  156. package/composables/useIsNewDetailPageEnabled.ts +17 -0
  157. package/config/labels-annotations.js +6 -0
  158. package/config/product/auth.js +16 -1
  159. package/config/product/{cis.js → compliance.js} +23 -26
  160. package/config/product/explorer.js +5 -1
  161. package/config/product/fleet.js +7 -0
  162. package/config/product/settings.js +22 -11
  163. package/config/query-params.js +3 -0
  164. package/config/roles.ts +1 -1
  165. package/config/router/navigation-guards/authentication.js +51 -2
  166. package/config/router/routes.js +27 -31
  167. package/config/settings.ts +21 -3
  168. package/config/store.js +2 -0
  169. package/config/system-namespaces.js +1 -1
  170. package/config/table-headers.js +2 -2
  171. package/config/types.js +15 -6
  172. package/core/plugin.ts +32 -7
  173. package/core/types.ts +18 -1
  174. package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
  175. package/detail/management.cattle.io.fleetworkspace.vue +18 -27
  176. package/detail/management.cattle.io.oidcclient.vue +369 -0
  177. package/detail/node.vue +2 -2
  178. package/detail/pod.vue +2 -2
  179. package/detail/service.vue +10 -1
  180. package/detail/workload/index.vue +8 -2
  181. package/dialog/ExtensionCatalogUninstallDialog.vue +7 -4
  182. package/dialog/GenericPrompt.vue +1 -1
  183. package/dialog/ImportDialog.vue +8 -8
  184. package/dialog/OidcClientSecretDialog.vue +117 -0
  185. package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
  186. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +5 -2
  187. package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -1
  188. package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
  189. package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
  190. package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
  191. package/edit/configmap.vue +4 -1
  192. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
  193. package/edit/fleet.cattle.io.gitrepo.vue +44 -222
  194. package/edit/fleet.cattle.io.helmop.vue +44 -269
  195. package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
  196. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
  197. package/edit/logging-flow/index.vue +1 -0
  198. package/edit/logging.banzaicloud.io.output/index.vue +1 -0
  199. package/edit/management.cattle.io.fleetworkspace.vue +1 -0
  200. package/edit/management.cattle.io.oidcclient.vue +162 -0
  201. package/edit/management.cattle.io.project.vue +4 -1
  202. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  203. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
  204. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
  205. package/edit/monitoring.coreos.com.receiver/auth.vue +30 -30
  206. package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
  207. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  208. package/edit/monitoring.coreos.com.route.vue +1 -0
  209. package/edit/namespace.vue +1 -0
  210. package/edit/networking.istio.io.destinationrule/index.vue +4 -1
  211. package/edit/networking.k8s.io.ingress/index.vue +4 -1
  212. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +7 -2
  213. package/edit/networking.k8s.io.networkpolicy/index.vue +6 -2
  214. package/edit/node.vue +1 -0
  215. package/edit/persistentvolume/index.vue +4 -1
  216. package/edit/provisioning.cattle.io.cluster/rke2.vue +418 -382
  217. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +27 -27
  218. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
  219. package/edit/resources.cattle.io.restore.vue +1 -1
  220. package/edit/secret/index.vue +1 -0
  221. package/edit/service.vue +4 -1
  222. package/edit/serviceaccount.vue +4 -1
  223. package/edit/storage.k8s.io.storageclass/index.vue +4 -1
  224. package/edit/workload/index.vue +5 -0
  225. package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
  226. package/list/management.cattle.io.oidcclient.vue +108 -0
  227. package/list/node.vue +2 -0
  228. package/machine-config/amazonec2.vue +3 -24
  229. package/machine-config/components/GCEImage.vue +374 -0
  230. package/machine-config/google.vue +617 -0
  231. package/mixins/__tests__/brand.spec.ts +170 -0
  232. package/mixins/brand.js +16 -17
  233. package/mixins/create-edit-view/index.js +5 -0
  234. package/mixins/resource-fetch-api-pagination.js +16 -0
  235. package/mixins/vue-select-overrides.js +1 -0
  236. package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
  237. package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
  238. package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
  239. package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
  240. package/models/fleet-application.js +8 -79
  241. package/models/fleet.cattle.io.cluster.js +11 -0
  242. package/models/fleet.cattle.io.gitrepo.js +2 -2
  243. package/models/fleet.cattle.io.helmop.js +9 -39
  244. package/models/management.cattle.io.fleetworkspace.js +2 -1
  245. package/models/management.cattle.io.oidcclient.js +18 -0
  246. package/models/management.cattle.io.registration.js +3 -0
  247. package/models/provisioning.cattle.io.cluster.js +5 -5
  248. package/models/service.js +4 -0
  249. package/models/workload.js +5 -0
  250. package/package.json +1 -1
  251. package/pages/about.vue +4 -58
  252. package/pages/auth/login.vue +1 -1
  253. package/pages/c/_cluster/apps/charts/AddRepoLink.vue +0 -1
  254. package/pages/c/_cluster/apps/charts/index.vue +285 -81
  255. package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
  256. package/pages/c/_cluster/explorer/index.vue +3 -3
  257. package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
  258. package/pages/c/_cluster/fleet/application/create.vue +3 -2
  259. package/pages/c/_cluster/fleet/index.vue +94 -56
  260. package/pages/c/_cluster/fleet/settings/index.vue +229 -0
  261. package/pages/c/_cluster/longhorn/index.vue +5 -2
  262. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
  263. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
  264. package/pages/explorer/resource/detail/configmap.vue +30 -7
  265. package/pages/explorer/resource/detail/secret.vue +50 -0
  266. package/pages/home.vue +9 -55
  267. package/pages/support/index.vue +4 -6
  268. package/plugins/dashboard-store/actions.js +19 -5
  269. package/plugins/dashboard-store/getters.js +4 -0
  270. package/plugins/dashboard-store/resource-class.js +16 -2
  271. package/plugins/steve/steve-pagination-utils.ts +26 -18
  272. package/plugins/steve/subscribe.js +6 -1
  273. package/rancher-components/Banner/Banner.vue +13 -0
  274. package/rancher-components/Form/Checkbox/Checkbox.vue +9 -4
  275. package/rancher-components/Form/LabeledInput/LabeledInput.vue +1 -1
  276. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -0
  277. package/rancher-components/RcItemCard/RcItemCard.vue +8 -3
  278. package/store/auth.js +2 -0
  279. package/store/catalog.js +23 -1
  280. package/store/growl.js +97 -8
  281. package/store/index.js +6 -0
  282. package/store/notifications.ts +426 -0
  283. package/store/prefs.js +0 -1
  284. package/store/type-map.js +19 -16
  285. package/store/uiplugins.ts +15 -1
  286. package/types/fleet.d.ts +24 -0
  287. package/types/notifications/index.ts +74 -0
  288. package/types/shell/index.d.ts +46 -32
  289. package/types/store/dashboard-store.types.ts +16 -0
  290. package/utils/__tests__/fleet.test.ts +148 -0
  291. package/utils/__tests__/object.test.ts +54 -1
  292. package/utils/__tests__/string.test.ts +273 -1
  293. package/utils/__tests__/time.test.ts +31 -0
  294. package/utils/auth.js +9 -2
  295. package/utils/crypto/encryption.ts +103 -0
  296. package/utils/cspAdaptor.ts +51 -0
  297. package/utils/fleet.ts +54 -65
  298. package/utils/object.js +36 -0
  299. package/utils/pagination-utils.ts +1 -1
  300. package/utils/release-notes.ts +48 -0
  301. package/utils/selector-typed.ts +7 -2
  302. package/utils/string.js +24 -0
  303. package/utils/{time.js → time.ts} +25 -6
  304. package/utils/uiplugins.ts +22 -0
  305. package/utils/validators/formRules/index.ts +3 -0
  306. package/components/Resource/Detail/TitleBar/composable.ts +0 -31
  307. package/config/product/legacy.js +0 -62
  308. package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
  309. package/pages/c/_cluster/legacy/project/_page.vue +0 -57
  310. package/pages/c/_cluster/legacy/project/index.vue +0 -32
  311. package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
  312. /package/components/ResourceDetail/{Masthead.vue → Masthead/legacy.vue} +0 -0
@@ -6,6 +6,7 @@ import merge from 'lodash/merge';
6
6
  import CreateEditView from '@shell/mixins/create-edit-view';
7
7
  import FormValidation from '@shell/mixins/form-validation';
8
8
  import { normalizeName } from '@shell/utils/kube';
9
+ import AccountAccess from '@shell/components/google/AccountAccess.vue';
9
10
 
10
11
  import {
11
12
  CAPI,
@@ -66,6 +67,7 @@ import AddOnAdditionalManifest from '@shell/edit/provisioning.cattle.io.cluster/
66
67
  import VsphereUtils, { VMWARE_VSPHERE } from '@shell/utils/v-sphere';
67
68
  import { mapGetters } from 'vuex';
68
69
  const HARVESTER = 'harvester';
70
+ const GOOGLE = 'google';
69
71
  const HARVESTER_CLOUD_PROVIDER = 'harvester-cloud-provider';
70
72
  const NETBIOS_TRUNCATION_LENGTH = 15;
71
73
 
@@ -118,7 +120,8 @@ export default {
118
120
  AddOnConfig,
119
121
  Advanced,
120
122
  ClusterAppearance,
121
- AddOnAdditionalManifest
123
+ AddOnAdditionalManifest,
124
+ AccountAccess
122
125
  },
123
126
 
124
127
  mixins: [CreateEditView, FormValidation],
@@ -251,7 +254,7 @@ export default {
251
254
  path: 'metadata.name', rules: ['subDomain'], translationKey: 'nameNsDescription.name.label'
252
255
  }],
253
256
  harvesterVersionRange: {},
254
- cisOverride: false,
257
+ complianceOverride: false,
255
258
  truncateLimit,
256
259
  busy: false,
257
260
  machinePoolValidation: {}, // map of validation states for each machine pool
@@ -265,6 +268,8 @@ export default {
265
268
  clusterAgentDefaultPC: null,
266
269
  clusterAgentDefaultPDB: null,
267
270
  activeTab: null,
271
+ isAuthenticated: this.provider !== GOOGLE || this.mode === _EDIT,
272
+ projectId: null,
268
273
  REGISTRIES_TAB_NAME,
269
274
  labelForAddon
270
275
 
@@ -1319,7 +1324,7 @@ export default {
1319
1324
  // metadata defined by the latest backend value. This is primarily used to ensure the resourceVersion is up to date.
1320
1325
  delete clonedCurrentConfig.metadata;
1321
1326
 
1322
- if (this.provider === VMWARE_VSPHERE) {
1327
+ if (this.provider === VMWARE_VSPHERE || this.provider === GOOGLE) {
1323
1328
  machinePool.config = mergeWithReplace(clonedLatestConfig, clonedCurrentConfig, { mutateOriginal: true });
1324
1329
  } else {
1325
1330
  machinePool.config = merge(clonedLatestConfig, clonedCurrentConfig);
@@ -1370,12 +1375,31 @@ export default {
1370
1375
 
1371
1376
  // Capitals and such aren't allowed;
1372
1377
  entry.pool.name = normalizeName(entry.pool.name) || 'pool';
1378
+ const prefix = `${ this.value.metadata.name }-${ entry.pool.name }`;
1373
1379
 
1374
- const prefix = `${ this.value.metadata.name }-${ entry.pool.name }`.substr(0, 50).toLowerCase();
1380
+ const prefixFormatted = prefix.substr(0, 50).toLowerCase();
1381
+
1382
+ // For Google, we need to set internal and external firewall prefixes if enabled,
1383
+ // but it is better to track it here since cluster and pool names are guaranteed to be set by now.
1384
+ if (this.provider === GOOGLE) {
1385
+ if (!!entry.config.setInternalFirewallRulePrefix) {
1386
+ entry.config.internalFirewallRulePrefix = `${ this.value.metadata.name }`;
1387
+ } else if (!!entry.config.internalFirewallRulePrefix) {
1388
+ delete entry.config.internalFirewallRulePrefix;
1389
+ }
1390
+ if (!!entry.config.setExternalFirewallRulePrefix) {
1391
+ entry.config.externalFirewallRulePrefix = prefix;
1392
+ } else if (!!entry.config.externalFirewallRulePrefix) {
1393
+ delete entry.config.externalFirewallRulePrefix;
1394
+ }
1395
+ // These have to be removed regardless of their value because they are not part of the object we are sending
1396
+ delete entry.config.setInternalFirewallRulePrefix;
1397
+ delete entry.config.setExternalFirewallRulePrefix;
1398
+ }
1375
1399
 
1376
1400
  if (entry.create) {
1377
1401
  if (!entry.config.metadata?.name) {
1378
- entry.config.metadata.generateName = `nc-${ prefix }-`;
1402
+ entry.config.metadata.generateName = `nc-${ prefixFormatted }-`;
1379
1403
  }
1380
1404
 
1381
1405
  const neu = await entry.config.save();
@@ -1390,7 +1414,7 @@ export default {
1390
1414
 
1391
1415
  // Ensure Elemental clusters have a hostname prefix
1392
1416
  if (this.isElementalCluster && !entry.pool.hostnamePrefix) {
1393
- entry.pool.hostnamePrefix = `${ prefix }-`;
1417
+ entry.pool.hostnamePrefix = `${ prefixFormatted }-`;
1394
1418
  }
1395
1419
 
1396
1420
  finalPools.push(entry.pool);
@@ -1926,27 +1950,27 @@ export default {
1926
1950
  togglePsaDefault() {
1927
1951
  // This option is created from the server and is guaranteed to exist #8032
1928
1952
  const hardcodedTemplate = 'rancher-restricted';
1929
- const cisValue = this.agentConfig?.profile || this.serverConfig?.profile;
1953
+ const complianceValue = this.agentConfig?.profile || this.serverConfig?.profile;
1930
1954
 
1931
- if (!this.cisOverride) {
1932
- if (cisValue) {
1955
+ if (!this.complianceOverride) {
1956
+ if (complianceValue) {
1933
1957
  this.value.spec.defaultPodSecurityAdmissionConfigurationTemplateName = hardcodedTemplate;
1934
1958
  }
1935
1959
  }
1936
1960
  },
1937
1961
 
1938
- handleCisChange() {
1962
+ handleComplianceChange() {
1939
1963
  this.togglePsaDefault();
1940
- this.updateCisProfile();
1964
+ this.updateComplianceProfile();
1941
1965
  },
1942
1966
 
1943
- updateCisProfile() {
1944
- // If the user selects any Worker CIS Profile,
1967
+ updateComplianceProfile() {
1968
+ // If the user selects any Worker Compliance Profile,
1945
1969
  // protect-kernel-defaults should be set to false
1946
1970
  // in the RKE2 worker/agent config.
1947
- const selectedCisProfile = this.agentConfig?.profile;
1971
+ const selectedComplianceProfile = this.agentConfig?.profile;
1948
1972
 
1949
- if (selectedCisProfile) {
1973
+ if (selectedComplianceProfile) {
1950
1974
  this.agentConfig['protect-kernel-defaults'] = true;
1951
1975
  } else {
1952
1976
  this.agentConfig['protect-kernel-defaults'] = false;
@@ -2000,12 +2024,12 @@ export default {
2000
2024
  };
2001
2025
  },
2002
2026
 
2003
- handleCisChanged() {
2004
- this.handleCisChange();
2027
+ handleComplianceChanged() {
2028
+ this.handleComplianceChange();
2005
2029
  },
2006
2030
 
2007
2031
  handlePsaDefaultChanged() {
2008
- this.cisOverride = !this.cisOverride;
2032
+ this.complianceOverride = !this.complianceOverride;
2009
2033
  this.togglePsaDefault();
2010
2034
  },
2011
2035
 
@@ -2141,396 +2165,408 @@ export default {
2141
2165
  <span v-clean-html="t('cluster.banner.rke2-k3-reprovisioning', {}, true)" />
2142
2166
  </Banner>
2143
2167
  </div>
2144
- <SelectCredential
2145
- v-if="needCredential"
2146
- v-model:value="credentialId"
2168
+ <AccountAccess
2169
+ v-if="!isAuthenticated"
2170
+ v-model:credential="credential"
2171
+ v-model:project="projectId"
2172
+ v-model:is-authenticated="isAuthenticated"
2147
2173
  :mode="mode"
2148
- :provider="provider"
2149
- :cancel="cancelCredential"
2150
- :showing-form="showForm"
2151
- :default-on-cancel="true"
2152
- data-testid="select-credential"
2153
- class="mt-20"
2174
+ @error="e=>errors.push(e)"
2175
+ @cancel-credential="cancelCredential"
2154
2176
  />
2155
-
2156
- <div
2157
- v-if="showForm"
2158
- data-testid="form"
2159
- class="mt-20"
2160
- >
2161
- <NameNsDescription
2162
- v-if="!isView"
2163
- v-model:value="localValue"
2177
+ <div v-else>
2178
+ <SelectCredential
2179
+ v-if="needCredential"
2180
+ v-model:value="credentialId"
2164
2181
  :mode="mode"
2165
- :namespaced="needsNamespace"
2166
- :namespace-options="allNamespaces"
2167
- name-label="cluster.name.label"
2168
- name-placeholder="cluster.name.placeholder"
2169
- description-label="cluster.description.label"
2170
- description-placeholder="cluster.description.placeholder"
2171
- :rules="{ name: fvGetAndReportPathRules('metadata.name') }"
2172
- @update:value="$emit('input', $event)"
2182
+ :provider="provider"
2183
+ :cancel="cancelCredential"
2184
+ :showing-form="showForm"
2185
+ :default-on-cancel="true"
2186
+ data-testid="select-credential"
2187
+ class="mt-20"
2188
+ />
2189
+
2190
+ <div
2191
+ v-if="showForm"
2192
+ data-testid="form"
2193
+ class="mt-20"
2173
2194
  >
2174
- <template #customize>
2175
- <ClusterAppearance
2176
- :name="clusterName"
2177
- :currentCluster="currentCluster"
2178
- :mode="mode"
2179
- />
2180
- </template>
2181
- </NameNsDescription>
2182
-
2183
- <Banner
2184
- v-if="appsOSWarning"
2185
- color="error"
2186
- >
2187
- {{ appsOSWarning }}
2188
- </Banner>
2189
-
2190
- <!-- Pools Extras -->
2191
- <template v-if="hasMachinePools">
2192
- <div class="clearfix">
2193
- <h2
2194
- v-t="'cluster.tabs.machinePools'"
2195
- class="pull-left"
2196
- />
2197
- <div
2198
- v-if="!isView"
2199
- class="pull-right"
2200
- >
2201
- <BadgeState
2202
- v-clean-tooltip="nodeTotals.tooltip.etcd"
2203
- :color="nodeTotals.color.etcd"
2204
- :icon="nodeTotals.icon.etcd"
2205
- :label="nodeTotals.label.etcd"
2206
- class="mr-10"
2207
- />
2208
- <BadgeState
2209
- v-clean-tooltip="nodeTotals.tooltip.controlPlane"
2210
- :color="nodeTotals.color.controlPlane"
2211
- :icon="nodeTotals.icon.controlPlane"
2212
- :label="nodeTotals.label.controlPlane"
2213
- class="mr-10"
2195
+ <NameNsDescription
2196
+ v-if="!isView"
2197
+ v-model:value="localValue"
2198
+ :mode="mode"
2199
+ :namespaced="needsNamespace"
2200
+ :namespace-options="allNamespaces"
2201
+ name-label="cluster.name.label"
2202
+ name-placeholder="cluster.name.placeholder"
2203
+ description-label="cluster.description.label"
2204
+ description-placeholder="cluster.description.placeholder"
2205
+ :rules="{ name: fvGetAndReportPathRules('metadata.name') }"
2206
+ @update:value="$emit('input', $event)"
2207
+ >
2208
+ <template #customize>
2209
+ <ClusterAppearance
2210
+ :name="clusterName"
2211
+ :currentCluster="currentCluster"
2212
+ :mode="mode"
2214
2213
  />
2215
- <BadgeState
2216
- v-clean-tooltip="nodeTotals.tooltip.worker"
2217
- :color="nodeTotals.color.worker"
2218
- :icon="nodeTotals.icon.worker"
2219
- :label="nodeTotals.label.worker"
2214
+ </template>
2215
+ </NameNsDescription>
2216
+
2217
+ <Banner
2218
+ v-if="appsOSWarning"
2219
+ color="error"
2220
+ >
2221
+ {{ appsOSWarning }}
2222
+ </Banner>
2223
+
2224
+ <!-- Pools Extras -->
2225
+ <template v-if="hasMachinePools">
2226
+ <div class="clearfix">
2227
+ <h2
2228
+ v-t="'cluster.tabs.machinePools'"
2229
+ class="pull-left"
2220
2230
  />
2231
+ <div
2232
+ v-if="!isView"
2233
+ class="pull-right"
2234
+ >
2235
+ <BadgeState
2236
+ v-clean-tooltip="nodeTotals.tooltip.etcd"
2237
+ :color="nodeTotals.color.etcd"
2238
+ :icon="nodeTotals.icon.etcd"
2239
+ :label="nodeTotals.label.etcd"
2240
+ class="mr-10"
2241
+ />
2242
+ <BadgeState
2243
+ v-clean-tooltip="nodeTotals.tooltip.controlPlane"
2244
+ :color="nodeTotals.color.controlPlane"
2245
+ :icon="nodeTotals.icon.controlPlane"
2246
+ :label="nodeTotals.label.controlPlane"
2247
+ class="mr-10"
2248
+ />
2249
+ <BadgeState
2250
+ v-clean-tooltip="nodeTotals.tooltip.worker"
2251
+ :color="nodeTotals.color.worker"
2252
+ :icon="nodeTotals.icon.worker"
2253
+ :label="nodeTotals.label.worker"
2254
+ />
2255
+ </div>
2221
2256
  </div>
2222
- </div>
2223
2257
 
2224
- <!-- Extra Tabs for Machine Pool -->
2258
+ <!-- Extra Tabs for Machine Pool -->
2259
+ <Tabbed
2260
+ ref="pools"
2261
+ :side-tabs="true"
2262
+ :show-tabs-add-remove="!isView"
2263
+ @addTab="addMachinePool($event)"
2264
+ @removeTab="removeMachinePool($event)"
2265
+ >
2266
+ <template
2267
+ v-for="(obj, idx) in machinePools"
2268
+ :key="idx"
2269
+ >
2270
+ <Tab
2271
+ v-if="!obj.remove"
2272
+ :key="obj.id"
2273
+ :name="obj.id"
2274
+ :label="obj.pool.name || '(Not Named)'"
2275
+ :show-header="false"
2276
+ :error="!machinePoolValidation[obj.id]"
2277
+ >
2278
+ <MachinePool
2279
+ ref="pool"
2280
+ :value="obj"
2281
+ :cluster="value"
2282
+ :mode="mode"
2283
+ :provider="provider"
2284
+ :credential-id="credentialId"
2285
+ :project-id="projectId"
2286
+ :idx="idx"
2287
+ :machine-pools="machinePools"
2288
+ :busy="busy"
2289
+ :pool-id="obj.id"
2290
+ :pool-create-mode="obj.create"
2291
+ @error="handleMachinePoolError"
2292
+ @validationChanged="v => machinePoolValidationChanged(obj.id, v)"
2293
+ />
2294
+ </Tab>
2295
+ </template>
2296
+ <div v-if="!unremovedMachinePools.length">
2297
+ {{ t('cluster.machinePool.noPoolsDisclaimer') }}
2298
+ </div>
2299
+ </Tabbed>
2300
+ <div class="spacer" />
2301
+ </template>
2302
+
2303
+ <!-- Cluster Tabs -->
2304
+ <h2 v-t="'cluster.tabs.cluster'" />
2225
2305
  <Tabbed
2226
- ref="pools"
2227
2306
  :side-tabs="true"
2228
- :show-tabs-add-remove="!isView"
2229
- @addTab="addMachinePool($event)"
2230
- @removeTab="removeMachinePool($event)"
2307
+ class="min-height"
2308
+ :use-hash="useTabbedHash"
2309
+ @changed="handleTabChange"
2231
2310
  >
2232
- <template
2233
- v-for="(obj, idx) in machinePools"
2234
- :key="idx"
2311
+ <Tab
2312
+ name="basic"
2313
+ label-key="cluster.tabs.basic"
2314
+ :weight="11"
2315
+ @active="refreshComponentWithYamls('tab-Basics')"
2235
2316
  >
2236
- <Tab
2237
- v-if="!obj.remove"
2238
- :key="obj.id"
2239
- :name="obj.id"
2240
- :label="obj.pool.name || '(Not Named)'"
2241
- :show-header="false"
2242
- :error="!machinePoolValidation[obj.id]"
2243
- >
2244
- <MachinePool
2245
- ref="pool"
2246
- :value="obj"
2247
- :cluster="value"
2248
- :mode="mode"
2249
- :provider="provider"
2250
- :credential-id="credentialId"
2251
- :idx="idx"
2252
- :machine-pools="machinePools"
2253
- :busy="busy"
2254
- :pool-id="obj.id"
2255
- :pool-create-mode="obj.create"
2256
- @error="handleMachinePoolError"
2257
- @validationChanged="v => machinePoolValidationChanged(obj.id, v)"
2258
- />
2259
- </Tab>
2260
- </template>
2261
- <div v-if="!unremovedMachinePools.length">
2262
- {{ t('cluster.machinePool.noPoolsDisclaimer') }}
2263
- </div>
2264
- </Tabbed>
2265
- <div class="spacer" />
2266
- </template>
2267
-
2268
- <!-- Cluster Tabs -->
2269
- <h2 v-t="'cluster.tabs.cluster'" />
2270
- <Tabbed
2271
- :side-tabs="true"
2272
- class="min-height"
2273
- @changed="handleTabChange"
2274
- >
2275
- <Tab
2276
- name="basic"
2277
- label-key="cluster.tabs.basic"
2278
- :weight="11"
2279
- @active="refreshComponentWithYamls('tab-Basics')"
2280
- >
2281
- <!-- Basic -->
2282
- <Basics
2283
- ref="tab-Basics"
2284
- v-model:value="localValue"
2285
- :live-value="liveValue"
2286
- :mode="mode"
2287
- :provider="provider"
2288
- :user-chart-values="userChartValues"
2289
- :credential="credential"
2290
- :cis-override="cisOverride"
2291
- :all-psas="allPSAs"
2292
- :addon-versions="addonVersions"
2293
- :show-deprecated-patch-versions="showDeprecatedPatchVersions"
2294
- :selected-version="selectedVersion"
2295
- :is-harvester-driver="isHarvesterDriver"
2296
- :is-harvester-incompatible="isHarvesterIncompatible"
2297
- :version-options="versionOptions"
2298
- :is-elemental-cluster="isElementalCluster"
2299
- :have-arg-info="haveArgInfo"
2300
- :show-cni="showCni"
2301
- :show-cloud-provider="showCloudProvider"
2302
- :cloud-provider-options="cloudProviderOptions"
2303
- :is-azure-provider-unsupported="isAzureProviderUnsupported"
2304
- :can-azure-migrate-on-edit="canAzureMigrateOnEdit"
2305
- @update:value="$emit('input', $event)"
2306
- @cilium-values-changed="handleCiliumValuesChanged"
2307
- @enabled-system-services-changed="handleEnabledSystemServicesChanged"
2308
- @kubernetes-changed="handleKubernetesChange"
2309
- @cis-changed="handleCisChanged"
2310
- @psa-default-changed="handlePsaDefaultChanged"
2311
- @show-deprecated-patch-versions-changed="handleShowDeprecatedPatchVersionsChanged"
2312
- />
2313
- </Tab>
2314
-
2315
- <!-- Member Roles -->
2316
- <Tab
2317
- v-if="canManageMembers"
2318
- name="memberRoles"
2319
- label-key="cluster.tabs.memberRoles"
2320
- :weight="10"
2321
- >
2322
- <MemberRoles
2323
- v-model:value="localValue"
2324
- :mode="mode"
2325
- :on-membership-update="onMembershipUpdate"
2326
- @update:value="$emit('input', $event)"
2327
- />
2328
- </Tab>
2329
- <!-- etcd -->
2330
- <Tab
2331
- name="etcd"
2332
- label-key="cluster.tabs.etcd"
2333
- >
2334
- <Etcd
2335
- v-model:value="localValue"
2336
- :mode="mode"
2337
- :s3-backup="s3Backup"
2338
- :register-before-hook="registerBeforeHook"
2339
- :selected-version="selectedVersion"
2340
- @update:value="$emit('input', $event)"
2341
- @s3-backup-changed="handleS3BackupChanged"
2342
- @config-etcd-expose-metrics-changed="handleConfigEtcdExposeMetricsChanged"
2343
- />
2344
- </Tab>
2317
+ <!-- Basic -->
2318
+ <Basics
2319
+ ref="tab-Basics"
2320
+ v-model:value="localValue"
2321
+ :live-value="liveValue"
2322
+ :mode="mode"
2323
+ :provider="provider"
2324
+ :user-chart-values="userChartValues"
2325
+ :credential="credential"
2326
+ :compliance-override="complianceOverride"
2327
+ :all-psas="allPSAs"
2328
+ :addon-versions="addonVersions"
2329
+ :show-deprecated-patch-versions="showDeprecatedPatchVersions"
2330
+ :selected-version="selectedVersion"
2331
+ :is-harvester-driver="isHarvesterDriver"
2332
+ :is-harvester-incompatible="isHarvesterIncompatible"
2333
+ :version-options="versionOptions"
2334
+ :is-elemental-cluster="isElementalCluster"
2335
+ :have-arg-info="haveArgInfo"
2336
+ :show-cni="showCni"
2337
+ :show-cloud-provider="showCloudProvider"
2338
+ :cloud-provider-options="cloudProviderOptions"
2339
+ :is-azure-provider-unsupported="isAzureProviderUnsupported"
2340
+ :can-azure-migrate-on-edit="canAzureMigrateOnEdit"
2341
+ @update:value="$emit('input', $event)"
2342
+ @cilium-values-changed="handleCiliumValuesChanged"
2343
+ @enabled-system-services-changed="handleEnabledSystemServicesChanged"
2344
+ @kubernetes-changed="handleKubernetesChange"
2345
+ @compliance-changed="handleComplianceChanged"
2346
+ @psa-default-changed="handlePsaDefaultChanged"
2347
+ @show-deprecated-patch-versions-changed="handleShowDeprecatedPatchVersionsChanged"
2348
+ />
2349
+ </Tab>
2350
+
2351
+ <!-- Member Roles -->
2352
+ <Tab
2353
+ v-if="canManageMembers"
2354
+ name="memberRoles"
2355
+ label-key="cluster.tabs.memberRoles"
2356
+ :weight="10"
2357
+ >
2358
+ <MemberRoles
2359
+ v-model:value="localValue"
2360
+ :mode="mode"
2361
+ :on-membership-update="onMembershipUpdate"
2362
+ @update:value="$emit('input', $event)"
2363
+ />
2364
+ </Tab>
2365
+ <!-- etcd -->
2366
+ <Tab
2367
+ name="etcd"
2368
+ label-key="cluster.tabs.etcd"
2369
+ >
2370
+ <Etcd
2371
+ v-model:value="localValue"
2372
+ :mode="mode"
2373
+ :s3-backup="s3Backup"
2374
+ :register-before-hook="registerBeforeHook"
2375
+ :selected-version="selectedVersion"
2376
+ @update:value="$emit('input', $event)"
2377
+ @s3-backup-changed="handleS3BackupChanged"
2378
+ @config-etcd-expose-metrics-changed="handleConfigEtcdExposeMetricsChanged"
2379
+ />
2380
+ </Tab>
2345
2381
 
2346
- <!-- Networking -->
2347
- <Tab
2348
- v-if="haveArgInfo"
2349
- name="networking"
2350
- label-key="cluster.tabs.networking"
2351
- >
2352
- <Networking
2353
- v-model:value="localValue"
2354
- :mode="mode"
2355
- :selected-version="selectedVersion"
2356
- :truncate-limit="truncateLimit"
2357
- @truncate-hostname-changed="truncateHostname"
2358
- @cluster-cidr-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['cluster-cidr'] = val"
2359
- @service-cidr-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['service-cidr'] = val"
2360
- @cluster-domain-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['cluster-domain'] = val"
2361
- @cluster-dns-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['cluster-dns'] = val"
2362
- @service-node-port-range-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['service-node-port-range'] = val"
2363
- @tls-san-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['tls-san'] = val"
2364
- @local-cluster-auth-endpoint-changed="enableLocalClusterAuthEndpoint"
2365
- @ca-certs-changed="(val)=>localValue.spec.localClusterAuthEndpoint.caCerts = val"
2366
- @fqdn-changed="(val)=>localValue.spec.localClusterAuthEndpoint.fqdn = val"
2367
- />
2368
- </Tab>
2382
+ <!-- Networking -->
2383
+ <Tab
2384
+ v-if="haveArgInfo"
2385
+ name="networking"
2386
+ label-key="cluster.tabs.networking"
2387
+ >
2388
+ <Networking
2389
+ v-model:value="localValue"
2390
+ :mode="mode"
2391
+ :selected-version="selectedVersion"
2392
+ :truncate-limit="truncateLimit"
2393
+ @truncate-hostname-changed="truncateHostname"
2394
+ @cluster-cidr-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['cluster-cidr'] = val"
2395
+ @service-cidr-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['service-cidr'] = val"
2396
+ @cluster-domain-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['cluster-domain'] = val"
2397
+ @cluster-dns-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['cluster-dns'] = val"
2398
+ @service-node-port-range-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['service-node-port-range'] = val"
2399
+ @tls-san-changed="(val)=>localValue.spec.rkeConfig.machineGlobalConfig['tls-san'] = val"
2400
+ @local-cluster-auth-endpoint-changed="enableLocalClusterAuthEndpoint"
2401
+ @ca-certs-changed="(val)=>localValue.spec.localClusterAuthEndpoint.caCerts = val"
2402
+ @fqdn-changed="(val)=>localValue.spec.localClusterAuthEndpoint.fqdn = val"
2403
+ />
2404
+ </Tab>
2369
2405
 
2370
- <!-- Upgrade -->
2371
- <Tab
2372
- name="upgrade"
2373
- label-key="cluster.tabs.upgrade"
2374
- >
2375
- <Upgrade
2376
- v-model:value="localValue"
2377
- :mode="mode"
2378
- @update:value="$emit('input', $event)"
2379
- />
2380
- </Tab>
2406
+ <!-- Upgrade -->
2407
+ <Tab
2408
+ name="upgrade"
2409
+ label-key="cluster.tabs.upgrade"
2410
+ >
2411
+ <Upgrade
2412
+ v-model:value="localValue"
2413
+ :mode="mode"
2414
+ @update:value="$emit('input', $event)"
2415
+ />
2416
+ </Tab>
2381
2417
 
2382
- <!-- Registries -->
2383
- <Tab
2384
- :name="REGISTRIES_TAB_NAME"
2385
- label-key="cluster.tabs.registry"
2386
- >
2387
- <Registries
2388
- v-if="isActiveTabRegistries"
2418
+ <!-- Registries -->
2419
+ <Tab
2420
+ :name="REGISTRIES_TAB_NAME"
2421
+ label-key="cluster.tabs.registry"
2422
+ >
2423
+ <Registries
2424
+ v-if="isActiveTabRegistries"
2425
+ v-model:value="localValue"
2426
+ :mode="mode"
2427
+ :register-before-hook="registerBeforeHook"
2428
+ :show-custom-registry-input="showCustomRegistryInput"
2429
+ :registry-host="registryHost"
2430
+ :registry-secret="registrySecret"
2431
+ :show-custom-registry-advanced-input="showCustomRegistryAdvancedInput"
2432
+ @update:value="$emit('input', $event)"
2433
+ @update-configs-changed="updateConfigs"
2434
+ @custom-registry-changed="toggleCustomRegistry"
2435
+ @registry-host-changed="handleRegistryHostChanged"
2436
+ @registry-secret-changed="handleRegistrySecretChanged"
2437
+ />
2438
+ </Tab>
2439
+
2440
+ <!-- Add-on Configs -->
2441
+ <Tab
2442
+ v-for="v in addonVersions"
2443
+ :key="v.name"
2444
+ :name="v.name"
2445
+ :label="labelForAddon($store, v.name, false)"
2446
+ :weight="9"
2447
+ :showHeader="false"
2448
+ :error="addonConfigValidation[v.name]===false"
2449
+ @active="showAddons(v.name)"
2450
+ >
2451
+ <AddOnConfig
2452
+ :ref="v.name"
2453
+ v-model:value="localValue"
2454
+ :mode="mode"
2455
+ :version-info="versionInfo"
2456
+ :addon-version="v"
2457
+ :addons-rev="addonsRev"
2458
+ :user-chart-values-temp="userChartValuesTemp"
2459
+ :init-yaml-editor="initYamlEditor"
2460
+ @update:value="$emit('input', $event)"
2461
+ @update-questions="syncChartValues"
2462
+ @update-values="updateValues"
2463
+ @validationChanged="e => addonConfigValidationChanged(v.name, e)"
2464
+ />
2465
+ </Tab>
2466
+
2467
+ <!-- Add-on Additional Manifest -->
2468
+ <Tab
2469
+ name="additionalmanifest"
2470
+ label-key="cluster.tabs.addOnAdditionalManifest"
2471
+ :showHeader="false"
2472
+ @active="refreshComponentWithYamls('additionalmanifest')"
2473
+ >
2474
+ <AddOnAdditionalManifest
2475
+ ref="additionalmanifest"
2476
+ :value="value"
2477
+ :mode="mode"
2478
+ @additional-manifest-changed="updateAdditionalManifest"
2479
+ />
2480
+ </Tab>
2481
+
2482
+ <!-- Cluster Agent Configuration -->
2483
+ <Tab
2484
+ v-if="value.spec.clusterAgentDeploymentCustomization"
2485
+ name="clusteragentconfig"
2486
+ label-key="cluster.agentConfig.tabs.cluster"
2487
+ >
2488
+ <AgentConfiguration
2489
+ v-model:value="value.spec.clusterAgentDeploymentCustomization"
2490
+ data-testid="rke2-cluster-agent-config"
2491
+ type="cluster"
2492
+ :mode="mode"
2493
+ :scheduling-customization-feature-enabled="schedulingCustomizationFeatureEnabled"
2494
+ :default-p-c="clusterAgentDefaultPC"
2495
+ :default-p-d-b="clusterAgentDefaultPDB"
2496
+ :scheduling-customization-originally-enabled="schedulingCustomizationOriginallyEnabled"
2497
+ @scheduling-customization-changed="setSchedulingCustomization"
2498
+ />
2499
+ </Tab>
2500
+
2501
+ <!-- Fleet Agent Configuration -->
2502
+ <Tab
2503
+ name="fleetagentconfig"
2504
+ label-key="cluster.agentConfig.tabs.fleet"
2505
+ >
2506
+ <AgentConfiguration
2507
+ v-if="value.spec.fleetAgentDeploymentCustomization"
2508
+ v-model:value="value.spec.fleetAgentDeploymentCustomization"
2509
+ data-testid="rke2-fleet-agent-config"
2510
+ type="fleet"
2511
+ :mode="mode"
2512
+ />
2513
+ </Tab>
2514
+
2515
+ <!-- Advanced -->
2516
+ <Tab
2517
+ v-if="haveArgInfo || agentArgs['protect-kernel-defaults']"
2518
+ name="advanced"
2519
+ label-key="cluster.tabs.advanced"
2520
+ :weight="-1"
2521
+ >
2522
+ <Advanced
2523
+ v-model:value="localValue"
2524
+ :mode="mode"
2525
+ :have-arg-info="haveArgInfo"
2526
+ :selected-version="selectedVersion"
2527
+ @update:value="$emit('input', $event)"
2528
+ />
2529
+ </Tab>
2530
+
2531
+ <AgentEnv
2389
2532
  v-model:value="localValue"
2390
2533
  :mode="mode"
2391
- :register-before-hook="registerBeforeHook"
2392
- :show-custom-registry-input="showCustomRegistryInput"
2393
- :registry-host="registryHost"
2394
- :registry-secret="registrySecret"
2395
- :show-custom-registry-advanced-input="showCustomRegistryAdvancedInput"
2396
2534
  @update:value="$emit('input', $event)"
2397
- @update-configs-changed="updateConfigs"
2398
- @custom-registry-changed="toggleCustomRegistry"
2399
- @registry-host-changed="handleRegistryHostChanged"
2400
- @registry-secret-changed="handleRegistrySecretChanged"
2401
2535
  />
2402
- </Tab>
2403
-
2404
- <!-- Add-on Configs -->
2405
- <Tab
2406
- v-for="v in addonVersions"
2407
- :key="v.name"
2408
- :name="v.name"
2409
- :label="labelForAddon($store, v.name, false)"
2410
- :weight="9"
2411
- :showHeader="false"
2412
- :error="addonConfigValidation[v.name]===false"
2413
- @active="showAddons(v.name)"
2414
- >
2415
- <AddOnConfig
2416
- :ref="v.name"
2536
+ <Labels
2417
2537
  v-model:value="localValue"
2418
2538
  :mode="mode"
2419
- :version-info="versionInfo"
2420
- :addon-version="v"
2421
- :addons-rev="addonsRev"
2422
- :user-chart-values-temp="userChartValuesTemp"
2423
- :init-yaml-editor="initYamlEditor"
2424
2539
  @update:value="$emit('input', $event)"
2425
- @update-questions="syncChartValues"
2426
- @update-values="updateValues"
2427
- @validationChanged="e => addonConfigValidationChanged(v.name, e)"
2428
2540
  />
2429
- </Tab>
2430
-
2431
- <!-- Add-on Additional Manifest -->
2432
- <Tab
2433
- name="additionalmanifest"
2434
- label-key="cluster.tabs.addOnAdditionalManifest"
2435
- :showHeader="false"
2436
- @active="refreshComponentWithYamls('additionalmanifest')"
2437
- >
2438
- <AddOnAdditionalManifest
2439
- ref="additionalmanifest"
2440
- :value="value"
2441
- :mode="mode"
2442
- @additional-manifest-changed="updateAdditionalManifest"
2443
- />
2444
- </Tab>
2445
-
2446
- <!-- Cluster Agent Configuration -->
2447
- <Tab
2448
- v-if="value.spec.clusterAgentDeploymentCustomization"
2449
- name="clusteragentconfig"
2450
- label-key="cluster.agentConfig.tabs.cluster"
2451
- >
2452
- <AgentConfiguration
2453
- v-model:value="value.spec.clusterAgentDeploymentCustomization"
2454
- data-testid="rke2-cluster-agent-config"
2455
- type="cluster"
2456
- :mode="mode"
2457
- :scheduling-customization-feature-enabled="schedulingCustomizationFeatureEnabled"
2458
- :default-p-c="clusterAgentDefaultPC"
2459
- :default-p-d-b="clusterAgentDefaultPDB"
2460
- :scheduling-customization-originally-enabled="schedulingCustomizationOriginallyEnabled"
2461
- @scheduling-customization-changed="setSchedulingCustomization"
2462
- />
2463
- </Tab>
2464
2541
 
2465
- <!-- Fleet Agent Configuration -->
2466
- <Tab
2467
- name="fleetagentconfig"
2468
- label-key="cluster.agentConfig.tabs.fleet"
2469
- >
2470
- <AgentConfiguration
2471
- v-if="value.spec.fleetAgentDeploymentCustomization"
2472
- v-model:value="value.spec.fleetAgentDeploymentCustomization"
2473
- data-testid="rke2-fleet-agent-config"
2474
- type="fleet"
2475
- :mode="mode"
2476
- />
2477
- </Tab>
2478
-
2479
- <!-- Advanced -->
2480
- <Tab
2481
- v-if="haveArgInfo || agentArgs['protect-kernel-defaults']"
2482
- name="advanced"
2483
- label-key="cluster.tabs.advanced"
2484
- :weight="-1"
2485
- >
2486
- <Advanced
2487
- v-model:value="localValue"
2488
- :mode="mode"
2489
- :have-arg-info="haveArgInfo"
2490
- :selected-version="selectedVersion"
2491
- @update:value="$emit('input', $event)"
2492
- />
2493
- </Tab>
2542
+ <!-- Extension tabs -->
2543
+ <Tab
2544
+ v-for="tab, i in extensionTabs"
2545
+ :key="`${tab.name}${i}`"
2546
+ :name="tab.name"
2547
+ :label="tab.label"
2548
+ :label-key="tab.labelKey"
2549
+ :weight="tab.weight"
2550
+ :tooltip="tab.tooltip"
2551
+ :show-header="tab.showHeader"
2552
+ :display-alert-icon="tab.displayAlertIcon"
2553
+ :error="tab.error"
2554
+ :badge="tab.badge"
2555
+ >
2556
+ <component
2557
+ :is="tab.component"
2558
+ :resource="value"
2559
+ />
2560
+ </Tab>
2561
+ </Tabbed>
2562
+ </div>
2494
2563
 
2495
- <AgentEnv
2496
- v-model:value="localValue"
2497
- :mode="mode"
2498
- @update:value="$emit('input', $event)"
2499
- />
2500
- <Labels
2501
- v-model:value="localValue"
2502
- :mode="mode"
2503
- @update:value="$emit('input', $event)"
2504
- />
2505
-
2506
- <!-- Extension tabs -->
2507
- <Tab
2508
- v-for="tab, i in extensionTabs"
2509
- :key="`${tab.name}${i}`"
2510
- :name="tab.name"
2511
- :label="tab.label"
2512
- :label-key="tab.labelKey"
2513
- :weight="tab.weight"
2514
- :tooltip="tab.tooltip"
2515
- :show-header="tab.showHeader"
2516
- :display-alert-icon="tab.displayAlertIcon"
2517
- :error="tab.error"
2518
- :badge="tab.badge"
2519
- >
2520
- <component
2521
- :is="tab.component"
2522
- :resource="value"
2523
- />
2524
- </Tab>
2525
- </Tabbed>
2564
+ <Banner
2565
+ v-if="unsupportedSelectorConfig"
2566
+ color="warning"
2567
+ :label="t('cluster.banner.warning')"
2568
+ />
2526
2569
  </div>
2527
-
2528
- <Banner
2529
- v-if="unsupportedSelectorConfig"
2530
- color="warning"
2531
- :label="t('cluster.banner.warning')"
2532
- />
2533
-
2534
2570
  <template
2535
2571
  v-if="needCredential && !credentialId"
2536
2572
  #form-footer