Commit 94bbb4b1 authored by tywldx's avatar tywldx

fix

parent 3c3428fc
var cproc = require('child_process');
var execSync = cproc.execSync;
var project_name, project_attr, projects = {},
java_projects = [],
node_projects = [],
python_projects = [],
ui_projects = [];
var param = {
type: "",
name: "",
attr: ""
}
projects = {}
_projects = String(execSync(`curl -s http://192.168.4.3:10088/config_server/get_project_config_from_db`))
_projects = JSON.parse(_projects)
// console.log(typeof(projects))
for (let pro of _projects) {
projects[pro.name] = pro;
switch (pro['type']) {
case "java":
java_projects.push(pro);
break;
case "node":
node_projects.push(pro);
break;
case "ui":
ui_projects.push(pro);
break;
case "python":
python_projects.push(pro);
break;
}
}
var temp = "";
process.argv.forEach(function(val, index, array) {
if (index >= 2) {
if (index % 2 == 0) {
temp = val.replace(/\-/, "");
param[temp] = "";
} else {
param[temp] = val;
}
}
});
const mongoose = require('mongoose');
function getListAttr(projects, attr) {
var list = [];
for (var i = 0; i < projects.length; i++) {
// if (projects[i].is_active) {
list.push(projects[i][attr])
// }
}
return list.join(" ");
}
var configFunction = function() {};
configFunction.prototype = {
getProjectAttr: function(pName, pAttr) {
if (typeof projects[pName] == "undefined") {
console.log("")
} else {
var attrs = pAttr.split("/");
if (attrs.length == 0) {
console.log("")
return
function getProjectAttr(projects,pName, pAttr) {
if (typeof projects[pName] == "undefined") {
return ""
} else {
var attrs = pAttr.split("/");
if (attrs.length == 0) {
return ""
}
var list = [];
for (var j = 0; j < attrs.length; j++) {
if(projects[pName][attrs[j]]){
list.push(projects[pName][attrs[j]].split(" ").join("^"));
}else{
list.push(" ");
}
var list = [];
}
return list.join("|")
}
}
function getProjectsAttrs(projects, attr, attr2) {
var attrs = attr.split("/");
if (attrs.length == 0) {
return
}
var list = [];
//attr2 专有参数,用来表示是否要取带有对外域名的服务
if(attr2 == "true"){
for (var i = 0; i < projects.length; i++) {
if(projects[i].url != ""){
var li = [projects[i]["name"]];
for (var j = 0; j < attrs.length; j++) {
if(projects[pName][attrs[j]]){
list.push(projects[pName][attrs[j]].split(" ").join("^"));
}else{
list.push(" ");
}
}
console.log(list.join("|"))
}
},
getProjectsAttrs: function(projects, attr, attr2) {
var attrs = attr.split("/");
if (attrs.length == 0) {
return
}
var list = [];
//attr2 专有参数,用来表示是否要取带有对外域名的服务
if(attr2 == "true"){
for (var i = 0; i < projects.length; i++) {
if(projects[i].url != ""){
var li = [projects[i]["name"]];
for (var j = 0; j < attrs.length; j++) {
li.push(projects[i][attrs[j]]);
}
// li.push(projects[i].url);
list.push(li.join("|"));
li.push(projects[i][attrs[j]]);
}
}
}else{
for (var i = 0; i < projects.length; i++) {
// if (projects[i].is_active){
var li = [projects[i]["name"]];
for (var j = 0; j < attrs.length; j++) {
li.push(projects[i][attrs[j]]);
}
list.push(li.join("|"));
// }
list.push(li.join("|"));
}
}
return list.join(" ");
},
getProjectsAttr: function(type, attr) {
switch (type) {
case "java":
console.log(getListAttr(java_projects, attr));
break;
case "ui":
console.log(getListAttr(ui_projects, attr));
break;
case "python":
console.log(getListAttr(python_projects, attr));
break;
case "node":
console.log(getListAttr(node_projects, attr));
break;
}else{
for (var i = 0; i < projects.length; i++) {
var li = [projects[i]["name"]];
for (var j = 0; j < attrs.length; j++) {
li.push(projects[i][attrs[j]]);
}
list.push(li.join("|"));
}
}
return list.join(" ");
}
//tower add
module.exports={
java : java_projects,
node : node_projects,
python : python_projects,
ui : ui_projects
function db2db(pro){
let temp = {
project_group: "",
name: pro["project_name"],
type: pro["type"],
url: pro["host_name"].replace(".xyqb.com", "").replace(".quantgroup.cn", ""),
www: pro["host_name"],
git_path: pro["git_path"],
log_name: pro["log_path"],
config_file: pro["config_path"],
command: "",
command_: "",
command2: "",
node_version: "",
port: `${pro["port"]}`,
desc: pro["des"],
is_active: pro["is_active"],
auth: pro["auth"],
target_path: ""
}
if(pro["type"] == "java"){
temp.node_version = pro["command1"];
temp.target_path = pro["jar_path"];
temp.command2 = pro["build_command"];
temp.command = pro["start_command"];
}else if(pro["type"] == "ui"){
temp.command = pro["build_command"]
}else if(pro["type"] == "node"){
temp.command = pro["start_command"]
temp.command2 = pro["stop_command"]
}else if(pro["type"] == "python"){
}
return temp
}
var F = new configFunction();
function controller(param){
//链接数据库
mongoose.connect('mongodb://172.30.220.22:27017/qaHome')
mongoose.model("ProConfig",new mongoose.Schema({})).find({}).exec().then(res=>{
// 定义数据
let _res = JSON.parse(JSON.stringify(res));
var project_name, project_attr, projects = {},
java_projects = [],
node_projects = [],
python_projects = [],
ui_projects = []
hosts = {};
projects = {}
for (let pro of _res) {
let temp = db2db(pro);
projects[temp.name] = temp;
hosts[temp.name] = temp.www;
switch (pro['type']) {
case "java":
java_projects.push(temp);
break;
case "node":
node_projects.push(temp);
break;
case "ui":
ui_projects.push(temp);
break;
case "python":
python_projects.push(temp);
break;
}
}
try {
if (param["type"] == "") {
F.getProjectAttr(param["name"], param["attr"]);
} else if (param["type"] == "multi") {
var str = "";
str += F.getProjectsAttrs(java_projects, param["attr"], param["attr2"]);
str += " " + F.getProjectsAttrs(ui_projects, param["attr"], param["attr2"]);
str += " " + F.getProjectsAttrs(python_projects, param["attr"], param["attr2"]);
str += " " + F.getProjectsAttrs(node_projects, param["attr"], param["attr2"]);
console.log(str)
} else if (param["type"] == "hosts") {
console.log(JSON.stringify(hosts));
} else {
F.getProjectsAttr(param["type"], param["attr"]);
//定义方法
if (param["type"] == "") {
let str = getProjectAttr(projects,param["name"], param["attr"]);
console.log(str);
} else if (param["type"] == "multi") {
var str = "";
str += getProjectsAttrs(java_projects, param["attr"], param["attr2"]);
str += " " + getProjectsAttrs(ui_projects, param["attr"], param["attr2"]);
str += " " + getProjectsAttrs(python_projects, param["attr"], param["attr2"]);
str += " " + getProjectsAttrs(node_projects, param["attr"], param["attr2"]);
console.log(str)
} else if (param["type"] == "hosts") {
console.log(JSON.stringify(hosts));
} else {
switch (param["type"]) {
case "java":
console.log(getListAttr(java_projects, param["attr"]));
break;
case "ui":
console.log(getListAttr(ui_projects, param["attr"]));
break;
case "python":
console.log(getListAttr(python_projects, param["attr"]));
break;
case "node":
console.log(getListAttr(node_projects, param["attr"]));
break;
}
}
//关闭连接
mongoose.connection.close()
}).catch((err) => {
//关闭链接
console.log(err)
mongoose.connection.close()
});
}
function main(){
var param = {
type: "",
name: "",
attr: ""
}
//获取请求参数
var temp = "";
process.argv.forEach(function(val, index, array) {
if (index >= 2) {
if (index % 2 == 0) {
temp = val.replace(/\-/, "");
param[temp] = "";
} else {
param[temp] = val;
}
}
});
controller(param)
//这里区分使用那个方法,需要注意的是,这里不在提供输出结果,结果在mongo链接中输出
}
try {
main()
} catch (e) {
console.log("")
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment