1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

use dialog.showOpenDialog for selecting custom kube-config file

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2020-08-25 12:59:57 +03:00
parent 16e50556dd
commit 8c145131e9
4 changed files with 90 additions and 36 deletions

View File

@ -83,7 +83,7 @@ msgstr "Account Name"
msgid "Active" msgid "Active"
msgstr "Active" msgstr "Active"
#: src/renderer/components/+add-cluster/add-cluster.tsx:176 #: src/renderer/components/+add-cluster/add-cluster.tsx:196
#: src/renderer/components/cluster-manager/clusters-menu.tsx:116 #: src/renderer/components/cluster-manager/clusters-menu.tsx:116
msgid "Add Cluster" msgid "Add Cluster"
msgstr "Add Cluster" msgstr "Add Cluster"
@ -108,7 +108,7 @@ msgstr "Add bindings to {name}"
#~ msgid "Add cluster" #~ msgid "Add cluster"
#~ msgstr "Add cluster" #~ msgstr "Add cluster"
#: src/renderer/components/+add-cluster/add-cluster.tsx:204 #: src/renderer/components/+add-cluster/add-cluster.tsx:223
msgid "Add cluster(s)" msgid "Add cluster(s)"
msgstr "Add cluster(s)" msgstr "Add cluster(s)"
@ -710,7 +710,7 @@ msgstr "Currently applied filters:"
msgid "Custom Resources" msgid "Custom Resources"
msgstr "Custom Resources" msgstr "Custom Resources"
#: src/renderer/components/+add-cluster/add-cluster.tsx:121 #: src/renderer/components/+add-cluster/add-cluster.tsx:141
msgid "Custom.." msgid "Custom.."
msgstr "Custom.." msgstr "Custom.."
@ -1730,13 +1730,17 @@ msgstr "Persistent Volume Claims"
msgid "Persistent Volumes" msgid "Persistent Volumes"
msgstr "Persistent Volumes" msgstr "Persistent Volumes"
#: src/renderer/components/+add-cluster/add-cluster.tsx:78
msgid "Please select kube-config's context"
msgstr "Please select kube-config's context"
#: src/renderer/components/+add-cluster/add-cluster.tsx:63 #: src/renderer/components/+add-cluster/add-cluster.tsx:63
#~ msgid "Please select kubeconfig" #~ msgid "Please select kubeconfig"
#~ msgstr "Please select kubeconfig" #~ msgstr "Please select kubeconfig"
#: src/renderer/components/+add-cluster/add-cluster.tsx:64 #: src/renderer/components/+add-cluster/add-cluster.tsx:64
msgid "Please select kubeconfig context" #~ msgid "Please select kubeconfig context"
msgstr "Please select kubeconfig context" #~ msgstr "Please select kubeconfig context"
#: src/renderer/components/+workloads-pods/pod-menu.tsx:50 #: src/renderer/components/+workloads-pods/pod-menu.tsx:50
msgid "Pod" msgid "Pod"
@ -1832,7 +1836,7 @@ msgstr "Provisioner"
msgid "Proxy is used only for non-cluster communication." msgid "Proxy is used only for non-cluster communication."
msgstr "Proxy is used only for non-cluster communication." msgstr "Proxy is used only for non-cluster communication."
#: src/renderer/components/+add-cluster/add-cluster.tsx:188 #: src/renderer/components/+add-cluster/add-cluster.tsx:207
msgid "Proxy settings" msgid "Proxy settings"
msgstr "Proxy settings" msgstr "Proxy settings"
@ -2216,7 +2220,7 @@ msgstr "Secret type"
msgid "Secrets" msgid "Secrets"
msgstr "Secrets" msgstr "Secrets"
#: src/renderer/components/+add-cluster/add-cluster.tsx:185 #: src/renderer/components/+add-cluster/add-cluster.tsx:204
msgid "Select a context" msgid "Select a context"
msgstr "Select a context" msgstr "Select a context"
@ -2228,6 +2232,11 @@ msgstr "Select a quota.."
#~ msgid "Select context" #~ msgid "Select context"
#~ msgstr "Select context" #~ msgstr "Select context"
#: src/renderer/components/+add-cluster/add-cluster.tsx:52
#: src/renderer/components/+add-cluster/add-cluster.tsx:52
msgid "Select custom kube-config file"
msgstr "Select custom kube-config file"
#: src/renderer/components/+add-cluster/add-cluster.tsx:173 #: src/renderer/components/+add-cluster/add-cluster.tsx:173
#~ msgid "Select kubeconfig" #~ msgid "Select kubeconfig"
#~ msgstr "Select kubeconfig" #~ msgstr "Select kubeconfig"
@ -2570,6 +2579,11 @@ msgstr "Upgrade version"
msgid "Usage" msgid "Usage"
msgstr "Usage" msgstr "Usage"
#: src/renderer/components/+add-cluster/add-cluster.tsx:53
#: src/renderer/components/+add-cluster/add-cluster.tsx:53
msgid "Use configuration"
msgstr "Use configuration"
#: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:190 #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:190
msgid "Use same name for RoleBinding" msgid "Use same name for RoleBinding"
msgstr "Use same name for RoleBinding" msgstr "Use same name for RoleBinding"

