Search in sources :

Example 1 with StageType

use of com.orion.ops.consts.app.StageType in project orion-ops by lijiahangmax.

the class ApplicationInfoController method checkConfig.

/**
 * 检查配置
 *
 * @param request request
 */
private void checkConfig(ApplicationConfigRequest request) {
    StageType stageType = Valid.notNull(StageType.of(request.getStageType()));
    List<ApplicationConfigActionRequest> actions;
    ApplicationConfigEnvRequest env = Valid.notNull(request.getEnv());
    if (StageType.BUILD.equals(stageType)) {
        // 构建检查产物路径
        Valid.notBlank(env.getBundlePath());
        // 检查操作
        actions = Valid.notEmpty(request.getBuildActions());
    } else if (StageType.RELEASE.equals(stageType)) {
        // 发布序列
        Valid.notNull(env.getReleaseSerial());
        // 异常处理
        Valid.notNull(env.getExceptionHandler());
        // 发布检查机器id
        Valid.notEmpty(request.getMachineIdList());
        // 检查操作
        actions = Valid.notEmpty(request.getReleaseActions());
    } else {
        throw Exceptions.unsupported();
    }
    // 检查操作
    for (ApplicationConfigActionRequest action : actions) {
        Valid.notBlank(action.getName());
        ActionType actionType = Valid.notNull(ActionType.of(action.getType(), stageType.getType()));
        // 检查命令
        if (ActionType.BUILD_COMMAND.equals(actionType) || ActionType.RELEASE_COMMAND.equals(actionType)) {
            Valid.notBlank(action.getCommand());
        }
    }
    // 检查检出操作唯一性
    int checkoutActionCount = actions.stream().map(ApplicationConfigActionRequest::getType).map(ActionType::of).filter(ActionType.BUILD_CHECKOUT::equals).mapToInt(s -> Const.N_1).sum();
    Valid.lte(checkoutActionCount, 1, MessageConst.CHECKOUT_ACTION_PRESENT);
    // 检查传输操作唯一性
    int transferActionCount = actions.stream().map(ApplicationConfigActionRequest::getType).map(ActionType::of).filter(ActionType.RELEASE_TRANSFER::equals).mapToInt(s -> Const.N_1).sum();
    Valid.lte(transferActionCount, 1, MessageConst.TRANSFER_ACTION_PRESENT);
    if (transferActionCount != 0) {
        // 传输目录
        Valid.notBlank(env.getTransferPath());
    }
}
Also used : RestWrapper(com.orion.ops.annotation.RestWrapper) ActionType(com.orion.ops.consts.app.ActionType) ApplicationInfoService(com.orion.ops.service.api.ApplicationInfoService) ApplicationDetailVO(com.orion.ops.entity.vo.ApplicationDetailVO) Exceptions(com.orion.utils.Exceptions) EventType(com.orion.ops.consts.event.EventType) MessageConst(com.orion.ops.consts.MessageConst) ApplicationMachineVO(com.orion.ops.entity.vo.ApplicationMachineVO) ApplicationMachineService(com.orion.ops.service.api.ApplicationMachineService) Resource(javax.annotation.Resource) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) HttpWrapper(com.orion.lang.wrapper.HttpWrapper) Valid(com.orion.ops.utils.Valid) RestController(org.springframework.web.bind.annotation.RestController) RequestBody(org.springframework.web.bind.annotation.RequestBody) EventLog(com.orion.ops.annotation.EventLog) List(java.util.List) StageType(com.orion.ops.consts.app.StageType) ApplicationInfoVO(com.orion.ops.entity.vo.ApplicationInfoVO) com.orion.ops.entity.request(com.orion.ops.entity.request) Const(com.orion.ops.consts.Const) DataGrid(com.orion.lang.wrapper.DataGrid) ActionType(com.orion.ops.consts.app.ActionType) StageType(com.orion.ops.consts.app.StageType)

Example 2 with StageType

use of com.orion.ops.consts.app.StageType in project orion-ops by lijiahangmax.

the class ApplicationEnvServiceImpl method configAppEnv.

