@rancher/shell 0.3.4 → 0.3.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 (289) hide show
  1. package/assets/images/providers/outscale.svg +19 -0
  2. package/assets/styles/app.scss +1 -1
  3. package/assets/styles/base/_basic.scss +18 -0
  4. package/assets/styles/base/_mixins.scss +0 -11
  5. package/assets/styles/base/_variables.scss +2 -4
  6. package/assets/styles/fonts/_fontstack.scss +11 -11
  7. package/assets/styles/global/_button.scss +12 -2
  8. package/assets/styles/vendor/vue-js-modal.scss +3 -3
  9. package/assets/translations/en-us.yaml +113 -22
  10. package/assets/translations/zh-hans.yaml +113 -24
  11. package/babel.config.js +13 -0
  12. package/chart/gatekeeper.vue +78 -0
  13. package/chart/istio.vue +135 -112
  14. package/chart/logging/index.vue +13 -4
  15. package/chart/monitoring/index.vue +15 -5
  16. package/chart/monitoring/steps/uninstall-v1.vue +2 -2
  17. package/chart/rancher-backup/index.vue +10 -3
  18. package/cloud-credential/aws.vue +1 -1
  19. package/cloud-credential/digitalocean.vue +1 -1
  20. package/cloud-credential/gcp.vue +1 -1
  21. package/cloud-credential/generic.vue +2 -2
  22. package/cloud-credential/linode.vue +1 -1
  23. package/cloud-credential/pnap.vue +1 -1
  24. package/components/ActionMenu.vue +3 -4
  25. package/components/AssignTo.vue +1 -1
  26. package/components/AsyncButton.vue +1 -1
  27. package/components/BannerGraphic.vue +1 -1
  28. package/components/BrandImage.vue +1 -4
  29. package/components/ButtonDropdown.vue +2 -3
  30. package/components/Carousel.vue +85 -37
  31. package/components/ChartPsp.vue +76 -0
  32. package/components/CruResource.vue +6 -2
  33. package/components/DashboardMetrics.vue +12 -10
  34. package/components/DetailText.vue +1 -1
  35. package/components/DisableAuthProviderModal.vue +1 -1
  36. package/components/EmberPage.vue +1 -1
  37. package/components/EtcdInfoBanner.vue +12 -7
  38. package/components/ExplorerMembers.vue +101 -6
  39. package/components/ExplorerProjectsNamespaces.vue +46 -3
  40. package/components/FileDiff.vue +6 -7
  41. package/components/GrafanaDashboard.vue +27 -23
  42. package/components/LazyImage.vue +10 -12
  43. package/components/LogItem.vue +1 -1
  44. package/components/Markdown.vue +1 -1
  45. package/components/PromptRemove.vue +2 -2
  46. package/components/PromptRestore.vue +1 -1
  47. package/components/ResourceDetail/Masthead.vue +16 -0
  48. package/components/ResourceDetail/index.vue +21 -4
  49. package/components/ResourceList/index.vue +1 -1
  50. package/components/ResourceTable.vue +4 -1
  51. package/components/SingleClusterInfo.vue +2 -2
  52. package/components/SortableTable/THead.vue +1 -1
  53. package/components/SortableTable/index.vue +28 -13
  54. package/components/SortableTable/selection.js +58 -50
  55. package/components/Wizard.vue +4 -2
  56. package/components/__tests__/AsyncButton.test.ts +3 -1
  57. package/components/__tests__/ChartPsp.test.ts +75 -0
  58. package/components/__tests__/CruResource.test.ts +3 -1
  59. package/components/auth/Principal.vue +1 -1
  60. package/components/auth/RoleDetailEdit.vue +2 -2
  61. package/components/fleet/FleetBundles.vue +3 -1
  62. package/components/fleet/FleetClusters.vue +1 -2
  63. package/components/fleet/FleetIntro.vue +9 -1
  64. package/components/fleet/FleetNoWorkspaces.vue +62 -0
  65. package/components/fleet/FleetSummary.vue +7 -1
  66. package/components/form/HookOption.vue +14 -10
  67. package/components/form/LabeledSelect.vue +14 -11
  68. package/components/form/Labels.vue +32 -27
  69. package/components/form/MatchExpressions.vue +19 -4
  70. package/components/form/Members/ClusterPermissionsEditor.vue +32 -7
  71. package/components/form/NameNsDescription.vue +32 -46
  72. package/components/form/ProjectMemberEditor.vue +46 -21
  73. package/components/form/ResourceSelector.vue +1 -1
  74. package/components/form/SecretSelector.vue +5 -1
  75. package/components/form/ServiceNameSelect.vue +1 -1
  76. package/components/form/SimpleSecretSelector.vue +9 -9
  77. package/components/form/Tolerations.vue +4 -1
  78. package/components/form/ValueFromResource.vue +14 -9
  79. package/components/form/WorkloadPorts.vue +2 -2
  80. package/components/form/__tests__/LabeledSelect.test.ts +138 -0
  81. package/components/form/__tests__/NameNsDescription.ts +59 -0
  82. package/components/formatter/InternalExternalIP.vue +6 -0
  83. package/components/formatter/InvolvedObjectLink.vue +54 -0
  84. package/components/formatter/Link.vue +20 -4
  85. package/components/formatter/LinkName.vue +6 -1
  86. package/components/formatter/ServiceTargets.vue +1 -1
  87. package/components/formatter/WorkloadHealthScale.vue +8 -2
  88. package/components/nav/Group.vue +2 -2
  89. package/components/nav/NamespaceFilter.vue +23 -11
  90. package/components/nav/TopLevelMenu.vue +2 -4
  91. package/components/nav/Type.vue +1 -1
  92. package/components/nav/WorkspaceSwitcher.vue +46 -5
  93. package/components/nuxt/nuxt-build-indicator.vue +143 -0
  94. package/components/nuxt/nuxt-child.js +122 -0
  95. package/components/nuxt/nuxt-error.vue +98 -0
  96. package/components/nuxt/nuxt-link.client.js +98 -0
  97. package/components/nuxt/nuxt-link.server.js +16 -0
  98. package/components/nuxt/nuxt-loading.vue +154 -0
  99. package/components/nuxt/nuxt.js +101 -0
  100. package/config/labels-annotations.js +17 -0
  101. package/config/middleware.js +12 -0
  102. package/config/product/auth.js +3 -2
  103. package/config/product/explorer.js +34 -6
  104. package/config/product/fleet.js +2 -0
  105. package/config/query-params.js +1 -0
  106. package/config/router.js +414 -0
  107. package/config/store.js +181 -0
  108. package/config/table-headers.js +54 -12
  109. package/config/types.js +18 -8
  110. package/config/uiplugins.js +30 -0
  111. package/content/docs/en-us/whats-new.md +10 -0
  112. package/content/docs/zh-hans/whats-new.md +11 -1
  113. package/core/plugin-routes.ts +23 -0
  114. package/core/plugin.ts +4 -2
  115. package/core/types.ts +258 -1
  116. package/creators/app/app.package.json +2 -1
  117. package/creators/app/files/.eslintrc.js +1 -1
  118. package/creators/app/files/babel.config.js +1 -18
  119. package/creators/app/files/tsconfig.json +0 -1
  120. package/creators/app/files/vue.config.js +6 -0
  121. package/creators/app/init +5 -5
  122. package/creators/pkg/files/.github/workflows/build-extension.yml +110 -0
  123. package/creators/pkg/files/tsconfig.json +0 -1
  124. package/creators/pkg/init +35 -4
  125. package/creators/pkg/pkg.package.json +3 -3
  126. package/creators/update/init +1 -1
  127. package/detail/constraints.gatekeeper.sh.constraint.vue +34 -17
  128. package/detail/fleet.cattle.io.clustergroup.vue +7 -1
  129. package/detail/fleet.cattle.io.gitrepo.vue +19 -11
  130. package/detail/harvesterhci.io.management.cluster.vue +3 -3
  131. package/detail/provisioning.cattle.io.cluster.vue +54 -12
  132. package/detail/workload/index.vue +3 -3
  133. package/dialog/AddClusterMemberDialog.vue +1 -1
  134. package/dialog/AddProjectMemberDialog.vue +2 -2
  135. package/dialog/AddonConfigConfirmationDialog.vue +27 -15
  136. package/dialog/DiagnosticTimingsDialog.vue +1 -1
  137. package/dialog/ForceMachineRemoveDialog.vue +1 -1
  138. package/dialog/GenericPrompt.vue +18 -6
  139. package/dialog/RotateEncryptionKeyDialog.vue +1 -1
  140. package/dialog/SaveAsRKETemplateDialog.vue +1 -1
  141. package/dialog/ScaleMachineDownDialog.vue +1 -1
  142. package/edit/auth/github.vue +8 -8
  143. package/edit/auth/googleoauth.vue +5 -5
  144. package/edit/auth/ldap/index.vue +1 -1
  145. package/edit/auth/oidc.vue +1 -1
  146. package/edit/auth/saml.vue +1 -1
  147. package/edit/cis.cattle.io.clusterscan.vue +1 -1
  148. package/edit/fleet.cattle.io.clustergroup.vue +6 -4
  149. package/edit/fleet.cattle.io.gitrepo.vue +32 -4
  150. package/edit/helm.cattle.io.projecthelmchart.vue +5 -1
  151. package/edit/logging.banzaicloud.io.output/index.vue +18 -5
  152. package/edit/logging.banzaicloud.io.output/providers/loki.vue +1 -0
  153. package/edit/management.cattle.io.fleetworkspace.vue +141 -6
  154. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +4 -1
  155. package/edit/management.cattle.io.setting.vue +1 -1
  156. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +2 -2
  157. package/edit/monitoring.coreos.com.receiver/tls.vue +18 -18
  158. package/edit/monitoring.coreos.com.receiver/types/webhook.banner.vue +4 -4
  159. package/edit/monitoring.coreos.com.receiver/types/webhook.vue +1 -1
  160. package/edit/namespace.vue +14 -10
  161. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +126 -45
  162. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  163. package/edit/provisioning.cattle.io.cluster/MachinePool.vue +21 -4
  164. package/edit/provisioning.cattle.io.cluster/RegistryConfigs.vue +1 -0
  165. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +202 -2
  166. package/edit/provisioning.cattle.io.cluster/import.vue +23 -25
  167. package/edit/provisioning.cattle.io.cluster/rke2.vue +344 -102
  168. package/edit/resources.cattle.io.backup.vue +1 -1
  169. package/edit/service.vue +1 -1
  170. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +2 -2
  171. package/edit/workload/__tests__/Job.test.ts +3 -1
  172. package/edit/workload/index.vue +8 -3
  173. package/edit/workload/mixins/workload.js +22 -7
  174. package/edit/workload/storage/Mount.vue +3 -3
  175. package/initialize/App.js +206 -0
  176. package/initialize/client.js +863 -0
  177. package/initialize/index.js +364 -0
  178. package/layouts/default.vue +7 -3
  179. package/layouts/standalone.vue +13 -0
  180. package/list/catalog.cattle.io.clusterrepo.vue +1 -0
  181. package/list/fleet.cattle.io.bundle.vue +6 -3
  182. package/list/fleet.cattle.io.clusterregistrationtoken.vue +3 -1
  183. package/list/fleet.cattle.io.gitrepo.vue +44 -5
  184. package/list/management.cattle.io.fleetworkspace.vue +45 -0
  185. package/list/node.vue +69 -16
  186. package/list/provisioning.cattle.io.cluster.vue +30 -1
  187. package/list/rbac.authorization.k8s.io.clusterrolebinding.vue +48 -0
  188. package/list/workload.vue +6 -4
  189. package/machine-config/azure.vue +97 -38
  190. package/middleware/authenticated.js +34 -0
  191. package/mixins/chart.js +101 -2
  192. package/mixins/fetch.client.js +95 -0
  193. package/mixins/fetch.server.js +73 -0
  194. package/mixins/labeled-form-element.ts +2 -2
  195. package/mixins/resource-fetch.js +2 -2
  196. package/models/apps.statefulset.js +28 -0
  197. package/models/cluster/node.js +23 -2
  198. package/models/cluster.x-k8s.io.machine.js +4 -2
  199. package/models/clusterroletemplatebinding.js +7 -0
  200. package/models/constraints.gatekeeper.sh.constraint.js +46 -0
  201. package/models/fleet.cattle.io.cluster.js +19 -10
  202. package/models/fleet.cattle.io.gitrepo.js +7 -2
  203. package/models/management.cattle.io.cluster.js +1 -1
  204. package/models/management.cattle.io.fleetworkspace.js +12 -0
  205. package/models/management.cattle.io.gitreporestriction.js +5 -0
  206. package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.js +3 -0
  207. package/models/pod.js +4 -0
  208. package/models/provisioning.cattle.io.cluster.js +7 -5
  209. package/models/rbac.authorization.k8s.io.clusterrolebinding.js +16 -0
  210. package/models/rbac.authorization.k8s.io.rolebinding.js +16 -0
  211. package/package.json +13 -21
  212. package/pages/auth/setup.vue +2 -2
  213. package/pages/c/_cluster/apps/charts/__tests__/install.helper.test.ts +33 -0
  214. package/pages/c/_cluster/apps/charts/chart.vue +4 -4
  215. package/pages/c/_cluster/apps/charts/install.helpers.js +26 -0
  216. package/pages/c/_cluster/apps/charts/install.vue +98 -102
  217. package/pages/c/_cluster/explorer/EventsTable.vue +5 -19
  218. package/pages/c/_cluster/explorer/index.vue +29 -25
  219. package/pages/c/_cluster/explorer/tools/index.vue +8 -8
  220. package/pages/c/_cluster/fleet/index.vue +95 -34
  221. package/pages/c/_cluster/gatekeeper/index.vue +1 -1
  222. package/pages/c/_cluster/istio/index.vue +5 -5
  223. package/pages/c/_cluster/manager/cloudCredential/index.vue +1 -1
  224. package/pages/c/_cluster/monitoring/index.vue +7 -0
  225. package/pages/c/_cluster/uiplugins/InstallDialog.vue +8 -8
  226. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +20 -7
  227. package/pages/c/_cluster/uiplugins/index.vue +49 -17
  228. package/pages/diagnostic.vue +32 -25
  229. package/pages/home.vue +9 -4
  230. package/pages/index.vue +10 -1
  231. package/pages/rio/mesh.vue +1 -2
  232. package/pkg/tsconfig.json +0 -1
  233. package/plugins/clean-html-directive.js +34 -0
  234. package/plugins/dashboard-store/actions.js +32 -9
  235. package/plugins/dashboard-store/index.js +1 -1
  236. package/plugins/dashboard-store/mutations.js +5 -2
  237. package/plugins/dashboard-store/resource-class.js +8 -1
  238. package/plugins/plugin.js +0 -14
  239. package/plugins/portal-vue.js +4 -0
  240. package/plugins/steve/mutations.js +3 -2
  241. package/plugins/steve/steve-description-class.js +5 -1
  242. package/plugins/steve/subscribe.js +63 -54
  243. package/plugins/steve-create-worker.js +14 -0
  244. package/promptRemove/management.cattle.io.globalrole.vue +2 -2
  245. package/promptRemove/management.cattle.io.project.vue +2 -2
  246. package/promptRemove/management.cattle.io.roletemplate.vue +2 -2
  247. package/promptRemove/pod.vue +1 -1
  248. package/public/index.html +65 -0
  249. package/rancher-components/components/Banner/Banner.test.ts +7 -1
  250. package/rancher-components/components/Banner/Banner.vue +2 -1
  251. package/rancher-components/components/Form/Checkbox/Checkbox.vue +2 -0
  252. package/rancher-components/components/Form/Radio/RadioButton.test.ts +31 -0
  253. package/rancher-components/components/Form/Radio/RadioButton.vue +14 -3
  254. package/scripts/build-pkg.sh +1 -0
  255. package/scripts/clean +6 -0
  256. package/scripts/extension/bundle +58 -0
  257. package/scripts/extension/helmpatch +89 -0
  258. package/scripts/extension/publish +333 -0
  259. package/scripts/serve-pkgs +6 -2
  260. package/scripts/test-plugins-build.sh +4 -0
  261. package/store/__tests__/index.test.ts +110 -0
  262. package/store/index.js +145 -58
  263. package/store/type-map.js +6 -2
  264. package/tsconfig.default.json +36 -0
  265. package/tsconfig.json +23 -0
  266. package/types/rancher/index.d.ts +2 -0
  267. package/types/shell/index.d.ts +466 -320
  268. package/utils/__tests__/grafana.test.ts +44 -0
  269. package/utils/__tests__/string.test.ts +12 -0
  270. package/utils/auth.js +65 -0
  271. package/utils/axios.js +190 -0
  272. package/utils/cookie-universal-nuxt.js +10 -0
  273. package/utils/dom.js +15 -0
  274. package/utils/grafana.js +35 -16
  275. package/utils/monitoring.js +2 -1
  276. package/utils/nuxt.js +659 -0
  277. package/utils/position.js +5 -8
  278. package/utils/router.scrollBehavior.js +80 -0
  279. package/utils/select.js +1 -3
  280. package/utils/socket.js +1 -0
  281. package/utils/string.js +13 -0
  282. package/utils/time.js +9 -0
  283. package/vue.config.js +690 -0
  284. package/chart/rancher-alerting-drivers.vue +0 -53
  285. package/chart/rancher-gatekeeper.vue +0 -37
  286. package/creators/app/files/nuxt.config.js +0 -6
  287. package/models/management.cattle.io.podsecurityadmissionconfigurationtemplate.ts +0 -4
  288. package/nuxt.config.js +0 -798
  289. package/plugins/dashboard-store/extensions.js +0 -22
