Commit Graph

15 Commits

Author SHA1 Message Date
Giuseppe Leo 01eeb0548f
Add recommended lint rules globally (#8997)
* Update configuration

* Create default config for eslint

* Restore plugin:vue/recommended

* Add exceptions and overrides

* Correct manually remaining issues

* Adding further picked exceptions groupped up

* Fix or disable specific cases manually and singularly

* Add naming linting exception

* Remove unused variable in component

* Move rules to default

* Autocorrect rancher/components linting issues

* Configure VSCode to use multiple files, to display linting for rancher components

* Disable jest lint hook restriction for string list component

* Autofix
2023-06-23 17:02:55 +02:00
Richard Cox 6a5f976080 Persist http response collection revision
- Normally we fetch resources and then watch using the revision in that responce
- If we get a resource.stop event we'll then try to find the current revision from the store
- This looks at the type cache's revision and revisions in each resource
- Bug
  - the type cache's revision is set updated, which leads to very old revisions being used
  - This can cause a `too old` error... which is handeld by refetchin the whole list
- Fix
  - Ensure we set the collection's revision when we're likely to need it again
- Tested
  - the different find/load store actions/mutations
  - this includes incremental loading
2023-02-24 15:14:31 +00:00
Sean-McQ ca1b810c7b
Moves sockets into the advanced worker (#7760)
* Moves sockets into the advanced worker

* worker can die peacefully now, making switching between cluster work.

* Make waitFor generic, wire in to waitForTestFn

* General Changes
- Fixes for switching cluster
  - includes using common getPerformanceSetting
  - avoid new code to unsub before socket disconnect
- handle `watch` `stop` requests
- lots of TODO's (questions, work, checks, test, etc)
- use common

* Switch socket fixes
- isAdvancedWorker should only be true for cluster store
- advancedWorker to be wired in

* Fix socket id for cluster workers
- sockets use an incremented local var for id
- when we nuke the socket file within the worker this resets, so they all ahve id of 1
- work around this by applying the unix time

* Fix handling of new partical counts response
- seen in dex cluster explorer dashboard
- count cards would be removed when partial counts response received

* Make resourceWatcher the sole location for watch state
- getters canWatch, watchStarted now are worked around (they look at state in the UI thread)
  - we now don't call resource.stop or restart.start in subscription
- tidied up `forgetType`
- moved clearFromQueue from steve mutations into subscription mutations (better location)
- added and removed some TODOs
- fixed watch (stop handler should be higher up, include force watch handling)

* pushes the csrf value into worker and adds it to fetch request headers.

* refactors batchChanges to address ref concerns and be more performant

* Maintain schema reference whilst updating
- This change mutates input in a function, which is bad...
- but ensures the reference isn't broken, which is needed to maintain similar functionality as before

* Fix waitForTestFn
- Seen when creating or viewing clusters

* On unwatch ensure any pending watch requests are removed from the queue
- the probably would have been a problem if the worker wasn't nuked
- however as the codes there lets make it safe

Also added `trace` feature in advanced worker, will probably bring out to other places as well

* Fix navigation from cluster manager world to any cluster
- Ensure that we handle the case where the advanced worker was created but the resource watcher wasn't
- ... but fix case where this was happening (aka ensure that a blank cluster context is ignored)

* Tidy some TODOs

* Add perf settings page
- This will help test normal flow (when advanced worker is disabled)
- Note - setting is now in a bag. This may help us better support further settings (enable client side pagination, etc)
  ```
  advancedWorker: { enabled: false },
  ```

* FIX - Nav from cluster dashboard --> specific event --> cluster dashboard and events not re-subbed
- Ensure we block default handling of resource.start (keep state in resource watcher)

* Tidying up some TODOs

* Adds in a cache and uses it to validate SCHEMA messages before batching.

* Forgot to actually save CSRF to the resourceWatcher when instantiated.

* an empty resource in a batchChange to signal remove

* Move addSchemaIndexFields to and created removeSchemaIndexFields in new file
- this avoids bringing class files into the worker

* Fix disconnect/reconnect
- Remove `syncWatch` (do the watch/unwatch straight away)
- Test/Fix re-sub on reconnect
- Test/Fix growls on disconnect

* Tidying up some TODO's
- including clean of workerQueue on resource.stop (this is SUPER defensive)

* batchChanges will now handle aliases

* Fix pods list - WIP
- ensure podsByNamespace is updated on batchChange

TODO
- the final update to the pod is ignored
- removing a namespace cleans the cache correctly
- disabling advanced worker still works

* Fix pods list - fixes
- ensure podsByNamespace is updated on batchChange

Tested / Fixed
- the final update to the pod is ignored
- removing a namespace cleans the cache correctly
- disabling advanced worker still works

* Tidying TODOs

* Remove default same-origin header
- https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials

* Fixed TODO description

* Refactor subscribe, make it clear which vuex feature relates to what

* Lots of Fixes
- batchChanges fixes
  - fix index is 0 issues (!/!!index)
  - only `set` if we have to
  - ensure we set the correct index after pushing to list
  - ensure map is updated after reducing list size with limit
- podsByNamespace fixes
  - ensure when ew replace... we don't use the same referenced object
- general service resource fixes
  - ensure service's pods list stays up to date with store

* Multiple improvements/fixes
- resourceCache - store the hash instead of the whole object. This means longer load time be reduces memory footprint
- resourceWatcher
  - don't re-sub on socket reconnect if watcher is in error
  - don't sub if watcher is in error
  - don't unwatch for 'failed to find schema' and 'too old' errors
    - this clears the error, we won't to keep it to ensure we don't watch
- Remove #5997 comments, follow on work #7917

* toggle debug, remap alias types, cleaned up comments and console

* Unit tests for batchChanges
Much more scope for some crazy content

* Logging tweaks
- disable logging by default
- initWorker comes in too late to affect initial trace, so just rely on the `debug` to toggle at runtime

Co-authored-by: Richard Cox <richard.cox@suse.com>
2023-01-13 16:03:00 -05:00
Richard Cox 75aa51fab9 Enforce Namespace Filter
- When there are over a configurable amount of resources to display in a list force the user to select a single namespace and use it to fetch resources related to the list
- Disabled by default, this can be enabled via the usual Global Settings --> Performance setting as usual

Functional Comments
- Gates for forcing the filter (count, resource type is namespaced, etc) apply only to the resources shown in the list.
  - For example PV's aren't namespaced, so no enforced filtering. However they fetch PVC's which are namespaced
  - For example we could have 10 resources to show in the list, but the resource types list component fetches 10000 other resources. The secondary resources are not taken in to account
- If we're under the threshold and have fetched all resources, if in that session we go over the threshold we won't fetch NS specific resources (because we have them all already)
- If we're over the threshold and have fetched namespaced resources, if in that session we go under the threshold we will fetch all resources
- If we're over the threshold and have fetched namespaced resources, going to a page that needs them all will result in us fetching them all (for instance from `events` to `cluster dashboard`)
- Deselecting a namespace and selecting it again should not kick off another http request

General Commit Comments
- The threshold to enforce the filter is set at 1500 as per manual fresh and incremental loading
- Optimised some code in ResourceList, resource-fetch and $loadingResources
2022-12-02 12:30:13 +00:00
Sean e6913d84d3 Fixes issue with 'loadSchemas' message misnaming, removes comment 2022-09-20 10:48:04 -04:00
Sean 488962c113 Web Worker without comlink, just switches to using postmessage 2022-09-19 11:32:08 -04:00
Alexandre Alves 94d8becc64
Incremental loading and manual refresh features (#6543)
- Add manual refresh experimental feature to specific list views
- Add incremental loading experimental feature to specific list views

Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro.local>
Co-authored-by: Richard Cox <richard.cox@suse.com>
2022-08-03 12:02:19 +01:00
Richard Cox 7a03119c5c Revert "Merge pull request #6553 from mantis-toboggan-md/revert-6421"
This reverts commit c86abfae23, reversing
changes made to 57f9a3706c.
2022-08-01 12:04:41 +01:00
Nancy 46401c0ecd Revert "Use web worker to throttle counts and schema changes (#6421)"
This reverts commit 4687fbca17.
2022-07-29 16:23:54 -07:00
Neil MacDougall 4687fbca17
Use web worker to throttle counts and schema changes (#6421)
* Use web worker to throttle counts and schema changes

* Delete nodes.md

* Address PR feedback

* Small tidy up

* Fix dependencies for plugins

* Address PR feedback

* Fix lint issue
2022-07-29 17:06:56 +01:00
Neil MacDougall b534c3ed63
Performance: Unwatch some resource types on cluster dashboard and nodes pages (#6432)
* Unwatch some resource types on cluster dashboard and nodes pages

* Address PR feedback
2022-07-25 17:20:53 +01:00
Neil MacDougall dc1ccc3c6d
Performance: Cache pods by namespace (#6388)
* Performance: Cache pods by namespace

* Fix lint issues

* Address PR feedback
2022-07-22 22:53:28 +01:00
Neil MacDougall cab999d02f
Use a delayed loading column for Pod Restarts (#6141)
* Fix bug where table can jump back to page 1 after page change

* Add missing file changes
2022-06-16 11:16:40 +01:00
Richard Cox 50aed3eb9e New Epinio pkg, and updates to dashboard (core, pkg process) (#5637)
* Doc

* v0.7.0

* v0.7.1

* v0.7.2

* Add creators

* v0.1.14

* v0.1.17

* Add Yarn link

* Tidy ups and typos

* Allow models to be loaded from plugins

* v0.1.15

* v0.1.18

* v0.6.6

* Improve readme, fix cyperss log msg

* v0.1.17

* v0.1.19

* v0.6.7

* v0.6.8

* Fix logo ref when in shell

* Fix lint issues

* Fix error in example

* Fix script to work on linux

* Add ability to revert moves without losing changes

* Fix bug with custom models in a plugin

* Fix build of UI packages

* Add dist-pkg to .eslintignore

* Pull out util from extend-router to prevent router being pulled in UI packages

* Update PLUGINS.md

* Remove duplicate dependency

* Reduce size of built UI packages

* Share codemirror. Other tidy ups

* Further improvements

* Tidy ups to support i18n in plugins

* Clen up add comments

* More clean-ups and comments added

* Rename from extension to plugin

* Missed file in rename

* v0.6.9

* TIdy ups following rename

* v0.1.20

* v0.1.21

* More refactor and tidy up

* v0.1.22

* v0.1.18

* v0.1.19

* v0.1.23

* v0.6.10

* Version Packages. Improve naming. Unload.

* v0.6.11

* v0.1.20

* v0.1.21

* v0.1.24

* v0.6.12

* v0.1.25

* v0.1.22

* v0.6.13

* Fix issues when plugin is builtin

* Add missing files

* Fix lint issues and watcher ignores

* Fixes following review

* v0.1.28

* v0.1.31

* v0.6.20

* Fix coer.js version

* Fix bug where plugins included via npm don't work

* Changes post merge

* Move plugins doc to dev guide, add note at top of README

* Update cypress version

* Add note about the reset --hard in rejig -d

* Fixes post merge

* Rename @ranch to @rancher and ad plugins

* Improve routes support, add package assets support

* Add uninstall hooks and pass interal opts

* Fix rejig script

* Minor fixes

* disable consent banner text overflow wrap

* add additional metadata to workload detail view

* minor css tweak

* Routing tweaks
- attempted to improve `addRoutes` typing, failed a lot
- improved typings in plugins.ts
- added "@pkg/*" entry and vue-shim (for importing components) to the pkg creator
- fixed some linting
- safely fail when Verdaccio isn't running
- fixed some typos

* Remove frontmatter-markdown-loader reference from nuxt-config

* Add annotation to stop upgrades for managed charts

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Use correct name for Network Attachment Definition Resource (#5579)

* Fix heading levels in Account and API keys page (#5563)

* SortableTable Performance: Optimise row mouse over/leave handlers (#5550)

Co-authored-by: Richard Cox <richard.cox@suse.com>

* Keep the check for fleet bundle ID

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Revert "Remove frontmatter-markdown-loader reference from nuxt-config"

This reverts commit 29ef6f2f7b.

* Exclude creators from dashboard build

* Revert "Exclude creators from dashboard build"

This reverts commit 8ede93ee7c.

* Ingore creators via tsconfig
- We're still susceptible with vue shims in multiple packages
- Need to determine why packages can't use shim from route
- Probably need to move `./vue-shim.d.ts` in to `./shell`. Needs testing with a pkg that imports a component

* warn on adding windows node to cutom cluster

* Display custom error message when login fails. (#5582)

* change rke2 upgradeStrategy to 1 concurrent controlplane and worker (#5580)

Co-authored-by: Alexandre Alves <aalves@AlexandresMBP2.lan>

* update endpoint display, fix ready status for daemonset type

* Fix Sortable Tble SSR (#5599)

* Sortable Table: Fix broken props to slot (#5600)

* expanded error check to include simple type

* fixed error check logic

* Fix async buton wobble with spinner (#5586)

* Add Pod restart count to workload detail page

* Can scale workload from workload detail page

* Enable source map in Nuxt/Webpack configuration for debugging (#5590)

* Move hardcoded values for roles in his own config file

* Allow to set default values also for Clusters and Namespaces

* Allow local cluster to be hidden

* Initialize always auth errors as empty list

* Add translation for snapshot group

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Enable s3 storage in rke2 cluster config

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Group by snapshot location

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* After rejig

* Prevent injection of malformed errors in the generic resource form component

* New Epinio pkg, and updates to dashboard (core, pkg process)

* Remove epinio-select

* correct @shell// reference

* Fix filtering issue
- store/index suffered a bad merge

* Add hide-local-cluster to the settings page

* Fix node table column sorting (#5611)

* Fix issue where private registry auth can be changed in view mode (#5617)

* Change title of support block on home page when custom link set (#5547)

* Tidying up

* Add feedback to the copy kubeconfig header button (#5628)

* Add feedback to the copy kubeconfig header button

* Minor improvement

* Get rke3 and k3s latest versions from settings (#5608)

* Revert previous change and avoid watching spoofed types

* Move the group-by string to computed prop

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>

* Use computed instead of method, use Array.isArray instead of lodash isArray

* Ensure auth provider note appears consistently within form instead of new floating button section
- some auth providers already had this
- possibly better ux to add to top, but that area is already busy

* Fix bug where delay loading only worked on scroll with live columns (#5635)

* Inconsistencies with Cluster metrics across the UI (#5542)

* fix num pods being displayed on the homepage cluster list + set mem to gib for ram on homepage cluster list

* show total number of nodes rather that useful nodes in cluster dashboard view + remove reserved info for CPU and MEM in cluster table in homepage + fix pods usage in nodes list view + clear console logs

* cleanup

* correctly wire PodsUsage as a formatter + display N/A when usage is zero in nodes list values for CPU, MEM, PODS

* add loader icon to PodsUsage formatter

* add string translation to n/a in percentageBar formatter

* add delayedLoading to PodsUsage formatter

Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro-2.local>
Co-authored-by: Alexandre Alves <aalves@AlexandresMBP2.lan>

* Enable filtering by project name on project/namespaces paeg (#5636)

* Fixes post merge

* Rename core-store to dashboard-store
- contains TODO: RCs to resolve

* Tidy up/imporve nav hooks

* Fix some todo's, epinio routing product

* refactor detailtop

* Hide NeuVector product if `cattle-neuvector-system` does not exist
- As per request at https://github.com/rancher/dashboard/issues/5556#issuecomment-1098270110
- fixes #5556
- alternative to #5604

* Fix a number of areas where the sticky footer consumes large amounts of space
- Fixes #5643
- Mostly caused by non-standard ways the CruResource was being used

Effected Areas / Places to test
Note - Only need to visit pages, shouldn't need to make any changes to resources
- Cluster create/import screens (types, credentials (create new / existing), import, rke2)
- Auth providers (shortest form is keycloak saml)
- Create/Edit resource types - project, namespace, some random others
- Create/Edit resource types that have sub-types (secrets, workloads, OPA Gateway / Constraints)

Also Addressed
- Only show top border of the footer if CruResource is in edit view
- Fixed hide of errors

* Fix conditional showing of Group `Assign To` and `Refresh` buttons

Buttons should only show if
- There is a non-local auth provider enabled
- The user has the correct permissions for the relevent action

Fixes #4897

* Fix live expiry badge used on api keys table

* Hide local cluster in LandingPagePreference and api key (token) list

* HARVESTER: Fix Grafana metrics reload failure

* Address some TODOs

* minor fixes

* Rename i18n to l10n, make use of default folders

* Improve adding multiple routes

* Config map view inconsistent for binary data (#5602)

* Fix Config map view inconsistent for binary data

Co-authored-by: Alexandre Alves <aalves@AlexandresMBP2.lan>
Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro-2.local>

* check for existance of limit prop so that deleting a project doesnt silently fail (#5661)

Co-authored-by: Alexandre Alves <aalves@AlexandresMBP2.lan>

* Changes following review

* Fix CruResource `Edit as Yaml` feature
- ensure sticky buttons are stuck at bottom
- doesn't apply sticky buttons to direct `Edit as Yaml` feature outside of CruResource

* Fix navigation & ns filter bugs
- nav from explorer to epinio cluster (errors in console)
- nav from epinio cluster to explorer (ns filter broken)

* Remove epinio ns and config validation
- this was the process that will be replaced with Sean's work
- it's suffered bit rot and was broken after the merge
  - not running in places
  - it visually broke the labelled select (in multiple places)

* remaining todos

* fixes following validation change

* fix bad yarn lock file

Co-authored-by: Neil MacDougall <nmacdougall@suse.com>
Co-authored-by: Neil MacDougall <nwmac@users.noreply.github.com>
Co-authored-by: Neill Somerville <neill.somerville@gmail.com>
Co-authored-by: Phillip Rak <rak.phillip@gmail.com>
Co-authored-by: Nancy Butler <42977925+mantis-toboggan-md@users.noreply.github.com>
Co-authored-by: Shavin Fonseka <Shavindra@users.noreply.github.com>
Co-authored-by: Alexandre Alves <97888974+aalves08@users.noreply.github.com>
Co-authored-by: Alexandre Alves <aalves@AlexandresMBP2.lan>
Co-authored-by: Catherine Luse <catherine.luse@gmail.com>
Co-authored-by: Giuseppe Leo <giuseppe.leo@suse.com>
Co-authored-by: cnotv <giuseppe.leo@suse.de>
Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro-2.local>
Co-authored-by: n313893254 <n313893254@126.com>
# Conflicts:
#	shell/assets/translations/en-us.yaml
#	shell/components/CruResource.vue
#	shell/components/ResourceDetail/Masthead.vue
#	shell/components/ResourceList/Masthead.vue
#	shell/components/SortableTable/index.vue
#	shell/components/form/KeyValue.vue
#	shell/components/form/LabeledInput.vue
#	shell/components/form/NameNsDescription.vue
#	shell/components/form/NotificationSettings.vue
#	shell/components/formatter/PodsUsage.vue
#	shell/components/nav/Header.vue
#	shell/config/product/neuvector.js
#	shell/detail/workload/index.vue
#	shell/edit/provisioning.cattle.io.cluster/CustomCommand.vue
#	shell/models/cluster.x-k8s.io.machinedeployment.js
#	shell/models/harvester/kubevirt.io.virtualmachineinstance.js
#	shell/models/workload.js
#	shell/pages/c/_cluster/settings/banners.vue
#	shell/plugins/steve/actions.js
#	shell/store/type-map.js
2022-05-10 10:04:04 +01:00
Richard Cox 25acc1f8eb Plugins: Rejig files to new shell locations (#5623)
* Doc

* v0.7.0

* v0.7.1

* v0.7.2

* Add creators

* v0.1.14

* v0.1.17

* Add Yarn link

* Tidy ups and typos

* Allow models to be loaded from plugins

* v0.1.15

* v0.1.18

* v0.6.6

* Improve readme, fix cyperss log msg

* v0.1.17

* v0.1.19

* v0.6.7

* v0.6.8

* Fix logo ref when in shell

* Fix lint issues

* Fix error in example

* Fix script to work on linux

* Add ability to revert moves without losing changes

* Fix bug with custom models in a plugin

* Fix build of UI packages

* Add dist-pkg to .eslintignore

* Pull out util from extend-router to prevent router being pulled in UI packages

* Update PLUGINS.md

* Remove duplicate dependency

* Reduce size of built UI packages

* Share codemirror. Other tidy ups

* Further improvements

* Tidy ups to support i18n in plugins

* Clen up add comments

* More clean-ups and comments added

* Rename from extension to plugin

* Missed file in rename

* v0.6.9

* TIdy ups following rename

* v0.1.20

* v0.1.21

* More refactor and tidy up

* v0.1.22

* v0.1.18

* v0.1.19

* v0.1.23

* v0.6.10

* Version Packages. Improve naming. Unload.

* v0.6.11

* v0.1.20

* v0.1.21

* v0.1.24

* v0.6.12

* v0.1.25

* v0.1.22

* v0.6.13

* Fix issues when plugin is builtin

* Add missing files

* Fix lint issues and watcher ignores

* Fixes following review

* v0.1.28

* v0.1.31

* v0.6.20

* Fix coer.js version

* Fix bug where plugins included via npm don't work

* Changes post merge

* Move plugins doc to dev guide, add note at top of README

* Update cypress version

* Add note about the reset --hard in rejig -d

* Fixes post merge

* Rename @ranch to @rancher and ad plugins

* Improve routes support, add package assets support

* Add uninstall hooks and pass interal opts

* Fix rejig script

* Minor fixes

* Routing tweaks
- attempted to improve `addRoutes` typing, failed a lot
- improved typings in plugins.ts
- added "@pkg/*" entry and vue-shim (for importing components) to the pkg creator
- fixed some linting
- safely fail when Verdaccio isn't running
- fixed some typos

* Remove frontmatter-markdown-loader reference from nuxt-config

* Revert "Remove frontmatter-markdown-loader reference from nuxt-config"

This reverts commit 29ef6f2f7b.

* Exclude creators from dashboard build

* Revert "Exclude creators from dashboard build"

This reverts commit 8ede93ee7c.

* Ingore creators via tsconfig
- We're still susceptible with vue shims in multiple packages
- Need to determine why packages can't use shim from route
- Probably need to move `./vue-shim.d.ts` in to `./shell`. Needs testing with a pkg that imports a component

* After rejig

Co-authored-by: Neil MacDougall <nmacdougall@suse.com>
Co-authored-by: Neil MacDougall <nwmac@users.noreply.github.com>
2022-05-10 10:04:02 +01:00