@Override
@Transactional(rollbackFor = Exception.class)
public void configAppEnv(ApplicationConfigRequest request) {
    ApplicationEnvService self = SpringHolder.getBean(ApplicationEnvService.class);
    StageType stageType = StageType.of(request.getStageType());
    List<ApplicationEnvRequest> list = Lists.newList();
    Long appId = request.getAppId();
    Long profileId = request.getProfileId();
    ApplicationConfigEnvRequest requestEnv = request.getEnv();
    // 构建产物目录
    String bundlePath = requestEnv.getBundlePath();
    if (!Strings.isBlank(bundlePath)) {
        ApplicationEnvRequest bundlePathEnv = new ApplicationEnvRequest();
        bundlePathEnv.setKey(ApplicationEnvAttr.BUNDLE_PATH.getKey());
        bundlePathEnv.setValue(bundlePath);
        bundlePathEnv.setDescription(ApplicationEnvAttr.BUNDLE_PATH.getDescription());
        list.add(bundlePathEnv);
    }
    // 产物传输目录
    String transferPath = requestEnv.getTransferPath();
    if (!Strings.isBlank(transferPath)) {
        ApplicationEnvRequest transferPathEnv = new ApplicationEnvRequest();
        transferPathEnv.setKey(ApplicationEnvAttr.TRANSFER_PATH.getKey());
        transferPathEnv.setValue(transferPath);
        transferPathEnv.setDescription(ApplicationEnvAttr.TRANSFER_PATH.getDescription());
        list.add(transferPathEnv);
    }
    // 产物传输类型
    String transferDirType = requestEnv.getTransferDirType();
    if (!Strings.isBlank(transferDirType)) {
        ApplicationEnvRequest transferDirTypeEnv = new ApplicationEnvRequest();
        transferDirTypeEnv.setKey(ApplicationEnvAttr.TRANSFER_DIR_TYPE.getKey());
        transferDirTypeEnv.setValue(TransferDirType.of(transferDirType).getValue());
        transferDirTypeEnv.setDescription(ApplicationEnvAttr.TRANSFER_DIR_TYPE.getDescription());
        list.add(transferDirTypeEnv);
    }
    // 发布序列
    Integer releaseSerial = requestEnv.getReleaseSerial();
    if (releaseSerial != null) {
        ApplicationEnvRequest releaseSerialEnv = new ApplicationEnvRequest();
        releaseSerialEnv.setKey(ApplicationEnvAttr.RELEASE_SERIAL.getKey());
        releaseSerialEnv.setValue(SerialType.of(releaseSerial).getValue());
        releaseSerialEnv.setDescription(ApplicationEnvAttr.RELEASE_SERIAL.getDescription());
        list.add(releaseSerialEnv);
    }
    // 异常处理
    Integer exceptionHandler = requestEnv.getExceptionHandler();
    if (exceptionHandler != null) {
        ApplicationEnvRequest exceptionHandlerEnv = new ApplicationEnvRequest();
        exceptionHandlerEnv.setKey(ApplicationEnvAttr.EXCEPTION_HANDLER.getKey());
        exceptionHandlerEnv.setValue(ExceptionHandlerType.of(exceptionHandler).getValue());
        exceptionHandlerEnv.setDescription(ApplicationEnvAttr.EXCEPTION_HANDLER.getDescription());
        list.add(exceptionHandlerEnv);
    }
    // 构建检查是否有构建序列
    if (StageType.BUILD.equals(stageType)) {
        self.checkInitSystemEnv(appId, profileId);
    }
    // 添加环境变量
    for (ApplicationEnvRequest env : list) {
        env.setAppId(appId);
        env.setProfileId(profileId);
        self.addAppEnv(env);
    }
}
Also used : ApplicationConfigEnvRequest(com.orion.ops.entity.request.ApplicationConfigEnvRequest) ApplicationEnvRequest(com.orion.ops.entity.request.ApplicationEnvRequest) StageType(com.orion.ops.consts.app.StageType) ApplicationEnvService(com.orion.ops.service.api.ApplicationEnvService) Transactional(org.springframework.transaction.annotation.Transactional)

Example 3 with StageType

use of com.orion.ops.consts.app.StageType in project orion-ops by lijiahangmax.

the class ApplicationActionServiceImpl method configAppAction.

