@rancher/shell 0.5.3 → 1.2.1

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 (356) hide show
  1. package/.DS_Store +0 -0
  2. package/assets/images/providers/aks-black.svg +28 -0
  3. package/assets/images/providers/aks.svg +31 -0
  4. package/assets/styles/global/_labeled-input.scss +1 -0
  5. package/assets/styles/global/_layout.scss +0 -99
  6. package/assets/translations/en-us.yaml +76 -74
  7. package/assets/translations/zh-hans.yaml +25 -23
  8. package/babel.config.js +1 -7
  9. package/chart/gatekeeper.vue +11 -2
  10. package/chart/istio.vue +10 -1
  11. package/chart/logging/index.vue +11 -2
  12. package/chart/monitoring/alerting/index.vue +21 -7
  13. package/chart/monitoring/grafana/index.vue +2 -57
  14. package/chart/monitoring/index.vue +26 -52
  15. package/chart/monitoring/prometheus/index.vue +43 -37
  16. package/chart/rancher-backup/index.vue +10 -3
  17. package/cloud-credential/azure.vue +17 -4
  18. package/components/AsyncButton.vue +0 -9
  19. package/components/Carousel.vue +0 -1
  20. package/components/ChartPsp.vue +76 -0
  21. package/components/ClusterIconMenu.vue +9 -24
  22. package/components/CodeMirror.vue +16 -75
  23. package/components/CopyCode.vue +2 -6
  24. package/components/CopyToClipboard.vue +1 -2
  25. package/components/CopyToClipboardText.vue +9 -14
  26. package/components/CruResource.vue +0 -1
  27. package/components/EtcdInfoBanner.vue +5 -5
  28. package/components/ExplorerProjectsNamespaces.vue +1 -25
  29. package/components/FixedBanner.vue +0 -1
  30. package/components/IconOrSvg.vue +1 -1
  31. package/components/Markdown.vue +12 -16
  32. package/components/Questions/index.vue +1 -1
  33. package/components/ResourceDetail/Masthead.vue +9 -25
  34. package/components/ResourceDetail/index.vue +4 -1
  35. package/components/ResourceList/Masthead.vue +18 -1
  36. package/components/ResourceTable.vue +2 -14
  37. package/components/ResourceYaml.vue +5 -34
  38. package/components/SideNav.vue +65 -43
  39. package/components/SortableTable/THead.vue +9 -7
  40. package/components/SortableTable/index.vue +2 -1
  41. package/components/StatusTable.vue +1 -5
  42. package/components/TabTitle.vue +84 -0
  43. package/components/Tabbed/index.vue +0 -12
  44. package/components/YamlEditor.vue +0 -1
  45. package/components/__tests__/ChartPsp.test.ts +75 -0
  46. package/components/__tests__/CopyCode.test.ts +4 -5
  47. package/components/fleet/FleetBundles.vue +11 -5
  48. package/components/fleet/FleetRepos.vue +27 -62
  49. package/components/fleet/FleetResources.vue +1 -6
  50. package/components/fleet/FleetStatus.vue +3 -3
  51. package/components/fleet/FleetSummary.vue +30 -35
  52. package/components/form/ArrayList.vue +8 -1
  53. package/components/form/ArrayListSelect.vue +9 -9
  54. package/components/form/BannerSettings.vue +0 -3
  55. package/components/form/FileSelector.vue +0 -1
  56. package/components/form/KeyValue.vue +0 -2
  57. package/components/form/LabeledSelect.vue +0 -4
  58. package/components/form/Password.vue +1 -3
  59. package/components/form/Select.vue +1 -1
  60. package/components/form/SelectOrCreateAuthSecret.vue +4 -4
  61. package/components/form/__tests__/KeyValue.test.ts +1 -1
  62. package/components/formatter/Checked.vue +3 -11
  63. package/components/formatter/ClusterProvider.vue +18 -1
  64. package/components/formatter/FleetSummaryGraph.vue +11 -23
  65. package/components/formatter/LiveDate.vue +16 -0
  66. package/components/formatter/LiveDuration.vue +1 -1
  67. package/components/formatter/PercentageBar.vue +1 -1
  68. package/components/formatter/WorkloadDetailEndpoints.vue +22 -12
  69. package/components/formatter/__tests__/ClusterProvider.test.ts +28 -0
  70. package/components/nav/Group.vue +2 -2
  71. package/components/nav/Header.vue +2 -2
  72. package/components/nav/Jump.vue +9 -19
  73. package/components/nav/TopLevelMenu.vue +18 -66
  74. package/components/nav/Type.vue +7 -16
  75. package/components/nav/WindowManager/ContainerLogs.vue +19 -120
  76. package/components/nav/WindowManager/ContainerShell.vue +1 -6
  77. package/components/nav/WindowManager/index.vue +10 -11
  78. package/components/nav/__tests__/TopLevelMenu.test.ts +1 -34
  79. package/components/nav/__tests__/Type.test.ts +1 -31
  80. package/components/nuxt/nuxt-child.js +78 -14
  81. package/components/nuxt/nuxt.js +1 -1
  82. package/components/user.retention/user-retention-header.vue +34 -0
  83. package/composables/useI18n.ts +26 -0
  84. package/composables/useStore.ts +16 -0
  85. package/config/harvester-manager-types.js +0 -2
  86. package/config/home-links.js +32 -2
  87. package/config/private-label.js +0 -22
  88. package/config/product/explorer.js +4 -4
  89. package/config/product/fleet.js +1 -6
  90. package/config/product/legacy.js +1 -84
  91. package/config/product/manager.js +15 -8
  92. package/config/query-params.js +0 -1
  93. package/config/router.js +368 -385
  94. package/config/settings.ts +9 -2
  95. package/config/store.js +1 -1
  96. package/config/system-namespaces.js +0 -3
  97. package/config/table-headers.js +27 -47
  98. package/config/types.js +5 -0
  99. package/config/uiplugins.js +1 -1
  100. package/core/plugin-helpers.js +5 -3
  101. package/core/plugin-routes.ts +114 -56
  102. package/core/plugin.ts +10 -16
  103. package/core/plugins-loader.js +9 -7
  104. package/core/plugins.js +3 -0
  105. package/core/types-provisioning.ts +0 -7
  106. package/creators/app/init +0 -19
  107. package/detail/fleet.cattle.io.bundle.vue +1 -1
  108. package/detail/fleet.cattle.io.cluster.vue +1 -11
  109. package/detail/node.vue +0 -42
  110. package/detail/pod.vue +1 -68
  111. package/detail/provisioning.cattle.io.cluster.vue +8 -25
  112. package/detail/workload/index.vue +1 -15
  113. package/dialog/ScaleMachineDownDialog.vue +17 -34
  114. package/edit/auth/googleoauth.vue +5 -1
  115. package/edit/catalog.cattle.io.clusterrepo.vue +7 -20
  116. package/edit/cloudcredential.vue +0 -2
  117. package/edit/fleet.cattle.io.gitrepo.vue +4 -3
  118. package/edit/management.cattle.io.project.vue +52 -1
  119. package/edit/management.cattle.io.setting.vue +2 -32
  120. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +1 -1
  121. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +2 -1
  122. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +1 -1
  123. package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +3 -12
  124. package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +1 -2
  125. package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.spec.ts +1 -1
  126. package/edit/provisioning.cattle.io.cluster/{tabs/Basics.vue → Basics.vue} +125 -106
  127. package/edit/provisioning.cattle.io.cluster/{tabs/MachinePool.vue → MachinePool.vue} +7 -1
  128. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +7 -15
  129. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.tests.ts +237 -0
  130. package/edit/provisioning.cattle.io.cluster/__tests__/{CustomCommand.test.ts → CustomCommand.tests.ts} +0 -6
  131. package/edit/provisioning.cattle.io.cluster/__tests__/DrainOptions.test.ts +1 -1
  132. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +1 -7
  133. package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
  134. package/edit/provisioning.cattle.io.cluster/index.vue +40 -109
  135. package/edit/provisioning.cattle.io.cluster/rke2.vue +689 -152
  136. package/edit/service.vue +0 -12
  137. package/edit/token.vue +0 -1
  138. package/edit/workload/Upgrading.vue +2 -3
  139. package/edit/workload/index.vue +1 -2
  140. package/edit/workload/mixins/workload.js +1 -1
  141. package/initialize/App.js +71 -25
  142. package/initialize/client.js +162 -21
  143. package/initialize/index.js +124 -47
  144. package/initialize/layouts.ts +26 -0
  145. package/{components/templates → layouts}/blank.vue +1 -1
  146. package/{components/templates → layouts}/default.vue +98 -8
  147. package/{components/templates → layouts}/error.vue +19 -10
  148. package/{components/templates → layouts}/home.vue +1 -4
  149. package/{components/templates → layouts}/plain.vue +1 -4
  150. package/{components/templates → layouts}/standalone.vue +1 -1
  151. package/{components/templates → layouts}/unauthenticated.vue +1 -1
  152. package/list/catalog.cattle.io.app.vue +0 -1
  153. package/list/management.cattle.io.feature.vue +7 -1
  154. package/list/management.cattle.io.setting.vue +0 -1
  155. package/list/management.cattle.io.user.vue +25 -1
  156. package/list/node.vue +0 -1
  157. package/machine-config/__tests__/vmwarevsphere.test.ts +161 -56
  158. package/machine-config/azure.vue +37 -21
  159. package/machine-config/vmwarevsphere.vue +47 -42
  160. package/middleware/authenticated.js +19 -14
  161. package/mixins/auth-config.js +7 -2
  162. package/mixins/brand.js +41 -29
  163. package/mixins/fetch.server.js +73 -0
  164. package/mixins/labeled-form-element.ts +1 -6
  165. package/models/__tests__/management.cattle.io.node.ts +0 -85
  166. package/models/__tests__/namespace.test.ts +9 -49
  167. package/models/cluster/node.js +4 -4
  168. package/models/cluster.x-k8s.io.machine.js +1 -1
  169. package/models/cluster.x-k8s.io.machinedeployment.js +0 -14
  170. package/models/fleet.cattle.io.cluster.js +0 -4
  171. package/models/fleet.cattle.io.gitrepo.js +13 -56
  172. package/models/management.cattle.io.cluster.js +3 -11
  173. package/models/management.cattle.io.kontainerdriver.js +0 -1
  174. package/models/management.cattle.io.node.js +14 -18
  175. package/models/management.cattle.io.nodepool.js +0 -17
  176. package/models/management.cattle.io.project.js +36 -0
  177. package/models/management.cattle.io.setting.js +7 -11
  178. package/models/management.cattle.io.user.js +65 -0
  179. package/models/namespace.js +1 -1
  180. package/models/pod.js +0 -20
  181. package/models/provisioning.cattle.io.cluster.js +9 -91
  182. package/models/secret.js +18 -126
  183. package/models/storage.k8s.io.storageclass.js +1 -1
  184. package/models/workload.js +0 -16
  185. package/models/workload.service.js +0 -18
  186. package/package.json +10 -12
  187. package/pages/about.vue +1 -0
  188. package/pages/account/create-key.vue +1 -0
  189. package/pages/account/index.vue +1 -0
  190. package/pages/auth/login.vue +1 -0
  191. package/pages/auth/logout.vue +2 -0
  192. package/pages/auth/setup.vue +4 -37
  193. package/pages/auth/verify.vue +8 -14
  194. package/pages/c/_cluster/apps/charts/__tests__/install.helper.test.ts +17 -2
  195. package/pages/c/_cluster/apps/charts/index.vue +58 -64
  196. package/pages/c/_cluster/apps/charts/install.helpers.js +13 -2
  197. package/pages/c/_cluster/apps/charts/install.vue +5 -5
  198. package/pages/c/_cluster/apps/index.vue +2 -0
  199. package/pages/c/_cluster/auth/index.vue +2 -0
  200. package/pages/c/_cluster/auth/user.retention/index.vue +384 -0
  201. package/pages/c/_cluster/ecm/index.vue +2 -0
  202. package/pages/c/_cluster/explorer/index.vue +53 -56
  203. package/pages/c/_cluster/explorer/tools/index.vue +3 -171
  204. package/pages/c/_cluster/fleet/index.vue +1 -1
  205. package/pages/c/_cluster/index.vue +2 -0
  206. package/pages/c/_cluster/manager/pages/_page.vue +5 -4
  207. package/pages/c/_cluster/monitoring/index.vue +1 -17
  208. package/pages/c/_cluster/settings/DefaultLinksEditor.vue +1 -1
  209. package/pages/c/_cluster/settings/banners.vue +2 -0
  210. package/pages/c/_cluster/settings/brand.vue +2 -3
  211. package/pages/c/_cluster/settings/index.vue +2 -0
  212. package/pages/c/_cluster/settings/links.vue +3 -2
  213. package/pages/c/_cluster/settings/performance.vue +1 -0
  214. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +1 -2
  215. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +46 -10
  216. package/pages/c/_cluster/uiplugins/index.vue +2 -0
  217. package/pages/c/index.vue +9 -0
  218. package/pages/diagnostic.vue +2 -1
  219. package/pages/fail-whale.vue +1 -0
  220. package/pages/prefs.vue +1 -0
  221. package/pages/rio/mesh.vue +508 -0
  222. package/pages/support/index.vue +8 -2
  223. package/pkg/auto-import.js +1 -1
  224. package/plugins/axios.js +36 -0
  225. package/plugins/back-button.js +5 -3
  226. package/plugins/clean-html-directive.js +19 -1
  227. package/plugins/clean-tooltip-directive.js +1 -1
  228. package/plugins/codemirror-loader.js +1 -1
  229. package/plugins/codemirror.js +0 -41
  230. package/plugins/dashboard-store/__tests__/{mutations.test.ts → mutations.spec.ts} +1 -1
  231. package/plugins/dashboard-store/actions.js +17 -16
  232. package/plugins/dashboard-store/classify.js +18 -1
  233. package/plugins/dashboard-store/getters.js +7 -70
  234. package/plugins/dashboard-store/index.js +12 -0
  235. package/plugins/dashboard-store/mutations.js +4 -0
  236. package/plugins/dashboard-store/resource-class.js +20 -65
  237. package/plugins/i18n.js +1 -1
  238. package/plugins/steve/__tests__/getters.spec.ts +48 -26
  239. package/plugins/steve/__tests__/subscribe.spec.ts +106 -0
  240. package/plugins/steve/actions.js +37 -3
  241. package/plugins/steve/getters.js +24 -7
  242. package/plugins/steve/mutations.js +5 -2
  243. package/plugins/steve/norman-class.js +0 -19
  244. package/plugins/steve/steve-class.js +0 -22
  245. package/plugins/steve/subscribe.js +34 -13
  246. package/plugins/transitions.js +4 -0
  247. package/plugins/vue-clipboard2.js +4 -0
  248. package/rancher-components/Accordion/Accordion.vue +3 -2
  249. package/rancher-components/BadgeState/BadgeState.vue +3 -3
  250. package/rancher-components/Banner/Banner.test.ts +1 -5
  251. package/rancher-components/Banner/Banner.vue +2 -2
  252. package/rancher-components/Card/Card.vue +4 -4
  253. package/rancher-components/Form/Checkbox/Checkbox.vue +4 -3
  254. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +1 -1
  255. package/rancher-components/Form/LabeledInput/LabeledInput.vue +55 -24
  256. package/rancher-components/Form/Radio/RadioButton.test.ts +1 -3
  257. package/rancher-components/Form/Radio/RadioButton.vue +13 -7
  258. package/rancher-components/Form/Radio/RadioGroup.vue +4 -3
  259. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +7 -5
  260. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
  261. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +9 -4
  262. package/rancher-components/StringList/StringList.vue +8 -8
  263. package/rancher-components/components/Accordion/Accordion.vue +3 -2
  264. package/rancher-components/components/BadgeState/BadgeState.test.ts +12 -0
  265. package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +2 -19
  266. package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +14 -11
  267. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +1 -1
  268. package/rancher-components/components/StringList/StringList.test.ts +0 -270
  269. package/rancher-components/components/StringList/StringList.vue +18 -57
  270. package/scripts/extension/bundle +7 -19
  271. package/scripts/extension/helm/scripts/package +3 -11
  272. package/scripts/extension/parse-tag-name +4 -4
  273. package/scripts/extension/publish +9 -20
  274. package/scripts/publish-shell.sh +1 -11
  275. package/scripts/test-plugins-build.sh +9 -85
  276. package/store/catalog.js +1 -1
  277. package/store/features.js +0 -1
  278. package/store/i18n.js +0 -11
  279. package/store/index.js +13 -11
  280. package/store/prefs.js +38 -33
  281. package/store/type-map.js +82 -157
  282. package/tsconfig.default.json +46 -0
  283. package/tsconfig.json +9 -35
  284. package/types/shell/index.d.ts +407 -468
  285. package/utils/axios.js +19 -0
  286. package/utils/create-yaml.js +1 -5
  287. package/utils/custom-validators.js +2 -0
  288. package/utils/error.js +1 -16
  289. package/utils/monitoring.js +2 -37
  290. package/utils/nuxt.js +39 -18
  291. package/utils/object.js +0 -24
  292. package/utils/router.scrollBehavior.js +14 -12
  293. package/utils/socket.js +1 -0
  294. package/utils/time.js +1 -1
  295. package/utils/title.ts +3 -0
  296. package/utils/url.ts +1 -1
  297. package/utils/validators/formRules/__tests__/index.test.ts +4 -49
  298. package/utils/validators/formRules/index.ts +9 -12
  299. package/utils/validators/setting.js +10 -6
  300. package/vue.config.js +3 -24
  301. package/chart/monitoring/steps/uninstall-v1.vue +0 -135
  302. package/components/Certificates.vue +0 -164
  303. package/components/__tests__/CodeMirror.spec.ts +0 -99
  304. package/components/fleet/__tests__/FleetSummary.test.ts +0 -316
  305. package/components/formatter/FleetClusterSummaryGraph.vue +0 -27
  306. package/components/formatter/__tests__/Checked.test.ts +0 -19
  307. package/components/formatter/__tests__/WorkloadDetailEndpoints.test.ts +0 -81
  308. package/components/nav/WindowManager/__tests__/ContainerLogs.test.ts +0 -186
  309. package/composables/useCompactInput.ts +0 -20
  310. package/composables/useLabeledFormElement.ts +0 -138
  311. package/creators/app/files/.gitlab-ci.yml +0 -14
  312. package/detail/__tests__/provisioning.cattle.io.cluster.test.ts +0 -77
  313. package/edit/__tests__/service.test.ts +0 -89
  314. package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +0 -112
  315. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +0 -473
  316. package/edit/provisioning.cattle.io.cluster/__tests__/index.test.ts +0 -73
  317. package/edit/provisioning.cattle.io.cluster/__tests__/utils/cluster.ts +0 -386
  318. package/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig.vue +0 -137
  319. package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +0 -157
  320. package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +0 -135
  321. package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +0 -189
  322. package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +0 -147
  323. package/edit/provisioning.cattle.io.cluster/tabs/upgrade/index.vue +0 -76
  324. package/mixins/v1-workload-metrics.js +0 -43
  325. package/models/__tests__/management.cattle.io.cluster.test.ts +0 -23
  326. package/models/__tests__/management.cattle.io.nodepool.ts +0 -83
  327. package/models/__tests__/provisioning.cattle.io.cluster.test.ts +0 -241
  328. package/models/__tests__/secret.test.ts +0 -37
  329. package/models/__tests__/storage.k8s.io.storageclass.test.ts +0 -22
  330. package/models/__tests__/workload.test.ts +0 -91
  331. package/plugins/clean-html.js +0 -53
  332. package/plugins/dashboard-store/__tests__/resource-class.test.ts +0 -49
  333. package/plugins/dashboard-store/__tests__/utils/store-mocks.ts +0 -7
  334. package/plugins/index.js +0 -11
  335. package/plugins/steve/__tests__/resource-utils.test.ts +0 -159
  336. package/plugins/steve/__tests__/steve-class.spec.ts +0 -59
  337. package/plugins/steve/__tests__/utils/steve-mocks.ts +0 -31
  338. package/plugins/steve/resource-utils.ts +0 -38
  339. package/scripts/.gitlab/workflows/build-extension-catalog.gitlab-ci.yml +0 -50
  340. package/server/har-file.js +0 -183
  341. package/store/__tests__/type-map.test.ts +0 -1122
  342. package/tsconfig.paths.json +0 -18
  343. package/utils/azure.js +0 -24
  344. package/utils/clipboard.js +0 -5
  345. /package/components/form/__tests__/{NameNsDescription.test.ts → NameNsDescription.ts} +0 -0
  346. /package/edit/networking.k8s.io.networkpolicy/__tests__/utils/{selectors.test.ts → selectors.ts} +0 -0
  347. /package/edit/provisioning.cattle.io.cluster/{tabs/networking/ACE.vue → ACE.vue} +0 -0
  348. /package/edit/provisioning.cattle.io.cluster/{tabs/AgentConfiguration.vue → AgentConfiguration.vue} +0 -0
  349. /package/edit/provisioning.cattle.io.cluster/{tabs/upgrade/DrainOptions.vue → DrainOptions.vue} +0 -0
  350. /package/edit/provisioning.cattle.io.cluster/{tabs/MemberRoles.vue → MemberRoles.vue} +0 -0
  351. /package/edit/provisioning.cattle.io.cluster/{tabs/registries/RegistryConfigs.vue → RegistryConfigs.vue} +0 -0
  352. /package/edit/provisioning.cattle.io.cluster/{tabs/registries/RegistryMirrors.vue → RegistryMirrors.vue} +0 -0
  353. /package/edit/provisioning.cattle.io.cluster/{tabs/etcd/S3Config.vue → S3Config.vue} +0 -0
  354. /package/plugins/dashboard-store/__tests__/{actions.test.ts → actions.spec.ts} +0 -0
  355. /package/plugins/dashboard-store/__tests__/{getters.test.ts → getters.spec.ts} +0 -0
  356. /package/rancher-components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
