From 53e7029274cbf191fb937d66062552b53f5c1c60 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 22 Jul 2021 16:28:28 +0800 Subject: [PATCH] temp --- .../controller/bean/models/DevopsFlink.java | 28 +++++++- .../bean/models/DevopsFlinkExample.java | 70 +++++++++++++++++++ .../config/constant/DevOpsType.java | 20 ++++-- .../controller/dao/DevopsFlinkMapper.java | 12 ++-- .../duckula/ops/pages/devops/DorisConfig.java | 48 ++++++++++++- .../duckula/ops/pages/devops/FlinkConfig.java | 55 +++++++++++++++ .../primary/sqlmap/DevopsFlinkMapper.xml | 16 ++++- .../duckula/ops/pages/devops/DorisConfig.tml | 2 +- .../duckula/ops/pages/devops/FlinkConfig.tml | 2 +- 9 files changed, 237 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/DevopsFlink.java b/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/DevopsFlink.java index e537aa6..b564096 100644 --- a/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/DevopsFlink.java +++ b/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/DevopsFlink.java @@ -73,6 +73,12 @@ public class DevopsFlink { */ @TamsCol(value = "免密", save = -1, query = 0, enumClass = YesOrNo.class, showWidth = 100, orderby = 8) private String isFree; + /** + * Database Column Remarks: 是否已安装 This field was generated by MyBatis Generator. This field corresponds to the database column devops_flink.is_install + * @mbg.generated + */ + @TamsCol(value = "是否安装", save = -1, query = 0, enumClass = YesOrNo.class, showWidth = 100, orderby = 9) + private String isInstall; /** * Database Column Remarks: 创建时间 This field was generated by MyBatis Generator. This field corresponds to the database column devops_flink.create_time * @mbg.generated @@ -89,7 +95,8 @@ public class DevopsFlink { * @mbg.generated */ public DevopsFlink(Long id, String name, String cluster, String ip, String hostname, String rootUser, - String rootPwd, String needFree, String isInit, String isFree, Date createTime, Date updateTime) { + String rootPwd, String needFree, String isInit, String isFree, String isInstall, Date createTime, + Date updateTime) { this.id = id; this.name = name; this.cluster = cluster; @@ -100,6 +107,7 @@ public class DevopsFlink { this.needFree = needFree; this.isInit = isInit; this.isFree = isFree; + this.isInstall = isInstall; this.createTime = createTime; this.updateTime = updateTime; } @@ -292,6 +300,24 @@ public class DevopsFlink { this.isFree = isFree; } + /** + * This method was generated by MyBatis Generator. This method returns the value of the database column devops_flink.is_install + * @return the value of devops_flink.is_install + * @mbg.generated + */ + public String getIsInstall() { + return isInstall; + } + + /** + * This method was generated by MyBatis Generator. This method sets the value of the database column devops_flink.is_install + * @param isInstall the value for devops_flink.is_install + * @mbg.generated + */ + public void setIsInstall(String isInstall) { + this.isInstall = isInstall; + } + /** * This method was generated by MyBatis Generator. This method returns the value of the database column devops_flink.create_time * @return the value of devops_flink.create_time diff --git a/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/DevopsFlinkExample.java b/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/DevopsFlinkExample.java index dd316f2..3691aff 100644 --- a/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/DevopsFlinkExample.java +++ b/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/DevopsFlinkExample.java @@ -853,6 +853,76 @@ public class DevopsFlinkExample { return (Criteria) this; } + public Criteria andIsInstallIsNull() { + addCriterion("is_install is null"); + return (Criteria) this; + } + + public Criteria andIsInstallIsNotNull() { + addCriterion("is_install is not null"); + return (Criteria) this; + } + + public Criteria andIsInstallEqualTo(String value) { + addCriterion("is_install =", value, "isInstall"); + return (Criteria) this; + } + + public Criteria andIsInstallNotEqualTo(String value) { + addCriterion("is_install <>", value, "isInstall"); + return (Criteria) this; + } + + public Criteria andIsInstallGreaterThan(String value) { + addCriterion("is_install >", value, "isInstall"); + return (Criteria) this; + } + + public Criteria andIsInstallGreaterThanOrEqualTo(String value) { + addCriterion("is_install >=", value, "isInstall"); + return (Criteria) this; + } + + public Criteria andIsInstallLessThan(String value) { + addCriterion("is_install <", value, "isInstall"); + return (Criteria) this; + } + + public Criteria andIsInstallLessThanOrEqualTo(String value) { + addCriterion("is_install <=", value, "isInstall"); + return (Criteria) this; + } + + public Criteria andIsInstallLike(String value) { + addCriterion("is_install like", value, "isInstall"); + return (Criteria) this; + } + + public Criteria andIsInstallNotLike(String value) { + addCriterion("is_install not like", value, "isInstall"); + return (Criteria) this; + } + + public Criteria andIsInstallIn(List values) { + addCriterion("is_install in", values, "isInstall"); + return (Criteria) this; + } + + public Criteria andIsInstallNotIn(List values) { + addCriterion("is_install not in", values, "isInstall"); + return (Criteria) this; + } + + public Criteria andIsInstallBetween(String value1, String value2) { + addCriterion("is_install between", value1, value2, "isInstall"); + return (Criteria) this; + } + + public Criteria andIsInstallNotBetween(String value1, String value2) { + addCriterion("is_install not between", value1, value2, "isInstall"); + return (Criteria) this; + } + public Criteria andCreateTimeIsNull() { addCriterion("create_time is null"); return (Criteria) this; diff --git a/src/main/java/net/wicp/tams/app/duckula/controller/config/constant/DevOpsType.java b/src/main/java/net/wicp/tams/app/duckula/controller/config/constant/DevOpsType.java index fcd46c7..b73696f 100644 --- a/src/main/java/net/wicp/tams/app/duckula/controller/config/constant/DevOpsType.java +++ b/src/main/java/net/wicp/tams/app/duckula/controller/config/constant/DevOpsType.java @@ -12,13 +12,15 @@ import net.wicp.tams.common.constant.dic.intf.IEnumCombobox; public enum DevOpsType implements IEnumCombobox { flink("flink流计算", "oss://lc-bigdata/flink", "oss://lc-bigdata/flink/init/frontcheck.sh", - "oss://lc-bigdata/doris/%s/check_system.sh", "v12", "oss://lc-bigdata/flink/init.tar", - new String[] { "oss://lc-bigdata/flink/init/ssh_free.sh" }), + "oss://lc-bigdata/flink/deploy/package.sh", "v12", "oss://lc-bigdata/flink/init.tar", + "oss://lc-bigdata/flink/deploy.tar", new String[] { "oss://lc-bigdata/flink/init/ssh_free.sh" }), - doris("大数据存储", "oss://lc-bigdata/doris", "oss://lc-bigdata/doris/check_system.sh", "", "", - "oss://lc-bigdata/doris/check_system.sh", new String[] {}), + doris("大数据存储", "oss://lc-bigdata/doris", "oss://lc-bigdata/doris/check_system.sh", + "oss://lc-bigdata/doris/doris_setup/setup.sh", "", "oss://lc-bigdata/doris/check_system.sh", + "oss://lc-bigdata/doris/doris_setup.tar", new String[] {}), - dmep("dmep数据平台", "oss://lc-bigdata/dmep", "", "", "", "oss://lc-bigdata/doris/check_system.sh", new String[] {}); + dmep("dmep数据平台", "oss://lc-bigdata/dmep", "", "", "", "oss://lc-bigdata/doris/check_system.sh", "", + new String[] {}); private final String desc; private final String checkurl; @@ -27,6 +29,11 @@ public enum DevOpsType implements IEnumCombobox { private final String lastversion; private final String[] otherparams;// 其它文件 ,如flink需要在check后要做免密 private final String checkDownFile;// OSS要下载的文件 + private final String installDownFile; + + public String getInstallDownFile() { + return installDownFile; + } public String getCheckDownFile() { return checkDownFile; @@ -66,13 +73,14 @@ public enum DevOpsType implements IEnumCombobox { } private DevOpsType(String desc, String baseurl, String checkurl, String installurlFormat, String lastversion, - String checkDownFile, String[] otherparams) { + String checkDownFile, String installDownFile, String[] otherparams) { this.desc = desc; this.baseurl = baseurl; this.checkurl = checkurl; this.installurlFormat = installurlFormat; this.lastversion = lastversion; this.checkDownFile = checkDownFile; + this.installDownFile = installDownFile; this.otherparams = otherparams; } diff --git a/src/main/java/net/wicp/tams/app/duckula/controller/dao/DevopsFlinkMapper.java b/src/main/java/net/wicp/tams/app/duckula/controller/dao/DevopsFlinkMapper.java index 987582c..f93bf33 100644 --- a/src/main/java/net/wicp/tams/app/duckula/controller/dao/DevopsFlinkMapper.java +++ b/src/main/java/net/wicp/tams/app/duckula/controller/dao/DevopsFlinkMapper.java @@ -40,12 +40,13 @@ public interface DevopsFlinkMapper extends BaseMapper{ * @mbg.generated */ @Insert({ "insert into devops_flink (id, name, ", "cluster, ip, hostname, ", "root_user, root_pwd, ", - "need_free, is_init, ", "is_free, create_time, ", "update_time)", + "need_free, is_init, ", "is_free, is_install, ", "create_time, update_time)", "values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, ", "#{cluster,jdbcType=VARCHAR}, #{ip,jdbcType=VARCHAR}, #{hostname,jdbcType=VARCHAR}, ", "#{rootUser,jdbcType=VARCHAR}, #{rootPwd,jdbcType=VARCHAR}, ", "#{needFree,jdbcType=VARCHAR}, #{isInit,jdbcType=VARCHAR}, ", - "#{isFree,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, ", "#{updateTime,jdbcType=TIMESTAMP})" }) + "#{isFree,jdbcType=VARCHAR}, #{isInstall,jdbcType=VARCHAR}, ", + "#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP})" }) int insert(DevopsFlink record); /** @@ -65,7 +66,7 @@ public interface DevopsFlinkMapper extends BaseMapper{ * @mbg.generated */ @Select({ "select", "id, name, cluster, ip, hostname, root_user, root_pwd, need_free, is_init, is_free, ", - "create_time, update_time", "from devops_flink", "where id = #{id,jdbcType=BIGINT}" }) + "is_install, create_time, update_time", "from devops_flink", "where id = #{id,jdbcType=BIGINT}" }) @ResultMap("net.wicp.tams.app.duckula.controller.dao.DevopsFlinkMapper.BaseResultMap") DevopsFlink selectByPrimaryKey(Long id); @@ -95,7 +96,8 @@ public interface DevopsFlinkMapper extends BaseMapper{ "ip = #{ip,jdbcType=VARCHAR},", "hostname = #{hostname,jdbcType=VARCHAR},", "root_user = #{rootUser,jdbcType=VARCHAR},", "root_pwd = #{rootPwd,jdbcType=VARCHAR},", "need_free = #{needFree,jdbcType=VARCHAR},", "is_init = #{isInit,jdbcType=VARCHAR},", - "is_free = #{isFree,jdbcType=VARCHAR},", "create_time = #{createTime,jdbcType=TIMESTAMP},", - "update_time = #{updateTime,jdbcType=TIMESTAMP}", "where id = #{id,jdbcType=BIGINT}" }) + "is_free = #{isFree,jdbcType=VARCHAR},", "is_install = #{isInstall,jdbcType=VARCHAR},", + "create_time = #{createTime,jdbcType=TIMESTAMP},", "update_time = #{updateTime,jdbcType=TIMESTAMP}", + "where id = #{id,jdbcType=BIGINT}" }) int updateByPrimaryKey(DevopsFlink record); } \ No newline at end of file diff --git a/src/main/java/net/wicp/tams/duckula/ops/pages/devops/DorisConfig.java b/src/main/java/net/wicp/tams/duckula/ops/pages/devops/DorisConfig.java index 7b71586..b8ccd64 100644 --- a/src/main/java/net/wicp/tams/duckula/ops/pages/devops/DorisConfig.java +++ b/src/main/java/net/wicp/tams/duckula/ops/pages/devops/DorisConfig.java @@ -24,6 +24,7 @@ import net.wicp.tams.common.apiext.CollectionUtil; import net.wicp.tams.common.apiext.IOUtil; import net.wicp.tams.common.apiext.StringUtil; import net.wicp.tams.common.constant.PathType; +import net.wicp.tams.common.constant.dic.YesOrNo; import net.wicp.tams.common.os.SSHAssit; import net.wicp.tams.common.os.pool.SSHConnection; import net.wicp.tams.component.tools.TapestryAssist; @@ -50,6 +51,8 @@ public class DorisConfig extends ParentPageBean { // SSHAssit.close(conn); // } if (isInsert) { + t.setIsInit(YesOrNo.no.name()); + t.setIsInstall(YesOrNo.no.name()); devopsDorisMapper.insert(t); } else { devopsDorisMapper.updateByPrimaryKeySelective(t); @@ -76,6 +79,43 @@ public class DorisConfig extends ParentPageBean { } } + public TextStreamResponse onInstallHost() { + final DevopsDoris devopsDoris = TapestryAssist.getBeanFromPage(DevopsDoris.class, requestGlobals); + // List list = queryHostByCluster(devopsDoris.getCluster()); + // 1、OSS下载 + String localPath = PathType.getPath(DevOpsType.doris.getInstallDownFile()); + // 1、登陆 + SSHConnection conn = SSHAssit.getConn(devopsDoris.getIp(), "root", devopsDoris.getRootPwd()); + try { + String remoteDir = "~/doris/doris_setup"; + conn.executeCommand("mkdir -p " + remoteDir); + Result result = conn.scpDir(localPath, remoteDir, "0744", new String[] {}, new String[] {}); + // 临时方案 + if (result.isSuc()) { + devopsDoris.setIsInstall(YesOrNo.yes.name()); + devopsDorisMapper.updateByPrimaryKeySelective(devopsDoris); + return TapestryAssist.getTextStreamResponse( + Result.getError("由于doris需要很长下载时间 ,请移步到服务器执行:sh ~/doris/doris_setup/setup.sh 进行安装")); + } else { + return TapestryAssist.getTextStreamResponse(Result.getError(result.getMessage())); + } + // 执行 +// Result result = conn +// .executeCommand(String.format("sh %s", IOUtil.mergeFolderAndFilePath(remoteDir, "setup.sh"))); +// log.info(result.getMessage()); +// if (result.isSuc()) { +// devopsDoris.setIsInstall(YesOrNo.yes.name()); +// devopsDorisMapper.updateByPrimaryKeySelective(devopsDoris); +// return TapestryAssist.getTextStreamResponse(Result.getSuc()); +// } else { +// return TapestryAssist.getTextStreamResponse(Result.getError(result.getMessage())); +// } + } finally { + SSHAssit.close(conn); + } + + } + /*** * { Result result = conn.executeCommand( String.format("sh %s", IOUtil.mergeFolderAndFilePath("~/", DevOpsType.doris.getRelaPathCheck()))); log.info(result.getMessage()); - return TapestryAssist.getTextStreamResponse(Result.getError("检查结果:" + result.getMessage())); + if (result.isSuc()) { + devopsDoris.setIsInit(YesOrNo.yes.name()); + devopsDorisMapper.updateByPrimaryKeySelective(devopsDoris); + return TapestryAssist.getTextStreamResponse(Result.getSuc()); + } else { + return TapestryAssist.getTextStreamResponse(Result.getError(result.getMessage())); + } } finally { SSHAssit.close(conn); } diff --git a/src/main/java/net/wicp/tams/duckula/ops/pages/devops/FlinkConfig.java b/src/main/java/net/wicp/tams/duckula/ops/pages/devops/FlinkConfig.java index 960026f..7ff92ca 100644 --- a/src/main/java/net/wicp/tams/duckula/ops/pages/devops/FlinkConfig.java +++ b/src/main/java/net/wicp/tams/duckula/ops/pages/devops/FlinkConfig.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.concurrent.CountDownLatch; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.Predicate; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.util.TextStreamResponse; @@ -40,6 +41,7 @@ public class FlinkConfig extends ParentPageBean { if (isInsert) { t.setIsInit(YesOrNo.no.name()); t.setIsFree(YesOrNo.no.name()); + t.setIsInstall(YesOrNo.no.name()); List list = queryHostByCluster(t.getCluster()); int lastindex = 0; if (CollectionUtils.isNotEmpty(list)) { @@ -84,6 +86,59 @@ public class FlinkConfig extends ParentPageBean { return list; } + @SuppressWarnings("unchecked") + public TextStreamResponse onInstallHost() { + final DevopsFlink devopsFlink = TapestryAssist.getBeanFromPage(DevopsFlink.class, requestGlobals); + List list = queryHostByCluster(devopsFlink.getCluster()); +// StringBuffer installparam = new StringBuffer(); +// for (int i = 0; i < list.size(); i++) { +// DevopsFlink flink = list.get(i); +// installparam.append(flink.getHostname()); +// } + + List select = (List) CollectionUtils.select(list, new Predicate() { + @Override + public boolean evaluate(Object arg0) { + DevopsFlink temp = (DevopsFlink) arg0; + return "prod-bigdata-flink03".equals(temp.getHostname()); + } + }); + if (CollectionUtils.isEmpty(select) || select.size() > 1) { + return TapestryAssist.getTextStreamResponse(Result.getError("不能安装,需要有且仅有一台主机为prod-bigdata-flink03的服务器")); + } + // 1、OSS下载 + String localPath = PathType.getPath(DevOpsType.flink.getInstallDownFile()); + + DevopsFlink flink03 = select.get(0); + SSHConnection conn = SSHAssit.getConn(flink03.getIp(), flink03.getRootUser(), flink03.getRootPwd()); + try { + String remoteDir = "~/flink/deploy"; + conn.executeCommand("mkdir -p " + remoteDir); + conn.scpDir(localPath, remoteDir, "0744", new String[] {}, new String[] {}); + Result result = conn + .executeCommand("sh " + remoteDir + "/package.sh prod-bigdata-flink01 prod-bigdata-flink02"); + // TODO 不能打印日志 + if (result.isSuc()) { + String message = result.getMessage(); + if (message.contains("请手工执行distributeconf.sh")) { + Result disResult = conn.executeCommand( + "sh " + remoteDir + "/distributeconf.sh prod-bigdata-flink01 prod-bigdata-flink02"); + if (disResult.isSuc()) { + // 安装成功改状态 + for (DevopsFlink temp : list) { + temp.setIsInstall(YesOrNo.yes.name()); + devopsFlinkMapper.updateByPrimaryKeySelective(temp); + } + } + } + } + } finally { + SSHAssit.close(conn); + } + return TapestryAssist.getTextStreamResponse(Result.getSuc()); + + } + /*** * 测试用后端调用 * diff --git a/src/main/resources/mybatis/primary/sqlmap/DevopsFlinkMapper.xml b/src/main/resources/mybatis/primary/sqlmap/DevopsFlinkMapper.xml index f04cd57..bbd05ea 100644 --- a/src/main/resources/mybatis/primary/sqlmap/DevopsFlinkMapper.xml +++ b/src/main/resources/mybatis/primary/sqlmap/DevopsFlinkMapper.xml @@ -17,6 +17,7 @@ + @@ -93,7 +94,7 @@ This element is automatically generated by MyBatis Generator, do not modify. --> id, name, cluster, ip, hostname, root_user, root_pwd, need_free, is_init, is_free, - create_time, update_time + is_install, create_time, update_time