(apiSrcTask *models.SrcTaskConfig, apiDestTask *models.DestTaskConfig)
| 98 | } |
| 99 | |
| 100 | func validateTaskConfig(apiSrcTask *models.SrcTaskConfig, apiDestTask *models.DestTaskConfig) ([]*models.MysqlTaskValidationReport, error) { |
| 101 | taskValidationRes := []*models.MysqlTaskValidationReport{} |
| 102 | srcTaskConfig := common.DtleTaskConfig{} |
| 103 | // validate src task |
| 104 | if apiSrcTask.MysqlSrcTaskConfig != nil { |
| 105 | srcTaskMap := buildDatabaseSrcTaskConfigMap(apiSrcTask, apiDestTask, nil) |
| 106 | if err := mapstructure.WeakDecode(srcTaskMap, &srcTaskConfig); err != nil { |
| 107 | return nil, fmt.Errorf("convert src task config failed: %v", err) |
| 108 | } |
| 109 | |
| 110 | validationRes := &models.MysqlTaskValidationReport{ |
| 111 | TaskName: apiSrcTask.TaskName, |
| 112 | } |
| 113 | |
| 114 | srcTaskInspector := mysql.NewInspector(&common.MySQLDriverConfig{ |
| 115 | DtleTaskConfig: srcTaskConfig, |
| 116 | }, g.Logger.Named("http api: validateTaskConfig")) |
| 117 | defer srcTaskInspector.Close() |
| 118 | |
| 119 | if err := srcTaskInspector.InitDB(); nil != err { |
| 120 | return nil, fmt.Errorf("init src task inspector failed: %v", err) |
| 121 | } |
| 122 | |
| 123 | validationRes.ConnectionValidation = &models.ConnectionValidation{Validated: true} |
| 124 | if err := srcTaskInspector.ValidateConnection(); nil != err { |
| 125 | validationRes.ConnectionValidation.Error = err.Error() |
| 126 | goto endSrcTaskValidation |
| 127 | } |
| 128 | |
| 129 | validationRes.GtidModeValidation = &models.GtidModeValidation{Validated: true} |
| 130 | if err := srcTaskInspector.ValidateGTIDMode(); nil != err { |
| 131 | validationRes.GtidModeValidation.Error = err.Error() |
| 132 | } |
| 133 | |
| 134 | validationRes.ServerIdValidation = &models.ServerIDValidation{Validated: true} |
| 135 | if err := srcTaskInspector.ValidateServerId(); nil != err { |
| 136 | validationRes.ServerIdValidation.Error = err.Error() |
| 137 | } |
| 138 | |
| 139 | validationRes.BinlogValidation = &models.BinlogValidation{Validated: true} |
| 140 | if err := srcTaskInspector.ValidateBinlogs(); nil != err { |
| 141 | validationRes.BinlogValidation.Error = err.Error() |
| 142 | } |
| 143 | |
| 144 | validationRes.PrivilegesValidation = &models.PrivilegesValidation{Validated: true} |
| 145 | if err := srcTaskInspector.ValidateGrants(); nil != err { |
| 146 | validationRes.PrivilegesValidation.Error = err.Error() |
| 147 | } |
| 148 | |
| 149 | endSrcTaskValidation: |
| 150 | taskValidationRes = append(taskValidationRes, validationRes) |
| 151 | } |
| 152 | // validate dest task |
| 153 | { |
| 154 | validationRes := &models.MysqlTaskValidationReport{ |
| 155 | TaskName: apiDestTask.TaskName, |
| 156 | } |
| 157 | destTaskInspector, err := mysql.NewApplier( |
no test coverage detected