Commit Graph

56 Commits

Author SHA1 Message Date
Neil MacDougall 00d23b8d1a
Allow extensions to override node provider icons (#10312)
* Allow extensions to override not provider icons

* Fix merge issues
2024-03-08 15:03:31 +00:00
Richard Cox b464d15ee0
Integrate new schemaDefinitions endpoint (#10141)
* resource edit AS yaml

* fix cruresource (yaml from form)
- lazy load the schemaDefinitions when needed, avoids sync all to createYaml before we have an async chance to fetch schemaDefinitions

* Fix questions
- there are only four places we use questions, none of which use schema, this is just to be safe

* cluster scan, plugins/fieldsForDriver, defaultFor, validationErrors

* pathExistsInSchema
- used to optionally show conditions tab/list in resource detail view
- logs of things in ingress list/edit

* createPopulated / defaultFor
defaultFor requires resourceFields, it's only used by createPopulated in one place to support machine configs without components

* wip

* WIP MONITORING.SPOOFED
- these aren't spoofed types, but secondary schemas
- testing fix blocked, primary schema's have resourceFields

* Move steve specific (resourceField) code to steve models
- create models for steve schemas and apply to cluster and management stores
- move resoureField based validationto steve model
- move pathExistsInSchema to steve store getter
- don't fetch schemaDefinitions on start up when saving prefs (not needed and blocking)

* comments / improvements

* (untested) refactoring

* Fix alertmanager definitions, add retry definition fetch

* Fix pathExistsInSchema for path length > 2

* Fix questions that accept schemas
- tested by adding Questions to random page and the node schema

* Fix to saving configmap part 1
- the save works but doesn't show data. the yaml is the same as before. debug info added

* Validation by resourceFields is a norman specific thing, so make it such

* small refactor

* Tidying up

* Remove rebase junk

* fix linting and unit tests

* fix unit tests

* fix linting from fix for test....

* Tidying up, fix alertmanagerconfig

* Remove unit test todos

* add unit tests for resource fields

* sdssdf

* Add unit tests for pathExistsInSchema

* JS --> TS

* Store schemas in local singleton cache to avoid hitting store

* fix minor changes from review

* cruresource changes following review
- improvement - remove spurious canDiff
- createResourceYaml - pass in resource to use instead of calc in code

* WIP changes to parseType

* Fix generic cloud credential and node driver forms

* handle missing reactivity given schema definitions not in store

* fix and add unit tests for `parseType`

* Fix create-yaml test

* Changes following review
- improved comments
- SchemaDefinitionCache is now per store (and is reset as such)
- typeRef now uses parseType

* Fix dep loop by moving route based helps in auth out to utils file

* fix unit tests

* Changes following review
2024-02-28 17:08:35 +00:00
Nancy c77e402313
Allow cluster provisioning extensions to define cluster-importing support (#10316)
* allow prov extensions to specify cluster importing support, allow prov extensions to overwrite built-in

* remove commented code

* fix e2e test data
2024-01-31 07:58:55 -08:00
Cody Jackson 48e1b0b3bb Layout removal
fixes #10059
2024-01-22 06:30:17 -07:00
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 79f4cdc0f0 Ensure checkRouteProduct works with route meta object
- getProductFromRoute falls back on product in route meta object
- in checkRouteProduct this was not passed through
2023-11-15 18:33:59 +00:00
Alexandre Alves 6ebbcef87e
Improve Extensions documentation (#9896)
* improve docs + fix types definition to prevent linter issues on getting started examples + bump shell version so that we can release a new version

* address pr comments

---------

Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
2023-10-12 17:47:45 +01:00
Neil MacDougall c9341a9b8d
Kubectl explain (#9713)
* Initial Example

* Add toggle expand all

* Add panel resize

* Fix close and open after resize

* Fix expand all

* POC: Kubectl explain interface

* Fix some lint issues

* First version of the kubectl explain UI

* Improvements

* Fix lint

* Tidy up Open API data fetch

* Tidy up code for parsing OpenAPI

* Many tidy ups and simplifications

* Add error message if we can't load Open API Data

* Ensure action appears only when there is a resource

* Fix lint issue

* Test e2e

* e2e

* e2e

* USe canary browser

* Use firefox

* Try chrome version

* Auto accept prompt

* Accept

* Last try

* Install Chrome

* Run as root

* Fix paths

* Add quiet flag, fix paths

* Use browser path

* Try debugging port

* Further attempts

* Set path

* Add debug env var

* Try edge

* Use specific version

* Add allow downgrades

* Use Chrome

* Remove WIP

* Adderss PR feedback

* Fix for no cluster

* Address PR feedback

* Fix lint issue

* Fix position with banners enabled. Restrict products for which this is shown

* Fix lint issue

---------

Co-authored-by: Richard Cox <richard.cox@suse.com>
2023-09-27 22:01:24 +01:00
Alexandre Alves c136e0f81f
locationConfig hash param (#9514)
* add hash param to locationConfig object in extensions to allow fine-tune of application of an extension + change logic around extension table cols to better reflect col location based on page user is browsing

* remove commented line

* update docs

* improve docs with breaking changes warning

* address pr comments

* bump shell version

---------

Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
2023-08-25 14:41:38 +01:00
Cody Jackson 804dd2c569 Adding virtual type to our interface since it's in our docs 2023-08-11 17:57:45 -07:00
Alexandre Alves 744e733f2a
Create mode missing from LocationConfig (#9425)
* fix modes for locationConfig + support new mode ´create´

* update docs

---------

Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro.local>
2023-07-27 14:40:45 +01:00
Alexandre Alves e5e7fcb46b
improve location config cross-check with path param (#9385)
* improve location config cross-check with path param

* update docs

---------

Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
2023-07-26 17:27:07 +01: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
Richard Cox e1839486bb
Merge pull request #8890 from DaiYuzeng/rancher-master
remove plugin accurately
2023-07-14 14:58:03 +01:00
Dai Yuzeng 7147818289 HARVESTER: remove plugin accurately 2023-07-13 15:51:04 +08:00
Neil MacDougall c9e1a19396
Extension support for custom provisioning (#9246)
* Extension support for custom provisioning

* FIx lint issues

* Discovery / Tweaks
- fix issue where namespacesOverride was lost
- tidy up PROVIDER
- try to handle missing provider=type url param (could be missing extension-params)
- added a few comments to comments to come back to

* Names and typings
- change param --> customParam to make it clearer it's not url params
- add labels-annotations to shell types

* Wire in provider detailTabs
- as per original readme this should be made generic (extension point working directly with ResourceTabs)

* Update IClusterProvisioner & docs

* Improvements / Changes to support proving out DO extension
- cluster hooks optional
- buff up save hook (and pass in cluster when calling apply fn)
- move normalizeName into generic place
- bring back async create machine config
- hack for do extension (map example provider to do provider)

* updates, add optional saveCluster, add missing kube file
- saveCluster complements hooks, doesn't skip handling of addons, etc
- ensure register hooks take the `this` context in all worlds

* Adding docs

* Updates
- location config based changes
  - change customParams to context
  - add query param
- add new extention point to add tabs to cluster create cluster config section
- fixed some typing
- fixed issue where cluster was not passed to before / after hooks (only important if 'this' changes

* Changes following review, fix `t` in plugins

* Fix linting

* Docs updates, pass through more edit/view things

* Conditionally show the namespace grouping in the cluster list
- means users can differentiate between clusters with same name in different namespaces
- useful when clusters created via extension provisioner where ns can be selected

* docs tweaks, actually include the provisioning page in docs

---------

Co-authored-by: Richard Cox <richard.cox@suse.com>
2023-07-11 22:17:57 +01:00
Cody Jackson 1b1f7dae33 Add the ability to import layouts from extensions
Addresses one facet of https://github.com/rancher/dashboard/issues/9216
2023-07-07 13:53:57 -07:00
Alexandre Alves 1ec3056b74
add support for enabled as a function in table action extension point + update extension docs (#9170)
Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
2023-07-07 14:59:43 +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
codyrancher 850521ab8f Updating the types for extensions
Found that these types were necessary for some of our docs and example projects
2023-05-25 21:38:22 +03:00
Alexandre Alves 57c0e699ca
fix route collision with extensions (#8861)
* fix route collision with extensions

* revert type change

---------

Co-authored-by: Alexandre Alves <aalves@Alexandres-MacBook-Pro.local>
2023-05-18 14:12:08 +01:00
Nancy f36b6e499f
Revert "Remove jquery from dependencies" (#8869) 2023-05-15 07:58:34 -07:00
Francesco Torchia d9fbdb083f
Merge pull request #8272 from torchiaf/fix/5070-6
Remove jquery from dependencies
2023-05-10 12:43:26 +02:00
codyrancher 55c9497fe9 Provide the relevant types for the product.ts and update the appropriate docs
https://github.com/rancher/dashboard/issues/8744
2023-04-28 14:25:10 +02:00
Francesco Torchia d04e06dc53
remove jquery from dependencies
Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
2023-04-26 10:34:11 +02:00
Neil MacDougall 7768dabc4d
[2.7] Forward port: Fix route collisions (#8486)
* Fix route collisions with /:product routes

* Use productName

* Remove cluster id

* Fix lint
2023-03-22 16:50:36 +00:00
Alexandre Alves bb754c97c6
gate some critical methods that were introducing errors on elemental while running on v2.7.0 dashboard (#8148)
Co-authored-by: Alexandre Alves <aalves@Alexandres-MBP.lan>
2023-02-13 16:49:12 +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
Neil MacDougall 7095fdd149
Don't unload builtin plugins (#7461) 2022-11-15 23:26:26 +00: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
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
Richard Cox f38e17f59d Pull out Harvester/Dashboard test items
Items for Harvester team
Harvester Settings - The correct one's display
VMImage `Create From Image` action is disabled correctly if the vm is not ready
Custom functionality in the models below work correctly
- network.harvesterhci.io.clusternetwork
- configmap
- k8s.cni.cncf.io.networkattachmentdefinition
- management.cattle.io.managedchart
- persistentvolumneclaim

Items I still need to test
- Standalone Harvester shows the correct version
- Trying to load a plugin that's already loaded (not sure this is possible now). See plugins.hs element.onload
- If the default error page displays correctly (and needs the setTimeout)
  - Specifically refresh a page in a harvester cluster (no errors). Also a page that doesn't exist (404 page)
2022-09-08 10:45:22 +01:00
Richard Cox 20c7cddf87 Fix three TODOs
- Ensure jquery isn't bundled with pkg (re-enable exclusion and by adding it back to the window)
- Ensure shell/models isn't bundled with pkg AND pkg's can use `lookup`
  - Instead of replaces all of `lookup`, just replace the `require` line
- Reviewed and removed last todo
2022-09-05 13:43:38 +01:00
Richard Cox 3e9cde6de9 Start addressing todos 2022-09-02 15:15:18 +01:00
Richard Cox f601eb339f Merge remote-tracking branch 'upstream/master' into test-pluginize-rc-2 2022-09-02 14:00:26 +01:00
Nancy Butler 16e1c2e29d allow plugins to register models in subfolders 2022-09-01 15:41:19 -07:00
Richard Cox 7cc904b28c tidying up some more 2022-09-01 19:54:16 +01:00
Richard Cox 43d338fac2
Harvester Plugin (#6729)
* routing maybe

* remove nested edit views

* harvester custom routes

* fix loading imported dev cluster

* move harvester-manager hci.cluster type out of harvester pkg

* fixes for build-pkg

* fix harvester custom dialogs

* fix harvester pkg routing

* generateDynamicTypeImport hyphenated dirs

rename cloud_credential and machine_config back to cloud-credential and machine-config

* Appease linting

* Fix epinio pkg build
- Includes fixes for some dashboard component references

* Revert "Receiver credential secrets are deleted when secret is set to none"

This reverts commit 836460e2998959bcda0b14a9f6511f248980b7b5.

* Fix plugin modal cancel button in dark mode

* Ensure correct components loaded when a new version of a plugin is loaded
- The route matcher was never updated with new route-->component values
- This was due to `this.router.options.routes` not containing the result of `router.add`
- See https://github.com/vuejs/vue-router/issues/2280

* Revert "Revert "Receiver credential secrets are deleted when secret is set to none""

This reverts commit e524bb3d40ea7adfe35c38ec7870560625965d25.

* fix harvester manager->harvester routing

* rename dialogs

* move harvester-manager files out of harvester pkg

* Revert "remove nested edit views"

This reverts commit e835835943d63e74c50942884fec3706f8703047.

* plugin validators dynamic import - not working

* fix merge conflict

* fix harvester members

* fix conflict

* custom validators

* harvester table formatters

* members routing

* import path fixes

* harvester mutli load

* Port across tweaks made during dynamic plugin work
- harvester plugin can be bundled with the dashboard until dynamic work has been completed
- Nav directly to virt cluster dashboard instead of via /harvester-c-cluster
- Fix missing bottom border on virt cluster list, hide actions (as they're never populated)

* move config/settings and config/harvester-map

fix hci setting custom components

* fix harvester setting import path

* Move over SerialConsole and Novnc, remove harvester.notifications
- These components were so 1-1 with harvester in the end i moved them over
- Also removed the like-for-like generic.notification `harvester.notification` strings

* Remove isSingleVirtualCluster, most of isMultiVirtualCluster

* Fix two nav issues
- harv cluster members --> prefs --> click on-screen back
- dashboard --> prefs --> click on-screen back

Both of these would be better fixed by an incoming change to the default layout (don't show old content before switching page)

* Fix reload of project/namespace page

* Split out project namespace into it's own component (1 or 2)

* Split out project namespace into it's own component (2 or 2)

* use product hideSystemResources opt instead of isVirtual/product===virtual

* fix missing prop in header

* Move FilterLabel and CloudInitType to harv pkg + two other references

* Move Harvester Upgrade components to harv pkg
- Needs a review with Neil regarding generics

* rebase build+load not working

* fix harvester route in authenticated

* Experimental Changes

* Fix merge conflicts

* WIP Fix routing
- includes project/namespace and namespace pages

* Tidying up

* Move harvester core store to plugin, remove harvester code from authenticated flow
- harvester store is a steve store that now lives in the plugin
- harvester `loadVirtual` replaced with a shortened `loadCluster` in it's own store
- Also fix xterm css import

* Fix three routing related bugs
- Fix project/namespace create/edit/cancel/done flows
- Update harvester's loadCluster to better match loadCluster
- Make edit namespace page project resource agnostic

* Build fixes

* Fix create namespace button and other tweaks

* fix two issues with nav out of imported harvester cluster

* Fix alignment of action menu button
- Used in many places
  - all generic table action menus
  - global settings --> settings
  - rke1 cluster detail page machine pool group actions
  - project/namespace list project group actions
  - resource detail page action menu

* Revert changes to app and pkg creators
- This should fix `check-plugins-build` gate
- It does hide the underlying issue, but that won't have been brought in by this PR?

Co-authored-by: Nancy Butler <42977925+mantis-toboggan-md@users.noreply.github.com>
2022-09-01 08:57:05 -07:00
Richard Cox b3f13843dd Merge remote-tracking branch 'origin/harvester-plugin-rebased' into test-pluginize-rc-2 2022-09-01 13:57:18 +01:00
Richard Cox 3f6df623e0 Move harvester core store to plugin, remove harvester code from authenticated flow
- harvester store is a steve store that now lives in the plugin
- harvester `loadVirtual` replaced with a shortened `loadCluster` in it's own store
- Also fix xterm css import
2022-08-25 12:26:39 +01:00
Nancy Butler 4c1d0aaee1 custom validators 2022-08-19 12:29:30 -07:00
Nancy Butler 11d6a4b3e5 fix conflict 2022-08-19 12:29:30 -07:00
Nancy Butler cbeda4071c fix harvester manager->harvester routing 2022-08-19 12:21:43 -07:00
Richard Cox d948a74486 Ensure correct components loaded when a new version of a plugin is loaded
- The route matcher was never updated with new route-->component values
- This was due to `this.router.options.routes` not containing the result of `router.add`
- See https://github.com/vuejs/vue-router/issues/2280
2022-08-19 12:21:25 -07:00
Richard Cox 22e4d3479f WIP build process changes & comment tidy up 2022-07-14 14:00:55 +01:00
Richard Cox 535e7406a0 Resolve auth middleware running multiple times on reload - caused by plugin-routes using addRoute directly on vue router - this was normally skipped as we were making changes - changes applied to a new router, vue router matcher then replaced 2022-07-13 18:32:36 +01:00
Richard Cox 3beacf3ff1 Changes required to support switching between harv clusters - Totally remove old plugins before starting to load a new one - Forget routes associated with removed plugins (to confirm with replaced 2022-07-13 18:32:26 +01:00
Richard Cox 90216de74d Improve error message when plugin fails to load 2022-07-13 18:30:25 +01:00
Nancy Butler a3b343c6c9 custom validators 2022-07-12 10:59:35 -07:00
Nancy Butler 38dfc71654 fix conflict 2022-07-12 10:59:35 -07:00