feature: 主机额外配置保存.
This commit is contained in:
@@ -1,10 +1,20 @@
|
||||
package com.orion.ops.module.asset.handler.host.extra.strategy;
|
||||
|
||||
import com.orion.ops.framework.common.constant.ErrorMessage;
|
||||
import com.orion.ops.framework.common.handler.data.strategy.MapDataStrategy;
|
||||
import com.orion.ops.framework.common.utils.Valid;
|
||||
import com.orion.ops.framework.security.core.utils.SecurityUtils;
|
||||
import com.orion.ops.module.asset.dao.HostIdentityDAO;
|
||||
import com.orion.ops.module.asset.dao.HostKeyDAO;
|
||||
import com.orion.ops.module.asset.enums.HostExtraSshAuthTypeEnum;
|
||||
import com.orion.ops.module.asset.handler.host.extra.model.HostSshExtraModel;
|
||||
import com.orion.ops.module.infra.api.DataPermissionApi;
|
||||
import com.orion.ops.module.infra.api.SystemUserApi;
|
||||
import com.orion.ops.module.infra.enums.DataPermissionTypeEnum;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 主机拓展信息 - ssh 模型处理策略
|
||||
*
|
||||
@@ -15,6 +25,18 @@ import org.springframework.stereotype.Component;
|
||||
@Component
|
||||
public class HostSshExtraStrategy implements MapDataStrategy<HostSshExtraModel> {
|
||||
|
||||
@Resource
|
||||
private HostKeyDAO hostKeyDAO;
|
||||
|
||||
@Resource
|
||||
private HostIdentityDAO hostIdentityDAO;
|
||||
|
||||
@Resource
|
||||
private SystemUserApi systemUserApi;
|
||||
|
||||
@Resource
|
||||
private DataPermissionApi dataPermissionApi;
|
||||
|
||||
@Override
|
||||
public HostSshExtraModel getDefault() {
|
||||
return HostSshExtraModel.builder()
|
||||
@@ -24,17 +46,46 @@ public class HostSshExtraStrategy implements MapDataStrategy<HostSshExtraModel>
|
||||
|
||||
@Override
|
||||
public void updateFill(HostSshExtraModel beforeModel, HostSshExtraModel afterModel) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preValid(HostSshExtraModel model) {
|
||||
|
||||
HostExtraSshAuthTypeEnum authType = Valid.valid(HostExtraSshAuthTypeEnum::of, model.getAuthType());
|
||||
model.setAuthType(authType.name());
|
||||
Long keyId = model.getKeyId();
|
||||
Long identityId = model.getIdentityId();
|
||||
// 必填验证
|
||||
if (HostExtraSshAuthTypeEnum.KEY.equals(authType)) {
|
||||
Valid.notNull(keyId);
|
||||
} else if (HostExtraSshAuthTypeEnum.IDENTITY.equals(authType)) {
|
||||
Valid.notNull(identityId);
|
||||
}
|
||||
// 验证主机秘钥是否存在
|
||||
if (keyId != null) {
|
||||
Valid.notNull(hostKeyDAO.selectById(keyId), ErrorMessage.KEY_ABSENT);
|
||||
}
|
||||
// 验证主机身份是否存在
|
||||
if (identityId != null) {
|
||||
Valid.notNull(hostIdentityDAO.selectById(identityId), ErrorMessage.IDENTITY_ABSENT);
|
||||
}
|
||||
// 非管理员验证权限
|
||||
Long userId = SecurityUtils.getLoginUserId();
|
||||
if (!systemUserApi.isAdminUser(userId)) {
|
||||
// 验证主机秘钥是否有权限
|
||||
if (keyId != null) {
|
||||
Valid.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_KEY, userId, keyId),
|
||||
ErrorMessage.DATA_NO_PERMISSION);
|
||||
}
|
||||
// 验证主机身份是否有权限
|
||||
if (identityId != null) {
|
||||
Valid.isTrue(dataPermissionApi.hasPermission(DataPermissionTypeEnum.HOST_IDENTITY, userId, identityId),
|
||||
ErrorMessage.DATA_NO_PERMISSION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void valid(HostSshExtraModel model) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -48,18 +48,4 @@ public interface HostExtraService {
|
||||
*/
|
||||
Integer updateHostExtra(HostExtraUpdateRequest request);
|
||||
|
||||
/**
|
||||
* 删除主机秘钥回调
|
||||
*
|
||||
* @param id id
|
||||
*/
|
||||
void deleteHostKeyCallback(Long id);
|
||||
|
||||
/**
|
||||
* 删除主机身份回调
|
||||
*
|
||||
* @param id id
|
||||
*/
|
||||
void deleteHostIdentityCallback(Long id);
|
||||
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ public class HostConfigServiceImpl implements HostConfigService {
|
||||
private HostConfigDAO hostConfigDAO;
|
||||
|
||||
// FIXME 动态初始化
|
||||
// 改为小写
|
||||
|
||||
@Override
|
||||
public HostConfigVO getHostConfig(Long hostId, String type) {
|
||||
@@ -73,12 +74,8 @@ public class HostConfigServiceImpl implements HostConfigService {
|
||||
|
||||
@Override
|
||||
public List<HostConfigVO> getHostConfigList(Long hostId) {
|
||||
// 查询
|
||||
List<HostConfigDO> configs = hostConfigDAO.getHostConfigByHostId(hostId);
|
||||
if (configs.isEmpty()) {
|
||||
// 初始化 兜底
|
||||
this.initHostConfig(hostId);
|
||||
configs = hostConfigDAO.getHostConfigByHostId(hostId);
|
||||
}
|
||||
// 返回
|
||||
return configs.stream().map(s -> {
|
||||
HostConfigVO vo = HostConfigConvert.MAPPER.to(s);
|
||||
|
||||
@@ -122,16 +122,6 @@ public class HostExtraServiceImpl implements HostExtraService {
|
||||
return dataExtraApi.updateExtraValue(beforeExtraItem.getId(), newExtra.serial());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteHostKeyCallback(Long id) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteHostIdentityCallback(Long id) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查配置项并且转为视图 (不存在则初始化默认值)
|
||||
*
|
||||
|
||||
@@ -24,8 +24,8 @@ import com.orion.ops.module.asset.entity.request.host.HostIdentityCreateRequest;
|
||||
import com.orion.ops.module.asset.entity.request.host.HostIdentityQueryRequest;
|
||||
import com.orion.ops.module.asset.entity.request.host.HostIdentityUpdateRequest;
|
||||
import com.orion.ops.module.asset.entity.vo.HostIdentityVO;
|
||||
import com.orion.ops.module.asset.service.HostExtraService;
|
||||
import com.orion.ops.module.asset.service.HostIdentityService;
|
||||
import com.orion.ops.module.infra.api.DataExtraApi;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -56,7 +56,7 @@ public class HostIdentityServiceImpl implements HostIdentityService {
|
||||
private HostConfigDAO hostConfigDAO;
|
||||
|
||||
@Resource
|
||||
private HostExtraService hostExtraService;
|
||||
private DataExtraApi dataExtraApi;
|
||||
|
||||
@Override
|
||||
public Long createHostIdentity(HostIdentityCreateRequest request) {
|
||||
@@ -178,8 +178,8 @@ public class HostIdentityServiceImpl implements HostIdentityService {
|
||||
int effect = hostIdentityDAO.deleteById(id);
|
||||
// 删除主机配置
|
||||
hostConfigDAO.setIdentityIdWithNull(id);
|
||||
// 删除主机额外配置
|
||||
hostExtraService.deleteHostIdentityCallback(id);
|
||||
// 删除主机身份额外配置
|
||||
dataExtraApi.deleteHostIdentityExtra(id);
|
||||
// 删除缓存
|
||||
RedisMaps.delete(HostCacheKeyDefine.HOST_IDENTITY.getKey(), record.getId());
|
||||
log.info("HostIdentityService-deleteHostIdentityById effect: {}", effect);
|
||||
|
||||
@@ -22,8 +22,8 @@ import com.orion.ops.module.asset.entity.request.host.HostKeyCreateRequest;
|
||||
import com.orion.ops.module.asset.entity.request.host.HostKeyQueryRequest;
|
||||
import com.orion.ops.module.asset.entity.request.host.HostKeyUpdateRequest;
|
||||
import com.orion.ops.module.asset.entity.vo.HostKeyVO;
|
||||
import com.orion.ops.module.asset.service.HostExtraService;
|
||||
import com.orion.ops.module.asset.service.HostKeyService;
|
||||
import com.orion.ops.module.infra.api.DataExtraApi;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -53,7 +53,7 @@ public class HostKeyServiceImpl implements HostKeyService {
|
||||
private HostConfigDAO hostConfigDAO;
|
||||
|
||||
@Resource
|
||||
private HostExtraService hostExtraService;
|
||||
private DataExtraApi dataExtraApi;
|
||||
|
||||
@Override
|
||||
public Long createHostKey(HostKeyCreateRequest request) {
|
||||
@@ -175,8 +175,8 @@ public class HostKeyServiceImpl implements HostKeyService {
|
||||
hostIdentityDAO.setKeyWithNull(id);
|
||||
// 删除主机配置
|
||||
hostConfigDAO.setKeyIdWithNull(id);
|
||||
// 删除主机额外配置
|
||||
hostExtraService.deleteHostKeyCallback(id);
|
||||
// 删除主机秘钥额外配置
|
||||
dataExtraApi.deleteHostKeyExtra(id);
|
||||
// 删除缓存
|
||||
RedisMaps.delete(HostCacheKeyDefine.HOST_KEY.getKey(), record.getId());
|
||||
log.info("HostKeyService-deleteHostKeyById effect: {}", effect);
|
||||
|
||||
Reference in New Issue
Block a user