Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
duckula
duckula-ops
提交
9409926f
duckula-ops
项目概览
duckula
/
duckula-ops
通知
6
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
duckula-ops
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
9409926f
编写于
7月 21, 2021
作者:
偏锋书生
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
init已支持
上级
a9ef70be
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
65 addition
and
22 deletion
+65
-22
src/main/java/net/wicp/tams/app/duckula/controller/config/constant/DevOpsType.java
...ms/app/duckula/controller/config/constant/DevOpsType.java
+9
-5
src/main/java/net/wicp/tams/duckula/ops/pages/devops/FlinkConfig.java
...a/net/wicp/tams/duckula/ops/pages/devops/FlinkConfig.java
+56
-17
未找到文件。
src/main/java/net/wicp/tams/app/duckula/controller/config/constant/DevOpsType.java
浏览文件 @
9409926f
package
net.wicp.tams.app.duckula.controller.config.constant
;
import
net.wicp.tams.common.apiext.IOUtil
;
import
net.wicp.tams.common.constant.dic.intf.IEnumCombobox
;
/**
...
...
@@ -12,7 +13,7 @@ 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/
frontcheck
.sh"
}),
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
[]
{}),
...
...
@@ -25,24 +26,27 @@ public enum DevOpsType implements IEnumCombobox {
private
final
String
installurlFormat
;
private
final
String
lastversion
;
private
final
String
[]
otherparams
;
// 其它文件 ,如flink需要在check后要做免密
private
final
String
checkDownFile
;
//
OSS要下载的文件
private
final
String
checkDownFile
;
//
OSS要下载的文件
public
String
getCheckDownFile
()
{
return
checkDownFile
;
}
// 服务器上相对文件地址
public
String
getRelaPath
(
String
url
)
{
return
url
.
replace
(
this
.
baseurl
,
"
"
);
return
url
.
replace
(
this
.
baseurl
,
"
/"
+
this
.
name
()
);
}
public
String
getRelaPathCheck
()
{
return
getRelaPath
(
this
.
checkurl
);
}
public
String
getRelaPathCheckDir
()
{
// 服务器上真实的目录地址
public
String
getRemoteDirCheckDir
()
{
String
fileName
=
this
.
checkurl
.
substring
(
this
.
checkurl
.
lastIndexOf
(
"/"
)
+
1
);
String
replace
=
getRelaPathCheck
().
replace
(
fileName
,
""
);
return
replace
;
String
retstr
=
IOUtil
.
mergeFolderAndFilePath
(
"~/"
,
replace
);
return
retstr
;
}
public
String
[]
getOtherparams
()
{
...
...
src/main/java/net/wicp/tams/duckula/ops/pages/devops/FlinkConfig.java
浏览文件 @
9409926f
package
net.wicp.tams.duckula.ops.pages.devops
;
import
java.util.List
;
import
java.util.concurrent.CountDownLatch
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.tapestry5.ioc.annotations.Inject
;
...
...
@@ -15,13 +16,16 @@ import net.wicp.tams.app.duckula.controller.bean.models.DevopsFlinkExample;
import
net.wicp.tams.app.duckula.controller.bean.models.DevopsFlinkExample.Criteria
;
import
net.wicp.tams.app.duckula.controller.config.constant.DevOpsType
;
import
net.wicp.tams.app.duckula.controller.dao.DevopsFlinkMapper
;
import
net.wicp.tams.common.Conf
;
import
net.wicp.tams.common.Result
;
import
net.wicp.tams.common.apiext.IOUtil
;
import
net.wicp.tams.common.apiext.StringUtil
;
import
net.wicp.tams.common.apiext.TimeAssist
;
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.common.thread.ThreadPool
;
import
net.wicp.tams.component.tools.TapestryAssist
;
import
net.wicp.tams.duckula.ops.pages.ParentPageBean
;
...
...
@@ -101,7 +105,7 @@ public class FlinkConfig extends ParentPageBean<DevopsFlink> {
// 1、登陆
SSHConnection
conn
=
SSHAssit
.
getConn
(
devopsFlink
.
getIp
(),
devopsFlink
.
getRootUser
(),
devopsFlink
.
getRootPwd
());
// String fileName = localPath.substring(localPath.lastIndexOf("/") + 1);
String
remoteDir
=
IOUtil
.
mergeFolderAndFilePath
(
"~/"
,
DevOpsType
.
flink
.
getRelaPathCheckDir
()
);
String
remoteDir
=
DevOpsType
.
flink
.
getRemoteDirCheckDir
(
);
conn
.
executeCommand
(
"mkdir -p "
+
remoteDir
);
// conn.scpToDir(localPath,remoteDir , "0744");
conn
.
scpDir
(
localPath
,
remoteDir
,
"0744"
,
new
String
[]
{},
new
String
[]
{});
...
...
@@ -117,6 +121,7 @@ public class FlinkConfig extends ParentPageBean<DevopsFlink> {
}
devopsFlink
.
setIsInit
(
YesOrNo
.
yes
.
name
());
devopsFlinkMapper
.
updateByPrimaryKeySelective
(
devopsFlink
);
// 保存check结果
list
=
queryHostByCluster
(
devopsFlink
.
getCluster
());
// 重新查一下数据库,因为有数据改变状态
if
(
YesOrNo
.
yes
.
name
().
equals
(
devopsFlink
.
getNeedFree
()))
{
boolean
doFree
=
true
;
// 默认需要做
for
(
DevopsFlink
ele
:
list
)
{
...
...
@@ -126,27 +131,61 @@ public class FlinkConfig extends ParentPageBean<DevopsFlink> {
}
}
if
(
doFree
)
{
CountDownLatch
countDownLatch
=
new
CountDownLatch
(
list
.
size
());
// 三台机都做免密
for
(
DevopsFlink
devopsFlink2
:
list
)
{
SSHConnection
freeconn
=
SSHAssit
.
getConn
(
devopsFlink
.
getIp
(),
devopsFlink2
.
getRootUser
(),
devopsFlink2
.
getRootPwd
());
try
{
// free
Result
freeRs
=
freeconn
.
executeCommand
(
String
.
format
(
"sh %s %s"
,
IOUtil
.
mergeFolderAndFilePath
(
"~/"
,
DevOpsType
.
flink
.
getRelaPath
(
DevOpsType
.
flink
.
getOtherparams
()[
0
])),
freeparam
.
toString
()));
if
(
freeRs
.
isSuc
())
{
// 保存
devopsFlink2
.
setIsFree
(
YesOrNo
.
yes
.
name
());
devopsFlinkMapper
.
updateByPrimaryKeySelective
(
devopsFlink2
);
// 保存免密结果
ThreadPool
.
getDefaultPool
().
submit
(
new
Runnable
()
{
@Override
public
void
run
()
{
Conf
.
overProp
(
"common.os.ssh.timeout"
,
"30000"
);
SSHConnection
freeconn
=
SSHAssit
.
getConn
(
devopsFlink2
.
getIp
(),
22
,
devopsFlink2
.
getRootUser
(),
devopsFlink2
.
getRootPwd
(),
5
*
6000
);
try
{
// free,由于需要ssh到别的服务器,拿到到返回的日志,采用先做,重定向到~/flink/freelog,再查日志文件的方式完成
Result
freeRs
=
freeconn
.
executeCommand
(
String
.
format
(
"sh %s %s &>~/flink/freelog"
,
IOUtil
.
mergeFolderAndFilePath
(
"~/"
,
DevOpsType
.
flink
.
getRelaPath
(
DevOpsType
.
flink
.
getOtherparams
()[
0
])),
freeparam
.
toString
()));
TimeAssist
.
reDoWaitInit
(
"flinkconfig-free"
);
while
(
true
)
{
try
{
boolean
reDoWait
=
TimeAssist
.
reDoWait
(
"flinkconfig-free"
,
9
);
// 9次512秒9分钟不到
if
(
reDoWait
)
{
break
;
}
Result
freeResult
=
freeconn
.
executeCommand
(
"cat ~/flink/freelog"
);
if
(
freeResult
.
isSuc
())
{
if
(
freeResult
.
getMessage
().
contains
(
"执行免密操作结束"
))
{
// 执行完了
// 成功:ssh scripts run cmd SUCCESS
boolean
contains
=
freeResult
.
getMessage
()
.
contains
(
"ssh scripts run cmd ERROR"
);
if
(!
contains
)
{
// 成功
// 保存
devopsFlink2
.
setIsFree
(
YesOrNo
.
yes
.
name
());
devopsFlinkMapper
.
updateByPrimaryKeySelective
(
devopsFlink2
);
// 保存免密结果
}
break
;
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
finally
{
SSHAssit
.
close
(
freeconn
);
countDownLatch
.
countDown
();
}
}
}
finally
{
SSHAssit
.
close
(
freeconn
);
}
});
}
try
{
countDownLatch
.
await
();
// 全部做完了就放
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
}
return
TapestryAssist
.
getTextStreamResponse
(
Result
.
getSuc
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录