You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2022/10/20 22:35:37 UTC
[camel-karavan] 02/02: Openshift client
This is an automated email from the ASF dual-hosted git repository.
marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit d915c2a73a927831e9bf1c2e55c085bbdf683f3a
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Thu Oct 20 18:35:25 2022 -0400
Openshift client
---
karavan-vscode/package.json | 1 +
karavan-vscode/src/{kubernetes.ts => exec.ts} | 32 +++-------------
karavan-vscode/src/jbang.ts | 53 +++++++++++----------------
3 files changed, 29 insertions(+), 57 deletions(-)
diff --git a/karavan-vscode/package.json b/karavan-vscode/package.json
index 9058b3b..8417946 100644
--- a/karavan-vscode/package.json
+++ b/karavan-vscode/package.json
@@ -499,6 +499,7 @@
"mocha": "^10.0.0",
"prettier": "2.3.0",
"run-script-os": "^1.1.6",
+ "@types/shelljs": "^0.8.10",
"static-site-generator-webpack-plugin": "^3.4.2",
"style-loader": "^2.0.0",
"ts-loader": "^8.0.14",
diff --git a/karavan-vscode/src/kubernetes.ts b/karavan-vscode/src/exec.ts
similarity index 50%
rename from karavan-vscode/src/kubernetes.ts
rename to karavan-vscode/src/exec.ts
index 6089d3d..7034981 100644
--- a/karavan-vscode/src/kubernetes.ts
+++ b/karavan-vscode/src/exec.ts
@@ -14,10 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { workspace, window, Terminal, ThemeIcon } from "vscode";
-import * as path from "path";
import * as shell from 'shelljs';
-import * as utils from "./utils";
export interface Result {
result: boolean
@@ -25,26 +22,9 @@ export interface Result {
error: string
}
-export function hasOcClient(): boolean {
- const oc = shell.which('oc');
- return oc !== undefined;
-}
-
-export function getOcUser(): Result {
- const oc = shell.which('oc');
- if (oc) {
- shell.config.execPath = String(oc);
-
- shell.exec('oc whoami', {silent:true}, function(code, stdout, stderr) {
- console.log('Exit code:', code);
- console.log('Program output:', stdout);
- console.log('Program stderr:', stderr);
- });
-
- const { stdout, stderr, code } = shell.exec("oc whoami", {silent:true});
- console.log(stdout, stderr, code);
- return {result: code === 0, value: stdout, error: stderr};
- } else {
- return {result: false, value: undefined, error: "Openshift client not found!"}
- }
-}
+export function execCommand(cmd: string, execPath?: string): Promise<Result> {
+ return new Promise<Result>((resolve) => {
+ if (execPath) shell.cd(execPath);
+ shell.exec(cmd, (code, stdout, stderr) => resolve({ result: code === 0, value: stdout, error: stderr }));
+ });
+}
\ No newline at end of file
diff --git a/karavan-vscode/src/jbang.ts b/karavan-vscode/src/jbang.ts
index 1a48f17..b54183c 100644
--- a/karavan-vscode/src/jbang.ts
+++ b/karavan-vscode/src/jbang.ts
@@ -19,7 +19,7 @@ import * as path from "path";
import * as shell from 'shelljs';
import { CamelDefinitionYaml } from "core/api/CamelDefinitionYaml";
import * as utils from "./utils";
-import * as kubernetes from "./kubernetes";
+import * as exec from "./exec";
const TERMINALS: Map<string, Terminal> = new Map<string, Terminal>();
@@ -114,25 +114,20 @@ export function createExportCommand(directory: string) {
export function camelDeploy(directory: string) {
const command = createExportCommand(directory).concat(" && ").concat(createPackageCommand(directory));
- const user = kubernetes.getOcUser();
- console.log("user", user);
-
-
- // utils.readFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace")
- // .then((readData: Uint8Array) => {
- // const namespace = Buffer.from(readData).toString('utf8');
- // utils.readFile("/var/run/secrets/kubernetes.io/serviceaccount/token")
- // .then((readData: Uint8Array) => {
- // const token = Buffer.from(readData).toString('utf8');
- // const env = { "TOKEN":token, "NAMESPACE": namespace, "DATE": Date.now().toString() };
- // camelRunDeploy(command, env);
-
- // }).catch((reason: any) => {
- // window.showErrorMessage("Token file not found. Set TOKEN environment variable!\n" + reason.message);
- // });
- // }).catch((reason: any) => {
- // window.showErrorMessage("Namespace file not found. Set NAMESPACE environment variable!\n" + reason.message);
- // });
+ Promise.all([
+ exec.execCommand("oc whoami"), // get user
+ exec.execCommand("oc whoami --show-token"), // get token
+ exec.execCommand("oc project -q") // get namespace
+ ]).then(val => {
+ let env: any = { "DATE": Date.now().toString() };
+ if (val[0].result) env.USER = val[0].value;
+ if (val[1].result) env.TOKEN = val[1].value;
+ if (val[2].result) env.NAMESPACE = val[2].value;
+ console.log("env", env);
+ camelRunDeploy(command, env);
+ }).catch((reason: any) => {
+ window.showErrorMessage("Error: \n" + reason.message);
+ });
}
export function camelRunDeploy(command: string, env?: { [key: string]: string | null | undefined }) {
@@ -150,22 +145,18 @@ export function createPackageCommand(directory: string) {
}
function executeJbangCommand(rootPath: string, command: string, callback: (code: number, stdout: any, stderr: any) => any) {
- console.log("excute command", command)
+ console.log("excute command", command);
const jbang = shell.which('jbang');
if (jbang) {
- shell.config.execPath = String(jbang);
- shell.cd(rootPath);
- shell.exec(command, { async: false }, (code, stdout, stderr) => {
- if (code === 0) {
- // vscode.window.showInformationMessage(stdout);
- } else {
- window.showErrorMessage(stderr);
- }
- callback(code, stdout, stderr);
+ exec.execCommand(command, rootPath).then(res => {
+ if (res.result) callback(0, res.value, res.error)
+ else window.showErrorMessage(res.error);
+ }).catch(error => {
+ window.showErrorMessage(error);
});
} else {
window.showErrorMessage("JBang not found!");
- }
+ }
}
function setMinikubeEnvVariables(env: string): Map<string, string> {