- On some KE errors are thrown if trying to get a secret with an empty
name, instead of just ignoring the entry
- Clean up the node shell settings
Signed-off-by: Sebastian Malton <sebastian@malton.name>
Upgrade to electron 12 and Node 14
- Compute cluster ID for tests
- Switch to temporary appData path while testing
Signed-off-by: Sebastian Malton <sebastian@malton.name>
Co-authored-by: Sebastian Malton <smalton@mirantis.com>
Co-authored-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
- Transition workspace's to be labels
- Fix migrations to support multiple migrations for the same version
Signed-off-by: Sebastian Malton <sebastian@malton.name>
- Only shows editor, and will save all text to file
- Reports some validation errors, but doesn't block the add cluster
button
- Cleanup kube helpers to facilitate clearer FS interactions
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* Cluster commands disappeared from Command Palette, close#2760
Signed-off-by: Roman <ixrock@gmail.com>
* refactoring: get rid of ClusterStore.active && ClusterStore.activeCluster (managed via catalog's entity)
Signed-off-by: Roman <ixrock@gmail.com>
* mobx-6 migration -- part 1
Signed-off-by: Roman <ixrock@gmail.com>
* mobx-6 migration -- part 2 (npx mobx-undecorate --keepDecorators)
Signed-off-by: Roman <ixrock@gmail.com>
* mobx-6 migration -- part 3 (more fixes)
Signed-off-by: Roman <ixrock@gmail.com>
* unwrap possible observables from IPC-messaging
Signed-off-by: Roman <ixrock@gmail.com>
* mobx-6 migration -- remove @autobind as class-decorator
Signed-off-by: Roman <ixrock@gmail.com>
* mobx-6: replacing @autobind() as method-decorator to @boundMethod
Signed-off-by: Roman <ixrock@gmail.com>
* mobx-6: use toJS()-wrapper since monkey-patching require(mobx).toJS doesn't work
Signed-off-by: Roman <ixrock@gmail.com>
* removed `@observable static`
Signed-off-by: Roman <ixrock@gmail.com>
* use {useDefineForClassFields: true} in tsconfig.json
Signed-off-by: Roman <ixrock@gmail.com>
* remove ExtendedObservableMap
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* fix: removed makeObservable(this) from "terminal-tab.tsx"
Signed-off-by: Roman <ixrock@gmail.com>
* storage-helper refactoring
Signed-off-by: Roman <ixrock@gmail.com>
* normalize usages of #observable-value.toJSON() / attempt to catch the wind
Signed-off-by: Roman <ixrock@gmail.com>
* refactoring, more possible branch fixes + lint
Signed-off-by: Roman <ixrock@gmail.com>
* debugging cluster-view error -- part 1
Signed-off-by: Roman <ixrock@gmail.com>
* fix: refreshing cluster-view on ready
Signed-off-by: Roman <ixrock@gmail.com>
* fix: various app-crashes related to KubeObject.spec.* access from "undefined"
fix: config-map-details crash
Signed-off-by: Roman <ixrock@gmail.com>
* fix: namespace-store refactoring / saving selected-namespaces to external json-file
Signed-off-by: Roman <ixrock@gmail.com>
* fix: don't cache mobx.when(() => this.someObservable) cause might not work as expected due later call of makeObservable(this) in constructor
Signed-off-by: Roman <ixrock@gmail.com>
* fix: app-crash on editing k8s resource
Signed-off-by: Roman <ixrock@gmail.com>
* fix: restore "all namespaces" on page reload
Signed-off-by: Roman <ixrock@gmail.com>
* - fix: persist table-sort params and cluster-view's sidebar state to lens-local-storage
- new-feature: auto-open main-window's devtools in development-mode (yes/no/ugly?)
Signed-off-by: Roman <ixrock@gmail.com>
* fix: crd definition details -> crashing with <AceEditor mode="json"> (added missing mode-file in ace-editor.tsx)
Signed-off-by: Roman <ixrock@gmail.com>
* fix: crd definitions -> groups selector couldn't deselect last selected option
Signed-off-by: Roman <ixrock@gmail.com>
* refactoring: extensions-api exports clarification for "@k8slens/extensions"
Signed-off-by: Roman <ixrock@gmail.com>
* fix: various app-crashes related to kube-events (events page, some details page, overview, etc.)
Signed-off-by: Roman <ixrock@gmail.com>
* Reverted "use {useDefineForClassFields: true} in tsconfig.json" (various app-crash fixes)
This flag seems to be not possible to use with class-inheritance in some cases.
Example / demo:
`KubeObject` class has initial type definitions for the fields like: "metadata", "kind", etc.
and constructor() has Object.assign(this, data);
Meanwhile child class, e.g. KubeEvent inherited from KubeObject and has it's own extra type definitions for underlying resource, e.g. "involvedObject", "source", etc.
So calling super(data) doesn't work as expected for child class as it's own type definitions overwrites data from parent's constructor with `undefined` at later point.
Signed-off-by: Roman <ixrock@gmail.com>
* master-merge lint-fixes
Signed-off-by: Roman <ixrock@gmail.com>
* catalog.tsx / catalog-entities.store.ts refactoring & fixes
Signed-off-by: Roman <ixrock@gmail.com>
* fix: Catalog -> Browse all tab
Signed-off-by: Roman <ixrock@gmail.com>
* fix: CommandPalette doesn't appear from global menu by click/hotkey
Signed-off-by: Roman <ixrock@gmail.com>
* - Merging interfaces & classses to avoid overwriting fields from parent's super(data)-call with Object.assign(this, data). Otherwise use "declare" keyword at class field definition.
- Revamping {useDefineForClassFields: true} to avoid issues with non-observable class fields in some cases (from previous commit):
```
@observer
export class CommandContainer extends React.Component<CommandContainerProps> {
// without some defined initial value "commandComponent" is non-observable for some reasons
// when tsconfig.ts has {useDefineForClassFields:false}
@observable.ref commandComponent: React.ReactNode = null;
constructor(props: CommandContainerProps) {
super(props);
makeObservable(this);
}
```
Signed-off-by: Roman <ixrock@gmail.com>
* update KubeObject class type definition
Signed-off-by: Roman <ixrock@gmail.com>
* clean up / responding to comments
Signed-off-by: Roman <ixrock@gmail.com>
* fix: app-crash when navigating to catalog from active cluster-view, refactoring `catalog-entity-store`
Signed-off-by: Roman <ixrock@gmail.com>
* catalog-pusher clean up, replaced .observe_() to external observe() helper from "mobx"
Signed-off-by: Roman <ixrock@gmail.com>
* fix: catalog's items stale/non-observable (after connection to the cluster status still "disconnected"), lint-fixes
Signed-off-by: Roman <ixrock@gmail.com>
* fix: Catalog is empty after closing main-window and re-opening app from Tray
Signed-off-by: Roman <ixrock@gmail.com>
* fix: HotBar's icon context menu items non-observable (no "disconnect cluster", etc.)
Signed-off-by: Roman <ixrock@gmail.com>
* lint-fix/license check
Signed-off-by: Roman <ixrock@gmail.com>
* fix: redirect to catalog when disconnecting active cluster
Signed-off-by: Roman <ixrock@gmail.com>
* fix: refresh visibility of active cluster-view on switching from hotbar/catalog
Signed-off-by: Roman <ixrock@gmail.com>
* updated package.json for built-in extensions to use "*" version for packages served from main app
Signed-off-by: Roman <ixrock@gmail.com>
* - added missing makeObservable(this) to metrics-settings.tsx
- updated package-lock.json for built-in extensions
- lint fixes
Signed-off-by: Roman <ixrock@gmail.com>
* master-merge clean up fix, updated package-lock.json for built-in extensions after `make clean-extensions && make build-extensions`
Signed-off-by: Roman <ixrock@gmail.com>
* fix unit-tests
Signed-off-by: Roman <ixrock@gmail.com>
* master-merge fixes
Signed-off-by: Roman <ixrock@gmail.com>
* make lint happy
Signed-off-by: Roman <ixrock@gmail.com>
* reverted some changes, removed auto-opening devtools in dev-mode
Signed-off-by: Roman <ixrock@gmail.com>
* merge fixes
Signed-off-by: Roman <ixrock@gmail.com>
* master-merge conflict fixes:
- proper handling and navigating into catalog's active category via URL-builder
Signed-off-by: Roman <ixrock@gmail.com>
* reverting splitted params for catalog's page route to "/catalog/:group?/:kind?"
Signed-off-by: Roman <ixrock@gmail.com>
* clean-up: remove app's injecting dependencies from `extensions/kube-object-event-status/package.json`
Signed-off-by: Roman <ixrock@gmail.com>
* master-merge fix: added missing makeObservable(this) for extensions.tsx
Signed-off-by: Roman <ixrock@gmail.com>
* fix: catalog entity context menu stale/unobservable
Signed-off-by: Roman <ixrock@gmail.com>
Co-authored-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* check source files for license header
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* tweak
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* add license header to all relevant source files
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
- Removed `getFreePort` as its use is always a race condition. Change
all uses of it to retrive the port after listening
- Added `getPortFrom` as a helper function to read a port from a stream
- Remove `Cluster.ownerRef` as it is outdated and no longer needed for 5.0
- Remove `Cluster.enabled`, no longer needed because of above
- Removed `Cluster.init`, moved its contents into `Cluster.constructor`
as nothing in that function is asyncronous. Currently only being run
on `main` as a stop gap until `renderer` gets its own version of
`Cluster`
- Refactored `LensProxy` so as to prevent `pty.node` (a NodeJS
extension) being included in `webpack.extension.ts`'s run
- Removed the passing around of the proxy port as that can now be
accessed from an instance of `LensProxy`
- purge ContextHandler's cache on disconnect
Co-authored-by: Sebastian Malton <sebastian@malton.name>
* Add the ability to sync kube config files
- Will update when the files changes
- add KUBECONFIG_SYNC label
- fix rebase and change to addObservableSource
- move UI to user settings
- support shallow folder watching
- add some unit tests for the diff-er
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* responding to review comments
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* fix tests and add try/catch
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* always sync c&p folder, remove bad rebase
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* fix preferences
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* Fix settings saving and catalog view
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* fix unit tests
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* fix synced clusters not connectable
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* change to non-complete shallow watching
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* fix sizing
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* Catch readStream errors
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* don't clear UserStore on non-existant preference field, fix unlinking not removing items from source
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* change label to file
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* reserve cluster proxy port just in time
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* fix
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* refactor
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* basic workspace overview
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* css tweaks for landing page as a PageLayout
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* address review comments
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* more review comment addressing, added overview to workspace command palette
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* added back the landing page startup hint
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* refactoring as per review comments
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* added original landing page back only for default workspace with no clusters
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* Workspace overview layout tweaks (#2302)
* tweaks workspace overview layout
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* cluster settings on top
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* header logo for add cluster page
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* tweak landing page
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* combine left menu icons
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* always show bottom status bar
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* tweak
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* integration test fixes
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* change cluster menu
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* first attempt to fix integration test
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* lint
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* get selectors right for integration test
Signed-off-by: Jim Ehrismann <jehrismann@miranits.com>
Co-authored-by: Jim Ehrismann <jehrismann@mirantis.com>
Co-authored-by: Jim Ehrismann <jehrismann@miranits.com>
* address review comments, and rebased to master
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
Co-authored-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
Co-authored-by: Jim Ehrismann <jehrismann@miranits.com>
* Ignore clusters with invalid kubeconfig
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Improve error message
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Mark cluster as dead if kubeconfig loading fails
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Fix tests
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Validate cluster object in kubeconfig when constructing cluster
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Add unit tests for validateKubeConfig
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Refactor validateKubeconfig unit tests
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Extract ValidationOpts type
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Add default value to validationOpts param
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Change isDead to property
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Fix lint issues
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Add missing new line
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Update validateKubeConfig in-code documentation
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Remove isDead property
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Display warning notification if invalid kubeconfig detected (#2233)
* Display warning notification if invalid kubeconfig detected
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Detach NamespaceStore from KubeWatchApi, proper KubeObjectStore.loadAll (rebase of #2033)
Signed-off-by: Roman <ixrock@gmail.com>
* Watch-api requests optimization (#2066)
* subscribe for watching resources in single request when has admin-like access rights
Signed-off-by: Roman <ixrock@gmail.com>
* responding to comments
Signed-off-by: Roman <ixrock@gmail.com>
* fix unit-tests
Signed-off-by: Roman <ixrock@gmail.com>
* fix: reloading stores when preloading enabled and waitUntilLoaded=false
Signed-off-by: Roman <ixrock@gmail.com>
* mark Cluster.canUseWatchApi() and Cluster.refreshAccessibility() as private
Signed-off-by: Roman <ixrock@gmail.com>
* fix unit test: make public Cluster.canUseWatchApi()
Signed-off-by: Roman <ixrock@gmail.com>
* responding to comments in #2066
Signed-off-by: Roman <ixrock@gmail.com>
* loading k8s resources into stores per selected namespaces -- part 1
Signed-off-by: Roman <ixrock@gmail.com>
* loading k8s resources into stores per selected namespaces -- part 2
- fix: generating helm chart id
Signed-off-by: Roman <ixrock@gmail.com>
* loading k8s resources into stores per selected namespaces -- part 3
Signed-off-by: Roman <ixrock@gmail.com>
* fixes
Signed-off-by: Roman <ixrock@gmail.com>
* fixes / responding to comments
Signed-off-by: Roman <ixrock@gmail.com>
* chore / small fixes
Signed-off-by: Roman <ixrock@gmail.com>
* fixes & refactoring
Signed-off-by: Roman <ixrock@gmail.com>
* make lint happy
Signed-off-by: Roman <ixrock@gmail.com>
* reset store on loading error
Signed-off-by: Roman <ixrock@gmail.com>
* added new cluster method: cluster.isAllowedResource
Signed-off-by: Roman <ixrock@gmail.com>
* fix: loading namespaces optimizations
Signed-off-by: Roman <ixrock@gmail.com>
* fixes & refactoring
Signed-off-by: Roman <ixrock@gmail.com>
* Prevent initializing clusters multiple times
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Do not expose intializing to cluster state
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Convert initializing to observable and ensure it is set to false after init
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* optimise Cluster.getAllowedResources()
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* make it faster (max 5 concurrent requests)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* mark cluster & workspace as beta
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* back to public
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* performance fix when cluster has lots of namespaces
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* fix tests
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* add no-unused-vars and no-unused-imports
* added quotes: double, and remove ignore pattern
* move itif and describeif into utils
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* Store prometheus metadata for clusters based on metrics requests
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Use ClusterMetadataKey.PROMETEHUS as key
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Update metadata only if it is changed
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Use structural comparer as default for store sync reaction
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* No need to compare metadata as json anymore
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Use structural comparer only in cluster-store
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Refactoring
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* React only prometeheus preference changes to re-initialise prometheus connection
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Add missing semicolons
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Fix imports
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Report metrics status in cluster-report (#1443)
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Apply suggestions from code review
Co-authored-by: Sebastian Malton <sebastian@malton.name>
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Fix logger reference
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
Co-authored-by: Sebastian Malton <sebastian@malton.name>
* Add mechanism for users to specify namespaces that are accessible to them. This is generally useful for when the user doesn't have permission to list the namespaces.
- Add new component "EditableList" which provides a simple way to
display a list of items that can be added too.
- Add the ClusterAccessibleNamespaces to the GeneralClusterSettings
- style editable list list of lists, switch to using <>
Signed-off-by: Sebastian Malton <sebastian@malton.name>
Co-authored-by: Sebastian Malton <smalton@mirantis.com>