Skip to content

Commit 3c388a4

Browse files
committed
fix backup bug
1 parent c45f251 commit 3c388a4

23 files changed

Lines changed: 210 additions & 118 deletions

File tree

authcenter/src/main/java/com/highgo/cloud/auth/controller/AuthController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
*/
4343
@RestController
4444
@Validated
45-
@RequestMapping("${common.request-path-prefix}/v1")
45+
@RequestMapping("${common.request-path-prefix}/${common.version}")
4646
@Api(tags = "授权管理")
4747
public class AuthController {
4848

cloudnative/src/main/java/com/highgo/platform/apiserver/controller/WatcherController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
@Validated
3131
@RestController
32-
@RequestMapping("/${common.request-path-prefix}/${common.version}")
32+
@RequestMapping("${common.request-path-prefix}/${common.version}")
3333
public class WatcherController {
3434

3535
@Autowired

cloudnative/src/main/java/com/highgo/platform/apiserver/service/BackupService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.highgo.cloud.enums.BackupStatus;
2121
import com.highgo.cloud.model.PageInfo;
2222
import com.highgo.platform.apiserver.model.dto.BackupDTO;
23+
import com.highgo.platform.apiserver.model.po.BackupPO;
2324
import com.highgo.platform.apiserver.model.po.BackupPolicyPO;
2425
import com.highgo.platform.apiserver.model.vo.request.CreateBackupVO;
2526
import com.highgo.platform.apiserver.model.vo.request.ModifyAutoBackupSwitchVO;
@@ -141,4 +142,6 @@ public interface BackupService {
141142
public void updateBackupStatus(String backupId, BackupStatus backupStatus);
142143

143144
public void updateBackupIsRestoring(String backupId, Boolean isRestoring);
145+
146+
BackupDTO createManualBackup(BackupPO backupPO);
144147
}

cloudnative/src/main/java/com/highgo/platform/apiserver/service/impl/BackupServiceImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,4 +474,12 @@ public void updateBackupStatus(String backupId, BackupStatus backupStatus) {
474474
public void updateBackupIsRestoring(String backupId, Boolean isRestoring) {
475475
backupRepository.updateIsRestoring(backupId, CommonUtil.getUTCDate(), isRestoring);
476476
}
477+
478+
@Override
479+
public BackupDTO createManualBackup(BackupPO backupPO) {
480+
BackupDTO backupDTO = new BackupDTO();
481+
BackupPO saved = backupRepository.save(backupPO);
482+
BeanUtil.copyNotNullProperties(backupDTO, saved);
483+
return backupDTO;
484+
}
477485
}

cloudnative/src/main/java/com/highgo/platform/apiserver/service/impl/K8sClusterServiceImpl.java

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,29 @@
1717

1818
package com.highgo.platform.apiserver.service.impl;
1919

20+
import cn.hutool.core.thread.ThreadUtil;
21+
import com.highgo.cloud.enums.InstanceStatus;
22+
import com.highgo.cloud.enums.InstanceType;
23+
import com.highgo.cloud.model.K8sClusterInfoDTO;
24+
import com.highgo.cloud.model.ServerConnectVO;
25+
import com.highgo.cloud.util.BeanUtil;
26+
import com.highgo.cloud.util.CommonUtil;
2027
import com.highgo.cloud.util.SshUtil;
2128
import com.highgo.platform.apiserver.model.dto.InstanceDTO;
22-
import com.highgo.cloud.model.K8sClusterInfoDTO;
2329
import com.highgo.platform.apiserver.model.po.InstancePO;
2430
import com.highgo.platform.apiserver.model.po.K8sClusterInfoPO;
2531
import com.highgo.platform.apiserver.model.vo.request.CreateClusterVO;
26-
import com.highgo.cloud.model.ServerConnectVO;
2732
import com.highgo.platform.apiserver.model.vo.response.ActionResponse;
2833
import com.highgo.platform.apiserver.model.vo.response.ClusterInfoVO;
2934
import com.highgo.platform.apiserver.model.vo.response.K8sResourceCountVO;
3035
import com.highgo.platform.apiserver.repository.InstanceRepository;
3136
import com.highgo.platform.apiserver.repository.K8sClusterInfoRepository;
3237
import com.highgo.platform.apiserver.service.K8sClusterService;
3338
import com.highgo.platform.configuration.K8sClientConfiguration;
34-
import com.highgo.cloud.enums.InstanceStatus;
35-
import com.highgo.cloud.enums.InstanceType;
3639
import com.highgo.platform.errorcode.ClusterError;
3740
import com.highgo.platform.exception.ClusterException;
38-
import com.highgo.cloud.util.BeanUtil;
39-
import com.highgo.cloud.util.CommonUtil;
41+
import com.highgo.platform.operator.ElectLeader;
42+
import com.highgo.platform.operator.watcher.WatcherFactory;
4043
import com.jcraft.jsch.JSchException;
4144
import io.fabric8.kubernetes.api.model.Namespace;
4245
import io.fabric8.kubernetes.api.model.NamespaceBuilder;
@@ -70,7 +73,13 @@ public class K8sClusterServiceImpl implements K8sClusterService {
7073

7174
@Autowired
7275
K8sClientConfiguration k8sClientConfiguration;
76+
@Autowired
77+
private WatcherFactory watcherFactory;
7378

79+
@javax.annotation.Resource
80+
private ElectLeader electLeader;
81+
@Value("${common.namespace:ivory}")
82+
private String namespace;
7483
// k8s 默认的命名空间
7584
private final List<String> kubeNamespaces =
7685
new ArrayList<>(Arrays.asList("kube-node-lease", "kube-flannel", "kube-public", "kube-system"));
@@ -262,6 +271,22 @@ public ClusterInfoVO insertCluster(CreateClusterVO createClusterVO) {
262271
ClusterInfoVO clusterInfoVO = new ClusterInfoVO();
263272
BeanUtil.copyNotNullProperties(k8sClusterInfoPO, clusterInfoVO);
264273
processingIps.remove(k8sClusterInfoDTO.getServerUrl());
274+
// 异步执行 创建namespace及启动leader
275+
ThreadUtil.execute(() -> {
276+
List<Namespace> namespaces = getNamespace(clusterInfoVO.getClusterId());
277+
if (!CommonUtil.isEmpty(namespaces)) {
278+
Optional<Namespace> namespaceOptional =
279+
namespaces.stream().filter(item -> item.getMetadata().getName().equals(namespace)).findFirst();
280+
if (!namespaceOptional.isPresent()) {
281+
createNamespace(clusterInfoVO.getClusterId(), namespace);
282+
}
283+
}
284+
try {
285+
electLeader.initLeaderElector();
286+
} catch (Exception e) {
287+
logger.error("Failed to init leader elector.The cluster id is: {}", k8sClusterInfoDTO.getClusterId());
288+
}
289+
});
265290
return clusterInfoVO;
266291
}
267292

@@ -276,6 +301,7 @@ public ActionResponse delCluster(String clusterId) {
276301

277302
Date now = CommonUtil.getUTCDate();
278303
k8sClusterInfoRepository.deleteByClusterId(clusterId, now);
304+
watcherFactory.stopWatcherById(clusterId);
279305
return ActionResponse.actionSuccess();
280306
}
281307

cloudnative/src/main/java/com/highgo/platform/operator/ElectLeader.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@
3232
import org.slf4j.LoggerFactory;
3333
import org.springframework.beans.factory.annotation.Autowired;
3434
import org.springframework.beans.factory.annotation.Value;
35-
import org.springframework.boot.ApplicationArguments;
36-
import org.springframework.boot.ApplicationRunner;
3735
import org.springframework.stereotype.Component;
3836

3937
import java.net.InetAddress;
@@ -42,7 +40,7 @@
4240
import java.util.Map;
4341

4442
@Component
45-
public class ElectLeader implements ApplicationRunner {
43+
public class ElectLeader {
4644

4745
private static final Logger logger = LoggerFactory.getLogger(ElectLeader.class);
4846

@@ -72,11 +70,9 @@ public class ElectLeader implements ApplicationRunner {
7270
/**
7371
* Callback used to run the bean.
7472
*
75-
* @param args incoming application arguments
7673
* @throws Exception on error
7774
*/
78-
@Override
79-
public void run(ApplicationArguments args) throws Exception {
75+
public void initLeaderElector() throws Exception {
8076

8177
ApiClient client = Config.defaultClient();
8278
Configuration.setDefaultApiClient(client);

cloudnative/src/main/java/com/highgo/platform/operator/cr/bean/DatabaseClusterSpec.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@
2020
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2121
import com.highgo.platform.operator.cr.bean.backup.Backup;
2222
import com.highgo.platform.operator.cr.bean.backup.RestoreDatasource;
23-
import com.highgo.platform.operator.cr.bean.service.DatabaseService;
2423
import com.highgo.platform.operator.cr.bean.imagePullsecret.ImagePullSecret;
2524
import com.highgo.platform.operator.cr.bean.instance.Instance;
2625
import com.highgo.platform.operator.cr.bean.monitor.Monitor;
2726
import com.highgo.platform.operator.cr.bean.patroni.Patroni;
2827
import com.highgo.platform.operator.cr.bean.pgadmin.UserInterface;
28+
import com.highgo.platform.operator.cr.bean.service.DatabaseService;
2929
import com.highgo.platform.operator.cr.bean.user.User;
30+
import io.fabric8.kubernetes.api.model.ObjectMeta;
3031
import lombok.*;
3132

3233
import java.util.List;
@@ -88,4 +89,9 @@ public class DatabaseClusterSpec {
8889
*/
8990
private RestoreDatasource dataSource;
9091

92+
/**
93+
* metadata
94+
*/
95+
private ObjectMeta metadata;
96+
9197
}

cloudnative/src/main/java/com/highgo/platform/operator/cr/bean/backup/RestoreDatasource.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,12 @@
3232
@Builder
3333
public class RestoreDatasource {
3434

35+
/**
36+
* for ivoryCluster
37+
*/
38+
private RestoreCluster ivoryCluster;
39+
/**
40+
* for highgoCluster
41+
*/
3542
private RestoreCluster postgresCluster;
3643
}

cloudnative/src/main/java/com/highgo/platform/operator/service/CrService.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,6 @@ public interface CrService {
6868
*/
6969
public boolean deleteCr(InstanceDTO instanceDTO);
7070

71-
/**
72-
* 删除实例的所有pod(重启实例时,删除pod进行重启)
73-
* @param instanceDTO
74-
* @return
75-
*/
76-
public boolean deleteAllPod(InstanceDTO instanceDTO);
77-
7871
/**
7972
* @description 重启数据库实例
8073
*

cloudnative/src/main/java/com/highgo/platform/operator/service/OperatorBackupsService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,5 @@ public interface OperatorBackupsService {
5454
/**
5555
* 同步cr手动备份记录状态到数据库
5656
*/
57-
public void syncManualBackup(ManualBackupStatus newManualBackupStatus);
57+
public void syncManualBackup(String instanceId, ManualBackupStatus newManualBackupStatus);
5858
}

0 commit comments

Comments
 (0)