View File

@ -83,7 +83,7 @@ msgstr ""
msgid "Active" msgid "Active"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:176 #: src/renderer/components/+add-cluster/add-cluster.tsx:196
#: src/renderer/components/cluster-manager/clusters-menu.tsx:116 #: src/renderer/components/cluster-manager/clusters-menu.tsx:116
msgid "Add Cluster" msgid "Add Cluster"
msgstr "" msgstr ""
@ -108,7 +108,7 @@ msgstr ""
#~ msgid "Add cluster" #~ msgid "Add cluster"
#~ msgstr "" #~ msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:204 #: src/renderer/components/+add-cluster/add-cluster.tsx:223
msgid "Add cluster(s)" msgid "Add cluster(s)"
msgstr "" msgstr ""
@ -706,7 +706,7 @@ msgstr ""
msgid "Custom Resources" msgid "Custom Resources"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:121 #: src/renderer/components/+add-cluster/add-cluster.tsx:141
msgid "Custom.." msgid "Custom.."
msgstr "" msgstr ""
@ -1713,13 +1713,17 @@ msgstr ""
msgid "Persistent Volumes" msgid "Persistent Volumes"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:78
msgid "Please select kube-config's context"
msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:63 #: src/renderer/components/+add-cluster/add-cluster.tsx:63
#~ msgid "Please select kubeconfig" #~ msgid "Please select kubeconfig"
#~ msgstr "" #~ msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:64 #: src/renderer/components/+add-cluster/add-cluster.tsx:64
msgid "Please select kubeconfig context" #~ msgid "Please select kubeconfig context"
msgstr "" #~ msgstr ""
#: src/renderer/components/+workloads-pods/pod-menu.tsx:50 #: src/renderer/components/+workloads-pods/pod-menu.tsx:50
msgid "Pod" msgid "Pod"
@ -1815,7 +1819,7 @@ msgstr ""
msgid "Proxy is used only for non-cluster communication." msgid "Proxy is used only for non-cluster communication."
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:188 #: src/renderer/components/+add-cluster/add-cluster.tsx:207
msgid "Proxy settings" msgid "Proxy settings"
msgstr "" msgstr ""
@ -2199,7 +2203,7 @@ msgstr ""
msgid "Secrets" msgid "Secrets"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:185 #: src/renderer/components/+add-cluster/add-cluster.tsx:204
msgid "Select a context" msgid "Select a context"
msgstr "" msgstr ""
@ -2211,6 +2215,11 @@ msgstr ""
#~ msgid "Select context" #~ msgid "Select context"
#~ msgstr "" #~ msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:52
#: src/renderer/components/+add-cluster/add-cluster.tsx:52
msgid "Select custom kube-config file"
msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:173 #: src/renderer/components/+add-cluster/add-cluster.tsx:173
#~ msgid "Select kubeconfig" #~ msgid "Select kubeconfig"
#~ msgstr "" #~ msgstr ""
@ -2553,6 +2562,11 @@ msgstr ""
msgid "Usage" msgid "Usage"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:53
#: src/renderer/components/+add-cluster/add-cluster.tsx:53
msgid "Use configuration"
msgstr ""
#: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:190 #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:190
msgid "Use same name for RoleBinding" msgid "Use same name for RoleBinding"
msgstr "" msgstr ""

