Commit b0c286b2 authored by 黎博's avatar 黎博

新增同步mongodb

parent e2b4937f
......@@ -167,6 +167,12 @@
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.10</version>
</dependency>
</dependencies>
<build>
......
......@@ -4,9 +4,11 @@ import cn.qg.holmes.config.ApolloPropertySourceInitializer;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
@EnableScheduling
@MapperScan(value = "cn.qg.holmes.mapper.*")
public class HolmesApplication {
......
......@@ -7,6 +7,7 @@ import cn.qg.holmes.entity.k8s.EnvTemplateDetail;
import cn.qg.holmes.entity.k8s.ServiceCreateVo;
import cn.qg.holmes.service.auth.TokenService;
import cn.qg.holmes.service.k8s.*;
import cn.qg.holmes.utils.MongoUtils;
import cn.qg.holmes.utils.RedisUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -16,12 +17,10 @@ import io.fabric8.kubernetes.api.model.*;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* k8及容器操作相关接口
......@@ -60,6 +59,9 @@ public class K8sController {
@Autowired
RedisUtils redisUtils;
@Value("${mongodb.sync.list}")
private String mongodbSyncStr;
/**
* 获取namespace列表
* @return
......@@ -738,4 +740,25 @@ public class K8sController {
}
return JsonResult.buildErrorStateResult("Namespace列表缓存删除失败!", false);
}
/**
* 同步dbList
* @param host mongodb host
* @param port mongodb port
* @return
*/
@GetMapping("/sync/mongo")
public JsonResult syncMongodb(@RequestParam String host, @RequestParam int port) {
Map<String, Object> map = new HashMap<>();
List<String> mongodbSyncList = Arrays.asList(mongodbSyncStr.split(","));
for (String dbName: mongodbSyncList) {
String result = MongoUtils.createDbWithAuthentication(host, port, dbName, "qa", "qatest");
if (result != null) {
map.put(dbName, "success");
} else {
map.put(dbName, "fail");
}
}
return JsonResult.buildSuccessResult(map);
}
}
package cn.qg.holmes.utils;
import com.mongodb.*;
import com.mongodb.client.MongoDatabase;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Slf4j
public class MongoUtils {
public static String createDbWithAuthentication(String host, int port, String dbName, String username, String password) {
MongoClient mongoClient = null;
Document document = null;
try {
ServerAddress serverAddress = new ServerAddress(host,port);
MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("qa", "admin", "qatest".toCharArray());
MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
mongoClient = new MongoClient(serverAddress, mongoCredential, builder.build());
MongoDatabase mongoDatabase = mongoClient.getDatabase(dbName);
BasicDBObject basicDBObject = new BasicDBObject("createUser", username).append("pwd", password).append("roles",
Collections.singletonList(new BasicDBObject("role", "dbOwner").append("db", dbName)));
document = mongoDatabase.runCommand(basicDBObject);
log.info("创建mongodb用户,执行{}命令, 返回结果:{}", basicDBObject.toJson(), document);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (mongoClient != null) {
mongoClient.close();
}
}
if (document != null) {
return document.toJson();
}
return null;
}
public static void main(String[] args) {
String host = "172.17.5.42";
int port = 32683;
String dbName = "ocrDb";
String username = "qa";
String password = "qatest";
// String result = createDbWithAuthentication(host, port, dbName, username, password);
// System.out.println(result);
List<String> dbList = new ArrayList<>();
dbList.add("ocrDb");
dbList.add("test4");
for (String db: dbList) {
createDbWithAuthentication(host, port, db, "qa", "qatest");
}
}
}
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