You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@linkis.apache.org by pe...@apache.org on 2023/10/09 07:06:07 UTC
[linkis] 07/11: add version info to linkis-cli
This is an automated email from the ASF dual-hosted git repository.
peacewong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/linkis.git
commit efc85b3801ff6b34d317873b420a7ff6ca9d8138
Author: peacewong <wp...@gmail.com>
AuthorDate: Wed Oct 4 23:37:18 2023 +0800
add version info to linkis-cli
---
.../linkis-client/linkis-cli/pom.xml | 6 +++
.../apache/linkis/cli/application/CtxBuilder.java | 21 +++++++-
.../cli/application/LinkisClientApplication.java | 41 ++++++++++----
.../linkis/cli/application/constants/CliKeys.java | 2 +
.../cli/application/constants/LinkisKeys.java | 1 +
.../command/template/UniversalCmdTemplate.java | 12 +++++
.../application/interactor/job/help/HelpJob.java | 62 ++++++++++++++++++++++
.../interactor/job/version/VersionJob.java | 48 +++++++++++++++++
.../job/version/VersionJobResult.java} | 33 +++++++++++-
.../application/operator/ujes/LinkisJobOper.java | 4 +-
.../src/main/resources/version.properties | 16 ++++++
11 files changed, 232 insertions(+), 14 deletions(-)
diff --git a/linkis-computation-governance/linkis-client/linkis-cli/pom.xml b/linkis-computation-governance/linkis-client/linkis-cli/pom.xml
index 9d0cbbb84..76723c4ad 100644
--- a/linkis-computation-governance/linkis-client/linkis-cli/pom.xml
+++ b/linkis-computation-governance/linkis-client/linkis-cli/pom.xml
@@ -62,6 +62,12 @@
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
+ <resources>
+ <resource>
+ <filtering>true</filtering>
+ <directory>${basedir}/src/main/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
diff --git a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/CtxBuilder.java b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/CtxBuilder.java
index 592725f85..07df8b79a 100644
--- a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/CtxBuilder.java
+++ b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/CtxBuilder.java
@@ -46,9 +46,11 @@ import org.apache.linkis.cli.application.utils.LoggerManager;
import org.apache.commons.lang3.StringUtils;
+import java.io.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -156,6 +158,23 @@ public class CtxBuilder {
.init();
logger.info("==========std_var============\n" + CliUtils.GSON.toJson(varAccess));
- return new CliCtxImpl(params.getCmdType(), template, varAccess, new HashMap<>());
+ Properties props = new Properties();
+ try (InputStream inputStream =
+ CtxBuilder.class.getClassLoader().getResourceAsStream("version.properties")) {
+ try (InputStreamReader reader = new InputStreamReader(inputStream)) {
+ try (BufferedReader bufferedReader = new BufferedReader(reader)) {
+ props.load(bufferedReader);
+ }
+ }
+ } catch (Exception e) {
+ logger.warn("Failed to load version info", e);
+ }
+
+ String verion = props.getProperty(CliKeys.VERSION);
+
+ Map<String, Object> extraMap = new HashMap<>();
+ extraMap.put(CliKeys.VERSION, verion);
+
+ return new CliCtxImpl(params.getCmdType(), template, varAccess, extraMap);
}
}
diff --git a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/LinkisClientApplication.java b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/LinkisClientApplication.java
index f13c7399f..1fb21043a 100644
--- a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/LinkisClientApplication.java
+++ b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/LinkisClientApplication.java
@@ -26,9 +26,11 @@ import org.apache.linkis.cli.application.entity.job.JobResult;
import org.apache.linkis.cli.application.exception.CommandException;
import org.apache.linkis.cli.application.interactor.command.CmdTemplateFactory;
import org.apache.linkis.cli.application.interactor.command.template.UniversalCmdTemplate;
+import org.apache.linkis.cli.application.interactor.job.help.HelpJob;
import org.apache.linkis.cli.application.interactor.job.interactive.InteractiveJob;
import org.apache.linkis.cli.application.interactor.job.jobcmd.JobCmdJob;
import org.apache.linkis.cli.application.interactor.job.once.LinkisOnceJob;
+import org.apache.linkis.cli.application.interactor.job.version.VersionJob;
import org.apache.linkis.cli.application.operator.OperManager;
import org.apache.linkis.cli.application.operator.once.OnceOperBuilder;
import org.apache.linkis.cli.application.operator.ujes.LinkisOperBuilder;
@@ -49,6 +51,8 @@ import org.slf4j.LoggerFactory;
public class LinkisClientApplication {
private static Logger logger = LoggerFactory.getLogger(LinkisClientApplication.class);
+ private static boolean showHelp = false;
+
public static void main(String[] args) {
/*
generate template
@@ -64,7 +68,9 @@ public class LinkisClientApplication {
} catch (CommandException e) {
CmdTemplate template = CmdTemplateFactory.getTemplateOri(e.getCmdType());
if (template != null) {
- printHelp(template);
+ HelpInfoModel model = new HelpInfoModel();
+ model.buildModel(ctx.getTemplate());
+ new HelpPresenter().present(model);
}
LoggerManager.getInformationLogger().error("Failed to build CliCtx", e);
System.exit(-1);
@@ -80,7 +86,11 @@ public class LinkisClientApplication {
run job
*/
Job job;
- if (isJobCmd(ctx)) {
+ if (isVersionCmd(ctx)) {
+ job = new VersionJob();
+ } else if (isHelp(ctx)) {
+ job = new HelpJob();
+ } else if (isJobCmd(ctx)) {
job = new JobCmdJob();
} else if (isOnceCmd(ctx)) {
job = new LinkisOnceJob();
@@ -134,21 +144,34 @@ public class LinkisClientApplication {
}
}
- private static void printHelp(CmdTemplate template) {
- HelpInfoModel model = new HelpInfoModel();
- model.buildModel(template);
- new HelpPresenter().present(model);
- }
-
private static void printIndicator(JobResult jobResult) {
if (jobResult.isSuccess()) {
LoggerManager.getPlaintTextLogger().info(CliConstants.SUCCESS_INDICATOR);
} else {
+ LoggerManager.getPlaintTextLogger().info(jobResult.getMessage());
+ StringBuilder b = new StringBuilder();
+ for (Map.Entry<String, String> e : jobResult.getExtraMessage().entrySet()) {
+ b.append(e.getKey()).append(":").append(e.getValue()).append(System.lineSeparator());
+ }
+ LoggerManager.getPlaintTextLogger().info(b.toString());
LoggerManager.getPlaintTextLogger().info(CliConstants.FAILURE_INDICATOR);
- LoggerManager.getPlaintTextLogger().error(jobResult.getMessage());
}
}
+ private static Boolean isHelp(CliCtx ctx) {
+ if (ctx.getVarAccess().hasVar(CliKeys.LINKIS_CLIENT_HELP_OPT)) {
+ return true;
+ }
+ return false;
+ }
+
+ private static Boolean isVersionCmd(CliCtx ctx) {
+ if (ctx.getVarAccess().hasVar(CliKeys.VERSION)) {
+ return true;
+ }
+ return false;
+ }
+
private static Boolean isJobCmd(CliCtx ctx) {
if (ctx.getVarAccess().hasVar(CliKeys.LINKIS_CLIENT_KILL_OPT)
|| ctx.getVarAccess().hasVar(CliKeys.LINKIS_CLIENT_STATUS_OPT)
diff --git a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/constants/CliKeys.java b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/constants/CliKeys.java
index 5c04cbcd6..966836e0b 100644
--- a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/constants/CliKeys.java
+++ b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/constants/CliKeys.java
@@ -38,6 +38,8 @@ public class CliKeys {
public static final String DEFAULT_CONFIG_FILE_NAME_KEY = "conf.file";
public static final String LINUX_USER_KEY = "user.name";
+ public static final String VERSION = "cli.version";
+
/** Configurable */
/*
execution type
diff --git a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/constants/LinkisKeys.java b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/constants/LinkisKeys.java
index 848300313..170f1a8f8 100644
--- a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/constants/LinkisKeys.java
+++ b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/constants/LinkisKeys.java
@@ -47,4 +47,5 @@ public class LinkisKeys {
public static final String KEY_YARN_QUEUE = "wds.linkis.rm.yarnqueue";
public static final String KEY_HIVE_RESULT_DISPLAY_TBALE =
"hive.resultset.use.unique.column.names";
+ public static final String CLI_VERSION = "cli.version";
}
diff --git a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/command/template/UniversalCmdTemplate.java b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/command/template/UniversalCmdTemplate.java
index f761a6a47..83b42032c 100644
--- a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/command/template/UniversalCmdTemplate.java
+++ b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/command/template/UniversalCmdTemplate.java
@@ -271,6 +271,15 @@ public class UniversalCmdTemplate extends AbstractCmdTemplate implements Cloneab
"specify jobContent map. Input format: -jobContentMap key1=value1 -jobContentMap key2=value2",
true);
+ protected Flag versionFlag =
+ flag(
+ CliKeys.VERSION,
+ CliKeys.VERSION,
+ new String[] {"--version"},
+ "show version",
+ true,
+ false);
+
protected Parameter<String[]> argumentsParas =
parameter(
CliKeys.LINKIS_CLIENT_COMMON,
@@ -286,6 +295,9 @@ public class UniversalCmdTemplate extends AbstractCmdTemplate implements Cloneab
@Override
public void checkParams() throws CommandException {
+ if (versionFlag.hasVal()) {
+ return;
+ }
int cnt = 0;
if (statusOpt.hasVal()) {
cnt++;
diff --git a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/job/help/HelpJob.java b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/job/help/HelpJob.java
new file mode 100644
index 000000000..943c54ed6
--- /dev/null
+++ b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/job/help/HelpJob.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.cli.application.interactor.job.help;
+
+import org.apache.linkis.cli.application.entity.context.CliCtx;
+import org.apache.linkis.cli.application.entity.job.Job;
+import org.apache.linkis.cli.application.entity.job.JobResult;
+import org.apache.linkis.cli.application.present.HelpPresenter;
+import org.apache.linkis.cli.application.present.model.HelpInfoModel;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class HelpJob implements Job {
+ private CliCtx ctx;
+
+ @Override
+ public void build(CliCtx ctx) {
+ this.ctx = ctx;
+ }
+
+ @Override
+ public JobResult run() {
+ HelpInfoModel model = new HelpInfoModel();
+ model.buildModel(ctx.getTemplate());
+ new HelpPresenter().present(model);
+ return new JobResult() {
+ @Override
+ public Boolean isSuccess() {
+ return true;
+ }
+
+ @Override
+ public String getMessage() {
+ return "";
+ }
+
+ @Override
+ public Map<String, String> getExtraMessage() {
+ return new HashMap<>();
+ }
+ };
+ }
+
+ @Override
+ public void onDestroy() {}
+}
diff --git a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/job/version/VersionJob.java b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/job/version/VersionJob.java
new file mode 100644
index 000000000..599f97904
--- /dev/null
+++ b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/job/version/VersionJob.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.cli.application.interactor.job.version;
+
+import org.apache.linkis.cli.application.constants.CliKeys;
+import org.apache.linkis.cli.application.entity.context.CliCtx;
+import org.apache.linkis.cli.application.entity.job.Job;
+import org.apache.linkis.cli.application.entity.job.JobResult;
+import org.apache.linkis.cli.application.utils.LoggerManager;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class VersionJob implements Job {
+ private CliCtx ctx;
+
+ @Override
+ public void build(CliCtx cliCtx) {
+ this.ctx = cliCtx;
+ }
+
+ @Override
+ public JobResult run() {
+ String version = (String) ctx.getExtraMap().get(CliKeys.VERSION);
+ Map<String, String> extraMap = new HashMap<>();
+ extraMap.put(CliKeys.VERSION, version);
+ LoggerManager.getPlaintTextLogger().info("Version=" + version);
+ return new VersionJobResult(true, "ok", extraMap);
+ }
+
+ @Override
+ public void onDestroy() {}
+}
diff --git a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/entity/version/Version.java b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/job/version/VersionJobResult.java
similarity index 53%
rename from linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/entity/version/Version.java
rename to linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/job/version/VersionJobResult.java
index b0bcd8b6d..e2f12cd7c 100644
--- a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/entity/version/Version.java
+++ b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/interactor/job/version/VersionJobResult.java
@@ -15,6 +15,35 @@
* limitations under the License.
*/
-package org.apache.linkis.cli.application.entity.version;
+package org.apache.linkis.cli.application.interactor.job.version;
-public interface Version {}
+import org.apache.linkis.cli.application.entity.job.JobResult;
+
+import java.util.Map;
+
+public class VersionJobResult implements JobResult {
+ private Boolean success;
+ private String message;
+ private Map<String, String> extraMsg;
+
+ public VersionJobResult(Boolean success, String message, Map<String, String> extraMsg) {
+ this.success = success;
+ this.message = message;
+ this.extraMsg = extraMsg;
+ }
+
+ @Override
+ public Boolean isSuccess() {
+ return success;
+ }
+
+ @Override
+ public String getMessage() {
+ return message;
+ }
+
+ @Override
+ public Map<String, String> getExtraMessage() {
+ return extraMsg;
+ }
+}
diff --git a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/operator/ujes/LinkisJobOper.java b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/operator/ujes/LinkisJobOper.java
index f696c8674..bfebf62c7 100644
--- a/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/operator/ujes/LinkisJobOper.java
+++ b/linkis-computation-governance/linkis-client/linkis-cli/src/main/java/org/apache/linkis/cli/application/operator/ujes/LinkisJobOper.java
@@ -269,7 +269,7 @@ public class LinkisJobOper implements JobOper {
}
String msg =
MessageFormat.format(
- "Get job info failed. retry time : {0}/{1}. taskID={0}, Reason: {1}",
+ "Get job info failed. retry time : {0}/{1}. taskID={2}, Reason: {3}",
retryTime, MAX_RETRY_TIME, taskID, reason);
logger.debug(
@@ -299,7 +299,7 @@ public class LinkisJobOper implements JobOper {
if (jobInfoResult == null) {
reason = "JobInfoResult is null";
} else {
- reason = "server returns non-zero status-code";
+ reason = "server returns non-zero status-code. ";
reason += jobInfoResult.getMessage();
}
String msg =
diff --git a/linkis-computation-governance/linkis-client/linkis-cli/src/main/resources/version.properties b/linkis-computation-governance/linkis-client/linkis-cli/src/main/resources/version.properties
new file mode 100644
index 000000000..0da37e5c0
--- /dev/null
+++ b/linkis-computation-governance/linkis-client/linkis-cli/src/main/resources/version.properties
@@ -0,0 +1,16 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+cli.version=${project.version}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org