View File

@ -84,7 +84,7 @@ msgstr "Название аккаунта"
msgid "Active" msgid "Active"
msgstr "Активный" msgstr "Активный"
#: src/renderer/components/+add-cluster/add-cluster.tsx:176 #: src/renderer/components/+add-cluster/add-cluster.tsx:196
#: src/renderer/components/cluster-manager/clusters-menu.tsx:116 #: src/renderer/components/cluster-manager/clusters-menu.tsx:116
msgid "Add Cluster" msgid "Add Cluster"
msgstr "" msgstr ""
@ -109,7 +109,7 @@ msgstr "Добавить привязки к {name}"
#~ msgid "Add cluster" #~ msgid "Add cluster"
#~ msgstr "" #~ msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:204 #: src/renderer/components/+add-cluster/add-cluster.tsx:223
msgid "Add cluster(s)" msgid "Add cluster(s)"
msgstr "" msgstr ""
@ -711,7 +711,7 @@ msgstr "Текущие фильтры:"
msgid "Custom Resources" msgid "Custom Resources"
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:121 #: src/renderer/components/+add-cluster/add-cluster.tsx:141
msgid "Custom.." msgid "Custom.."
msgstr "" msgstr ""
@ -1731,13 +1731,17 @@ msgstr "Persistent Volume Claims"
msgid "Persistent Volumes" msgid "Persistent Volumes"
msgstr "Persistent Volumes" msgstr "Persistent Volumes"
#: src/renderer/components/+add-cluster/add-cluster.tsx:78
msgid "Please select kube-config's context"
msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:63 #: src/renderer/components/+add-cluster/add-cluster.tsx:63
#~ msgid "Please select kubeconfig" #~ msgid "Please select kubeconfig"
#~ msgstr "" #~ msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:64 #: src/renderer/components/+add-cluster/add-cluster.tsx:64
msgid "Please select kubeconfig context" #~ msgid "Please select kubeconfig context"
msgstr "" #~ msgstr ""
#: src/renderer/components/+workloads-pods/pod-menu.tsx:50 #: src/renderer/components/+workloads-pods/pod-menu.tsx:50
msgid "Pod" msgid "Pod"
@ -1833,7 +1837,7 @@ msgstr "Комиссия"
msgid "Proxy is used only for non-cluster communication." msgid "Proxy is used only for non-cluster communication."
msgstr "" msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:188 #: src/renderer/components/+add-cluster/add-cluster.tsx:207
msgid "Proxy settings" msgid "Proxy settings"
msgstr "" msgstr ""
@ -2217,7 +2221,7 @@ msgstr "Тип секрета"
msgid "Secrets" msgid "Secrets"
msgstr "Secrets" msgstr "Secrets"
#: src/renderer/components/+add-cluster/add-cluster.tsx:185 #: src/renderer/components/+add-cluster/add-cluster.tsx:204
msgid "Select a context" msgid "Select a context"
msgstr "" msgstr ""
@ -2229,6 +2233,11 @@ msgstr "Выберите квоту..."
#~ msgid "Select context" #~ msgid "Select context"
#~ msgstr "" #~ msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:52
#: src/renderer/components/+add-cluster/add-cluster.tsx:52
msgid "Select custom kube-config file"
msgstr ""
#: src/renderer/components/+add-cluster/add-cluster.tsx:173 #: src/renderer/components/+add-cluster/add-cluster.tsx:173
#~ msgid "Select kubeconfig" #~ msgid "Select kubeconfig"
#~ msgstr "" #~ msgstr ""
@ -2571,6 +2580,11 @@ msgstr "Обновить версию"
msgid "Usage" msgid "Usage"
msgstr "Использование" msgstr "Использование"
#: src/renderer/components/+add-cluster/add-cluster.tsx:53
#: src/renderer/components/+add-cluster/add-cluster.tsx:53
msgid "Use configuration"
msgstr ""
#: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:190 #: src/renderer/components/+user-management-roles-bindings/add-role-binding-dialog.tsx:190
msgid "Use same name for RoleBinding" msgid "Use same name for RoleBinding"
msgstr "Использовать тоже имя для привязки ролей" msgstr "Использовать тоже имя для привязки ролей"

