* added support for port-forwarding https
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* added protocol to the port-forward list and details page. Added the port-forward address to the details page title
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* predict the protocol based on the port name, some cleanup
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* address review comments
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* code reorg
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* fix lint
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* improved port-forward error reporting
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* satisfy lint and some autoformatting
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* Check object instanceof on all detail panels
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* Fix unit tests
- Remove prettier as snapShot testing is too tight of a bound
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* Added ability to add custom port on pod and service port forwarding (#3295)
* Added ability to add custom port on pod and service port forwarding
Signed-off-by: rdeepc <12953177+rdeepc@users.noreply.github.com>
* Added ability to add custom port on pod and service port forwarding
- pod-container-port fixed init async and active port checking
- service-port-component fixed init async and active port checking
- port-forward-route promise and response fix
Signed-off-by: rdeepc <12953177+rdeepc@users.noreply.github.com>
* Added ability to add custom port on pod and service port forwarding
Signed-off-by: rdeepc <12953177+rdeepc@users.noreply.github.com>
* - Added Custom Port Selection for port forwarding
- Implemented Random Port if custom port is not provided
Signed-off-by: rdeepc <12953177+rdeepc@users.noreply.github.com>
Co-authored-by: Saumya Shovan Roy <saumyashovanroy@gmail.com>
* cherry-pick of hackweek work plus merge conflicts/build errors
added a route to get all port forwards
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
Added Forwarded Ports to cluster dashboard
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
working port-forward page (open, edit, remove)
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
added local storage to the port-forward store
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
automatically restore port-forward after pod is restarted
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
start port-forwards using random local port by default, rearranged pod and service port-forward UI
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* refactor
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* more refactoring, don't always open port-forwards in browser, refined reused port-forward dialog
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* removed unimplemented forwarded port details page,modified logging
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* addressed some review comments
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* made port and forwardPort query params and cleaned up port-forward routing paths
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* address more review comments and change dashboard tab name to 'Port Forwarding'
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* changed port and forwardPort fields to be Numbers
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* removed extraneous reset() call, reorder field declarations
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* port-forward now gets the bundled kubectl path without going through the 'ensureKubectl' hoops
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* more cleanup/tweaking
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
* fix bug where port-forward info did not update on pod details page when different pod (in same deployment?) is clicked
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
Co-authored-by: Saumya Shovan Roy (Deep) <12953177+rdeepc@users.noreply.github.com>
Co-authored-by: Saumya Shovan Roy <saumyashovanroy@gmail.com>
* refactor kube api to common
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* refactor more utils to common
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* refactor more utils to common
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* fix tests
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* switch to use node-fetch on both sides
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* cleanup
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* improve logger
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* fix lint errors
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* fix/improve tests
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* fix tests
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* fix node-fetch require error on prod build
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* preload fix
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* fixes
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* read serverAddress from apiBase
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* cleanup
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
* Sort statuses allowing 'running' to be first
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Fix Chart legend badges
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Adding getStatus() tests for each store
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Fix .TableHead.sticky in for details panels
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* Fine-tune TableHead styling in PodDetailsList
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
Co-authored-by: Alex Andreev <alex.andreev.email@gmail.com>
* add button to expand and view whole badge contents
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* revert font changes due to update elsewhere already existing
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* make expanding icon smaller and not focusable
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* extended badge content by click, selecting text from label doesn't trigger auto-closing
Signed-off-by: Roman <ixrock@gmail.com>
* fix: hover only intercative badges (with extra content)
Signed-off-by: Roman <ixrock@gmail.com>
* added common document/selectionchange watcher
Signed-off-by: Roman <ixrock@gmail.com>
* lint fixes
Signed-off-by: Roman <ixrock@gmail.com>
* Convert Badge to CSS Modules
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Align Badge styles across components
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Cleaning up
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Not closing badge if user started to select text
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
Co-authored-by: Sebastian Malton <sebastian@malton.name>
Co-authored-by: Alex Andreev <alex.andreev.email@gmail.com>
* Revert "review comments"
This reverts commit 97f2ecd88d.
* Revert "Switch to I, remove type parameter default"
This reverts commit a3073cc99b.
* Revert "Improve Table typing and remove annotations on callbacks"
This reverts commit defb0ea0dd.
* 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>
- Add distinction between `getInstance` and `getInstanceOrCreate` since
it is not always possible to create an instance (since you might not
know the correct arguments)
- Remove all the `export const *Store = *Store.getInstance<*Store>();`
calls as it defeats the purpose of `Singleton`. Plus with the typing
changes the appropriate `*Store.getInstance()` is "short enough".
- Special case the two extension export facades to not need to use
`getInstanceOrCreate`. Plus since they are just facades it is always
possible to create them.
- Move some other types to be also `Singleton`'s: ExtensionLoader,
ExtensionDiscovery, ThemeStore, LocalizationStore, ...
- Fixed dev-run always using the same port with electron inspect
- Update Store documentation with new recommendations about creating
instances of singletons
- Fix all unit tests to create their dependent singletons
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* Render only secret name on pod details without access to secrets
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
* Preserving layout when amount of secrets passed
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Refactor secrets to observable map
Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
Co-authored-by: Alex Andreev <alex.andreev.email@gmail.com>
- Move all strings of the form {`...`} to use just ""
- Fix RoleBindingDetails not rendering the name of the role binding
Signed-off-by: Sebastian Malton <sebastian@malton.name>
* - fix: proper sorting for resource age column
- use Date.now() instead of new Date().getTime() (#2141 follow-up)
Signed-off-by: Roman <ixrock@gmail.com>
* fix: proper bar-chart tooltip callback
Signed-off-by: Roman <ixrock@gmail.com>
* fix: sorting in cronjobs, more Date.now() replacements
Signed-off-by: Roman <ixrock@gmail.com>
* Adding LogTabStore
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Adding Pod selector in logs tab
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Refresh containers on pod change
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Adding <LogResourceSelector /> tests
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Adding LogTabStore tests
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Clearn getPodsByOwnerId method
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Extracting dummy pods into mock file
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Eliminating containers and initContainers from store
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Refreshing tab pods if pod amount is changed in store
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* A bit of cleaning up, fixing tests
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Fix lint newline errors
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Return getPodsByOwner() method
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Rename log tab when pod changes
Signed-off-by: Alex Andreev <alex.andreev.email@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>
* Expanding tolerations div width
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Adding tolerations table
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Fixing tolerations table styles
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Adding <PodTolerations/> tests
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Add new line at the end of the file for linter
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Appliying dark colors on dock contents
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
* Fix lint error
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>