Commit Graph

216 Commits

Author SHA1 Message Date
Alexandre Alves 6637583874
remove "process." mentions from Dashboard and adjust code (#10119)
* remove process.client and process.server mentions and adjust code

* fix a couple of missing conditions for process.server

* remove commented line

* remove process.static

* fix lint errors

* uncomment code

---------

Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro.local>
2023-12-13 08:41:26 +00:00
Richard Cox 8f0c769b60
Merge pull request #10054 from richard-cox/squash-findAll-secret-monitoring-chart
Avoid fetching all secrets and workloads when installing Monitoring Chart
2023-12-12 13:03:41 +00:00
Richard Cox c9b2f79053
Merge pull request #10024 from richard-cox/cluster-cert-view
Add certificates view to cluster dashboard
2023-12-12 11:57:20 +00:00
Giuseppe Leo cb6f806274
Correct issue with TS after tsconfig split with unit tests (#9686)
* Correct file test naming

* Correct test files import and names

* Restructure TS configuration with shared path

* Copied TS configuration for shell due current architecture state
2023-12-12 11:35:38 +01:00
Alexandre Alves 77d455041e
Wrong rendering of Markdown files (#9956)
* remove dompurify from markdown component + add missing html tags to allowed tags in v-clean-html

* fix lint error

* added styles for tables and blockquote based on github

* cleanup console.log

* fix missing tags after rebase

---------

Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro.local>
2023-12-05 11:31:45 +00:00
Evgeniya Vashkevich 25618ad4a0
[INT] Replaced vue-clipboard2 library with clipboard-polyfill (#10072)
* [INT] Replaced vue-clipboard2 library with clipboard-polyfill
2023-11-30 16:31:35 -08:00
Neil MacDougall d5dccb4de4
Support "target=_blank" in A links via clean-html directive (#9928)
* Allow target=_blank on A tags through DOMPurify

* Remove unused params

* Fix lint issue

* Prevent directives from being overwritten

* Fix lint issues
2023-11-23 09:33:48 +00:00
Richard Cox 0c7e71139f Don't fetch all workload types to check for prom operator
- Previously ALL workloads were fetched and then filtered for those containing certain images
- We now do this upfront via API
- depends on https://github.com/rancher/dashboard/pull/10024
2023-11-17 17:59:54 +00:00
Richard Cox fd9285ea4d Remove use of findAll secrets - Monitoring Chart
- Contributes to #9964
- Monitorign chart fetched all secrets, then all usages of it filtered down to a single namespace
- So we now only fetch

Related
- Fix scenario where fetching all then fetching namespaced would return all results

Improvement
Also improve spacingin a placeholder
2023-11-17 17:58:43 +00:00
Shavindra cbf36ccbd1 Update import 2023-11-14 15:09:36 +01:00
Shavindra 3436e4271c Fix linting errors. 2023-11-14 10:51:46 +01:00
Shavindra ae801b424f Fix tests. 2023-11-14 09:29:17 +01:00
Richard Cox a92e2ef5a1 Fix failing storybook (broken import) 2023-11-09 09:13:46 +00:00
Richard Cox 4e3a282b79 Add certificates view to cluster dashboard
- Add a new tab, next to events, in the cluster dashboard
- Tab shows a list of all secrets of cert type
- List allows users to see which certs are expiring soon, how long they've lived etc
- Tab also shows a notification if certs are expiring or have expired
- Related fixes
  - plumb in option list paging params (so we can show X of Y Certificates in pagination controls)
  - fix usages of from = from || now
  - Count requests to kube steve as steve requests (alongside local steve requests)
2023-11-08 11:52:23 +00:00
Shavindra 9ac7eb2360 Removed unwanted properties from pod, secret and workload 2023-11-02 11:05:55 +01:00
Dai Yuzeng f2e0b6d304
Implement the directive of positive number (#9451) 2023-09-27 14:06:23 -07:00
Sean-McQ 718ffd6201
checks to see if membership editor is project and adds a project filter (#9761) 2023-09-27 13:37:54 -04:00
Richard Cox 3783381079
Merge pull request #9666 from richard-cox/remove-diagnostic-logging
Remove console output from diagnostic page
2023-09-27 17:37:43 +01:00
Richard Cox a70fe1b431
Merge pull request #9598 from richard-cox/fix-modified-resource
Fix resource modified handler
2023-09-27 17:36:49 +01:00
Richard Cox f97025c647 Remove console output from diagnostic page
- Follows on from
  - https://github.com/rancher/dashboard/pull/6603
  - https://github.com/rancher/dashboard/pull/6700
- To track messages the console methods were overwritten
- When the console methods were called, we would track message and then call the original console method
- Output into the standard browser console window was broken though
  - the inline stack trace for all logs is the place where the original console method is called
  - this was always `console.js`
- This causes issues whilst in development but also for logs coming from customers
- Investigate ways around this, but couldn't find anything nice
- short term solution is to remove the feature
2023-09-08 13:38:33 +01:00
Richard Cox eac7eea187 Ensure failures when saving YAML are caught 2023-09-01 16:40:47 +01:00
Alexandre Alves 9d27823a4a
add growl message to display warning messages from response headers (#9581)
* add growl message to display warning messages from response headers

* update growl styling based on feedback from Eden

* Many updates
- Move functionality into it's own file
- Add unit tests
- Fix issue where YAML PUTs weren't included in check (bug in master)
- Fix issue with separating warnings (bug in master)
  - previously this was done via `,`, however that appears in the messages themselves
  - add configuration which allows this to be customised
- Add configuration which would allow us to disable or expand how growls are shown

---------

Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
Co-authored-by: Richard Cox <richard.cox@suse.com>
2023-08-29 09:54:25 +01:00
Richard Cox f9aa1f38bb Fix resource modified handler
- fixes issue in handleConflict that meant
  - conflicts were not detected
  - non-conflicting changes were not applied to users resource
- see #9597 issue description for more detail
2023-08-25 18:41:04 +01:00
Richard Cox 6f32ed0df2
Merge pull request #9412 from WuJun2016/circular-dependency
fix circular dependency
2023-07-27 11:39:53 +01:00
Shavindra e11a73d6be
Fix fleet cluster labels and annotations save via YAML view. (#9383)
* Fix fleet cluster labels and annotations save via YAML view.
2023-07-26 13:25:31 +02:00
wujun f4856ffccc fix circular dependency 2023-07-26 17:45:27 +08:00
Sean-McQ 2c81742693
add "exludeFields" option on findAll, unit tests. (#9300)
* add "exludeFields" option on findAll, unit tests.

* fix e2e

* lint fix and e2e test

* updated action unit test and fixed cy.intercepts

* deleted urloptions and test, converted unit tests to ts, removed lodash

* deleted unused urloptions and test
* converted unit tests to ts
* removed lodash

* lint fix

* Added comment with issue for updating query parameters for steve

* Updated based on feedback

* added partial flag to mutations

* pulled out partial flag, excludeOptions logic now entirely within getter

* fixed tests after ripping out partial flag

* Fixed e2e test as 'find' action behavior changed but is still valid
2023-07-18 09:23:26 -04:00
Alexandre Alves 43ca333bdf
Table actions 'enabled' function not working correctly (#9331)
* fix bug

* fix lint issues

* fix lint issues + remove pkg folder

* address PR comments

---------

Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
2023-07-17 16:07:24 +01:00
momesgin 7e77ec7d5e
remove error icon when the condition is Ready and Waiting (#9309)
* remove error icon when the condition is Ready and Waiting

* fixed importing clean tooltip directive

* change testing component name

* use replace instead of replaceAll to fix node version support issue on GH's unit test action

* added more unit tests

* import replaceAll polyfill and clean tooltip directive to jest setup

---------

Co-authored-by: Mo Mesgin <mmesgin@Mos-M2-MacBook-Pro.local>
2023-07-14 13:09:04 -07:00
Giuseppe Leo 11f7cfe9f1
[RKE2] Cluster unable to provision after switching back to Back to Form from Edit as YAML (#9264)
* Cleanup code

* Prevent to JSON clone agent config if undefined

* Add clean-tooltip directive to jest configuration

* Remove agent cleanup from the before hook

* Split fetch methods in parts

* Move condition to parent

* Add tests for agent configuration

* SKip test till resolved extra setup

* Updated code comment based on changes
2023-07-13 19:52:49 +02:00
codyrancher cc086ee953 Switch safemode to use the query param
Making this switch because using the path can lead to undefined routes and some confusion on wildcard routes.

https://github.com/rancher/dashboard/pull/9135#discussion_r1232391119
2023-07-09 09:07:42 -07:00
Richard Cox bbbad1d2aa
Merge pull request #9030 from richard-cox/log-validation-warnings
Log validation warnings when creating/editing resources
2023-06-27 11:34:23 +01:00
Richard Cox 0245a8cb93 Merge remote-tracking branch 'upstream/master' into epinio/resolve-conflicts-with-master 2023-06-23 18:00:14 +01:00
Alexandre Alves e84c8979b7
improve dev experience for extensions where builtin extensions will prevent external extension with the same name to load (#9147)
Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
2023-06-23 17:27:51 +01:00
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 ed9ee99980 Fix failing e2e test
- caused by EXCLUDE_OPERATOR_PKG defaulting to truthy
- which meant no plugins were loaded by the ui
- which meant button to reload ui given changes to plugins was always shown
- when meant extension e2e test that removed plugin immediately used it to reload without waiting for remove to finish
2023-06-09 15:40:06 +01:00
Richard Cox 9eea1852c3 Merge remote-tracking branch 'upstream/master' into master-epinio-dev 2023-06-08 14:54:40 +01:00
Richard Cox b07f8914bc Fix lint warnings 2023-06-05 09:40:26 +01:00
Jordon Leach d94e78c24a
Add extension image load dialog (#9010)
Update dialog with repo creation - update docs

Add uninstall for custom images

Add extension images list view

Add image load dialog and uninstall within extension image view

Update publish and bundle scripts for image load - move image page to tab

Add extension container build workflow file to pkg creator

Move plugin server template into extension build scripts

Fix publish script for multiple asset packages

Move ImageList view to separate page - add crd metadata for custom images

Update docs - fix references to images with catalog

Fix wording, cache state badge, masthead breadcrumb, when deleteing resources check for namespaces

Update docs - fix delete repo resource - default cache state

Trim image whitespace - populate extensionUrl

Add experimental badge
2023-06-02 08:28:47 -04:00
Richard Cox f5a5595f23 Log validation warnings when creating/editing resources
- on by default in 1.25
- in dev world these are warnings, in prod they're debug
- see https://kubernetes.io/docs/reference/using-api/api-concepts/#validation-for-unrecognized-or-duplicate-fields-setting-the-field-validation-level
2023-06-02 11:15:09 +01:00
Richard Cox bfa27646aa operator pkgs --> pkg 2023-06-01 18:24:04 +01:00
Richard Cox 1e8c6cb13d remove EXCLUDES_NUXT_PLUGINS, replace with EXCLUDE_OPERATOR_PKGS (to avoid loading operator plugins) 2023-05-26 16:17:28 +01:00
Richard Cox d5c5e6aa7c Fix log in --> redirect to log out
- This occurred because..
  - The user tries to access resource with 401 --> onLogout dispatched
  - onLogout unbsubscribes to all stores
  - stores are waiting for mgmt stores to be ready
  - user still redirected to log in page
  - user logs in
  - mgmt stores ready
  - stores now unblocked from waiting for mgmt --> continue in original onLogOut action
- Fix is to ensure we exit the wait early if we get the call to unsubscribe
2023-05-23 12:09:37 +01:00
Phillip Rak 93be844701 Create a `v-clean-tooltip` directive
Update `VCleanTooltip`
Only purify if `value.content` is string

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
2023-05-18 15:39:14 -07:00
Richard Cox aa34bd3e29 Fix churn issue
- Moving the store setting to enable/disable filtering in the store to a function in a computed property caused havoc for churn
- Make this much neater by moving flag to the setup stage for both ns filter
2023-05-18 14:28:28 +01:00
Richard Cox 9fada7f0b6 Remove richards-logger 2023-05-18 14:28:28 +01:00
Richard Cox 6fffc0d36a Fix linting 2023-05-18 14:28:28 +01:00
Richard Cox 281fb6672c Simplify forced filtering setting
- Given forced filtering is now not resource dependent have a high level utils function to determine if enabled
- This should have opened up the door to setting a nicer default then ALL_USER, however it's actually initially applied somewhere other than ns filter
- Fixed a bug where the all option [] was valid
2023-05-18 14:28:28 +01:00
Richard Cox 1708b4d5c3 Update after BE changes
- Filtering is now no longer done via `resources.project.cattle.io.`
- No need to update the URL anywhere or massage resources fetched via endpoint
- Also no need to make the planned change to remove `resources.project.cattle.io.` from side nav
2023-05-18 14:28:28 +01:00
Richard Cox 15bc1cd036 Changes following BE update and testing 2023-05-18 14:28:28 +01:00
Richard Cox 7e5ad5de34 Expand enforced namespace filtering to multiple namespaces and projects
> This uses a new endpoint that has yet to merge. See https://github.com/rancher/rancher/issues/40140

WIP
- Contains console.warns (via custom logger, can be disabled)
- Waiting for final BE endpoint changes to merge
- Contains TODOs to resolve on final enpoint changes delivered

Pertinent Points
- Incompatible with incremental loading / manual refresh
  - Harder to get counts (need to sum up from different namespaces)
  - Requires use of new steve pagination
- Enforced NS threshold has been removed
  - The threshold only applies to the primary resource. This has issues when loading a low count primary (daemon sets) which depends on a very high count secondary (pods)
  - Fixing this would involve knowing all secondary resources a list uses, which isn't currently possible (each resource is requested individually, need to know them all first)
- There is no way to subscribe to multiple namespaces (one or all)
  - We mock this in subscribe by only persisting changes to resources from within target namespaces
- Everything should work with Advanced Worker enabled
2023-05-18 14:28:28 +01:00
Sean-McQ e256669e74
cluster and rancher stores now use advanced worker (#8717)
* cluster and rancher stores now use advanced worker

* Addressing feedback

* addressing PR feedback and unit tests

* Fixed sticky footer in Helm Chart Install Yaml (#8497)

* Remove dependency: nuxt

Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>

* Remove dependency @nuxt/types

Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>

* fix lint

Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>

* Remove dependency: @nuxt/typescript-build

Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>

* Remove dependency: @nuxtjs/eslint-module
Remove dependency: @nuxtjs/proxy
Remove dependency: @nuxtjs/style-resources

Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>

* align package.log

Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>

* Storybook, add vue-loader dependency

Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>

* Added placeholder in url input (#8036)

* Added placeholder in url input

* Added format checker for Url input

* Update test

* Fixed lint

* Fixed breaking for other providers

* Fixed lint

* Update vue options to preserve whitespace (#8742)

* Update vue options to preserve whitespace

* Bug fix with tidy-up

* Fix response times for multiple clusters (#8720)

* Update extensions publish workflow for assets in gh-pages branch (#8618)

* Update extensions workflow to move assets into gh-pages branch

Fix gh-pages check

* Move bundle execution - add default basename and ext version

* Fix basename op

* PR changes

* [v2.7] Update Chinese translation (#8731)

* Upgrade to Vue 2.7 (#8654)

* upgrade @vue/cli-xxx

* Update Vue to latest 2.7

* Update eslint-plugin-vue

* Disable new linting rules

* Remove linting issue

* Pin Dom purify library version

* Add resolution to avoid conflicts with packages

* Update yarn/lock after the enforced resolution

* Exclude node 16 types resolution

* Fixed extra space bug in the generic cluster-page (#8626)

* Fixed extra space bug in the generic cluster-page

* Fixed space issue in banner

* Revert changes

* Removed extra div

* Fixed selected rows counter (#8419)

* Fixed selected rows counter

* Fixed lint

* Fixed counter in selection.js

* Small fix in toAdd condition

* Lints

* Fixed condition for selected row counter

* Changes in focusAdjacent function

* Fixed lints

* Improve OPA Gatekeeper constraint detail page (#8586)

This adds the following functionality to the violations list on the OPA Gatekeeper constraint detail page:

* Add a namespace column to the violations
* Make the violations list searchable
* Allow to download the violations as a CSV, similar to CIS scanner violations

Signed-off-by: Bastian Hofmann <mail@bastianhofmann.de>

* Increase memory on build (#8751)

* Remove extension autoLoad functionality (#8700)

* fix(BrandImage): remove async fetch method (#8432)

* Removed hasClass method (#8752)

* Removed hasClass method

* Clean code

* Two minor tweaks
- supported store types now a const
- WORKERMODES --> WORKER_MODES

* Fix two bugs
- Ensure advanced worker runs in cluster manager with no current cluster context
- Ensure `resource.stop` from advanced worker successfully kicks off watch


Also
- make rancher, managment and cluster store names a const

* Tweaks
- Fix some comments (jsdoc --> standard, todos)
- Made the web worker redispatch requirement clearer

* Fix unit tests

* Fix resource.stop / resource.error TOO_OLD bugs

- Persist watcher error state after resource.stop
  - this will ensure the resource.stop given alongside the resource.error TOO_OLD is ignored
- Ensure any errors are cleared when we succesfully connect (given above)
  - Should fix the next resource.stop being ignored after recovering from TOO_OLD
- Fix resync watch params
  - these weren't correct, so the resync after TOO_OLD never worked
  - the format could be slimmer, but i thinkg it matches how other socket's data works

Note - I manufactored the TOO_OLD by setting a revision of 1 in subscribe resource.stop if it came from the advanced worker

---------

Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
Signed-off-by: Bastian Hofmann <mail@bastianhofmann.de>
Co-authored-by: richa <richa.bisht@suse.com>
Co-authored-by: Francesco Torchia <francesco.torchia@suse.com>
Co-authored-by: Neil MacDougall <nwmac@users.noreply.github.com>
Co-authored-by: Jordon Leach <40806497+jordojordo@users.noreply.github.com>
Co-authored-by: vickyhella <vickyhella@hotmail.com>
Co-authored-by: Giuseppe Leo <giuseppe.leo@suse.com>
Co-authored-by: Bastian Hofmann <mail@bastianhofmann.de>
Co-authored-by: LiuYan <361112237@qq.com>
Co-authored-by: Richard Cox <richard.cox@suse.com>
2023-05-17 03:48:10 -04:00
Neil MacDougall c215920391
Extensions: Reduce error logging when operator not installed (#8847) 2023-05-13 18:26:03 +01:00
Francesco Torchia 0ae05b59a9
Merge pull request #8552 from torchiaf/fix/5958
`ConfigMap`, handle chomping
2023-05-10 12:42:58 +02:00
Neil MacDougall c628c5a91d
Remove extension autoLoad functionality (#8700) 2023-04-28 11:27:11 +01:00
Francesco Torchia 98c91ce5a3
improve code comments
Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
2023-04-28 09:48:13 +02:00
Francesco Torchia d91e79b5b4
move text area css into CodeMirror component
Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
2023-04-28 09:22:08 +02:00
Sean-McQ bc2d5e1abd
Fix calls into question a lot of other code and if it's still needed (#8706) 2023-04-21 10:10:37 -04:00
Cody Jackson 487cf0d6a4 Migrating all of the files out of the nuxt directory into reasonable places within shell 2023-04-20 11:56:58 +02:00
Neil MacDougall 380be76307
Fix the v-clean-html directive (#8617) 2023-04-05 12:04:29 +01:00
Nancy 27967af51a
Update fleet ui for users with fewer permissions (#8490)
* fix fleet ui when user does not have permission to greate gitrepo or gitreporestrictions

* remove permission  check from gitrepo norepos view

* re-load gitreporestriction schema before attempting to save

* rm unused fleet translation strings
fix fleet workspace banner translation rendering
2023-03-29 14:22:50 -07:00
Francesco Torchia d5c53cd5b8
CodeMirror, enable line breaks and space markdowns
- add 'showMarkdownLineBreaks' codemirror.js option and 'cm-markdown-line-breaks' class to display markdowns
- add 'styleSelectedText' to highlight selected text.

Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
2023-03-29 15:59:27 +02:00
Phillip Rak 29c05d0c4e Extract `clean-html` directive
Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
2023-03-22 08:30:17 -07:00
Phillip Rak 4cd4cfeba3 Create `v-clean-html` directive
Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
Update list of allowed tags

Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
2023-03-22 08:27:54 -07:00
codyrancher 6e7e593c47
Merge pull request #7211 from codyrancher/nuxt-removal
Nuxt removal
2023-03-08 10:08:25 -07:00
Richard Cox e3e72aef90 Fix edit of PSACT description
- Use `SteveDescriptionModel` as base of PodSecurityAdmissionTemplate model
- Provide a generic mechanism for model save to tweak the object that's saved
- In SteveDescriptionModel ensure the object that's saved has the correct description
  - Save worked for other users of class ... as they saved via norman rather than steve

Tweaks
- Removed duplicate PSACT definition
- Fixed width of PSACT table name / description columns
2023-03-08 13:29:57 +00:00
Cody Jackson bbb7eebc90 Removing nuxt 2023-03-03 11:49:26 +00:00
Richard Cox 248e6d9c94
Merge pull request #8257 from richard-cox/persist-collection-revision
Persist http response collection revision
2023-02-28 10:37:07 +00:00
Richard Cox 55327395fd Add additional comments 2023-02-27 15:17:48 +00:00
Sean 3a414723f9 Sockets subscribe with namespaces and other filters and also unsubscribe 2023-02-27 10:10:04 +00: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
Richard Cox 855dc131ab Avoid suprious console.error
- when we recieve a `too old` socket watch error we kick off a resync which will watch with a valid revision
- we'll get a resource.stop event following the previous error. socket is in error though so we correctly abort
- the error for this was misleading


Can be trigger with a fake revision on cluster list
In subscription `watch`
```
    if (!trigger && type === 'management.cattle.io.fleetworkspace') {
      trigger = true;
      revision = 1;
    }
```
2023-02-24 11:54:52 +00:00
Shavindra e12939115e
Allow basic fleet user to manage fleet without cluster permissions. (#7446)
* Allow basic fleet user to manage fleet without cluster permissions.

* Handle no workspaces.

* Add Fleet bundle namespace mapping - fleet.cattle.io.bundlenamespacemapping

* Add git repo restrictions.

* Handle auth errors for checkSchemasForFindAllHash.

* Fix workspace switcher and handle fleetworkspaces 401 issues.

* Update workspace switcher.

* Fix Gitrepo restriction creation from the Workspace create

* Disable workspace creation
* Fix workspace loading after creation

* Fix Bundle creation error.

* Remove redudant FLEET.TOKEN request.
2023-02-23 14:15:32 +00:00
Richard Cox e73c55c782 Fix issue where gap between resource.stop and resource.start lead to missed resource changes
- changes cover create, change and remove
- resource.stop events happen
  - we unusb
  - after socket errors (that rancher sends, like revision `too old`)
  - after resource type permissions change
- there would be a gap between resource.stop (fetch latest revision, wait 5 seconds) and resource.start
- this could lead to missed resource changes and stale info on screen

Linking a couple of pertinent changes

- forceWatch partially implemented - 14862b2924 (diff-42632b5ed3c30e60abade8a67748b16d45e0778091713dd71a46d4bbe9211d2c)
- too old originally removed https://github.com/rancher/dashboard/pull/3743/files
  - this was implemented before the backend fixed their spam

Note - resource.stop can be forced with CATTLE_WATCH_TIMEOUT_SECONDS=300 (on v1 will resource.stop every 5 mins)
Note - Too old can be forced by editing resource.stop with
      // const revision = type === '' ? undefined : 1;
      // dispatch('watch', { ...obj, revision });
2023-02-21 16:56:31 +00:00
Richard Cox 6ce6632e13 Fix update of machines/pools in cluster detail Pools tab
- fix issue where ..
  - state 1 - X machines + Y fake machines = total
  - state 2 - X+1 machines + Y-1 fake machines = same total
- same total meant sortable table `arrangedRows` value wasn't updating
- fix is to ensure the sort generation changes so `arrangedRows` doesn't return the cached rows
- this is the same method used for the project/namespace list
2023-02-20 17:09:52 +00:00
Richard Cox 1a448de513 Disassociate the steve worker file from the steve store
- Alternative fix to https://github.com/rancher/dashboard/pull/8064
- Assign the steve worker creator to the store via plugin
- This avoids package build errors (in harvester) due to the package build process missing web worker specific build config
- On the downside this means rancher/steve specific stuff is applied at a more global level
2023-02-14 13:42:08 +00:00
Alexandre Alves 6516e094b8
Extensions enhancements (#7777)
* add extensions API methods
---------

Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro.local>
Co-authored-by: Neil MacDougall <nmacdougall@suse.com>
Co-authored-by: Richard Cox <richard.cox@suse.com>
2023-02-09 10:58:29 +00:00
Alexandre Alves 84e260d95e
Manual Refresh Performance Option (#7904)
* update resource fetching on list views so that secondary resources follow the logic of manual refres
h and/or incremental loading if the main resource defines it

* Update resource-fetch logic to take into consideration the storeType for each individual request + fix logic regarding namespace for fetching resources + update missing resources logic (nodes and prov clusters)

* fix tipo

* reinstate hash system to handle requests for nodes and prov cluster lists

* revert mutation code + add check to register type if it doesnt exist on loadDataPage action

* fix issue with timeout that wasnt working properly for the update of live and delayed cols after manual refresh

* Take in to account the per resource count when calculating `limit`
- This means primary resources with a smaller amount don't restrict secondary resources with larger amounts

Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
Co-authored-by: Richard Cox <richard.cox@suse.com>
2023-01-27 14:32:42 +00:00
Giuseppe Leo a571677fde
Feature/7875 workload edit warning (#7918)
* Allow to process the response of the request from the resource method

* Parse header response on Pod creation and display warning if any
2023-01-20 17:07:06 +01: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
Neil MacDougall 4ccb724b53
Fix description not working for user resources (#7885) 2023-01-13 13:09:33 +00:00
Neil MacDougall 7d54fa51e4
Workaround for backend issue where ws.error is sent as ws.resource.change (#7900) 2023-01-11 12:47:04 +00:00
Nancy 14afb83a72
Revert "get docs base url version from getVersionInfo (#7436)" (#7863)
This reverts commit 129568d991.
2023-01-10 11:12:13 -07:00
Nancy 129568d991
get docs base url version from getVersionInfo (#7436)
*update docs links in translation file

*update chinese translation doc links

* fetch latest rancher version tag to determine doc url versioning

* fix hardcoded links to 2.6-only documentation

* update doc base url
2023-01-04 09:09:26 -07:00
Nancy 1e2b3291d9
Allow for partial count updates via websocket (#7647)
* account for partial count updates through ws; do not debounce

* move count resource update logic to steve store
2022-12-14 09:14:49 -07:00
Nancy f04ad9c1cf
clean steve fields from yaml view and download (#7670)
* clean steve fields from yaml view and download

* rename cleanFromSteve, add dashboard store fallback
2022-12-14 08:44:31 -07:00
Richard Cox befc7021fd Changes following review
- Update variable names
- Improved comments
2022-12-12 09:40:26 +00:00
Richard Cox cfbb0af997 Improve handling of steve socket watch timeout
- Steve socket times out watches every 30 minues and we get a `resource.stop` event
- Previously we attempted to re-watch with a dodgy revision causing a `too old` error and the dashboard then fetching all resources for that type
- Avoid this by tracking latest revision which we should be up to date with
2022-12-09 15:29:54 +00:00
Richard Cox e448505b3c Fixes following review
- Ensure that the correct threshold if fetched from config (was previously always enabled)
- Don't pass additional `namespace` value to `loadDataPage`
2022-12-02 12:30:13 +00: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
Phillip Rak 3d410d0974 Apply linter auto-fixes
Signed-off-by: Phillip Rak <rak.phillip@gmail.com>
2022-11-16 18:38:20 -07:00
Giuseppe Leo 75c01c7ab7
Validation for the minimum length requirement for user password setting (#6897)
* Convert Rancher settings into Typescript and add interface

* Allow Rancher settings to be validated

* Add Rancher Settings min password length validation

* Replace settings number input with labeled input of type number for validation; Added missing required, focus, locale and labels attributes

* Add min/max/between value/length cases to global validation cases

* Correct validation syntax

* Add tests for the global settings

* Correct naming and assign directly rules to the inputs

* Create initial tests for CreateEditView

* Prevent Settings view to break if no setting is found for given ID

* Add max password length validation

* Add i18n to settings validation

* Add form validation to the CRUD component

* Prevent form to fail for resource types without validation

* Add test for no validation cases

* Remove form validation in favor of local view logic, due complexity issues

* Correct validator linting issue

* Correct i18n; Add types; Correct min/max/between validations i18n and combine the last

* Add translation type

* Correct validation translation types and definitions

* Replace custom validations with predefined rules

* Reintroduce form validation in abstracted configuration to pass settings through

* Add tests for new generic form validations

* Correct between values and length validation

* Split tests to use pre-existing rulesets due complexity and different cases

* Cleanup jsdoc in form validation

* Cleanup form validation mixin

* Add global settings test for generating rules from config

* Replace value.value with value for validating the resource

* Correct validation call and test instantiation

* Add note about value.value exception

* Disable faulty test due lacks of information

* Replace min/max value validation with between

* Add missing type for settings getter

* Move type folder within shell

* Move settings logic from config to utils
2022-11-15 15:32:02 +01:00
Richard Cox 0250ef1891
Merge pull request #6907 from richard-cox/gc
Garbage Collect Stale Resources
2022-10-11 14:28:10 +01:00
Neil MacDougall 6481644579
Customisable links support (#7131)
* Implement Rancher Prime changes.

* Implement Rancher Prime endpoint.

* squash

* Implement Rancher Prime endpoint.

* squash

* fix proxy.

* Fix support page links.

* merge master.

* Fix nuxt config.

* test without /rancherversion

* Fix links.

* Merge tify up - rename back to hasSupport for less change

* Fix version metadata fetching

* Allow links to be edited

* Fix lint, revert changed to KeyValue

* Remove unused code

* Fix typo

* Add support for linkOptions

* Add name to component

* File an issue link should go to choose page

* Fix typo

* Fix issue with legacy settings

* Address PR feedback

* Remove todo that was done

Co-authored-by: Shavindra <shavindra@users.noreply.github.com>
2022-10-11 14:11:22 +01:00
Neil MacDougall f18082c20f
Plugin tweaks (#7095)
* Minor improvements

* Various fixes

* Fix developer load of plugins with '-' character in name

* IImprove installation detecttion and extensions naming

* Fix one more string

* Update placeholder icon

* Change pref string to Extensions

* Change icon and error handlers

* Error handling

* Fix lint

* Limit description length

* Ensure info panel readme info scrolls vertically for content

* Fix lint

* Fix bug where plugins don't load on fresh login or a login after logout

* Add chart compatbility filtering

* PR feedback

* Add check for access to ui plugin schema

* Update string following PR feedback

* Fix GitHub auth

* Fix lint

* Write in default system registry when we are installing the operator

* Fix issue where stuck installing on upgrade/rollback

* Fix bugs and tidy up plugin install/uninstall feedback in UI

* Only use system registry for Rancher images

* One more tweak to fix status on upgrade operation

* Fix extensions page reloading plugins

* Add message to reload the browser

* Fix reload notice for uninstall

* Change way we set defautl system registry
2022-10-10 17:13:24 +01:00
Richard Cox 64dd1e9512 Refactor
- Don't cache gc state in store (avoids any chance of prompting change detection when update type accessed time)
- use TS instead of JS where possible
- split out two prompts into own file (on interval and on route change)
2022-10-10 17:08:43 +01:00
Richard Cox 694310352b Garbage Collect Stale Resources
Remove resources from the store if they meet certain criteria. This will reduce the memory footprint of the dashboard and load on the backend (less watchers for large collections)

- GC is disabled by default and can be enabled via the Global Settings --> Performance tab
  - User can configure
    - The age in milliseconds in which a resource has to exceed in order to be gc'd
    - The count which a resource has to exceed in order to be gc'd
- GC occures in stores that have it enabled
  - ATM this is just the `cluster` store... but could be enabled for dashboard-store's such as the harvester one (one liner plus optional `gcIgnoreTypes` override for ignoring types)
- GC will be kicked off in two cases
  - Route Change for a logged in state
  - At a given interval

- Resource type _not_ GC'd if
  - The store is ignoring the type
    - For example the `cluster` store doesn't want to gc things like `schema` and `count`
  - We're going to a page for that resource (list, detail, etc)
    - For example don't GC pods if we're going to a pods page
  - The last time the resource was accessed was recently
    - We store the resource accessed time via hooking into actions and getters
    - Setting the last accessed time will cause watchers of that type to trigger (only an issue for duplicate watchers)... but importantly not watchers of other types
  - The resource is being used in the current page/context
    - We store the route changed time and compare it to the resource accessed time
  - There's too few resources
    - We might as well keep them to avoid a network request to re-populate

// TODO:
- Should additional features be added to preferences
  - if GC on route change is enabled
  - if GC on interval is enabled, and how often it runs
- Sensible default preferences
- Remove some logging
2022-10-10 17:08:43 +01:00
Neil MacDougall d9e4357fc8
Fix for user being logged out (#7132)
* Fix for user being logged out

* Fix lint

* bump
2022-10-10 10:29:11 +01:00
Shavindra e94b5a26ba
Prevent blocking effect secondary resources on workloads (#6860)
* move secondary data requests to a non-blocking ui method + pass loading props to the correct labeled selects

* main data loading procedure for secondary data done

* use pvcs from secondary resource fetch on storage component

* rename loading props to asyncDataLoading for better context

* cleanup

* move secondary resources data loading logic to a mixin

* cleaning up resource-manager mixin

* fix issue where namespace  wasnt being updated on secondary requests

* add doc description for data structure for resourceData

* minor change

* add plural option to resource-manager + remove loading var from workloads for sec resources + optimise persistentvolume edit view

* improve persistentvolumeclaim edit view

* add loading flag

* addressing PR comments

* fix latest PR comments

* doc on classify option for resourceManagerFetchSecondaryResources param

* Ensure reponse for namespace resources mimics non-namespaced
- The resources returned when requesting namespaced types do not contain id, type and links properties.
- This isn't perfect, or universally applicable, but will work for the current set of use cases

* working on merge conflicts

* Remove files from bad merge

* Handle new namespaces
- The secondary resource manager fetches some resources by namespace
- The user however can supply a new namespace
- When in `new namespace` mode we need to
  - avoid trying to fetch namespaced resource
  - clear any cached namespaced resource
- this only currently applies to workloads, PV and PVC pages don't fetch namespaced resources

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-10-09 10:40:32 +01:00
Neil MacDougall 80eeacfb41
Plugins: Add UI to manage plugins (#6973)
* WIP: Working version

* Further refinement

* Working version

* Refactor to a product

* i18n

* Fix lint and tidy comments

* Empty-Commit

* Bump e2e

* Latest fixes, i18n

* Fix lint

* Fix lint issues

* Fix imports for standlone plugin build

* Only load plugins in dev

* Fix lint issue

* Fix template errors

* Fix operator setup

* Fix menu actions

* Address PR feedback

* Address PR feedback

* Add new preference for plugin developer

* Update icon support

* Add third-party and experimental banners to slide-in

* Add support for update/rollback of a plugin

* Address PR feedback - i18n

* i18n - one more string localised

* i18n - one more string localised

* Minor visual tidy ups

* Use banner for install warning

* Fix saefMode

* Fix lint

* Add some responsiveness to the cards page

* Fix lint

* Bump PR

* Add debug to list coverage reports
2022-10-04 13:16:54 +01:00