View File

@ -2,10 +2,12 @@ import "./add-cluster.scss"
import React, { Fragment } from "react"; import React, { Fragment } from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { computed, observable } from "mobx"; import { computed, observable } from "mobx";
import { remote } from "electron";
import { KubeConfig } from "@kubernetes/client-node"; import { KubeConfig } from "@kubernetes/client-node";
import { Trans } from "@lingui/macro"; import { _i18n } from "../../i18n";
import { t, Trans } from "@lingui/macro";
import { Select, SelectOption } from "../select"; import { Select, SelectOption } from "../select";
import { FileInput, Input } from "../input"; import { Input } from "../input";
import { AceEditor } from "../ace-editor"; import { AceEditor } from "../ace-editor";
import { Button } from "../button"; import { Button } from "../button";
import { Icon } from "../icon"; import { Icon } from "../icon";
@ -33,14 +35,18 @@ export class AddCluster extends React.Component {
@observable customConfig = "" @observable customConfig = ""
componentDidMount() { componentDidMount() {
this.setLocalConfigPath(userStore.kubeConfigPath); this.kubeConfigPath = userStore.kubeConfigPath;
} }
componentWillUnmount() { componentWillUnmount() {
userStore.markNewContextsAsSeen(); userStore.markNewContextsAsSeen();
} }
protected setLocalConfigPath(filePath: string) { protected get kubeConfigPath() {
return userStore.kubeConfigPath;
}
protected set kubeConfigPath(filePath: string) {
try { try {
const kubeConfig = loadConfig(filePath); const kubeConfig = loadConfig(filePath);
validateConfig(kubeConfig); validateConfig(kubeConfig);
@ -54,6 +60,19 @@ export class AddCluster extends React.Component {
} }
} }
selectKubeConfig = async () => {
const { dialog, BrowserWindow } = remote;
const { canceled, filePaths } = await dialog.showOpenDialog(BrowserWindow.getFocusedWindow(), {
defaultPath: this.kubeConfigPath,
properties: ["openFile", "showHiddenFiles"],
message: _i18n._(t`Select custom kube-config file`),
buttonLabel: _i18n._(t`Use configuration`),
});
if (!canceled && filePaths.length) {
this.kubeConfigPath = filePaths[0];
}
}
@computed get isCustom() { @computed get isCustom() {
return this.newClusterConfig === this.custom; return this.newClusterConfig === this.custom;
} }
@ -179,25 +198,18 @@ export class AddCluster extends React.Component {
<WizardLayout className="AddCluster" infoPanel={this.renderInfo()}> <WizardLayout className="AddCluster" infoPanel={this.renderInfo()}>
<h2><Trans>Add Cluster</Trans></h2> <h2><Trans>Add Cluster</Trans></h2>
<div className="flex gaps align-center"> <div className="flex gaps align-center">
<label <label className="kube-config-select flex gaps align-center box grow" onClick={this.selectKubeConfig}>
htmlFor="kube-config-select"
className="kube-config-select flex gaps align-center box grow"
>
<span className="title">Kubeconfig file</span> <span className="title">Kubeconfig file</span>
<code>{userStore.kubeConfigPath}</code> <code>{this.kubeConfigPath}</code>
</label> </label>
{kubeConfigDefaultPath !== userStore.kubeConfigPath && ( {this.kubeConfigPath !== kubeConfigDefaultPath && (
<Icon <Icon
material="settings_backup_restore" material="settings_backup_restore"
onClick={() => this.setLocalConfigPath(kubeConfigDefaultPath)} onClick={() => this.kubeConfigPath = kubeConfigDefaultPath}
tooltip="Reset to defaults" tooltip="Reset to defaults"
/> />
)} )}
</div> </div>
<FileInput
id="kube-config-select"
onSelectFiles={({ file }) => this.setLocalConfigPath(file.path)}
/>
<Select <Select
placeholder={<Trans>Select a context</Trans>} placeholder={<Trans>Select a context</Trans>}
value={this.newClusterConfig} value={this.newClusterConfig}