@@ -2,6 +2,12 @@ import { mount } from '@vue/test-utils';
2
2
  import rke2 from '@shell/edit/provisioning.cattle.io.cluster/rke2.vue';
3
3
 
4
4
  describe('component: rke2', () => {
5
+ // Disable existing log to avoid pollution
6
+ // eslint-disable-next-line jest/no-hooks
7
+ beforeEach(() => {
8
+ jest.spyOn(console, 'log').mockImplementation(() => {});
9
+ });
10
+
5
11
  it.each([
6
12
  'v1.25.0+rke2r1',
7
13
  'v1.24.0+rke2r1',
@@ -9,7 +15,7 @@ describe('component: rke2', () => {
9
15
  'v1.25.0+k3s1',
10
16
  'v1.24.0+k3s1',
11
17
  'v1.23.0+k3s1',
12
- ])('should display PSA option', () => {
18
+ ])('should display PSA option', (k8s) => {
13
19
  const label = 'whatever';
14
20
  const option = { label, value: label };
15
21
  const wrapper = mount(rke2, {
@@ -20,7 +26,7 @@ describe('component: rke2', () => {
20
26
  rkeConfig: { etcd: { disableSnapshots: false } },
21
27
  chartValues: {},
22
28
  defaultPodSecurityAdmissionConfigurationTemplateName: label,
23
- kubernetesVersion: 'v1.25.0+rke2r1'
29
+ kubernetesVersion: k8s
24
30
  }
25
31
  },
26
32
  provider: 'whatever',
@@ -93,4 +99,198 @@ describe('component: rke2', () => {
93
99
 
94
100
  expect((select.vm as unknown as any).options[0].label).toBe(`${ label } (Current)`);
95
101
  });
102
+
103
+ it.each([
104
+ ['v1.25.0+rke2r1', 'none'],
105
+ ['v1.24.0+rke2r1', 'default'],
106
+ ['v1.23.0+rke2r1', 'default'],
107
+ ['v1.25.0+k3s1', 'none'],
108
+ ['v1.24.0+k3s1', 'default'],
109
+ ['v1.23.0+k3s1', 'default'],
110
+ ])('should display for version %p PSA option label %p', (k8s, partialLabel) => {
111
+ const label = `cluster.rke2.defaultPodSecurityAdmissionConfigurationTemplateName.option.${ partialLabel }`;
112
+ const option = { label, value: label };
113
+ const wrapper = mount(rke2, {
114
+ propsData: {
115
+ mode: 'create',
116
+ value: {
117
+ spec: {
118
+ rkeConfig: { etcd: { disableSnapshots: false } },
119
+ chartValues: {},
120
+ defaultPodSecurityAdmissionConfigurationTemplateName: label,
121
+ kubernetesVersion: k8s
122
+ }
123
+ },
124
+ provider: 'whatever',
125
+ resource: {}
126
+ },
127
+ computed: {
128
+ showForm() {
129
+ return true;
130
+ },
131
+ hasMachinePools() {
132
+ return false;
133
+ },
134
+ showk8s21LegacyWarning() {
135
+ return false;
136
+ },
137
+ },
138
+ mocks: {
139
+ $fetchState: { pending: false },
140
+ $route: {
141
+ name: 'anything',
142
+ query: { AS: 'yaml' },
143
+ },
144
+ $store: {
145
+ getters: {
146
+ currentStore: () => 'current_store',
147
+ 'management/schemaFor': jest.fn(),
148
+ 'current_store/all': jest.fn(),
149
+ 'i18n/t': jest.fn(),
150
+ 'i18n/withFallback': jest.fn(),
151
+ },
152
+ dispatch: {
153
+ 'management/find': jest.fn(),
154
+ 'management/findAll': () => ([option]),
155
+ }
156
+ },
157
+ },
158
+ stubs: {
159
+ CruResource: { template: '<div><slot></slot></div>' }, // Required to render the slot content
160
+ Banner: true,
161
+ LabeledSelect: true,
162
+ ACE: true,
163
+ AgentEnv: true,
164
+ ArrayList: true,
165
+ ArrayListGrouped: true,
166
+ BadgeState: true,
167
+ Checkbox: true,
168
+ ClusterMembershipEditor: true,
169
+ DrainOptions: true,
170
+ LabeledInput: true,
171
+ Labels: true,
172
+ Loading: true,
173
+ MachinePool: true,
174
+ MatchExpressions: true,
175
+ NameNsDescription: true,
176
+ Questions: true,
177
+ RadioGroup: true,
178
+ RegistryConfigs: true,
179
+ RegistryMirrors: true,
180
+ S3Config: true,
181
+ SelectCredential: true,
182
+ SelectOrCreateAuthSecret: true,
183
+ Tab: true,
184
+ Tabbed: true,
185
+ UnitInput: true,
186
+ YamlEditor: true,
187
+ }
188
+ });
189
+
190
+ const select = wrapper.find('[data-testid="rke2-custom-edit-psa"]');
191
+
192
+ expect((select.vm as unknown as any).options[0].label).toStrictEqual(`${ label } (Current)`);
193
+ });
194
+
195
+ it.each([
196
+ ['anything', false, true],
197
+ ['', false, false],
198
+ ['', true, false],
199
+ ])('given CIS value as %p and its override as %p, it should set PSA dropdown as disabled %p', (cis, override, disabled) => {
200
+ const label = 'whatever';
201
+ const k8s = 'v1.25.0+rke2r1';
202
+ const option = { label, value: label };
203
+ const wrapper = mount(rke2, {
204
+ propsData: {
205
+ mode: 'create',
206
+ value: {
207
+ agentConfig: { profile: cis },
208
+ spec: {
209
+ rkeConfig: { etcd: { disableSnapshots: false } },
210
+ chartValues: {},
211
+ defaultPodSecurityAdmissionConfigurationTemplateName: label,
212
+ kubernetesVersion: k8s
213
+ }
214
+ },
215
+ provider: 'custom',
216
+ resource: {}
217
+ },
218
+ computed: {
219
+ showForm() {
220
+ return true;
221
+ },
222
+ hasMachinePools() {
223
+ return false;
224
+ },
225
+ showk8s21LegacyWarning() {
226
+ return false;
227
+ },
228
+ agentArgs: () => ({ profile: { options: [cis] } }),
229
+ versionOptions: () => [
230
+ {
231
+ value: k8s,
232
+ agentArgs: { profile: { options: [cis] } },
233
+ charts: {},
234
+ profile: { options: [cis] }
235
+ }
236
+ ]
237
+ },
238
+ mocks: {
239
+ $fetchState: { pending: false },
240
+ $route: {
241
+ name: 'anything',
242
+ query: { AS: 'yaml' },
243
+ },
244
+ $store: {
245
+ getters: {
246
+ currentStore: () => 'current_store',
247
+ 'management/schemaFor': jest.fn(),
248
+ 'current_store/all': jest.fn(),
249
+ 'i18n/t': jest.fn(),
250
+ 'i18n/withFallback': jest.fn(),
251
+ },
252
+ dispatch: {
253
+ 'management/find': jest.fn(),
254
+ 'management/findAll': () => ([option]),
255
+ }
256
+ },
257
+ },
258
+ stubs: {
259
+ CruResource: { template: '<div><slot></slot></div>' }, // Required to render the slot content
260
+ Banner: true,
261
+ LabeledSelect: true,
262
+ ACE: true,
263
+ AgentEnv: true,
264
+ ArrayList: true,
265
+ ArrayListGrouped: true,
266
+ BadgeState: true,
267
+ Checkbox: true,
268
+ ClusterMembershipEditor: true,
269
+ DrainOptions: true,
270
+ LabeledInput: true,
271
+ Labels: true,
272
+ Loading: true,
273
+ MachinePool: true,
274
+ MatchExpressions: true,
275
+ NameNsDescription: true,
276
+ Questions: true,
277
+ RadioGroup: true,
278
+ RegistryConfigs: true,
279
+ RegistryMirrors: true,
280
+ S3Config: true,
281
+ SelectCredential: true,
282
+ SelectOrCreateAuthSecret: true,
283
+ Tab: true,
284
+ Tabbed: true,
285
+ UnitInput: true,
286
+ YamlEditor: true,
287
+ }
288
+ });
289
+
290
+ wrapper.setData({ cisOverride: override });
291
+
292
+ const select = wrapper.find('[data-testid="rke2-custom-edit-psa"]');
293
+
294
+ expect((select.vm as unknown as any).disabled).toBe(disabled);
295
+ });
96
296
  });
@@ -135,31 +135,29 @@ export default {
135
135
  @finish="saveOverride"
136
136
  @error="e=>errors = e"
137
137
  >
138
- <div class="mt-20">
139
- <Banner
140
- v-if="harvesterLocation"
141
- color="info"
142
- :closable="true"
143
- class="mb-20"
144
- @close="hideHarvesterNotice"
145
- >
146
- {{ t('cluster.harvester.importNotice') }}
147
- <nuxt-link :to="harvesterLocation">
148
- {{ t('product.harvesterManager') }}
149
- </nuxt-link>
150
- </Banner>
151
-
152
- <NameNsDescription
153
- v-if="!isView"
154
- v-model="value"
155
- :mode="mode"
156
- :namespaced="false"
157
- name-label="cluster.name.label"
158
- name-placeholder="cluster.name.placeholder"
159
- description-label="cluster.description.label"
160
- description-placeholder="cluster.description.placeholder"
161
- />
162
- </div>
138
+ <Banner
139
+ v-if="harvesterLocation"
140
+ color="info"
141
+ :closable="true"
142
+ class="mb-20"
143
+ @close="hideHarvesterNotice"
144
+ >
145
+ {{ t('cluster.harvester.importNotice') }}
146
+ <nuxt-link :to="harvesterLocation">
147
+ {{ t('product.harvesterManager') }}
148
+ </nuxt-link>
149
+ </Banner>
150
+
151
+ <NameNsDescription
152
+ v-if="!isView"
153
+ v-model="value"
154
+ :mode="mode"
155
+ :namespaced="false"
156
+ name-label="cluster.name.label"
157
+ name-placeholder="cluster.name.placeholder"
158
+ description-label="cluster.description.label"
159
+ description-placeholder="cluster.description.placeholder"
160
+ />
163
161
 
164
162
  <Tabbed :side-tabs="true">
165
163
  <Tab