@Override
@Transactional(rollbackFor = Exception.class)
public void configAppAction(ApplicationConfigRequest request) {
    Long appId = request.getAppId();
    Long profileId = request.getProfileId();
    StageType stageType = StageType.of(request.getStageType());
    // 删除
    LambdaQueryWrapper<ApplicationActionDO> deleteWrapper = new LambdaQueryWrapper<ApplicationActionDO>().eq(ApplicationActionDO::getAppId, appId).eq(ApplicationActionDO::getProfileId, profileId).eq(ApplicationActionDO::getStageType, stageType.getType());
    applicationActionDAO.delete(deleteWrapper);
    // 插入
    List<ApplicationConfigActionRequest> actions;
    if (StageType.BUILD.equals(stageType)) {
        actions = request.getBuildActions();
    } else if (StageType.RELEASE.equals(stageType)) {
        actions = request.getReleaseActions();
    } else {
        throw Exceptions.unsupported();
    }
    for (ApplicationConfigActionRequest action : actions) {
        ApplicationActionDO insert = new ApplicationActionDO();
        insert.setAppId(appId);
        insert.setProfileId(profileId);
        insert.setActionName(action.getName());
        insert.setActionType(action.getType());
        insert.setStageType(stageType.getType());
        insert.setActionCommand(action.getCommand());
        applicationActionDAO.insert(insert);
    }
}
Also used : ApplicationConfigActionRequest(com.orion.ops.entity.request.ApplicationConfigActionRequest) StageType(com.orion.ops.consts.app.StageType) ApplicationActionDO(com.orion.ops.entity.domain.ApplicationActionDO) Transactional(org.springframework.transaction.annotation.Transactional)

Example 4 with StageType

use of com.orion.ops.consts.app.StageType in project orion-ops by lijiahangmax.

the class ApplicationInfoServiceImpl method configAppProfile.

@Override
@Transactional(rollbackFor = Exception.class)
public void configAppProfile(ApplicationConfigRequest request) {
    Long appId = request.getAppId();
    Long profileId = request.getProfileId();
    // 查询应用和环境
    ApplicationInfoDO app = Valid.notNull(applicationInfoDAO.selectById(appId), MessageConst.APP_ABSENT);
    ApplicationProfileDO profile = Valid.notNull(applicationProfileDAO.selectById(profileId), MessageConst.PROFILE_ABSENT);
    StageType stageType = StageType.of(request.getStageType());
    if (StageType.RELEASE.equals(stageType)) {
        // 配置机器
        applicationMachineService.configAppMachines(request);
    }
    // 配置环境变量
    applicationEnvService.configAppEnv(request);
    // 配置发布
    applicationActionService.configAppAction(request);
    // 设置日志参数
    EventParamsHolder.addParams(request);
    EventParamsHolder.addParam(EventKeys.APP_NAME, app.getAppName());
    EventParamsHolder.addParam(EventKeys.PROFILE_NAME, profile.getProfileName());
}
Also used : StageType(com.orion.ops.consts.app.StageType) Transactional(org.springframework.transaction.annotation.Transactional)

Aggregations

StageType (com.orion.ops.consts.app.StageType)4 Transactional (org.springframework.transaction.annotation.Transactional)3 DataGrid (com.orion.lang.wrapper.DataGrid)1 HttpWrapper (com.orion.lang.wrapper.HttpWrapper)1 EventLog (com.orion.ops.annotation.EventLog)1 RestWrapper (com.orion.ops.annotation.RestWrapper)1 Const (com.orion.ops.consts.Const)1 MessageConst (com.orion.ops.consts.MessageConst)1 ActionType (com.orion.ops.consts.app.ActionType)1 EventType (com.orion.ops.consts.event.EventType)1 ApplicationActionDO (com.orion.ops.entity.domain.ApplicationActionDO)1 com.orion.ops.entity.request (com.orion.ops.entity.request)1 ApplicationConfigActionRequest (com.orion.ops.entity.request.ApplicationConfigActionRequest)1 ApplicationConfigEnvRequest (com.orion.ops.entity.request.ApplicationConfigEnvRequest)1 ApplicationEnvRequest (com.orion.ops.entity.request.ApplicationEnvRequest)1 ApplicationDetailVO (com.orion.ops.entity.vo.ApplicationDetailVO)1 ApplicationInfoVO (com.orion.ops.entity.vo.ApplicationInfoVO)1 ApplicationMachineVO (com.orion.ops.entity.vo.ApplicationMachineVO)1 ApplicationEnvService (com.orion.ops.service.api.ApplicationEnvService)1 ApplicationInfoService (com.orion.ops.service.api.ApplicationInfoService)1