@@ -1,59 +0,0 @@
1
- import Steve from '@shell/plugins/steve/steve-class.js';
2
- import { steveClassJunkObject } from './utils/steve-mocks';
3
-
4
- describe('class: Steve', () => {
5
- describe('given custom resource keys', () => {
6
- const customResource = steveClassJunkObject;
7
-
8
- it('should keep internal keys', () => {
9
- const steve = new Steve(customResource, {
10
- getters: { schemaFor: () => ({ linkFor: jest.fn() }) },
11
- dispatch: jest.fn(),
12
- rootGetters: { 'i18n/t': jest.fn() },
13
- });
14
-
15
- expect({ ...steve }).toStrictEqual(customResource);
16
- });
17
-
18
- describe('method: save', () => {
19
- it('should remove all the internal keys', async() => {
20
- const dispatch = jest.fn();
21
- const steve = new Steve(customResource, {
22
- getters: { schemaFor: () => ({ linkFor: jest.fn() }) },
23
- dispatch,
24
- rootGetters: { 'i18n/t': jest.fn() },
25
- });
26
-
27
- const expectation = {
28
- type: customResource.type,
29
- metadata: {
30
- resourceVersion: 'whatever',
31
- fields: 'whatever',
32
- clusterName: 'whatever',
33
- deletionGracePeriodSeconds: 'whatever',
34
- generateName: 'whatever',
35
- },
36
- spec: { versions: {} }
37
- };
38
-
39
- await steve.save();
40
-
41
- const opt = {
42
- data: expectation,
43
- headers: {
44
- accept: 'application/json',
45
- 'content-type': 'application/json',
46
- },
47
- method: 'post',
48
- url: undefined,
49
- };
50
-
51
- // Data sent should have been cleaned
52
- expect(dispatch).toHaveBeenCalledWith('request', { opt, type: customResource.type });
53
-
54
- // Original workload model should remain unchanged
55
- expect({ ...steve }).toStrictEqual(customResource);
56
- });
57
- });
58
- });
59
- });
@@ -1,31 +0,0 @@
1
- import { resourceClassJunkObject } from '@shell/plugins/dashboard-store/__tests__/utils/store-mocks';
2
-
3
- const customType = 'asdasd';
4
-
5
- export const steveClassJunkObject = {
6
- ...resourceClassJunkObject,
7
- type: customType,
8
- __clone: 'whatever',
9
- metadata: {
10
- clusterName: 'whatever',
11
- creationTimestamp: 'whatever',
12
- deletionGracePeriodSeconds: 'whatever',
13
- deletionTimestamp: 'whatever',
14
- fields: 'whatever',
15
- finalizers: 'whatever',
16
- generateName: 'whatever',
17
- generation: 'whatever',
18
- initializers: 'whatever',
19
- managedFields: 'whatever',
20
- ownerReferences: 'whatever',
21
- relationships: 'whatever',
22
- selfLink: 'whatever',
23
- state: 'whatever',
24
- uid: 'whatever',
25
- resourceVersion: 'whatever',
26
- },
27
- spec: { versions: { schema: 'whatever' } },
28
- links: 'whatever',
29
- status: 'whatever',
30
- stringData: 'whatever',
31
- };
@@ -1,38 +0,0 @@
1
- import { dropKeys } from '@shell/utils/object';
2
- import jsyaml from 'js-yaml';
3
-
4
- export function steveCleanForDownload(yaml: string, keys?: {
5
- rootKeys?: string[],
6
- metadataKeys?: string[],
7
- conditionKeys?: string[]
8
- }): string | undefined {
9
- if (!yaml) {
10
- return;
11
- }
12
-
13
- const {
14
- rootKeys = [
15
- 'id',
16
- 'links',
17
- 'type',
18
- 'actions'
19
- ],
20
- metadataKeys = [
21
- 'fields',
22
- 'relationships',
23
- 'state',
24
- ],
25
- conditionKeys = [
26
- 'error',
27
- 'transitioning',
28
- ]
29
- } = keys || {};
30
-
31
- const obj: any = jsyaml.load(yaml);
32
-
33
- dropKeys(obj, rootKeys);
34
- dropKeys(obj?.metadata, metadataKeys);
35
- (obj?.status?.conditions || []).forEach((condition: any) => dropKeys(condition, conditionKeys));
36
-
37
- return jsyaml.dump(obj);
38
- }
@@ -1,50 +0,0 @@
1
- .podman-setup: &podman-setup
2
- - zypper --non-interactive install jq podman
3
- - usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $(id -nu)
4
- - podman login -u $REGISTRY_USER -p $REGISTRY_PASSWORD $REGISTRY
5
-
6
- check_version_collisions:
7
- stage: check_version
8
- rules:
9
- - changes:
10
- - package.json
11
- script:
12
- - *podman-setup
13
- - |
14
- PACKAGE_VERSION=`jq -r .version package.json`
15
- PACKAGE_NAME=`jq -r .name package.json`
16
-
17
- readarray -t VERSIONS < <(podman search $REGISTRY/$IMAGE_NAMESPACE/ui-extension-$PACKAGE_NAME --list-tags --format {{.Tag}})
18
-
19
- echo -e "Checking for version collisions with Extension version: ${PACKAGE_VERSION}"
20
- for version in ${VERSIONS[@]}; do
21
- if [[ ${version} == ${PACKAGE_VERSION} ]]; then
22
- echo "Cannot overwrite production image version ${version} since it already exists."
23
- podman logout $REGISTRY
24
- exit 1
25
- fi
26
- done
27
-
28
- echo -e "Published image not found for version ${PACKAGE_VERSION}, continuing build..."
29
- tags:
30
- - linux
31
-
32
- build_and_release:
33
- stage: build_catalog
34
- rules:
35
- - changes:
36
- - package.json
37
- script:
38
- - *podman-setup
39
- - zypper addrepo https://download.opensuse.org/repositories/devel:languages:nodejs/SLE_12_SP5/devel:languages:nodejs.repo
40
- - zypper --non-interactive --no-gpg-checks refresh
41
- - zypper --non-interactive install go git nodejs14 npm helm
42
- - YQ_URL="https://github.com/mikefarah/yq/releases/download/v4.35.2/yq_linux_amd64"
43
- - curl -sLf ${YQ_URL} -o /usr/bin/yq && chmod +x /usr/bin/yq
44
- - npm install -g --unsafe-perm yarn
45
- - yarn
46
- - yarn publish-pkgs -cl -r $REGISTRY -o $IMAGE_NAMESPACE
47
- - podman push `podman images -f reference!=registry.suse.com/bci/bci-base --format "{{index .Names 0}}"`
48
- - podman logout $REGISTRY
49
- tags:
50
- - linux
@@ -1,183 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
-
4
- // When we receive a request to this URL we will reset the session to replay again from the HAR file
5
- // This allows the user to refresh the browser and replay the HAR file again
6
- const RESET_URL = '/api/v1/namespaces/cattle-ui-plugin-system/services/http:ui-plugin-operator:80/proxy/index.json';
7
-
8
- const EXCLUDES_QS = '?exclude=metadata.managedFields';
9
-
10
- /**
11
- * Load the network requests/responses from the har file
12
- * @param name name/path of the file
13
- * @param port port that the local dev server is running on
14
- * @returns har file data
15
- */
16
- function loadFile(name, port, dashboard) {
17
- const newBase = `https://127.0.0.1:${ port }`;
18
- const data = {};
19
-
20
- console.log(`Loading HAR file: ${ name }`); // eslint-disable-line no-console
21
-
22
- const rawData = fs.readFileSync(name);
23
- const har = JSON.parse(rawData);
24
- let base = '';
25
- let uri = '';
26
-
27
- if (har?.log?.pages) {
28
- const page = har.log.pages.find((page) => page.title.includes('/dashboard/'));
29
-
30
- if (page) {
31
- const parts = page.title.split('/dashboard');
32
-
33
- base = parts[0];
34
- uri = parts[1];
35
- }
36
- }
37
-
38
- if (har?.log?.entries) {
39
- console.log('Network requests:'); // eslint-disable-line no-console
40
-
41
- har.log.entries.forEach((r) => {
42
- const mimeType = r.response.content.mimeType;
43
-
44
- // Only cache json responses
45
- if (mimeType === 'application/json' || mimeType === 'text/plain') {
46
- let url = r.request.url;
47
-
48
- if (url.startsWith(base)) {
49
- url = url.substr(base.length);
50
- }
51
-
52
- console.log(` ${ r.request.method } ${ decodeURIComponent(url) }`); // eslint-disable-line no-console
53
-
54
- data[url] = data[url] || {};
55
- data[url][r.request.method] = data[url][r.request.method] || [];
56
-
57
- const item = {
58
- status: r.response.status,
59
- statusText: r.response.statusText,
60
- headers: r.response.headers,
61
- content: r.response.content
62
- };
63
-
64
- if (item.content.text) {
65
- item.content.text = item.content.text.replaceAll(base, newBase);
66
- data[url][r.request.method].push(item);
67
- } else {
68
- console.log(' Warning: Omitting this response as there is no content - UI may not work as expected'); // eslint-disable-line no-console
69
- }
70
- }
71
- });
72
- }
73
-
74
- console.log('Page:'); // eslint-disable-line no-console
75
- console.log(` ${ newBase }${ dashboard }${ uri }`); // eslint-disable-line no-console
76
- console.log(''); // eslint-disable-line no-console
77
-
78
- return data;
79
- }
80
-
81
- function exportToFiles(data, folder) {
82
- console.log(`Exporting request data to ${ folder }`); // eslint-disable-line no-console
83
-
84
- Object.keys(data).forEach((r) => {
85
- const out = path.join(folder, `.${ r }`);
86
- const dir = path.dirname(out);
87
-
88
- console.log(r); // eslint-disable-line no-console
89
-
90
- Object.keys(data[r]).forEach((method) => {
91
- const name = `${ path.basename(out) }.${ method.toLowerCase() }.json`;
92
-
93
- fs.mkdirSync(dir, { recursive: true });
94
-
95
- data[r][method].forEach((request) => {
96
- const formatted = JSON.stringify(JSON.parse(request.content.text), null, 2);
97
-
98
- fs.writeFileSync(path.join(dir, name), formatted);
99
- });
100
- });
101
- });
102
- }
103
-
104
- function harProxy(responses, folder) {
105
- let session = JSON.parse(JSON.stringify(responses));
106
-
107
- return (req, res, next) => {
108
- if (req.originalUrl === RESET_URL) {
109
- session = JSON.parse(JSON.stringify(responses));
110
- console.log('>>>>>>>> Reset session replay from har file'); // eslint-disable-line no-console
111
- }
112
-
113
- const url = decodeURIComponent(req.originalUrl);
114
- let playback = session[req.originalUrl];
115
-
116
- // If it did not match, try without the metadata excludes query string that was adding in 2.8.0
117
- // This might allow HAR captures with Rancher < 2.8.0 to be replayed on >= 2.8.0
118
- if (!playback && req.originalUrl.endsWith(EXCLUDES_QS)) {
119
- playback = session[req.originalUrl.slice(0, -EXCLUDES_QS.length)];
120
- }
121
-
122
- if (playback && playback[req.method] && playback[req.method].length) {
123
- const resp = playback[req.method][0];
124
-
125
- if (playback[req.method].length > 1) {
126
- playback[req.method].shift();
127
- }
128
-
129
- const body = resp.content?.text || '';
130
-
131
- res.type(resp.content.mimeType);
132
- res.status(resp.status);
133
- res.send(Buffer.from(body));
134
- res.end();
135
-
136
- const char = !!resp.used ? '*' : ' ';
137
-
138
- console.log(`${ req.method }${ char } ${ resp.status } ${ url }`); // eslint-disable-line no-console
139
-
140
- resp.used = true;
141
-
142
- return;
143
- }
144
-
145
- if (req.originalUrl.startsWith('/v1/') || req.originalUrl.startsWith('/v3/') || req.originalUrl.startsWith('/k8s/')) {
146
- // If we have been configured with a folder, look for a file with the contents to use for the request
147
- if (folder) {
148
- // Remove query string
149
- const name = req.originalUrl.split('?')[0];
150
- const requestFile = path.join(folder, `.${ name }.${ req.method.toLowerCase() }.json`);
151
-
152
- if (fs.existsSync(requestFile)) {
153
- const data = fs.readFileSync(requestFile);
154
-
155
- console.log(`${ req.method }f 200 ${ url }`); // eslint-disable-line no-console
156
-
157
- res.type('application/json');
158
- res.status(200);
159
- res.send(data);
160
-
161
- return res.end();
162
- }
163
- }
164
-
165
- // Fallback to sending a 404 response
166
- res.status(404);
167
- res.send('Not Found');
168
-
169
- console.log(`${ req.method }? 404 ${ url }`); // eslint-disable-line no-console
170
-
171
- return res.end();
172
- }
173
-
174
- // Continue on to serve up other resources
175
- return next();
176
- };
177
- }
178
-
179
- module.exports = {
180
- loadFile,
181
- harProxy,
182
- exportToFiles,
183
- };