From 4110a57be373f5f3d75e53af7ebd0a1d8303fb15 Mon Sep 17 00:00:00 2001 From: Hoshi <1196756653@qq.com> Date: Tue, 20 Aug 2024 17:57:31 +0800 Subject: [PATCH] Initial commit all --- README.md | 1 + bocloud.tse.booter/pom.xml | 150 +++ .../com/bocloud/tse/booter/Application.java | 19 + .../booter/config/RabbitMQConfiguration.java | 129 +++ .../booter/config/SwaggerConfiguration.java | 21 + .../config/WebInterceptorConfiguration.java | 60 ++ .../booter/controller/EngineController.java | 74 ++ .../controller/SchedulerController.java | 93 ++ .../syslog/SysLogAppenderTcpAndUdp.java | 15 + .../booter/syslog/SysLogLevelConvertor.java | 22 + .../syslog/SyslogOutputStreamTcpAndUdp.java | 70 ++ .../src/main/resources/application.yml | 104 ++ .../src/main/resources/banner.txt | 8 + .../src/main/resources/logback-spring.xml | 75 ++ bocloud.tse.core/pom.xml | 43 + .../com/bocloud/tse/core/annotation/Arg.java | 17 + .../bocloud/tse/core/annotation/Module.java | 20 + .../bocloud/tse/core/annotation/Worker.java | 17 + .../com/bocloud/tse/core/domain/Option.java | 35 + .../bocloud/tse/core/domain/TargetGroup.java | 28 + .../bocloud/tse/core/domain/WorkerScript.java | 52 + .../core/domain/args/maintain/FileArg.java | 24 + .../domain/args/maintain/HostAllowArg.java | 24 + .../domain/args/maintain/ScriptLocalArg.java | 16 + .../core/domain/args/maintain/ScriptsArg.java | 19 + .../core/domain/args/maintain/ServiceArg.java | 31 + .../core/domain/args/maintain/UserArg.java | 27 + .../domain/args/software/ActivemqArg.java | 27 + .../core/domain/args/software/ApacheArg.java | 44 + .../args/software/ElasticsearchArg.java | 25 + .../core/domain/args/software/EtcdArg.java | 33 + .../domain/args/software/ExporterArg.java | 18 + .../core/domain/args/software/GitlabArg.java | 25 + .../tse/core/domain/args/software/JdkArg.java | 24 + .../core/domain/args/software/JenkinsArg.java | 28 + .../tse/core/domain/args/software/K8sArg.java | 51 + .../core/domain/args/software/KafkaArg.java | 88 ++ .../domain/args/software/MemcacheArg.java | 64 ++ .../core/domain/args/software/MongodbArg.java | 62 ++ .../core/domain/args/software/MysqlArg.java | 92 ++ .../tse/core/domain/args/software/NfsArg.java | 24 + .../core/domain/args/software/NginxArg.java | 61 ++ .../core/domain/args/software/OracleArg.java | 56 + .../tse/core/domain/args/software/PhpArg.java | 39 + .../domain/args/software/PostgresqlArg.java | 160 +++ .../domain/args/software/RabbitmqArg.java | 55 + .../domain/args/software/RacIscsiArg.java | 21 + .../core/domain/args/software/RedisArg.java | 58 + .../domain/args/software/RocketmqArg.java | 53 + .../domain/args/software/SqlserverArg.java | 33 + .../core/domain/args/software/TomcatArg.java | 34 + .../domain/args/software/WebSphereArg.java | 27 + .../domain/args/software/WeblogicArg.java | 35 + .../domain/args/software/WebspheremqArg.java | 25 + .../domain/args/software/ZookeeperArg.java | 35 + .../tse/core/domain/common/NginxConfig.java | 75 ++ .../core/domain/common/NginxHttpParam.java | 39 + .../tse/core/domain/common/NginxSite.java | 33 + .../core/domain/common/TomcatInstance.java | 106 ++ .../core/domain/front/maintain/DBFront.java | 52 + .../core/domain/front/maintain/FileFront.java | 20 + .../core/domain/front/maintain/GaiaFront.java | 26 + .../domain/front/maintain/HostAllowFront.java | 22 + .../core/domain/front/maintain/HttpFront.java | 32 + .../core/domain/front/maintain/SaltFront.java | 24 + .../domain/front/maintain/ScriptFront.java | 40 + .../front/maintain/ScriptLocalFront.java | 40 + .../domain/front/maintain/ScriptsFront.java | 20 + .../domain/front/maintain/ServiceFront.java | 19 + .../domain/front/maintain/TemplateFront.java | 26 + .../core/domain/front/maintain/UserFront.java | 17 + .../domain/front/software/ActivemqFront.java | 27 + .../domain/front/software/ApacheFront.java | 25 + .../front/software/ElasticsearchFront.java | 23 + .../core/domain/front/software/EtcdFront.java | 36 + .../domain/front/software/ExporterFront.java | 13 + .../domain/front/software/GitlabFront.java | 19 + .../core/domain/front/software/JdkFront.java | 24 + .../domain/front/software/JenkinsFront.java | 21 + .../core/domain/front/software/K8sFront.java | 40 + .../domain/front/software/KafkaFront.java | 90 ++ .../domain/front/software/KafkaZkFront.java | 27 + .../domain/front/software/MemcacheFront.java | 44 + .../domain/front/software/MongodbFront.java | 65 ++ .../domain/front/software/MysqlFront.java | 74 ++ .../core/domain/front/software/NfsFront.java | 29 + .../domain/front/software/NginxFront.java | 40 + .../domain/front/software/OracleFront.java | 31 + .../core/domain/front/software/PhpFront.java | 17 + .../front/software/PostgresqlFront.java | 117 ++ .../domain/front/software/RabbitmqFront.java | 72 ++ .../domain/front/software/RacIscsiFront.java | 24 + .../domain/front/software/RedisFront.java | 63 ++ .../domain/front/software/RocketmqFront.java | 45 + .../domain/front/software/SqlserverFront.java | 33 + .../domain/front/software/TomcatFront.java | 28 + .../domain/front/software/WeblogicFront.java | 33 + .../domain/front/software/WebsphereFront.java | 23 + .../front/software/WebspheremqFront.java | 19 + .../domain/front/software/ZookeeperFront.java | 31 + .../core/domain/group/ElasticsearchGroup.java | 123 +++ .../bocloud/tse/core/domain/group/Group.java | 23 + .../tse/core/domain/group/GroupHost.java | 21 + .../tse/core/domain/group/IscsiGroup.java | 45 + .../tse/core/domain/group/K8sGroup.java | 30 + .../tse/core/domain/group/KafkaGroup.java | 87 ++ .../tse/core/domain/group/MemcacheGroup.java | 36 + .../tse/core/domain/group/MongoGroup.java | 111 ++ .../tse/core/domain/group/MysqlGroup.java | 134 +++ .../tse/core/domain/group/NfsGroup.java | 55 + .../core/domain/group/PostgresqlGroup.java | 77 ++ .../tse/core/domain/group/RabbitmqGroup.java | 49 + .../tse/core/domain/group/RedisGroup.java | 100 ++ .../tse/core/domain/group/RocketmqGroup.java | 77 ++ .../tse/core/domain/group/ZookeeperGroup.java | 59 ++ .../bocloud/tse/core/domain/input/Depend.java | 17 + .../bocloud/tse/core/domain/input/Input.java | 31 + .../bocloud/tse/core/domain/input/Target.java | 33 + .../domain/input/maintain/BackupInput.java | 18 + .../core/domain/input/maintain/DBInput.java | 17 + .../core/domain/input/maintain/GaiaInput.java | 21 + .../domain/input/maintain/HostAllowInput.java | 19 + .../core/domain/input/maintain/HttpInput.java | 18 + .../domain/input/maintain/RecoveryInput.java | 18 + .../domain/input/maintain/ScriptInput.java | 19 + .../input/maintain/ScriptLocalInput.java | 19 + .../domain/input/maintain/ScriptsInput.java | 18 + .../domain/input/maintain/ServiceInput.java | 16 + .../domain/input/maintain/TemplateInput.java | 20 + .../domain/input/maintain/UploadInput.java | 17 + .../core/domain/input/maintain/UserInput.java | 17 + .../domain/input/software/ActivemqInput.java | 18 + .../domain/input/software/ApacheInput.java | 18 + .../input/software/ElasticsearchInput.java | 18 + .../core/domain/input/software/EtcdInput.java | 18 + .../domain/input/software/ExporterInput.java | 18 + .../domain/input/software/GitlabInput.java | 18 + .../domain/input/software/IscsiInput.java | 18 + .../domain/input/software/IscsicInput.java | 18 + .../domain/input/software/IscsisInput.java | 18 + .../core/domain/input/software/JdkInput.java | 18 + .../domain/input/software/JenkinsInput.java | 18 + .../core/domain/input/software/K8sInput.java | 18 + .../domain/input/software/KafkaInput.java | 18 + .../domain/input/software/MemcacheInput.java | 18 + .../domain/input/software/MongodbInput.java | 18 + .../domain/input/software/MysqlInput.java | 18 + .../core/domain/input/software/NfscInput.java | 18 + .../core/domain/input/software/NfssInput.java | 18 + .../domain/input/software/NginxInput.java | 18 + .../domain/input/software/OracleInput.java | 18 + .../core/domain/input/software/PhpInput.java | 18 + .../input/software/PostgresqlInput.java | 18 + .../domain/input/software/RabbitmqInput.java | 18 + .../domain/input/software/RedisInput.java | 18 + .../domain/input/software/RocketmqInput.java | 18 + .../domain/input/software/SqlserverInput.java | 18 + .../domain/input/software/TomcatInput.java | 18 + .../domain/input/software/WeblogicInput.java | 18 + .../domain/input/software/WebsphereInput.java | 18 + .../input/software/WebspheremqInput.java | 18 + .../domain/input/software/ZookeeperInput.java | 18 + .../core/exception/NodeFormatException.java | 30 + .../core/exception/TaskFormatException.java | 30 + .../com/bocloud/tse/core/module/Module.java | 29 + .../core/module/maintain/BackupModule.java | 22 + .../tse/core/module/maintain/GaiaModule.java | 24 + .../core/module/maintain/HostAllowModule.java | 22 + .../core/module/maintain/RecoveryModule.java | 22 + .../module/maintain/ScriptLocalModule.java | 22 + .../core/module/maintain/ScriptsModule.java | 22 + .../core/module/maintain/ServiceModule.java | 19 + .../core/module/maintain/TemplateModule.java | 22 + .../core/module/maintain/UploadModule.java | 19 + .../tse/core/module/maintain/UserModule.java | 22 + .../core/module/software/ActivemqModule.java | 19 + .../core/module/software/ApacheModule.java | 19 + .../module/software/ElasticsearchModule.java | 19 + .../tse/core/module/software/EtcdModule.java | 19 + .../core/module/software/ExporterModule.java | 19 + .../core/module/software/GitlabModule.java | 19 + .../tse/core/module/software/IscsiModule.java | 19 + .../tse/core/module/software/JdkModule.java | 18 + .../core/module/software/JenkinsModule.java | 19 + .../tse/core/module/software/K8sModule.java | 19 + .../tse/core/module/software/KafkaModule.java | 19 + .../core/module/software/MemcacheModule.java | 19 + .../tse/core/module/software/MongoModule.java | 19 + .../tse/core/module/software/MysqlModule.java | 19 + .../tse/core/module/software/NfsModule.java | 19 + .../tse/core/module/software/NginxModule.java | 19 + .../core/module/software/OracleModule.java | 19 + .../tse/core/module/software/PhpModule.java | 19 + .../module/software/PostgresqlModule.java | 19 + .../core/module/software/RabbitModule.java | 19 + .../tse/core/module/software/RedisModule.java | 19 + .../core/module/software/RocketmqModule.java | 19 + .../core/module/software/SqlserverModule.java | 19 + .../core/module/software/TomcatModule.java | 19 + .../core/module/software/WebSphereModule.java | 19 + .../core/module/software/WeblogicModule.java | 19 + .../module/software/WebspheremqModule.java | 19 + .../core/module/software/ZookeeperModule.java | 19 + .../com/bocloud/tse/core/utils/CronUtils.java | 100 ++ .../com/bocloud/tse/core/utils/DBDriver.java | 43 + .../com/bocloud/tse/core/utils/DBTool.java | 64 ++ bocloud.tse.entity/pom.xml | 18 + .../bocloud/tse/constant/CacheConstant.java | 12 + .../bocloud/tse/constant/CommonConstant.java | 9 + .../tse/constant/ExecuteTypeConstant.java | 8 + .../java/com/bocloud/tse/entity/Command.java | 62 ++ .../bocloud/tse/entity/CommandInstance.java | 37 + .../bocloud/tse/entity/Identification.java | 120 +++ .../com/bocloud/tse/entity/NodeModule.java | 67 ++ .../com/bocloud/tse/entity/NodeRelation.java | 46 + .../java/com/bocloud/tse/entity/Task.java | 83 ++ .../bocloud/tse/entity/TaskFailRecord.java | 87 ++ .../java/com/bocloud/tse/entity/TaskHost.java | 324 ++++++ .../com/bocloud/tse/entity/TaskInstance.java | 148 +++ .../bocloud/tse/entity/TaskInstanceHost.java | 48 + .../bocloud/tse/entity/TaskInstanceJob.java | 39 + .../java/com/bocloud/tse/entity/TaskNode.java | 110 ++ .../com/bocloud/tse/entity/TaskWorker.java | 70 ++ .../com/bocloud/tse/enums/AuthenMode.java | 40 + .../java/com/bocloud/tse/enums/Catalog.java | 92 ++ .../java/com/bocloud/tse/enums/Category.java | 142 +++ .../java/com/bocloud/tse/enums/Charset.java | 23 + .../java/com/bocloud/tse/enums/Status.java | 107 ++ .../com/bocloud/tse/enums/TaskAction.java | 9 + .../java/com/bocloud/tse/enums/TaskParam.java | 46 + .../java/com/bocloud/tse/enums/Topic.java | 49 + .../com/bocloud/tse/model/EngineModule.java | 12 + .../com/bocloud/tse/model/HostResult.java | 58 + .../main/java/com/bocloud/tse/model/Job.java | 52 + .../java/com/bocloud/tse/model/JobResult.java | 31 + .../com/bocloud/tse/model/NodeConfig.java | 40 + .../com/bocloud/tse/model/NodeControl.java | 31 + .../com/bocloud/tse/model/NodePosition.java | 16 + .../java/com/bocloud/tse/model/NodeSize.java | 17 + .../com/bocloud/tse/model/SaltCacheModel.java | 50 + .../java/com/bocloud/tse/model/SaltModel.java | 27 + .../tse/model/StateApplyResultModel.java | 24 + .../bocloud/tse/model/TaskActionMessage.java | 29 + .../java/com/bocloud/tse/model/TaskEdge.java | 55 + .../java/com/bocloud/tse/model/TaskGraph.java | 32 + .../com/bocloud/tse/model/TaskMessage.java | 33 + .../com/bocloud/tse/model/TaskResult.java | 52 + .../com/bocloud/tse/model/WorkerHost.java | 115 ++ .../bocloud/tse/model/WorkerHostResult.java | 116 ++ .../com/bocloud/tse/model/WorkerLoadInfo.java | 30 + .../bocloud/tse/model/WorkerMetricInfo.java | 32 + .../bocloud/tse/model/WorkerWeightInfo.java | 25 + bocloud.tse.scheduler/pom.xml | 58 + .../tse/scheduler/core/AbstractScheduler.java | 62 ++ .../bocloud/tse/scheduler/core/DataCache.java | 123 +++ .../tse/scheduler/core/JobChannel.java | 32 + .../tse/scheduler/core/JobScheduler.java | 143 +++ .../tse/scheduler/core/SchedulerDaemon.java | 135 +++ .../bocloud/tse/scheduler/core/TaskCache.java | 127 +++ .../tse/scheduler/executor/NodeExecutor.java | 303 ++++++ .../tse/scheduler/executor/TaskExecutor.java | 956 +++++++++++++++++ .../failover/TaskFailoverExecutor.java | 139 +++ .../failover/TaskFailoverScheduler.java | 153 +++ .../tse/scheduler/jobclient/JobClient.java | 110 ++ .../jobclient/JobSchedulerHandler.java | 148 +++ .../listener/JobCompletedListener.java | 42 + .../listener/TaskActionListener.java | 80 ++ .../tse/scheduler/listener/TaskListener.java | 50 + .../tse/scheduler/selector/NodeSelector.java | 27 + .../scheduler/selector/TaskNodeSelector.java | 67 ++ .../tse/scheduler/utils/BeanUtils.java | 126 +++ .../bocloud/tse/scheduler/utils/IpUtil.java | 465 ++++++++ .../scheduler/utils/JobFormatDetector.java | 42 + .../tse/scheduler/utils/JsonParseUtils.java | 33 + .../tse/scheduler/utils/JudgeCondition.java | 21 + .../utils/NodeDependencyHandler.java | 288 +++++ .../utils/TaskProgressPublisher.java | 38 + .../tse/scheduler/worker/AbstractWorker.java | 82 ++ .../tse/scheduler/worker/ParamBuilder.java | 39 + .../scheduler/worker/WorkerDispatcher.java | 358 +++++++ .../tse/scheduler/worker/WorkerFactory.java | 60 ++ .../scheduler/worker/WorkerLoadPolicy.java | 219 ++++ .../worker/executor/RemoteSaltStack.java | 996 ++++++++++++++++++ .../worker/executor/RemoteWorker.java | 248 +++++ .../executor/WorkerRemoteMQService.java | 45 + .../worker/executor/WorkerRemoteService.java | 76 ++ .../worker/listener/AbstractTaskListener.java | 51 + .../scheduler/worker/listener/JobTask.java | 42 + .../worker/listener/MaintainTaskListener.java | 68 ++ .../listener/ScheduledTaskListener.java | 38 + .../worker/listener/SoftwareTaskListener.java | 64 ++ .../worker/listener/TaskJobListener.java | 44 + .../worker/listener/TaskResultListener.java | 33 + .../worker/locator/ClazzLocator.java | 121 +++ .../worker/locator/InputClassLocator.java | 51 + .../worker/locator/WorkerClassLocator.java | 51 + .../worker/maintain/BackupWorker.java | 91 ++ .../worker/maintain/DatabaseWorker.java | 366 +++++++ .../scheduler/worker/maintain/GaiaWorker.java | 73 ++ .../worker/maintain/HostAllowWorker.java | 86 ++ .../worker/maintain/MaintainWorker.java | 274 +++++ .../worker/maintain/MethodWorker.java | 117 ++ .../worker/maintain/RecoveryWorker.java | 92 ++ .../worker/maintain/ScriptLocalWorker.java | 103 ++ .../worker/maintain/ScriptWorker.java | 227 ++++ .../worker/maintain/ScriptsWorker.java | 205 ++++ .../worker/maintain/ServiceWorker.java | 95 ++ .../worker/maintain/TemplateWorker.java | 98 ++ .../worker/maintain/UploadWorker.java | 97 ++ .../scheduler/worker/maintain/UserWorker.java | 134 +++ .../worker/software/ActivemqWorker.java | 105 ++ .../worker/software/ApacheWorker.java | 87 ++ .../worker/software/ElasticsearchWorker.java | 83 ++ .../scheduler/worker/software/EtcdWorker.java | 80 ++ .../worker/software/ExporterWorker.java | 79 ++ .../worker/software/GitlabWorker.java | 87 ++ .../worker/software/IscsiWorker.java | 93 ++ .../worker/software/IscsicWorker.java | 84 ++ .../worker/software/IscsisWorker.java | 85 ++ .../scheduler/worker/software/JdkWorker.java | 84 ++ .../worker/software/JenkinsWorker.java | 87 ++ .../scheduler/worker/software/K8sWorker.java | 89 ++ .../worker/software/KafkaWorker.java | 119 +++ .../worker/software/MemcacheWorker.java | 84 ++ .../worker/software/MongodbWorker.java | 101 ++ .../worker/software/MysqlWorker.java | 120 +++ .../scheduler/worker/software/NfscWorker.java | 83 ++ .../scheduler/worker/software/NfssWorker.java | 80 ++ .../worker/software/NginxWorker.java | 87 ++ .../worker/software/OracleWorker.java | 85 ++ .../scheduler/worker/software/PhpWorker.java | 80 ++ .../worker/software/PostgresqlWorker.java | 128 +++ .../worker/software/RabbitmqWorker.java | 115 ++ .../worker/software/RedisWorker.java | 97 ++ .../worker/software/RocketmqWorker.java | 84 ++ .../worker/software/SoftwareWorker.java | 249 +++++ .../worker/software/SqlserverWorker.java | 83 ++ .../worker/software/TomcatWorker.java | 86 ++ .../worker/software/WeblogicWorker.java | 80 ++ .../worker/software/WebsphereWorker.java | 78 ++ .../worker/software/WebspheremqWorker.java | 80 ++ .../worker/software/ZookeeperWorker.java | 83 ++ .../worker/utils/ResultMessageHandler.java | 58 + .../worker/utils/SaltClientCache.java | 68 ++ .../worker/utils/SaltClientModel.java | 33 + bocloud.tse.service/pom.xml | 31 + .../com/bocloud/tse/intf/CommandService.java | 12 + .../com/bocloud/tse/intf/EngineService.java | 21 + .../bocloud/tse/intf/NodeModuleService.java | 17 + .../bocloud/tse/intf/TaskInstanceService.java | 54 + .../com/bocloud/tse/intf/TaskNodeService.java | 64 ++ .../com/bocloud/tse/intf/TaskService.java | 34 + .../repository/CommandInstanceRepository.java | 30 + .../tse/repository/CommandRepository.java | 27 + .../repository/IdentificationRepository.java | 32 + .../tse/repository/NodeModuleRepository.java | 43 + .../repository/NodeRelationRepository.java | 80 ++ .../repository/TaskFailRecordRepository.java | 60 ++ .../tse/repository/TaskHostRepository.java | 31 + .../TaskInstanceHostRepository.java | 36 + .../repository/TaskInstanceJobRepository.java | 57 + .../repository/TaskInstanceRepository.java | 98 ++ .../tse/repository/TaskNodeRepository.java | 87 ++ .../tse/repository/TaskRepository.java | 61 ++ .../tse/service/CommandServiceImpl.java | 88 ++ .../tse/service/EngineServiceImpl.java | 179 ++++ .../tse/service/NodeModuleServiceImpl.java | 31 + .../tse/service/TaskInstanceServiceImpl.java | 288 +++++ .../tse/service/TaskNodeServiceImpl.java | 163 +++ .../bocloud/tse/service/TaskServiceImpl.java | 338 ++++++ .../service/internal/TseInternalService.java | 72 ++ .../com/bocloud/tse/utils/NodeHelper.java | 186 ++++ pom.xml | 126 +++ 373 files changed, 23896 insertions(+) create mode 100644 README.md create mode 100644 bocloud.tse.booter/pom.xml create mode 100644 bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/Application.java create mode 100644 bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/RabbitMQConfiguration.java create mode 100644 bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/SwaggerConfiguration.java create mode 100644 bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/WebInterceptorConfiguration.java create mode 100644 bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/controller/EngineController.java create mode 100644 bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/controller/SchedulerController.java create mode 100644 bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SysLogAppenderTcpAndUdp.java create mode 100644 bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SysLogLevelConvertor.java create mode 100644 bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SyslogOutputStreamTcpAndUdp.java create mode 100644 bocloud.tse.booter/src/main/resources/application.yml create mode 100644 bocloud.tse.booter/src/main/resources/banner.txt create mode 100644 bocloud.tse.booter/src/main/resources/logback-spring.xml create mode 100644 bocloud.tse.core/pom.xml create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Arg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Module.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Worker.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/Option.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/TargetGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/WorkerScript.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/FileArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/HostAllowArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ScriptLocalArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ScriptsArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ServiceArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/UserArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ActivemqArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ApacheArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ElasticsearchArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/EtcdArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ExporterArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/GitlabArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/JdkArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/JenkinsArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/K8sArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/KafkaArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MemcacheArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MongodbArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MysqlArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/NfsArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/NginxArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/OracleArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/PhpArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/PostgresqlArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RabbitmqArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RacIscsiArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RedisArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RocketmqArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/SqlserverArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/TomcatArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WebSphereArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WeblogicArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WebspheremqArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ZookeeperArg.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxConfig.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxHttpParam.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxSite.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/TomcatInstance.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/DBFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/FileFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/GaiaFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/HostAllowFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/HttpFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/SaltFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptLocalFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptsFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ServiceFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/TemplateFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/UserFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ActivemqFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ApacheFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ElasticsearchFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/EtcdFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ExporterFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/GitlabFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/JdkFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/JenkinsFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/K8sFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/KafkaFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/KafkaZkFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MemcacheFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MongodbFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MysqlFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/NfsFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/NginxFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/OracleFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/PhpFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/PostgresqlFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RabbitmqFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RacIscsiFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RedisFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RocketmqFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/SqlserverFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/TomcatFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WeblogicFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WebsphereFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WebspheremqFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ZookeeperFront.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/ElasticsearchGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/Group.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/GroupHost.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/IscsiGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/K8sGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/KafkaGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MemcacheGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MongoGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MysqlGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/NfsGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/PostgresqlGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RabbitmqGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RedisGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RocketmqGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/ZookeeperGroup.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Depend.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Input.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Target.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/BackupInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/DBInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/GaiaInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/HostAllowInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/HttpInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/RecoveryInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptLocalInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptsInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ServiceInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/TemplateInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/UploadInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/UserInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ActivemqInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ApacheInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ElasticsearchInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/EtcdInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ExporterInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/GitlabInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsiInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsicInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsisInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/JdkInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/JenkinsInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/K8sInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/KafkaInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MemcacheInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MongodbInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MysqlInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NfscInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NfssInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NginxInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/OracleInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/PhpInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/PostgresqlInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RabbitmqInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RedisInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RocketmqInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/SqlserverInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/TomcatInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WeblogicInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WebsphereInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WebspheremqInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ZookeeperInput.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/exception/NodeFormatException.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/exception/TaskFormatException.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/Module.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/BackupModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/GaiaModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/HostAllowModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/RecoveryModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ScriptLocalModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ScriptsModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ServiceModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/TemplateModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/UploadModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/UserModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ActivemqModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ApacheModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ElasticsearchModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/EtcdModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ExporterModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/GitlabModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/IscsiModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/JdkModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/JenkinsModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/K8sModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/KafkaModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MemcacheModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MongoModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MysqlModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/NfsModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/NginxModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/OracleModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/PhpModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/PostgresqlModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RabbitModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RedisModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RocketmqModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/SqlserverModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/TomcatModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WebSphereModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WeblogicModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WebspheremqModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ZookeeperModule.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/CronUtils.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/DBDriver.java create mode 100644 bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/DBTool.java create mode 100644 bocloud.tse.entity/pom.xml create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/CacheConstant.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/CommonConstant.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/ExecuteTypeConstant.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Command.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/CommandInstance.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Identification.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/NodeModule.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/NodeRelation.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Task.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskFailRecord.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskHost.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstance.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstanceHost.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstanceJob.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskNode.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskWorker.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/AuthenMode.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/Catalog.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/Category.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/Charset.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/Status.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/TaskAction.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/TaskParam.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/Topic.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/EngineModule.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/HostResult.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/Job.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/JobResult.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/NodeConfig.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/NodeControl.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/NodePosition.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/NodeSize.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/SaltCacheModel.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/SaltModel.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/StateApplyResultModel.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/TaskActionMessage.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/TaskEdge.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/TaskGraph.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/TaskMessage.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/TaskResult.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/WorkerHost.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/WorkerHostResult.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/WorkerLoadInfo.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/WorkerMetricInfo.java create mode 100644 bocloud.tse.entity/src/main/java/com/bocloud/tse/model/WorkerWeightInfo.java create mode 100644 bocloud.tse.scheduler/pom.xml create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/core/AbstractScheduler.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/core/DataCache.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/core/JobChannel.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/core/JobScheduler.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/core/SchedulerDaemon.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/core/TaskCache.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/executor/NodeExecutor.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/executor/TaskExecutor.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/failover/TaskFailoverExecutor.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/failover/TaskFailoverScheduler.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/jobclient/JobClient.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/jobclient/JobSchedulerHandler.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/listener/JobCompletedListener.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/listener/TaskActionListener.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/listener/TaskListener.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/selector/NodeSelector.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/selector/TaskNodeSelector.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/utils/BeanUtils.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/utils/IpUtil.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/utils/JobFormatDetector.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/utils/JsonParseUtils.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/utils/JudgeCondition.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/utils/NodeDependencyHandler.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/utils/TaskProgressPublisher.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/AbstractWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/ParamBuilder.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/WorkerDispatcher.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/WorkerFactory.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/WorkerLoadPolicy.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/executor/RemoteSaltStack.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/executor/RemoteWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/executor/WorkerRemoteMQService.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/executor/WorkerRemoteService.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/listener/AbstractTaskListener.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/listener/JobTask.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/listener/MaintainTaskListener.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/listener/ScheduledTaskListener.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/listener/SoftwareTaskListener.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/listener/TaskJobListener.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/listener/TaskResultListener.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/locator/ClazzLocator.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/locator/InputClassLocator.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/locator/WorkerClassLocator.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/BackupWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/DatabaseWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/GaiaWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/HostAllowWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/MaintainWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/MethodWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/RecoveryWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/ScriptLocalWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/ScriptWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/ScriptsWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/ServiceWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/TemplateWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/UploadWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/maintain/UserWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/ActivemqWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/ApacheWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/ElasticsearchWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/EtcdWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/ExporterWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/GitlabWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/IscsiWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/IscsicWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/IscsisWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/JdkWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/JenkinsWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/K8sWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/KafkaWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/MemcacheWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/MongodbWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/MysqlWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/NfscWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/NfssWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/NginxWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/OracleWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/PhpWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/PostgresqlWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/RabbitmqWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/RedisWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/RocketmqWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/SoftwareWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/SqlserverWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/TomcatWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/WeblogicWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/WebsphereWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/WebspheremqWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/software/ZookeeperWorker.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/utils/ResultMessageHandler.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/utils/SaltClientCache.java create mode 100644 bocloud.tse.scheduler/src/main/java/com/bocloud/tse/scheduler/worker/utils/SaltClientModel.java create mode 100644 bocloud.tse.service/pom.xml create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/intf/CommandService.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/intf/EngineService.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/intf/NodeModuleService.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/intf/TaskInstanceService.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/intf/TaskNodeService.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/intf/TaskService.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/CommandInstanceRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/CommandRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/IdentificationRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/NodeModuleRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/NodeRelationRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/TaskFailRecordRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/TaskHostRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/TaskInstanceHostRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/TaskInstanceJobRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/TaskInstanceRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/TaskNodeRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/repository/TaskRepository.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/service/CommandServiceImpl.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/service/EngineServiceImpl.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/service/NodeModuleServiceImpl.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/service/TaskInstanceServiceImpl.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/service/TaskNodeServiceImpl.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/service/TaskServiceImpl.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/service/internal/TseInternalService.java create mode 100644 bocloud.tse.service/src/main/java/com/bocloud/tse/utils/NodeHelper.java create mode 100644 pom.xml diff --git a/README.md b/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ + diff --git a/bocloud.tse.booter/pom.xml b/bocloud.tse.booter/pom.xml new file mode 100644 index 0000000..f16fb5d --- /dev/null +++ b/bocloud.tse.booter/pom.xml @@ -0,0 +1,150 @@ + + 4.0.0 + + com.bocloud + bocloud.tse + 6.5.0-LTS-SZ + + bocloud.tse.booter + ${bocloud.booter.version} + + + + org.springframework.boot + spring-boot-starter-web + + + org.hibernate.validator + hibernate-validator + + + + + + com.freedom + megatron.microservice + + + com.bocloud + bocloud.tse.scheduler + + + com.google.code.gson + gson + + + + + com.google.code.gson + gson + 2.8.2 + + + + org.slf4j + slf4j-api + 2.0.7 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + true + 21 + 21 + + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + + + + com.bocloud.tse.booter.Application + true + false + libs/ + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.6.1 + + + + copy-dependencies + + + jar + jar + runtime + ${project.build.directory}/libs + + + + + + + + + bocloud.booter.tomcat + + 6.5.0-LTS-SZ + + + + org.springframework.boot + spring-boot-starter-web + + + org.hibernate.validator + hibernate-validator + + + + + + + bocloud.booter.tongweb + + 6.5.0-LTS-SZ-TONGWEB + + + + com.tongweb + tongweb-embed + 7.0.E.2 + + + com.tongweb.springboot + tongweb-spring-boot-starter + 2.x.0.RELEASE + + + org.springframework.boot + spring-boot-starter-web + + + org.hibernate.validator + hibernate-validator + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + + + \ No newline at end of file diff --git a/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/Application.java b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/Application.java new file mode 100644 index 0000000..bbafc00 --- /dev/null +++ b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/Application.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.booter; + +import org.springframework.amqp.rabbit.annotation.EnableRabbit; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.scheduling.annotation.EnableScheduling; + +@SpringBootApplication +@EnableRabbit +@EnableScheduling +@ComponentScan(value = {"com.bocloud", "com.megatron"}) +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/RabbitMQConfiguration.java b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/RabbitMQConfiguration.java new file mode 100644 index 0000000..7c1e805 --- /dev/null +++ b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/RabbitMQConfiguration.java @@ -0,0 +1,129 @@ +package com.bocloud.tse.booter.config; + +import java.util.Map; + +import com.bocloud.tse.scheduler.worker.listener.TaskResultListener; +import org.springframework.amqp.core.AcknowledgeMode; +import org.springframework.amqp.core.Binding; +import org.springframework.amqp.core.BindingBuilder; +import org.springframework.amqp.core.DirectExchange; +import org.springframework.amqp.core.Queue; +import org.springframework.amqp.core.TopicExchange; +import org.springframework.amqp.rabbit.connection.ConnectionFactory; +import org.springframework.amqp.rabbit.core.RabbitAdmin; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; +import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; +import org.springframework.amqp.support.converter.MessageConverter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; + +import com.bocloud.tse.scheduler.listener.TaskActionListener; +import com.megatron.common.utils.MapTools; +import com.megatron.framework.core.CurrentService; + +/** + * rabbitmq相关配置 + */ +@Configuration +@ConfigurationProperties(prefix = "spring.rabbitmq") +public class RabbitMQConfiguration { + + @Autowired + private ConnectionFactory connectionFactory; + private Map arguments = MapTools.simpleMap("x-ha-policy", "all"); + + /** + * 声明任务动作队列 + */ + @Bean + public Queue declareTaskActionQueue(CurrentService service) { + return new Queue("task.action.queue.tse." + service.getService().getHost() + "_" + service.getService().getPort(), true, false, true, arguments); + } + + /** + * 定义direct exchange + */ + @Bean + public DirectExchange defineDirectExchange() { + return new DirectExchange("bocloud.direct.exchange", true, true, arguments); + } + + @Bean + public Queue declareTaskResultQueue(CurrentService service) { + return new Queue("task.result.queue." + service.getService().getHost() + "_" + service.getService().getPort(), + true, false, true, arguments); + } + + /** + * 定义topic exchange + */ + @Bean + public TopicExchange defineTopicExchange() { + return new TopicExchange("bocloud.topic.exchange", true, true, arguments); + } + + /** + * 任务动作队列绑定bocloud.topic.exchange + */ + @Bean + public Binding bindingTaskActionQueue(CurrentService service) { + return BindingBuilder.bind(declareTaskActionQueue(service)).to(defineTopicExchange()) + .with("topic.task.action.#"); + } + + /** + * 绑定任务执行结果队列 + * + * @param service + * @return + */ + @Bean + public Binding bindingTaskResultQueue(CurrentService service) { + return BindingBuilder.bind(declareTaskResultQueue(service)).to(defineDirectExchange()).withQueueName(); + } + @Bean + public SimpleMessageListenerContainer autoActionListener(CurrentService service, + TaskActionListener taskActionListener) { + SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory); + container.setQueues(declareTaskActionQueue(service)); + container.setAcknowledgeMode(AcknowledgeMode.AUTO); // 设置确认模式自动确认 + container.setMessageListener(taskActionListener); + return container; + } + + @Bean + public SimpleMessageListenerContainer autoTaskResultListener(CurrentService service, + TaskResultListener taskResultListener) { + SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory); + container.setQueues(declareTaskResultQueue(service)); + container.setAcknowledgeMode(AcknowledgeMode.AUTO); // 设置确认模式自动确认 + container.setMessageListener(taskResultListener); + return container; + } + @Bean + public MessageConverter messageConverter() { + return new Jackson2JsonMessageConverter(); + } + + @Bean + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + public RabbitTemplate amqpTemplate() { + RabbitTemplate amqpTemplate = new RabbitTemplate(connectionFactory); + amqpTemplate.setMessageConverter(messageConverter()); + amqpTemplate.setExchange(defineDirectExchange().getName()); + return amqpTemplate; + } + + @Bean + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + public RabbitAdmin rabbitAdmin() { + RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory); + return rabbitAdmin; + } + +} diff --git a/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/SwaggerConfiguration.java b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/SwaggerConfiguration.java new file mode 100644 index 0000000..4983b1c --- /dev/null +++ b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/SwaggerConfiguration.java @@ -0,0 +1,21 @@ +package com.bocloud.tse.booter.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.Info; + +@Configuration +public class SwaggerConfiguration { + + @Bean + public OpenAPI openAPI() { + Contact contact = new Contact().name("未伟").email("weiwei@beyondcent.com").url("http://www.bocloud.com/"); + Info info = new Info().title("任务引擎服务API接口文档").description("任务引擎服务API接口文档") + .termsOfService("http://www.bocloud.com/").contact(contact).version("1.0"); + return new OpenAPI().info(info); + } + +} diff --git a/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/WebInterceptorConfiguration.java b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/WebInterceptorConfiguration.java new file mode 100644 index 0000000..c0954b7 --- /dev/null +++ b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/config/WebInterceptorConfiguration.java @@ -0,0 +1,60 @@ +package com.bocloud.tse.booter.config; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.bocloud.cmp.boot.config.PagerArgumentResolver; +import com.bocloud.cmp.boot.interceptor.AccessInterceptor; +import com.bocloud.cmp.boot.interceptor.LogInterceptor; +import com.megatron.framework.core.InterceptorBridge; +import com.megatron.framework.core.config.InterceptorConfiguration; +import com.megatron.framework.core.domain.InterceptorEntity; + +import lombok.extern.slf4j.Slf4j; + +/** + * 拦截器配置类 + */ +@Slf4j +@Component +public class WebInterceptorConfiguration implements InterceptorConfiguration { + + private static final String[] ACCESS_EXCLUDES = new String[] {"/status", "/status/db", "/status/**", + "/v1/status/**", "/login", "/sso", "/v1/logview", "/v1/logzip", "/v1/config/**", "/v1/plugins/**", "/*/*.css", + "/*/*.js", "/*/*.png", "/*/*.jpg", "/*/*.jpeg", "/*.html", "/*/*.html", "/swagger-resources/**", "/favicon.ico", + "/webjars/**", "/v3/**", "/swagger-ui.html/**", "**/api-docs", "/error", "/favicon.ico"}; + private static final String[] LOG_EXCLUDES = new String[] {"/*/*.css", "/*/*.js", "/*/*.png", "/*/*.jpg", + "/*/*.jpeg", "/*.html", "/*/*.html", "/swagger-resources/**", "/favicon.ico", "/webjars/**", "/v3/**", + "/swagger-ui.html/**", "**/api-docs", "/error", "/favicon.ico"}; + private static final String[] INCLUDES = new String[] {"/**"}; + private final LogInterceptor logInterceptor; + private final AccessInterceptor accessInterceptor; + + @Autowired + public WebInterceptorConfiguration(AccessInterceptor accessInterceptor, LogInterceptor logInterceptor) { + this.logInterceptor = logInterceptor; + this.accessInterceptor = accessInterceptor; + } + + @Override + public InterceptorBridge buildBridge() { + log.info("start to build interceptors..."); + InterceptorBridge bridge = new InterceptorBridge(); + InterceptorEntity accessEntity = InterceptorEntity.builder().interceptor(accessInterceptor).includes(INCLUDES) + .excludes(ACCESS_EXCLUDES).order(0).build(); + InterceptorEntity auditLogEntity = InterceptorEntity.builder().interceptor(logInterceptor).includes(INCLUDES) + .excludes(LOG_EXCLUDES).order(1).build(); + List interceptors = new ArrayList<>(); + interceptors.add(accessEntity); + interceptors.add(auditLogEntity); + bridge.setInterceptors(interceptors); + bridge.setResolvers(Collections.singletonList(new PagerArgumentResolver())); + bridge.setMessageConverters(new ArrayList<>(0)); + log.info("build interceptors success!!!"); + return bridge; + } +} diff --git a/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/controller/EngineController.java b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/controller/EngineController.java new file mode 100644 index 0000000..0f27ae5 --- /dev/null +++ b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/controller/EngineController.java @@ -0,0 +1,74 @@ +package com.bocloud.tse.booter.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.bocloud.tse.intf.EngineService; +import com.bocloud.tse.model.EngineModule; +import com.bocloud.tse.scheduler.core.JobScheduler; +import com.megatron.common.model.GeneralResult; +import com.megatron.common.model.RequestContext; +import com.megatron.common.utils.Common; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; + +@RestController +@RequestMapping("/v1/engines") +@Tag(name = "任务引擎管理") +public class EngineController { + + @Autowired + private EngineService engineService; + @Autowired + private JobScheduler scheduler; + + @Operation(summary = "任务引擎列表") + @GetMapping + public GeneralResult services() { + return engineService.services(); + } + + @Operation(summary = "任务引擎状态") + @GetMapping("/status") + public GeneralResult status() { + return new GeneralResult<>(true, scheduler.isRunning(), "任务引擎状态查询成功"); + } + + @Operation(summary = "任务引擎操作(开启/关闭)") + @PostMapping("/action") + public GeneralResult action(@RequestBody EngineModule module) { + GeneralResult result = engineService.action(module); + if (result.isSuccess() && engineService.checkInstance(module.getInstance())) { + String action = module.getAction(); + if ("start".equals(action) && !scheduler.isRunning()) { + scheduler.switchOn(); + } else if ("stop".equals(action) && scheduler.isRunning()) { + scheduler.switchOff(); + } + } + return result; + } + + @PutMapping(value = "/exclude") + @Operation(tags = { "CMC", "CSC" }, summary = "任务引擎排除") + public GeneralResult taskExclude(@RequestParam(value = "instance") String instance, + @Value(Common.REQ_CONTEXT) RequestContext context) { + return engineService.exclude(instance, context.getTarget()); + } + + @PutMapping(value = "/recover") + @Operation(tags = { "CMC", "CSC" }, summary = "任务引擎恢复") + public GeneralResult taskRecover(@RequestParam(value = "instance") String instance, + @Value(Common.REQ_CONTEXT) RequestContext context) { + return engineService.recover(instance, context.getTarget()); + } + +} diff --git a/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/controller/SchedulerController.java b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/controller/SchedulerController.java new file mode 100644 index 0000000..b598950 --- /dev/null +++ b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/controller/SchedulerController.java @@ -0,0 +1,93 @@ +package com.bocloud.tse.booter.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Queue; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.alibaba.fastjson.JSONObject; +import com.bocloud.tse.intf.TaskInstanceService; +import com.bocloud.tse.model.Job; +import com.bocloud.tse.scheduler.core.JobChannel; +import com.bocloud.tse.scheduler.core.JobScheduler; +import com.bocloud.tse.scheduler.core.TaskCache; +import com.bocloud.tse.scheduler.executor.NodeExecutor; +import com.bocloud.tse.scheduler.executor.TaskExecutor; +import com.megatron.common.model.GeneralResult; +import com.megatron.common.model.Result; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; + +/** + * 状态控制器 + */ +@RestController +@RequestMapping("/v1") +@Tag(name = "任务状态管理") +public class SchedulerController { + + @Autowired + private JobScheduler scheduler; + @Autowired + private TaskInstanceService instanceService; + @Autowired + private JobChannel channel; + + private TaskCache cache = TaskCache.instance(); + + @GetMapping("/status/task/total") + @Operation(tags = { "CMC" }, summary = "任务整体信息") + public GeneralResult> totalStatus() { + Map map = new HashMap<>(); + map.put("RunningTask", cache.getTaskExecutorPool().size()); + map.put("RunningNode", cache.getNodeExecutorPool().size()); + return new GeneralResult<>(true, map, "success"); + } + + @GetMapping("/status/task/running") + @Operation(tags = { "CMC" }, summary = "执行中任务信息") + public GeneralResult> runningTask() { + return new GeneralResult<>(true, cache.getTaskExecutorPool(), "success"); + } + + @GetMapping("/status/node/running") + @Operation(tags = { "CMC" }, summary = "执行中任务节点信息") + public GeneralResult> runningNode() { + return new GeneralResult<>(true, cache.getNodeExecutorPool(), "success"); + } + + @GetMapping("/status/task/waiting") + @Operation(tags = { "CMC" }, summary = "等待中任务信息") + public GeneralResult> waitingTask() { + return new GeneralResult<>(true, instanceService.getAllJobs(), "success"); + } + + @PostMapping("/task/scheduler") + @Operation(tags = { "CMC" }, summary = "任务调度处理") + public GeneralResult> scheduler(@RequestBody JSONObject object) { + String type = object.getString("type"); + if ("insert".equalsIgnoreCase(type)) { + Job job = JSONObject.parseObject(object.getString("data"), Job.class); + boolean result = channel.insertTask(job); + if (!result) { + return new GeneralResult<>(false, "任务启动失败"); + } + } else if ("remove".equalsIgnoreCase(type)) { + Result result = scheduler.removeCronTask(object.getString("data")); + if (result.isFailed()) { + return new GeneralResult<>(false, "任务移除失败"); + } + } else { + return new GeneralResult<>(false, "暂不支持该类操作"); + } + return new GeneralResult<>(true, "success"); + } +} diff --git a/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SysLogAppenderTcpAndUdp.java b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SysLogAppenderTcpAndUdp.java new file mode 100644 index 0000000..7cb9fc9 --- /dev/null +++ b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SysLogAppenderTcpAndUdp.java @@ -0,0 +1,15 @@ +package com.bocloud.tse.booter.syslog; + +import ch.qos.logback.classic.net.SyslogAppender; +import ch.qos.logback.core.net.SyslogOutputStream; + +import java.net.SocketException; +import java.net.UnknownHostException; + +public class SysLogAppenderTcpAndUdp extends SyslogAppender { + + @Override + public SyslogOutputStream createOutputStream() throws SocketException, UnknownHostException { + return new SyslogOutputStreamTcpAndUdp(getSyslogHost(), getPort()); + } +} diff --git a/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SysLogLevelConvertor.java b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SysLogLevelConvertor.java new file mode 100644 index 0000000..6966152 --- /dev/null +++ b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SysLogLevelConvertor.java @@ -0,0 +1,22 @@ +package com.bocloud.tse.booter.syslog; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.pattern.CompositeConverter; + +import java.util.HashMap; +import java.util.Map; + +public class SysLogLevelConvertor extends CompositeConverter { + + private static final Map MAP = new HashMap<>() {{ + this.put("DEBUG", "7"); + this.put("INFO", "6"); + this.put("WARN", "4"); + this.put("ERROR", "3"); + }}; + + @Override + protected String transform(ILoggingEvent iLoggingEvent, String s) { + return MAP.getOrDefault(iLoggingEvent.getLevel().toString(), iLoggingEvent.getLevel().toString()); + } +} \ No newline at end of file diff --git a/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SyslogOutputStreamTcpAndUdp.java b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SyslogOutputStreamTcpAndUdp.java new file mode 100644 index 0000000..ed353d5 --- /dev/null +++ b/bocloud.tse.booter/src/main/java/com/bocloud/tse/booter/syslog/SyslogOutputStreamTcpAndUdp.java @@ -0,0 +1,70 @@ +package com.bocloud.tse.booter.syslog; + +import ch.qos.logback.core.net.SyslogOutputStream; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; +import java.net.SocketException; +import java.net.UnknownHostException; + +public class SyslogOutputStreamTcpAndUdp extends SyslogOutputStream { + + private static final int MAX_LEN_TCP = 1024; + + private InetAddress addressTcp; + private Socket socketTcp; + private ByteArrayOutputStream baosTcp = new ByteArrayOutputStream(); + final private int portTcp; + + public SyslogOutputStreamTcpAndUdp(String syslogHost, int port) throws SocketException, UnknownHostException { + super(syslogHost, port); + this.addressTcp = InetAddress.getByName(syslogHost); + this.portTcp = port; + try { + this.socketTcp = new Socket(addressTcp, portTcp); + } catch (IOException e) { + throw new SocketException(e); + } + } + + @Override + public void write(byte[] byteArray, int offset, int len) throws IOException { + super.write(byteArray, offset, len); + baosTcp.write(byteArray, offset, len); + } + + @Override + public void flush() throws IOException { + super.flush(); + + byte[] bytes = baosTcp.toByteArray(); + + // clean up for next round + if (baosTcp.size() > MAX_LEN_TCP) { + baosTcp = new ByteArrayOutputStream(); + } else { + baosTcp.reset(); + } + + // after a failure, it can happen that bytes.length is zero + // in that case, there is no point in sending out an empty message/ + if (bytes.length == 0) { + return; + } + if (this.socketTcp != null) { + socketTcp.getOutputStream().write(bytes); + } + } + + @Override + public void close() { + super.close(); + addressTcp = null; + try { + socketTcp.close(); + } catch (IOException ignored) { + } + } +} diff --git a/bocloud.tse.booter/src/main/resources/application.yml b/bocloud.tse.booter/src/main/resources/application.yml new file mode 100644 index 0000000..d7b9f51 --- /dev/null +++ b/bocloud.tse.booter/src/main/resources/application.yml @@ -0,0 +1,104 @@ +server: + port: '18088' + +spring: + application: + name: tse + thread: + core: + pool: + size: 1000 + max: + pool: + size: 1000 + queue: + capacity: 2000 + upload: + path: /home/cmp + cloud: + zookeeper: + connect-string: 10.20.12.65:2181 + home: /bocloud/cmp/product + auth: + username: bocloud + password: AES@CoU6oY/zuAoBbu6cdgOKlA== + config: + enabled: false + discovery: + register: true + enable: true + instance-host: 10.20.12.65 + instance-port: ${server.port} + root: ${spring.cloud.zookeeper.home}/services + conn: + timeout: '50000' + session: + timeout: '50000' + datasource: + druid: + dialect: mysql + url: jdbc:mysql://10.20.12.65:3306/cop?characterEncoding=utf8&useSSL=false + username: cmp + password: Gy2VghUgWHszx8gLFT4etT9ZVOukJi73KoG1q3Oz/DAz5h2mFVVunjcyaaKT9tMPsBgoWBFRmrYbhgqJqT/Q8A== + initialSize: '2' + maxActive: '30' + minIdle: '2' + maxWait: '60000' + poolPreparedStatements: 'true' + maxOpenPreparedStatements: '20' + maxPoolPreparedStatementPerConnectionSize: '20' + validationQuery: select 1 + validationQueryTimeout: '1' + testOnBorrow: 'true' + testOnReturn: 'true' + testWhileIdle: 'true' + remove-abandoned: 'true' + remove-abandoned-timeout: '60' + log-abandoned: 'true' + timeBetweenEvictionRunsMillis: '10000' + minEvictableIdleTimeMillis: '30001' + asyncCloseConnectionEnable: 'true' + filters: config,stat,wall,log4j + publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJfVJOpXYGy8aBCk3zEoKKQDTVCCvJwhhithfY/I5PUvzFBAYygunmuCtUhzPUZ+1RJQds0Q4fu07m5mr5kv5ocCAwEAAQ== + connectionProperties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJfVJOpXYGy8aBCk3zEoKKQDTVCCvJwhhithfY/I5PUvzFBAYygunmuCtUhzPUZ+1RJQds0Q4fu07m5mr5kv5ocCAwEAAQ==;druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 + use-global-data-source-stat: 'true' + rabbitmq: + host: 10.20.12.65 + port: 5672 + username: admin + password: AES@CoU6oY/zuAoBbu6cdgOKlA== + virtual-host: cmp + dynamic: 'true' + banner: + charset: UTF-8 + freemarker: + checkTemplateLocation: 'false' + redis: + # standalone + host: 10.20.12.65 + port: 6379 + timeout: 60000ms + password: AES@CoU6oY/zuAoBbu6cdgOKlA== + lettuce: + pool: + max-active: '1024' + max-idle: '16' + min-idle: '4' + max-wait: -1ms + servlet: + multipart: + max-file-size: 2MB + max-request-size: 20MB + main: + allow-circular-references: true +logging: + config: classpath:logback-spring.xml + dir: /log/services + level: + root: info + com: + bocloud: info + file: + max-size: 100MB + max-history: '30' + total-size-cap: 2GB \ No newline at end of file diff --git a/bocloud.tse.booter/src/main/resources/banner.txt b/bocloud.tse.booter/src/main/resources/banner.txt new file mode 100644 index 0000000..b32b879 --- /dev/null +++ b/bocloud.tse.booter/src/main/resources/banner.txt @@ -0,0 +1,8 @@ + ██████ ██ ██████ ████ ████ ███████ ██████████ ████████ ████████ +░█░░░░██ ██ ██ ░██ ██░░░░██░██░██ ██░██░██░░░░██ ░░░░░██░░░ ██░░░░░░ ░██░░░░░ +░█ ░██ █████ ░░██ ██ ██████ ███████ ░██ ██ ░░ ░██░░██ ██ ░██░██ ░██ ░██ ░██ ░██ +░██████ ██░░░██ ░░███ ██░░░░██░░██░░░██ ██████░██ ░██ ░░███ ░██░███████ ░██ ░█████████░███████ +░█░░░░ ██░███████ ░██ ░██ ░██ ░██ ░██ ██░░░██░██ ░██ ░░█ ░██░██░░░░ ░██ ░░░░░░░░██░██░░░░ +░█ ░██░██░░░░ ██ ░██ ░██ ░██ ░██░██ ░██░░██ ██░██ ░ ░██░██ ░██ ░██░██ +░███████ ░░██████ ██ ░░██████ ███ ░██░░██████ ░░██████ ░██ ░██░██ ░██ ████████ ░████████ +░░░░░░░ ░░░░░░ ░░ ░░░░░░ ░░░ ░░ ░░░░░░ ░░░░░░ ░░ ░░ ░░ ░░ ░░░░░░░░ ░░░░░░░░ diff --git a/bocloud.tse.booter/src/main/resources/logback-spring.xml b/bocloud.tse.booter/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..8535e06 --- /dev/null +++ b/bocloud.tse.booter/src/main/resources/logback-spring.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + ${local_log_pattern} + + + + + + ${logging.dir}/${service.name}.log + + ${logging.dir}/history/${service.name}.%d{yyyy-MM-dd}.%i.log.gz + + + ${logging.file.max-size} + + ${logging.file.max-history} + ${logging.file.total-size-cap} + + + ${local_log_pattern} + + + + + + ${logging.syslog.host} + ${logging.syslog.port} + ${logging.syslog.facility} + ${sys_log_pattern} + + ${logging.syslog.level} + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bocloud.tse.core/pom.xml b/bocloud.tse.core/pom.xml new file mode 100644 index 0000000..7d5e048 --- /dev/null +++ b/bocloud.tse.core/pom.xml @@ -0,0 +1,43 @@ + + + 4.0.0 + + com.bocloud + bocloud.tse + 6.5.0-LTS-SZ + + bocloud.tse.core + + + + com.freedom + megatron.common + + + com.freedom + megatron.framework + + + com.bocloud + bocloud.tse.entity + + + + com.oracle + ojdbc6 + 1.0 + + + + net.sourceforge.jtds + jtds + + + + com.alibaba + druid + + + \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Arg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Arg.java new file mode 100644 index 0000000..209e693 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Arg.java @@ -0,0 +1,17 @@ +/** + * + */ +package com.bocloud.tse.core.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +@Inherited +public @interface Arg { + String code() default ""; +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Module.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Module.java new file mode 100644 index 0000000..fc12b09 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Module.java @@ -0,0 +1,20 @@ +/** + * + */ +package com.bocloud.tse.core.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Worker类型 主要包括:脚本,文件,资源,软件,方法,数据,运维 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +@Inherited +public @interface Module { + String code() default "task.maintain.scirpt"; +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Worker.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Worker.java new file mode 100644 index 0000000..c042cc8 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/annotation/Worker.java @@ -0,0 +1,17 @@ +/** + * + */ +package com.bocloud.tse.core.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +@Inherited +public @interface Worker { + String name() default ""; +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/Option.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/Option.java new file mode 100644 index 0000000..383ad2f --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/Option.java @@ -0,0 +1,35 @@ +package com.bocloud.tse.core.domain; + +import lombok.Data; + +@Data +public class Option { + + private Boolean sudo; + private Boolean become; + private String becomeUser; + private String becomePass; + + public Option() { + super(); + } + + public Option(boolean sudo) { + super(); + this.sudo = sudo; + } + + public Option(Boolean sudo, Boolean become) { + this.sudo = sudo; + this.become = become; + } + + public Option(Boolean sudo, Boolean become, String becomeUser, String becomePass) { + super(); + this.sudo = sudo; + this.become = become; + this.becomeUser = becomeUser; + this.becomePass = becomePass; + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/TargetGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/TargetGroup.java new file mode 100644 index 0000000..bd46585 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/TargetGroup.java @@ -0,0 +1,28 @@ +package com.bocloud.tse.core.domain; + +import java.util.List; + +import com.bocloud.tse.model.WorkerHost; + +import lombok.Data; + +/** + * 目标机器分组,用来整体封装Linux和Windows类型的目标机器 + */ +@Data +public class TargetGroup { + + private List windows; + + private List linuxs; + + public TargetGroup(List windows, List linuxs) { + this.windows = windows; + this.linuxs = linuxs; + } + + public TargetGroup() { + super(); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/WorkerScript.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/WorkerScript.java new file mode 100644 index 0000000..9027cd9 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/WorkerScript.java @@ -0,0 +1,52 @@ +package com.bocloud.tse.core.domain; + +import lombok.Data; + +/** + * Worker执行的脚本内容封装类 + */ +@Data +public class WorkerScript { + + /** + * 脚本类型 + */ + private String type; + /** + * 脚本参数 + */ + private String params; + /** + * 脚本内容 + */ + private String content; + /** + * 执行脚本时候的可选参数 + */ + private Option options; + /** + * 脚本执行是否为异步 + */ + private Boolean async; + /** + * 脚本执行异步执行超时时间 + */ + private Long asyncTimeout; + + public WorkerScript(String type, String params, String content, Option options, Boolean async, Long asyncTimeout) { + super(); + this.type = type; + this.params = params; + this.content = content; + this.options = options; + this.async = async; + this.asyncTimeout = asyncTimeout; + } + + @Override + public String toString() { + return "WorkerScript [type=" + type + ", params=" + params + ", content=" + content + ", options=" + options + + "]"; + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/FileArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/FileArg.java new file mode 100644 index 0000000..c08010f --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/FileArg.java @@ -0,0 +1,24 @@ +package com.bocloud.tse.core.domain.args.maintain; + +import lombok.Data; + +/** + * 简单参数封装类用来封装文件分发,备份恢复等模块的参数内容 + */ +@Data +public class FileArg { + + private String src; + + private String dest; + + public FileArg(String src, String dest) { + this.src = src; + this.dest = dest; + } + + public FileArg() { + super(); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/HostAllowArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/HostAllowArg.java new file mode 100644 index 0000000..1663e65 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/HostAllowArg.java @@ -0,0 +1,24 @@ +package com.bocloud.tse.core.domain.args.maintain; + +import java.util.List; + +import lombok.Data; + +/** + * 配置Host allow参数 + */ +@Data +public class HostAllowArg { + + private List workers; + private String state; + + public HostAllowArg() {} + + public HostAllowArg(List workers, String state) { + super(); + this.workers = workers; + this.state = state; + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ScriptLocalArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ScriptLocalArg.java new file mode 100644 index 0000000..bebff15 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ScriptLocalArg.java @@ -0,0 +1,16 @@ +package com.bocloud.tse.core.domain.args.maintain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ScriptLocalArg { + + private String content; + + private String type; + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ScriptsArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ScriptsArg.java new file mode 100644 index 0000000..35330d8 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ScriptsArg.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.domain.args.maintain; + +import java.util.List; +import java.util.Map; + +import lombok.Data; + +@Data +public class ScriptsArg { + + private List> scripts; + + public ScriptsArg(List> scripts) { + this.scripts = scripts; + } + + public ScriptsArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ServiceArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ServiceArg.java new file mode 100644 index 0000000..dd3c611 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/ServiceArg.java @@ -0,0 +1,31 @@ +package com.bocloud.tse.core.domain.args.maintain; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +/** + * 服务参数 + */ +@Data +public class ServiceArg { + + private String name; + private String state; + private Boolean enabled; + private String arguments; + @JSONField(name = "start_mode") + private String startMode; + + public ServiceArg() {} + + public ServiceArg(String name, String state, Boolean enabled, String arguments, String startMode) { + super(); + this.name = name; + this.state = state; + this.enabled = enabled; + this.arguments = arguments; + this.startMode = startMode; + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/UserArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/UserArg.java new file mode 100644 index 0000000..65b1b37 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/maintain/UserArg.java @@ -0,0 +1,27 @@ +package com.bocloud.tse.core.domain.args.maintain; + +import java.util.List; +import java.util.Map; + +import lombok.Data; + +/** + * 用户操作参数 + */ +@Data +public class UserArg { + + private String type; + private Map sudo; + private List> users; + + public UserArg() {} + + public UserArg(String type, Map sudo, List> users) { + super(); + this.type = type; + this.sudo = sudo; + this.users = users; + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ActivemqArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ActivemqArg.java new file mode 100644 index 0000000..60546c0 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ActivemqArg.java @@ -0,0 +1,27 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class ActivemqArg { + + private String version; + // private List> queue; + // private List> topic; + // private List> authentication; + @JSONField(name = "activemq_admin_user") + private List> activemqAdminUser; + + public ActivemqArg(String version, List> activemqAdminUser) { + this.version = version; + this.activemqAdminUser = activemqAdminUser; + } + + public ActivemqArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ApacheArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ApacheArg.java new file mode 100644 index 0000000..8def113 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ApacheArg.java @@ -0,0 +1,44 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class ApacheArg { + + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "apache_vhosts") + private List> apacheVhosts; + + public ApacheArg(Map softwareConfig, List> apacheVhosts) { + this.softwareConfig = softwareConfig; + if (null != apacheVhosts && !apacheVhosts.isEmpty()) { + this.apacheVhosts = apacheVhosts; + for (Map vhost : this.apacheVhosts) { + Iterator> iterator = vhost.entrySet().iterator(); + while (iterator.hasNext()) { + Entry entry = iterator.next(); + if (null == vhost.get(entry.getKey()) || "".equals(vhost.get(entry.getKey()))) { + iterator.remove(); + } + } + } + } + } + + public ApacheArg() {} + + public void setApacheVhosts(List> apacheVhosts) { + if (null != apacheVhosts && !apacheVhosts.isEmpty()) { + this.apacheVhosts = apacheVhosts; + } + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ElasticsearchArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ElasticsearchArg.java new file mode 100644 index 0000000..cba42c6 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ElasticsearchArg.java @@ -0,0 +1,25 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class ElasticsearchArg { + + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "cluster_name") + private String clusterName; + + public ElasticsearchArg() {} + + public ElasticsearchArg(Map softwareConfig, String clusterName) { + super(); + this.softwareConfig = softwareConfig; + this.clusterName = clusterName; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/EtcdArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/EtcdArg.java new file mode 100644 index 0000000..d5e26fe --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/EtcdArg.java @@ -0,0 +1,33 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class EtcdArg { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "etcd_secure") + private boolean etcdSecure; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "etcd_initial_cluster_token") + private String etcdInitialClusterToken; + + public EtcdArg(String version, boolean clusterInstall, boolean etcdSecure, Map softwareConfig, + String etcdInitialClusterToken) { + this.version = version; + this.clusterInstall = clusterInstall; + this.etcdSecure = etcdSecure; + this.softwareConfig = softwareConfig; + this.etcdInitialClusterToken = etcdInitialClusterToken; + } + + public EtcdArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ExporterArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ExporterArg.java new file mode 100644 index 0000000..5b6aeb7 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ExporterArg.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.args.software; + +import lombok.Data; + +@Data +public class ExporterArg { + + private String version; + private String path; + + public ExporterArg() {} + + public ExporterArg(String version, String path) { + this.version = version; + this.path = path; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/GitlabArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/GitlabArg.java new file mode 100644 index 0000000..67443a5 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/GitlabArg.java @@ -0,0 +1,25 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class GitlabArg { + + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "gitlab_root_password") + private String gitlabRootPassword; + + public GitlabArg() {} + + public GitlabArg(Map softwareConfig, String gitlabRootPassword) { + super(); + this.softwareConfig = softwareConfig; + this.gitlabRootPassword = gitlabRootPassword; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/JdkArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/JdkArg.java new file mode 100644 index 0000000..5da1d34 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/JdkArg.java @@ -0,0 +1,24 @@ +package com.bocloud.tse.core.domain.args.software; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class JdkArg { + + private String version; + @JSONField(name = "install_jce") + private boolean installJce; + @JSONField(name = "set_java_home") + private boolean setJavaHome; + + public JdkArg(String version, boolean installJce, boolean setJavaHome) { + this.version = version; + this.installJce = installJce; + this.setJavaHome = setJavaHome; + } + + public JdkArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/JenkinsArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/JenkinsArg.java new file mode 100644 index 0000000..ca68275 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/JenkinsArg.java @@ -0,0 +1,28 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class JenkinsArg { + + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "jenkins_admin_username") + private String jenkinsAdminUsername; + @JSONField(name = "jenkins_admin_password") + private String jenkinsAdminPassword; + + public JenkinsArg() {} + + public JenkinsArg(Map softwareConfig, String jenkinsAdminUsername, String jenkinsAdminPassword) { + super(); + this.softwareConfig = softwareConfig; + this.jenkinsAdminUsername = jenkinsAdminUsername; + this.jenkinsAdminPassword = jenkinsAdminPassword; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/K8sArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/K8sArg.java new file mode 100644 index 0000000..7634087 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/K8sArg.java @@ -0,0 +1,51 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class K8sArg { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "container_config") + private Map containerConfig; + @JSONField(name = "k8s_config") + private Map k8sConfig; + @JSONField(name = "network_config") + private Map networkConfig; + @JSONField(name = "storage_config") + private Map storageConfig; + @JSONField(name = "harbor_config") + private Map harborConfig; + + public K8sArg(String version, boolean clusterInstall, Map softwareConfig, + Map containerConfig, Map k8sConfig, Map networkConfig, + Map storageConfig, Map harborConfig) { + super(); + this.version = version; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.containerConfig = containerConfig; + this.k8sConfig = k8sConfig; + this.networkConfig = networkConfig; + this.storageConfig = storageConfig; + this.harborConfig = harborConfig; + } + + public K8sArg() {} + + public void setHarborConfig(Map harborConfig) { + if (null == harborConfig || harborConfig.isEmpty()) { + return; + } + this.harborConfig = harborConfig; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/KafkaArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/KafkaArg.java new file mode 100644 index 0000000..df1c610 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/KafkaArg.java @@ -0,0 +1,88 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.front.software.KafkaZkFront; + +import lombok.Data; + +@Data +public class KafkaArg { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "zookeeper") + private KafkaZkFront zookeeper; + @JSONField(name = "manage_config") + private Map manageConfig; + @JSONField(name = "jmx_exporter_config") + private Map jmxExporterConfig; + @JSONField(name = "install_jmx_exporter") + private boolean installJmxExporter; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "install_kafka_exporter") + private boolean installKafkaExporter; + @JSONField(name = "auth_config") + private Map authConfig; + @JSONField(name = "kafka_server") + private Map kafkaServer; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + + public KafkaArg(String version, boolean clusterInstall, Map softwareConfig, KafkaZkFront zookeeper, + Map manageConfig, Map jmxExporterConfig, boolean installJmxExporter, + List> mntDisks, boolean installKafkaExporter, Map authConfig, + Map kafkaServer, boolean installTelegraf) { + this.version = version; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.zookeeper = zookeeper; + this.manageConfig = manageConfig; + this.jmxExporterConfig = jmxExporterConfig; + this.installJmxExporter = installJmxExporter; + this.mntDisks = mntDisks; + this.installKafkaExporter = installKafkaExporter; + this.authConfig = authConfig; + this.kafkaServer = kafkaServer; + this.installTelegraf = installTelegraf; + } + + public KafkaArg() { + super(); + } + + public void setJmxExporterConfig(Map jmxExporterConfig) { + if (null == jmxExporterConfig || jmxExporterConfig.isEmpty()) { + return; + } + this.jmxExporterConfig = jmxExporterConfig; + } + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + + public void setAuthConfig(Map authConfig) { + if (null == authConfig || authConfig.isEmpty()) { + return; + } + this.authConfig = authConfig; + } + + public void setKafkaServer(Map kafkaServer) { + if (null == kafkaServer || kafkaServer.isEmpty()) { + return; + } + this.kafkaServer = kafkaServer; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MemcacheArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MemcacheArg.java new file mode 100644 index 0000000..70f6f59 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MemcacheArg.java @@ -0,0 +1,64 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; +import com.bocloud.tse.core.domain.group.GroupHost; + +import lombok.Data; + +@Data +public class MemcacheArg { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "magent_config") + private Map magentConfig; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + + public MemcacheArg(String version, boolean clusterInstall, Map softwareConfig, + Map magentConfig, List groups, boolean installTelegraf) { + super(); + this.version = version; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + if (clusterInstall) { + if (null == magentConfig) { + magentConfig = new HashMap<>(); + } + if (!magentConfig.containsKey("magent_port")) { + magentConfig.put("magent_port", 12000); + } + List masters = new ArrayList<>(); + List slavers = new ArrayList<>(); + for (Group group : groups) { + if ("memcached_masters".equals(group.getName())) { + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + masters.add(host.getHost() + ":" + softwareConfig.get("memcached_port")); + } + } else if ("memcached_backups".equals(group.getName())) { + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + slavers.add(host.getHost() + ":" + softwareConfig.get("memcached_port")); + } + } + } + magentConfig.put("memcached_servers", masters); + magentConfig.put("memcached_backups", slavers); + this.magentConfig = magentConfig; + } + this.installTelegraf = installTelegraf; + } + + public MemcacheArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MongodbArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MongodbArg.java new file mode 100644 index 0000000..e4a3303 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MongodbArg.java @@ -0,0 +1,62 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class MongodbArg { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "manage_config") + private Map manageConfig; + @JSONField(name = "mongodb_users") + private List> mongodbUsers; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + + public MongodbArg() {} + + public MongodbArg(String version, boolean clusterInstall, Map softwareConfig, + Map manageConfig, List> mongodbUsers, List> mntDisks, + boolean installTelegraf) { + this.version = version; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.manageConfig = manageConfig; + this.mongodbUsers = mongodbUsers; + this.mntDisks = mntDisks; + this.installTelegraf = installTelegraf; + } + + public void setManageConfig(Map manageConfig) { + if (null == manageConfig || manageConfig.isEmpty()) { + return; + } + this.manageConfig = manageConfig; + } + + public void setMongodbUsers(List> mongodbUsers) { + if (null == mongodbUsers || mongodbUsers.isEmpty()) { + return; + } + this.mongodbUsers = mongodbUsers; + } + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MysqlArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MysqlArg.java new file mode 100644 index 0000000..6f75f7b --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/MysqlArg.java @@ -0,0 +1,92 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class MysqlArg { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "cluster_type") + private String clusterType; + @JSONField(name = "mgr_group_name") + private String mgrGroupName; + @JSONField(name = "keepalived_virtual_router_id") + private Integer keepalivedVirtualRouterId; + @JSONField(name = "mysql_vip") + private String mysqlVip; + @JSONField(name = "mysql_vip_netmask") + private String mysqlVipNetmask; + @JSONField(name = "mysql_replication_master") + private String mysqlReplicationMaster; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "mysql_databases") + private List> mysqlDatabases; + @JSONField(name = "mysql_users") + private List> mysqlUsers; + @JSONField(name = "mysql_replication_user") + private Map mysqlReplicationUser; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + + public MysqlArg(String version, boolean clusterInstall, String clusterType, String mgrGroupName, + Integer keepalivedVirtualRouterId, String mysqlVip, String mysqlVipNetmask, String mysqlReplicationMaster, + Map softwareConfig, List> mysqlDatabases, + List> mysqlUsers, Map mysqlReplicationUser, + List> mntDisks, boolean installTelegraf) { + this.version = version; + this.clusterInstall = clusterInstall; + this.clusterType = clusterType; + this.mgrGroupName = mgrGroupName; + this.keepalivedVirtualRouterId = keepalivedVirtualRouterId; + this.mysqlVip = mysqlVip; + this.mysqlVipNetmask = mysqlVipNetmask; + this.mysqlReplicationMaster = mysqlReplicationMaster; + this.softwareConfig = softwareConfig; + this.mysqlDatabases = mysqlDatabases; + this.mysqlUsers = mysqlUsers; + this.mysqlReplicationUser = mysqlReplicationUser; + this.mntDisks = mntDisks; + this.installTelegraf = installTelegraf; + } + + public MysqlArg() {} + + public void setMysqlDatabases(List> mysqlDatabases) { + if (null == mysqlDatabases || mysqlDatabases.isEmpty()) { + return; + } + this.mysqlDatabases = mysqlDatabases; + } + + public void setMysqlUsers(List> mysqlUsers) { + if (null == mysqlUsers || mysqlUsers.isEmpty()) { + return; + } + this.mysqlUsers = mysqlUsers; + } + + public void setMysqlReplicationUser(Map mysqlReplicationUser) { + if (null == mysqlReplicationUser || mysqlReplicationUser.isEmpty()) { + return; + } + this.mysqlReplicationUser = mysqlReplicationUser; + } + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/NfsArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/NfsArg.java new file mode 100644 index 0000000..a9f7650 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/NfsArg.java @@ -0,0 +1,24 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class NfsArg { + + @JSONField(name = "nfs_server") + private Map nfsServer; + @JSONField(name = "nfs_client") + private boolean nfsClient; + + public NfsArg(Map nfsServer, boolean nfsClient) { + this.nfsServer = nfsServer; + this.nfsClient = nfsClient; + } + + public NfsArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/NginxArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/NginxArg.java new file mode 100644 index 0000000..62972a6 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/NginxArg.java @@ -0,0 +1,61 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.common.NginxConfig; +import com.bocloud.tse.core.domain.common.NginxHttpParam; +import com.bocloud.tse.core.domain.common.NginxSite; + +import lombok.Data; + +@Data +public class NginxArg { + + @JSONField(name = "cluster_install") + private boolean clusterInstall = false; + //nginx http配置 + @JSONField(name = "nginx_http_params") + private NginxHttpParam nginxHttpParam; + //nginx 配置 + @JSONField(name = "nginx_configs") + private NginxConfig nginxConfig; + //nginx 站点配置 + @JSONField(name = "nginx_sites") + private Map nginxSites; + @JSONField(name = "sites_listen_ports") + private List sitesListenPorts; + + public NginxArg() {} + + public NginxArg(boolean clusterInstall, NginxHttpParam nginxHttpParam, NginxConfig nginxConfig, + Map nginxSites) { + this.clusterInstall = clusterInstall; + this.nginxHttpParam = nginxHttpParam; + this.nginxConfig = nginxConfig; + this.nginxSites = nginxSites; + if (null != this.nginxSites && !nginxSites.isEmpty()) { + sitesListenPorts = new ArrayList<>(); + for (NginxSite site : nginxSites.values()) { + sitesListenPorts.add(site.getListen()); + } + } + } + + public void setNginxConfig(NginxConfig nginxConfig) { + if (null != nginxConfig && nginxConfig.empty()) { + return; + } + this.nginxConfig = nginxConfig; + } + + public void setNginxSites(Map nginxSites) { + if (null != nginxSites && nginxSites.isEmpty()) { + return; + } + this.nginxSites = nginxSites; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/OracleArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/OracleArg.java new file mode 100644 index 0000000..61d3537 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/OracleArg.java @@ -0,0 +1,56 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class OracleArg { + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "manage_config") + private Map manageConfig; + @JSONField(name = "oracle_databases") + private List> oracleDatabases; + @JSONField(name = "asm_diskgroups") + private Map>> asmDiskGroups; + @JSONField(name = "host_fs_layout") + private List> hostFsLayout; + + public OracleArg(String version, boolean clusterInstall, Map softwareConfig, + Map manageConfig, List> oracleDatabases, + Map>> asmDiskGroups, List> hostFsLayout) { + this.version = version; + this.clusterInstall = clusterInstall; + if (null != softwareConfig && !softwareConfig.isEmpty()) { + this.softwareConfig = softwareConfig; + } + this.manageConfig = manageConfig; + this.asmDiskGroups = asmDiskGroups; + this.hostFsLayout = hostFsLayout; + if (null != oracleDatabases && !oracleDatabases.isEmpty()) { + this.oracleDatabases = oracleDatabases; + for (Map database : this.oracleDatabases) { + Iterator> iterator = database.entrySet().iterator(); + while (iterator.hasNext()) { + Entry entry = iterator.next(); + if (null == database.get(entry.getKey()) || "".equals(database.get(entry.getKey()).toString()) + || "[]".equals(database.get(entry.getKey()).toString())) { + iterator.remove(); + } + } + } + } + } + + public OracleArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/PhpArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/PhpArg.java new file mode 100644 index 0000000..b5a2c1f --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/PhpArg.java @@ -0,0 +1,39 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Arrays; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class PhpArg { + + @JSONField(name = "software_config") + private Map softwareConfig; + + public PhpArg() {} + + public PhpArg(Map softwareConfig) { + super(); + if (softwareConfig.containsKey("php_packages")) { + String value = softwareConfig.get("php_packages").toString(); + if (value.contains(",")) { + softwareConfig.put("php_packages", Arrays.asList(value.split(","))); + } + } + this.softwareConfig = softwareConfig; + } + + public void setSoftwareConfig(Map softwareConfig) { + if (softwareConfig.containsKey("php_packages")) { + String value = softwareConfig.get("php_packages").toString(); + if (value.contains(",")) { + softwareConfig.put("php_packages", Arrays.asList(value.split(","))); + } + } + this.softwareConfig = softwareConfig; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/PostgresqlArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/PostgresqlArg.java new file mode 100644 index 0000000..fe1d1f4 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/PostgresqlArg.java @@ -0,0 +1,160 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class PostgresqlArg { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "postgresql_databases") + private List> postgresqlDatabases; + @JSONField(name = "postgresql_users") + private List> postgresqlUsers; + @JSONField(name = "postgresql_privileges") + private List> postgresqlPrivileges; + @JSONField(name = "postgresql_schemas") + private List> postgresqlSchemas; + @JSONField(name = "postgresql_extensions") + private List> postgresqlExtensions; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "etcd_config") + private Map etcdConfig; + @JSONField(name = "cluster_config") + private Map clusterConfig; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + @JSONField(name = "postgresql_bocloud_user") + private String postgresqlBocloudUser; + @JSONField(name = "postgresql_bocloud_password") + private String postgresqlBocloudPassword; + + public PostgresqlArg(String version, boolean clusterInstall, Map softwareConfig, + List> postgresqlDatabases, List> postgresqlUsers, + List> postgresqlPrivileges, List> postgresqlSchemas, + List> postgresqlExtensions, List> mntDisks, + Map etcdConfig, Map clusterConfig, boolean installTelegraf, + String postgresqlBocloudUser, String postgresqlBocloudPassword) { + super(); + this.version = version; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.postgresqlUsers = postgresqlUsers; + this.postgresqlPrivileges = postgresqlPrivileges; + this.postgresqlSchemas = postgresqlSchemas; + this.postgresqlExtensions = postgresqlExtensions; + if (null != postgresqlDatabases && !postgresqlDatabases.isEmpty()) { + this.postgresqlDatabases = postgresqlDatabases; + for (Map databases : this.postgresqlDatabases) { + Iterator> iterator = databases.entrySet().iterator(); + while (iterator.hasNext()) { + Entry entry = iterator.next(); + if (null == databases.get(entry.getKey()) || "".equals(databases.get(entry.getKey()))) { + iterator.remove(); + } + } + } + } + this.mntDisks = mntDisks; + if (clusterInstall) { + if (null == etcdConfig || etcdConfig.isEmpty()) { + etcdConfig = new JSONObject(); + etcdConfig.put("version", "3.1.20"); + etcdConfig.put("cluster_install", true); + etcdConfig.put("etcd_secure", false); + etcdConfig.put("etcd_initial_cluster_token", "etcd-cluster"); + JSONObject etcdSoftConfig = new JSONObject(); + etcdSoftConfig.put("etcd_data_dir", "/var/cache/etcd/state"); + etcdSoftConfig.put("etcd_client_port", 2379); + etcdSoftConfig.put("etcd_peer_port", 2380); + etcdConfig.put("software_config", etcdSoftConfig); + } + if (null == clusterConfig) { + clusterConfig = new JSONObject(); + } + clusterConfig.put("with_haproxy_load_balancing", true); + clusterConfig.put("patroni_etcd_port", 2379); + clusterConfig.put("patroni_cluster_name", "postgre_cluster"); + this.etcdConfig = etcdConfig; + this.clusterConfig = clusterConfig; + } + this.installTelegraf = installTelegraf; + this.postgresqlBocloudUser = postgresqlBocloudUser; + this.postgresqlBocloudPassword = postgresqlBocloudPassword; + } + + public PostgresqlArg() {} + + public void setPostgresqlDatabases(List> postgresqlDatabases) { + if (null == postgresqlDatabases || postgresqlDatabases.isEmpty()) { + return; + } + this.postgresqlDatabases = postgresqlDatabases; + } + + public void setPostgresqlUsers(List> postgresqlUsers) { + if (null == postgresqlUsers || postgresqlUsers.isEmpty()) { + return; + } + this.postgresqlUsers = postgresqlUsers; + } + + public void setPostgresqlPrivileges(List> postgresqlPrivileges) { + if (null == postgresqlPrivileges || postgresqlPrivileges.isEmpty()) { + return; + } + this.postgresqlPrivileges = postgresqlPrivileges; + } + + public void setPostgresqlSchemas(List> postgresqlSchemas) { + if (null == postgresqlSchemas || postgresqlSchemas.isEmpty()) { + return; + } + this.postgresqlSchemas = postgresqlSchemas; + } + + public void setPostgresqlExtensions(List> postgresqlExtensions) { + if (null == postgresqlExtensions || postgresqlExtensions.isEmpty()) { + return; + } + this.postgresqlExtensions = postgresqlExtensions; + } + + public List> getMntDisks() { + return mntDisks; + } + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + + public void setEtcdConfig(Map etcdConfig) { + if (null == etcdConfig || etcdConfig.isEmpty()) { + return; + } + this.etcdConfig = etcdConfig; + } + + public void setClusterConfig(Map clusterConfig) { + if (null == clusterConfig || clusterConfig.isEmpty()) { + return; + } + this.clusterConfig = clusterConfig; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RabbitmqArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RabbitmqArg.java new file mode 100644 index 0000000..bf256de --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RabbitmqArg.java @@ -0,0 +1,55 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class RabbitmqArg { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "rabbitmq_users") + private List> rabbitmqUsers; + @JSONField(name = "rabbitmq_vhosts") + private List> rabbitmqVhosts; + @JSONField(name = "rabbitmq_plugins") + private List> rabbitmqPlugins; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + @JSONField(name = "rabbitmq_admin_user") + private String rabbitmqAdminUser; + @JSONField(name = "rabbitmq_admin_password") + private String rabbitmqAdminPassword; + + public RabbitmqArg(String version, boolean clusterInstall, List> rabbitmqUsers, + List> rabbitmqVhosts, List> rabbitmqPlugins, + List> mntDisks, boolean installTelegraf, String rabbitmqAdminUser, + String rabbitmqAdminPassword) { + this.version = version; + this.clusterInstall = clusterInstall; + this.rabbitmqUsers = rabbitmqUsers; + this.rabbitmqVhosts = rabbitmqVhosts; + this.rabbitmqPlugins = rabbitmqPlugins; + this.mntDisks = mntDisks; + this.installTelegraf = installTelegraf; + this.rabbitmqAdminUser = rabbitmqAdminUser; + this.rabbitmqAdminPassword = rabbitmqAdminPassword; + } + + public RabbitmqArg() {} + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RacIscsiArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RacIscsiArg.java new file mode 100644 index 0000000..5f4c0ea --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RacIscsiArg.java @@ -0,0 +1,21 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class RacIscsiArg { + + @JSONField(name = "iscsi_config") + private Map iscsiConfig; + + public RacIscsiArg(Map iscsiConfig) { + this.iscsiConfig = iscsiConfig; + } + + public RacIscsiArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RedisArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RedisArg.java new file mode 100644 index 0000000..2df4535 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RedisArg.java @@ -0,0 +1,58 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class RedisArg { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "manage_config") + private Map manageConfig; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + @JSONField(name = "redis_master_nodes") + private List redisMasterNodes; + @JSONField(name = "redis_slave_nodes") + private List redisSlaveNodes; + + public RedisArg(String version, boolean clusterInstall, Map softwareConfig, + Map manageConfig, List> mntDisks, boolean installTelegraf, + List redisMasterNodes, List redisSlaveNodes) { + this.version = version; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.manageConfig = manageConfig; + this.mntDisks = mntDisks; + this.installTelegraf = installTelegraf; + this.redisMasterNodes = redisMasterNodes; + this.redisSlaveNodes = redisSlaveNodes; + } + + public RedisArg() {} + + public void setManageConfig(Map manageConfig) { + if (null == manageConfig || manageConfig.isEmpty()) { + return; + } + this.manageConfig = manageConfig; + } + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RocketmqArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RocketmqArg.java new file mode 100644 index 0000000..09e5039 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/RocketmqArg.java @@ -0,0 +1,53 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; +import com.bocloud.tse.core.domain.group.GroupHost; + +import lombok.Data; + +@Data +public class RocketmqArg { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "cluster_name") + private String clusterName; + @JSONField(name = "rocketmq_nameserver_list") + private String rocketmqNameserverList; + @JSONField(name = "install_rocketmq_exporter") + private boolean installRocketmqExporter; + + public RocketmqArg(String version, boolean clusterInstall, Map softwareConfig, String clusterName, + boolean installRocketmqExporter, List groups) { + super(); + this.version = version; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.clusterName = clusterName; + this.installRocketmqExporter = installRocketmqExporter; + String nameservers = ""; + for (Group group : groups) { + if (!"rocketmq_namesrv".equals(group.getName())) { + continue; + } + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + nameservers += host.getHost() + ":" + softwareConfig.get("rocketmq_nameserver_port") + ";"; + } + } + if (nameservers.contains(";")) { + nameservers = nameservers.substring(0, nameservers.length() - 1); + } + this.rocketmqNameserverList = nameservers; + } + + public RocketmqArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/SqlserverArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/SqlserverArg.java new file mode 100644 index 0000000..2dd0e8f --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/SqlserverArg.java @@ -0,0 +1,33 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class SqlserverArg { + + private String version; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "win_disk") + private Map winDisk; + + public SqlserverArg(String version, Map softwareConfig, Map winDisk) { + this.version = version; + this.softwareConfig = softwareConfig; + this.winDisk = winDisk; + } + + public SqlserverArg() {} + + public void setWinDisk(Map winDisk) { + if (null == winDisk || winDisk.isEmpty()) { + return; + } + this.winDisk = winDisk; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/TomcatArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/TomcatArg.java new file mode 100644 index 0000000..9a440a9 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/TomcatArg.java @@ -0,0 +1,34 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.common.TomcatInstance; + +import lombok.Data; + +@Data +public class TomcatArg { + + private String version; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "tomcat_instances") + private List tomcatInstances; + + public TomcatArg() {} + + public TomcatArg(String version, Map softwareConfig, List tomcatInstances) { + this.version = version; + this.softwareConfig = softwareConfig; + this.tomcatInstances = tomcatInstances; + } + + public void setTomcatInstances(List tomcatInstances) { + if (null != tomcatInstances && !tomcatInstances.isEmpty()) { + this.tomcatInstances = tomcatInstances; + } + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WebSphereArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WebSphereArg.java new file mode 100644 index 0000000..c9413e0 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WebSphereArg.java @@ -0,0 +1,27 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class WebSphereArg { + + private String version; + @JSONField(name = "software_config") + private Map softwareConfig; + + public WebSphereArg(Map softwareConfig) { + this.softwareConfig = softwareConfig; + } + + public WebSphereArg(String version, Map softwareConfig) { + this.version = version; + this.softwareConfig = softwareConfig; + } + + public WebSphereArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WeblogicArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WeblogicArg.java new file mode 100644 index 0000000..19558d5 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WeblogicArg.java @@ -0,0 +1,35 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class WeblogicArg { + + private String version; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "manage_config") + private Map manageConfig; + @JSONField(name = "jdk_version") + private String jdkVersion; + @JSONField(name = "os_user") + private String osUser; + + public WeblogicArg(String version, Map softwareConfig, Map manageConfig, + String jdkVersion, String osUser) { + this.version = version; + if (null != softwareConfig && !softwareConfig.isEmpty()) { + this.softwareConfig = softwareConfig; + } + this.manageConfig = manageConfig; + this.jdkVersion = jdkVersion; + this.osUser = osUser; + } + + public WeblogicArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WebspheremqArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WebspheremqArg.java new file mode 100644 index 0000000..1e35bd2 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/WebspheremqArg.java @@ -0,0 +1,25 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class WebspheremqArg { + + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "version") + private String version; + + public WebspheremqArg() {} + + public WebspheremqArg(Map softwareConfig, String version) { + super(); + this.softwareConfig = softwareConfig; + this.version = version; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ZookeeperArg.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ZookeeperArg.java new file mode 100644 index 0000000..7977a52 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/args/software/ZookeeperArg.java @@ -0,0 +1,35 @@ +package com.bocloud.tse.core.domain.args.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class ZookeeperArg { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + + public ZookeeperArg(String version, Map softwareConfig) { + this.version = version; + this.softwareConfig = softwareConfig; + } + + public ZookeeperArg(String version, boolean clusterInstall, Map softwareConfig, + boolean installTelegraf) { + this.version = version; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.installTelegraf = installTelegraf; + } + + public ZookeeperArg() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxConfig.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxConfig.java new file mode 100644 index 0000000..32c5c02 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxConfig.java @@ -0,0 +1,75 @@ +package com.bocloud.tse.core.domain.common; + +import java.util.ArrayList; +import java.util.List; + +import com.megatron.common.utils.ListTool; + +import lombok.Data; + +@Data +public class NginxConfig { + + private List proxy; + private List upstream; + private List geo; + private List ssl; + private List gzip; + + public NginxConfig() {} + + public void setProxy(List proxy) { + if (ListTool.isEmpty(proxy)) { + return; + } + this.proxy = new ArrayList<>(); + for (String data : proxy) { + this.proxy.add(data.replace("\n", " ")); + } + } + + public void setUpstream(List upstream) { + if (ListTool.isEmpty(upstream)) { + return; + } + this.upstream = new ArrayList<>(); + for (String data : upstream) { + this.upstream.add(data.replace("\n", " ")); + } + } + + public void setGeo(List geo) { + if (ListTool.isEmpty(geo)) { + return; + } + this.geo = new ArrayList<>(); + for (String data : geo) { + this.geo.add(data.replace("\n", " ")); + } + } + + public void setSsl(List ssl) { + if (ListTool.isEmpty(ssl)) { + return; + } + this.ssl = new ArrayList<>(); + for (String data : ssl) { + this.ssl.add(data.replace("\n", " ")); + } + } + + public void setGzip(List gzip) { + if (ListTool.isEmpty(gzip)) { + return; + } + this.gzip = new ArrayList<>(); + for (String data : gzip) { + this.gzip.add(data.replace("\n", " ")); + } + } + + public boolean empty() { + return null == proxy && null == upstream && null == geo && null == ssl && null == gzip; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxHttpParam.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxHttpParam.java new file mode 100644 index 0000000..8c8acc4 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxHttpParam.java @@ -0,0 +1,39 @@ +package com.bocloud.tse.core.domain.common; + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.fastjson.annotation.JSONField; +import com.megatron.common.utils.ListTool; + +import lombok.Data; + +@Data +public class NginxHttpParam { + + private String sendfile; + @JSONField(name = "tcp_nopush") + private String tcpNopush; + @JSONField(name = "tcp_nodelay") + private String tcpNodelay; + @JSONField(name = "server_tokens") + private String serverTokens; + @JSONField(name = "access_log") + private String accessLog; + @JSONField(name = "error_log") + private String errorLog; + private List options; + + public NginxHttpParam() {} + + public void setOptions(List options) { + if (ListTool.isEmpty(options)) { + return; + } + this.options = new ArrayList<>(); + for (String data : options) { + this.options.add(data.replace("\n", " ")); + } + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxSite.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxSite.java new file mode 100644 index 0000000..a2fbac8 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/NginxSite.java @@ -0,0 +1,33 @@ +package com.bocloud.tse.core.domain.common; + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.fastjson.annotation.JSONField; +import com.megatron.common.utils.ListTool; + +import lombok.Data; + +@Data +public class NginxSite { + + private Integer listen; + @JSONField(name = "server_name") + private String serverName; + private String root; + private String index; + private List location; + + public NginxSite() {} + + public void setLocation(List location) { + if (ListTool.isEmpty(location)) { + return; + } + this.location = new ArrayList<>(); + for (String data : location) { + this.location.add(data.replace("\n", " ")); + } + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/TomcatInstance.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/TomcatInstance.java new file mode 100644 index 0000000..079eafe --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/common/TomcatInstance.java @@ -0,0 +1,106 @@ +package com.bocloud.tse.core.domain.common; + +import org.springframework.util.StringUtils; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class TomcatInstance { + + private String name; + private String user; + private String home; + private String path; + private String group; + @JSONField(name = "port_ajp") + private Integer portAjp; + @JSONField(name = "port_redirect") + private Integer portRedirect; + @JSONField(name = "port_connector") + private Integer portConnector; + @JSONField(name = "port_shutdown") + private Integer portShutdown; + @JSONField(name = "catalina_opts") + private String catalinaOpts; + @JSONField(name = "service_name") + private String serviceName; + @JSONField(name = "service_file") + private String serviceFile; + @JSONField(name = "override_uri_encoding") + private String overrideUriEncoding; + + public void setUser(String user) { + if (StringUtils.hasText(user)) { + this.user = user; + } + } + + public void setHome(String home) { + if (StringUtils.hasText(home)) { + this.home = home; + } + } + + public void setPath(String path) { + if (StringUtils.hasText(path)) { + this.path = path; + } + } + + public void setGroup(String group) { + if (StringUtils.hasText(group)) { + this.group = group; + } + } + + public void setPortAjp(Integer portAjp) { + if (null != portAjp && portAjp > 0) { + this.portAjp = portAjp; + } + } + + public void setPortRedirect(Integer portRedirect) { + if (null != portRedirect && portRedirect > 0) { + this.portRedirect = portRedirect; + } + } + + public void setPortConnector(Integer portConnector) { + if (null != portConnector && portConnector > 0) { + this.portConnector = portConnector; + } + } + + public void setPortShutdown(Integer portShutdown) { + if (null != portShutdown && portShutdown > 0) { + this.portShutdown = portShutdown; + } + } + + public void setCatalinaOpts(String catalinaOpts) { + if (StringUtils.hasText(catalinaOpts)) { + this.catalinaOpts = catalinaOpts; + } + } + + public void setServiceName(String serviceName) { + if (StringUtils.hasText(serviceName)) { + this.serviceName = serviceName; + } + } + + public void setServiceFile(String serviceFile) { + if (StringUtils.hasText(serviceFile)) { + this.serviceFile = serviceFile; + } + } + + public void setOverrideUriEncoding(String overrideUriEncoding) { + if (StringUtils.hasText(overrideUriEncoding)) { + this.overrideUriEncoding = overrideUriEncoding; + } + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/DBFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/DBFront.java new file mode 100644 index 0000000..65690d4 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/DBFront.java @@ -0,0 +1,52 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import java.util.List; + +import org.apache.commons.lang3.StringUtils; + +import com.bocloud.tse.core.utils.DBDriver; +import com.megatron.common.model.GeneralResult; + +import lombok.Data; + +@Data +public class DBFront { + + private String category; + private String driver; + private String database; + private Long scriptId; + private List groupId; + private String jdbcUrl; + private String username; + private String password; + private String content; + + public DBFront(String category, String driver, Long scriptId, List groupId, String jdbcUrl, String username, + String password, String content, String database) { + this.category = category; + this.driver = driver; + this.scriptId = scriptId; + this.groupId = groupId; + this.jdbcUrl = jdbcUrl; + this.username = username; + this.password = password; + this.content = content; + this.database = database; + } + + public DBFront() {} + + public DBDriver getDBDriver() throws Exception { + if (StringUtils.isEmpty(database)) { + throw new Exception("database driver is null!"); + } + GeneralResult hasResult = DBDriver.has(database); + if (hasResult.isFailed()) { + throw new Exception("no specific driver found!"); + } else { + return hasResult.getData(); + } + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/FileFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/FileFront.java new file mode 100644 index 0000000..3b1cfcd --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/FileFront.java @@ -0,0 +1,20 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import lombok.Data; + +@Data +public class FileFront { + + // 文件源路径 + private String source; + // 文件目标路径 + private String target; + + public FileFront(String source, String target) { + this.source = source; + this.target = target; + } + + public FileFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/GaiaFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/GaiaFront.java new file mode 100644 index 0000000..49448ca --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/GaiaFront.java @@ -0,0 +1,26 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * gaia部署模板参数 + * + * @author weiwei + * + */ +@Data +public class GaiaFront { + + private String name; + private JSONObject args; + + public GaiaFront() {} + + public GaiaFront(String name, JSONObject args) { + super(); + this.name = name; + this.args = args; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/HostAllowFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/HostAllowFront.java new file mode 100644 index 0000000..41e0042 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/HostAllowFront.java @@ -0,0 +1,22 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import java.util.List; + +import com.alibaba.fastjson.JSONObject; + +import lombok.Data; + +@Data +public class HostAllowFront { + + private List workers; + private String state; + + public HostAllowFront(List workers, String state) { + this.workers = workers; + this.state = state; + } + + public HostAllowFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/HttpFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/HttpFront.java new file mode 100644 index 0000000..0b69144 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/HttpFront.java @@ -0,0 +1,32 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import java.util.Map; + +import com.megatron.common.enums.HttpRequestMethod; +import com.megatron.common.enums.PostDataFormat; + +import lombok.Data; + +@Data +public class HttpFront { + + private String url; + private String body; + private PostDataFormat format; + private HttpRequestMethod method; + private Map headers; + private Map params; + + public HttpFront(String url, String body, PostDataFormat format, HttpRequestMethod method, + Map headers, Map params) { + this.url = url; + this.body = body; + this.format = format; + this.method = method; + this.headers = headers; + this.params = params; + } + + public HttpFront() {} + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/SaltFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/SaltFront.java new file mode 100644 index 0000000..4aae725 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/SaltFront.java @@ -0,0 +1,24 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import com.alibaba.fastjson.JSONObject; + +import lombok.Data; + +@Data +public class SaltFront { + + // 脚本数据库中的ID + private Long scriptId; + private String content; + private String category; + private String params; + private String userNo; + private String executeUser; + private JSONObject saltAuth; + private JSONObject ftpAuth; + private String remotePath; + private String localPath; + + public SaltFront() {} + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptFront.java new file mode 100644 index 0000000..9272846 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptFront.java @@ -0,0 +1,40 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import java.util.List; +import java.util.Map; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ScriptFront { + + // 脚本执行参数 + private String params; + // + private String context; + // 脚本信息 + private List> scripts; + + // -----------内置单脚本(临时使用,后面会优化调)------------ + // 脚本分组ID + private List groupId; + // 脚本数据库中的ID + private Long scriptId; + // 脚本内容 + private String content; + // 脚本类别:shell|bat 等 + private String category; + // + private String code; + // 脚本是否异步执行 + private Boolean async; + /** + * 脚本执行异步执行超时时间 + */ + private Long asyncTimeout; + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptLocalFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptLocalFront.java new file mode 100644 index 0000000..b152455 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptLocalFront.java @@ -0,0 +1,40 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ScriptLocalFront { + + // 脚本执行参数 + private String params; + // + private String context; + // 脚本信息 + private List> scripts; + + // -----------内置单脚本(临时使用,后面会优化调)------------ + // 脚本分组ID + private List groupId; + // 脚本数据库中的ID + private Long scriptId; + // 脚本内容 + private String content; + // 脚本类别:shell|bat 等 + private String category; + // + private String code; + // 脚本是否异步执行 + private Boolean async; + /** + * 脚本执行异步执行超时时间 + */ + private Long asyncTimeout; + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptsFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptsFront.java new file mode 100644 index 0000000..d5549dd --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ScriptsFront.java @@ -0,0 +1,20 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import java.util.List; +import java.util.Map; + +import lombok.Data; + +@Data +public class ScriptsFront { + + private List> scripts; + private List params; + + public ScriptsFront(List> scripts) { + this.scripts = scripts; + } + + public ScriptsFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ServiceFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ServiceFront.java new file mode 100644 index 0000000..f3b1856 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/ServiceFront.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class ServiceFront { + + private String name; + private String state; + private Boolean enabled; + private String arguments; + @JSONField(name = "start_mode") + private String startMode; + + public ServiceFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/TemplateFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/TemplateFront.java new file mode 100644 index 0000000..a67af38 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/TemplateFront.java @@ -0,0 +1,26 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +/** + * 模板参数 + * + * @author weiwei + * + */ +@Data +public class TemplateFront { + + private String name; + private JSONObject args; + + public TemplateFront() {} + + public TemplateFront(String name, JSONObject args) { + super(); + this.name = name; + this.args = args; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/UserFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/UserFront.java new file mode 100644 index 0000000..c783f98 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/maintain/UserFront.java @@ -0,0 +1,17 @@ +package com.bocloud.tse.core.domain.front.maintain; + +import java.util.List; +import java.util.Map; + +import lombok.Data; + +@Data +public class UserFront { + + private String type; + private Map sudo; + private List> users; + + public UserFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ActivemqFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ActivemqFront.java new file mode 100644 index 0000000..6498394 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ActivemqFront.java @@ -0,0 +1,27 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class ActivemqFront { + + private String version; + // private List> queue; + // private List> topic; + // private List> authentication; + @JSONField(name = "activemq_admin_user") + private List> activemqAdminUser; + + public ActivemqFront() {} + + public ActivemqFront(String version, List> activemqAdminUser) { + this.version = version; + this.activemqAdminUser = activemqAdminUser; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ApacheFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ApacheFront.java new file mode 100644 index 0000000..4cee780 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ApacheFront.java @@ -0,0 +1,25 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class ApacheFront { + + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "apache_vhosts") + private List> apacheVhosts; + + public ApacheFront() {} + + public ApacheFront(Map softwareConfig, List> apacheVhosts) { + this.softwareConfig = softwareConfig; + this.apacheVhosts = apacheVhosts; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ElasticsearchFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ElasticsearchFront.java new file mode 100644 index 0000000..99050b8 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ElasticsearchFront.java @@ -0,0 +1,23 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class ElasticsearchFront { + + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "cluster_type") + private String clusterType; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "cluster_name") + private String clusterName; + + public ElasticsearchFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/EtcdFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/EtcdFront.java new file mode 100644 index 0000000..a9599a9 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/EtcdFront.java @@ -0,0 +1,36 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class EtcdFront { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "etcd_secure") + private boolean etcdSecure; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "etcd_initial_cluster_token") + private String etcdInitialClusterToken; + + public EtcdFront() {} + + public EtcdFront(Map softwareConfig) { + this.softwareConfig = softwareConfig; + } + + public EtcdFront(boolean clusterInstall, boolean etcdSecure, Map softwareConfig, + String etcdInitialClusterToken) { + this.clusterInstall = clusterInstall; + this.etcdSecure = etcdSecure; + this.softwareConfig = softwareConfig; + this.etcdInitialClusterToken = etcdInitialClusterToken; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ExporterFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ExporterFront.java new file mode 100644 index 0000000..95265c9 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ExporterFront.java @@ -0,0 +1,13 @@ +package com.bocloud.tse.core.domain.front.software; + +import lombok.Data; + +@Data +public class ExporterFront { + + private String version; + private String path; + + public ExporterFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/GitlabFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/GitlabFront.java new file mode 100644 index 0000000..d49e0c4 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/GitlabFront.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class GitlabFront { + + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "gitlab_root_password") + private String gitlabRootPassword; + + public GitlabFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/JdkFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/JdkFront.java new file mode 100644 index 0000000..83878c6 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/JdkFront.java @@ -0,0 +1,24 @@ +package com.bocloud.tse.core.domain.front.software; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class JdkFront { + + private String version; + @JSONField(name = "install_jce") + private Boolean installJce; + @JSONField(name = "set_java_home") + private Boolean setJavaHome; + + public JdkFront(String version, Boolean installJce, Boolean setJavaHome) { + this.version = version; + this.installJce = installJce; + this.setJavaHome = setJavaHome; + } + + public JdkFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/JenkinsFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/JenkinsFront.java new file mode 100644 index 0000000..5982782 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/JenkinsFront.java @@ -0,0 +1,21 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class JenkinsFront { + + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "jenkins_admin_username") + private String jenkinsAdminUsername; + @JSONField(name = "jenkins_admin_password") + private String jenkinsAdminPassword; + + public JenkinsFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/K8sFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/K8sFront.java new file mode 100644 index 0000000..7b7ee72 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/K8sFront.java @@ -0,0 +1,40 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class K8sFront { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "container_config") + private Map containerConfig; + @JSONField(name = "k8s_config") + private Map k8sConfig; + @JSONField(name = "network_config") + private Map networkConfig; + @JSONField(name = "storage_config") + private Map storageConfig; + @JSONField(name = "harbor_config") + private Map harborConfig; + private List groups; + + public K8sFront() {} + + public void setHarborConfig(Map harborConfig) { + if (null == harborConfig || harborConfig.isEmpty()) { + return; + } + this.harborConfig = harborConfig; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/KafkaFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/KafkaFront.java new file mode 100644 index 0000000..a39d6af --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/KafkaFront.java @@ -0,0 +1,90 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class KafkaFront { + + private String version; + private List groups; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "zookeeper") + private KafkaZkFront zookeeper; + @JSONField(name = "manage_config") + private Map manageConfig; + @JSONField(name = "jmx_exporter_config") + private Map jmxExporterConfig; + @JSONField(name = "install_jmx_exporter") + private boolean installJmxExporter; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "install_kafka_exporter") + private boolean installKafkaExporter; + @JSONField(name = "auth_config") + private Map authConfig; + @JSONField(name = "kafka_server") + private Map kafkaServer; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + + public KafkaFront(String version, List groups, boolean clusterInstall, Map softwareConfig, + KafkaZkFront zookeeper, Map manageConfig, Map jmxExporterConfig, + boolean installJmxExporter, List> mntDisks, boolean installKafkaExporter, + Map authConfig, Map kafkaServer, boolean installTelegraf) { + this.version = version; + this.groups = groups; + this.softwareConfig = softwareConfig; + this.clusterInstall = clusterInstall; + this.zookeeper = zookeeper; + this.manageConfig = manageConfig; + this.jmxExporterConfig = jmxExporterConfig; + this.installJmxExporter = installJmxExporter; + this.mntDisks = mntDisks; + this.installKafkaExporter = installKafkaExporter; + this.authConfig = authConfig; + this.kafkaServer = kafkaServer; + this.installTelegraf = installTelegraf; + } + + public KafkaFront() { + super(); + } + + public void setJmxExporterConfig(Map jmxExporterConfig) { + if (null == jmxExporterConfig || jmxExporterConfig.isEmpty()) { + return; + } + this.jmxExporterConfig = jmxExporterConfig; + } + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + + public void setAuthConfig(Map authConfig) { + if (null == authConfig || authConfig.isEmpty()) { + return; + } + this.authConfig = authConfig; + } + + public void setKafkaServer(Map kafkaServer) { + if (null == kafkaServer || kafkaServer.isEmpty()) { + return; + } + this.kafkaServer = kafkaServer; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/KafkaZkFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/KafkaZkFront.java new file mode 100644 index 0000000..0bab9bd --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/KafkaZkFront.java @@ -0,0 +1,27 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class KafkaZkFront extends ZookeeperFront { + + private List hosts; + + public KafkaZkFront(List hosts) { + this.hosts = hosts; + } + + public KafkaZkFront(String version, List groups, boolean clusterInstall, Map softwareConfig, + List hosts) { + super(version, groups, clusterInstall, softwareConfig); + this.hosts = hosts; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MemcacheFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MemcacheFront.java new file mode 100644 index 0000000..8d28cdf --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MemcacheFront.java @@ -0,0 +1,44 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class MemcacheFront { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "magent_config") + private Map magentConfig; + private List groups; + + public MemcacheFront(String version, boolean clusterInstall, Map softwareConfig, + Map magentConfig, List groups) { + super(); + this.version = version; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.magentConfig = magentConfig; + this.groups = groups; + } + + public MemcacheFront() { + super(); + } + + public void setMagentConfig(Map magentConfig) { + if (null == magentConfig || magentConfig.isEmpty()) { + return; + } + this.magentConfig = magentConfig; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MongodbFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MongodbFront.java new file mode 100644 index 0000000..bd645f9 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MongodbFront.java @@ -0,0 +1,65 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class MongodbFront { + + private String version; + private List groups; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "manage_config") + private Map manageConfig; + @JSONField(name = "mongodb_users") + private List> mongodbUsers; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + + public MongodbFront(String version, List groups, boolean clusterInstall, Map softwareConfig, + Map manageConfig, List> mongodbUsers, List> mntDisks, + boolean installTelegraf) { + this.version = version; + this.groups = groups; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.manageConfig = manageConfig; + this.mongodbUsers = mongodbUsers; + this.mntDisks = mntDisks; + this.installTelegraf = installTelegraf; + } + + public MongodbFront() {} + + public void setManageConfig(Map manageConfig) { + if (null == manageConfig || manageConfig.isEmpty()) { + return; + } + this.manageConfig = manageConfig; + } + + public void setMongodbUsers(List> mongodbUsers) { + if (null == mongodbUsers || mongodbUsers.isEmpty()) { + return; + } + this.mongodbUsers = mongodbUsers; + } + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MysqlFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MysqlFront.java new file mode 100644 index 0000000..6aa6cbe --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/MysqlFront.java @@ -0,0 +1,74 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class MysqlFront { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "cluster_vip") + private String clusterVip; + @JSONField(name = "mysql_vip_netmask") + private String mysqlVipNetmask; + @JSONField(name = "mysql_replication_master") + private String mysqlReplicationMaster; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "mysql_databases") + private List> mysqlDatabases; + @JSONField(name = "mysql_users") + private List> mysqlUsers; + @JSONField(name = "mysql_replication_user") + private Map mysqlReplicationUser; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + private List groups; + /** + * mha,mgr,msv主从,msb主备 + */ + @JSONField(name = "cluster_type") + private String clusterType; + @JSONField(name = "keepalived_virtual_router_id") + private Integer keepalivedVirtualRouterId; + + public MysqlFront() {} + + public void setMysqlDatabases(List> mysqlDatabases) { + if (null == mysqlDatabases || mysqlDatabases.isEmpty()) { + return; + } + this.mysqlDatabases = mysqlDatabases; + } + + public void setMysqlUsers(List> mysqlUsers) { + if (null == mysqlUsers || mysqlUsers.isEmpty()) { + return; + } + this.mysqlUsers = mysqlUsers; + } + + public void setMysqlReplicationUser(Map mysqlReplicationUser) { + if (null == mysqlReplicationUser || mysqlReplicationUser.isEmpty()) { + return; + } + this.mysqlReplicationUser = mysqlReplicationUser; + } + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/NfsFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/NfsFront.java new file mode 100644 index 0000000..01bc2fe --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/NfsFront.java @@ -0,0 +1,29 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class NfsFront { + + private List groups; + @JSONField(name = "nfs_server") + private Map nfsServer; + @JSONField(name = "nfs_client") + private boolean nfsClient; + @JSONField(name = "mount_pointers") + private List> mountPointers; + + public NfsFront(Map nfsServer, boolean nfsClient) { + this.nfsServer = nfsServer; + this.nfsClient = nfsClient; + } + + public NfsFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/NginxFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/NginxFront.java new file mode 100644 index 0000000..712b3c4 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/NginxFront.java @@ -0,0 +1,40 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.common.NginxConfig; +import com.bocloud.tse.core.domain.common.NginxHttpParam; +import com.bocloud.tse.core.domain.common.NginxSite; + +import lombok.Data; + +@Data +public class NginxFront { + + @JSONField(name = "cluster_install") + private boolean clusterInstall = false; + @JSONField(name = "nginx_http_params") + private NginxHttpParam nginxHttpParam; + @JSONField(name = "nginx_configs") + private NginxConfig nginxConfig; + @JSONField(name = "nginx_sites") + private Map nginxSites; + + public NginxFront() {} + + public void setNginxConfig(NginxConfig nginxConfig) { + if (null != nginxConfig && nginxConfig.empty()) { + return; + } + this.nginxConfig = nginxConfig; + } + + public void setNginxSites(Map nginxSites) { + if (null != nginxSites && nginxSites.isEmpty()) { + return; + } + this.nginxSites = nginxSites; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/OracleFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/OracleFront.java new file mode 100644 index 0000000..058b242 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/OracleFront.java @@ -0,0 +1,31 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class OracleFront { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + private List groups; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "manage_config") + private Map manageConfig; + @JSONField(name = "oracle_databases") + private List> oracleDatabases; + @JSONField(name = "asm_diskgroups") + private Map>> asmDiskGroups; + @JSONField(name = "host_fs_layout") + private List> hostFsLayout; + + public OracleFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/PhpFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/PhpFront.java new file mode 100644 index 0000000..ebbe5e4 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/PhpFront.java @@ -0,0 +1,17 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class PhpFront { + + @JSONField(name = "software_config") + private Map softwareConfig; + + public PhpFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/PostgresqlFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/PostgresqlFront.java new file mode 100644 index 0000000..2615466 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/PostgresqlFront.java @@ -0,0 +1,117 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class PostgresqlFront { + + private String version; + private List groups; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "postgresql_databases") + private List> postgresqlDatabases; + @JSONField(name = "postgresql_users") + private List> postgresqlUsers; + @JSONField(name = "postgresql_privileges") + private List> postgresqlPrivileges; + @JSONField(name = "postgresql_schemas") + private List> postgresqlSchemas; + @JSONField(name = "postgresql_extensions") + private List> postgresqlExtensions; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "etcd_config") + private Map etcdConfig; + @JSONField(name = "cluster_config") + private Map clusterConfig; + + public PostgresqlFront(String version, List groups, boolean clusterInstall, + Map softwareConfig, List> postgresqlDatabases, + List> postgresqlUsers, List> postgresqlPrivileges, + List> postgresqlSchemas, List> postgresqlExtensions, + List> mntDisks, Map etcdConfig, Map clusterConfig) { + super(); + this.version = version; + this.groups = groups; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.postgresqlDatabases = postgresqlDatabases; + this.postgresqlUsers = postgresqlUsers; + this.postgresqlPrivileges = postgresqlPrivileges; + this.postgresqlSchemas = postgresqlSchemas; + this.postgresqlExtensions = postgresqlExtensions; + this.mntDisks = mntDisks; + this.etcdConfig = etcdConfig; + this.clusterConfig = clusterConfig; + } + + public PostgresqlFront() { + super(); + } + + public void setPostgresqlDatabases(List> postgresqlDatabases) { + if (null == postgresqlDatabases || postgresqlDatabases.isEmpty()) { + return; + } + this.postgresqlDatabases = postgresqlDatabases; + } + + public void setPostgresqlUsers(List> postgresqlUsers) { + if (null == postgresqlUsers || postgresqlUsers.isEmpty()) { + return; + } + this.postgresqlUsers = postgresqlUsers; + } + + public void setPostgresqlPrivileges(List> postgresqlPrivileges) { + if (null == postgresqlPrivileges || postgresqlPrivileges.isEmpty()) { + return; + } + this.postgresqlPrivileges = postgresqlPrivileges; + } + + public void setPostgresqlSchemas(List> postgresqlSchemas) { + if (null == postgresqlSchemas || postgresqlSchemas.isEmpty()) { + return; + } + this.postgresqlSchemas = postgresqlSchemas; + } + + public void setPostgresqlExtensions(List> postgresqlExtensions) { + if (null == postgresqlExtensions || postgresqlExtensions.isEmpty()) { + return; + } + this.postgresqlExtensions = postgresqlExtensions; + } + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + + public void setEtcdConfig(Map etcdConfig) { + if (null == etcdConfig || etcdConfig.isEmpty()) { + return; + } + this.etcdConfig = etcdConfig; + } + + public void setClusterConfig(Map clusterConfig) { + if (null == clusterConfig || clusterConfig.isEmpty()) { + return; + } + this.clusterConfig = clusterConfig; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RabbitmqFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RabbitmqFront.java new file mode 100644 index 0000000..2c65a5d --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RabbitmqFront.java @@ -0,0 +1,72 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class RabbitmqFront { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "rabbitmq_users") + private List> rabbitmqUsers; + @JSONField(name = "rabbitmq_vhosts") + private List> rabbitmqVhosts; + @JSONField(name = "rabbitmq_plugins") + private List> rabbitmqPlugins; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "rabbitmq_admin_user") + private String rabbitmqAdminUser; + @JSONField(name = "rabbitmq_admin_password") + private String rabbitmqAdminPassword; + + public RabbitmqFront(String version, boolean clusterInstall, List> rabbitmqUsers, + List> rabbitmqVhosts, List> rabbitmqPlugins, + List> mntDisks, String rabbitmqAdminUser, String rabbitmqAdminPassword) { + this.version = version; + this.clusterInstall = clusterInstall; + this.rabbitmqUsers = rabbitmqUsers; + this.rabbitmqVhosts = rabbitmqVhosts; + this.rabbitmqPlugins = rabbitmqPlugins; + this.mntDisks = mntDisks; + this.rabbitmqAdminUser = rabbitmqAdminUser; + this.rabbitmqAdminPassword = rabbitmqAdminPassword; + } + + public RabbitmqFront() {} + + public void setRabbitmqUsers(List> rabbitmqUsers) { + if (null == rabbitmqUsers || rabbitmqUsers.isEmpty()) { + return; + } + this.rabbitmqUsers = rabbitmqUsers; + } + + public void setRabbitmqVhosts(List> rabbitmqVhosts) { + if (null == rabbitmqVhosts || rabbitmqVhosts.isEmpty()) { + return; + } + this.rabbitmqVhosts = rabbitmqVhosts; + } + + public void setRabbitmqPlugins(List> rabbitmqPlugins) { + if (null == rabbitmqPlugins || rabbitmqPlugins.isEmpty()) { + return; + } + this.rabbitmqPlugins = rabbitmqPlugins; + } + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RacIscsiFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RacIscsiFront.java new file mode 100644 index 0000000..e105bab --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RacIscsiFront.java @@ -0,0 +1,24 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class RacIscsiFront { + + private List groups; + @JSONField(name = "iscsi_config") + private Map iscsiConfig; + + public RacIscsiFront(Map iscsiConfig) { + this.iscsiConfig = iscsiConfig; + } + + public RacIscsiFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RedisFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RedisFront.java new file mode 100644 index 0000000..abd77f3 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RedisFront.java @@ -0,0 +1,63 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class RedisFront { + + private String version; + private List groups; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "manage_config") + private Map manageConfig; + @JSONField(name = "mnt_disks") + private List> mntDisks; + @JSONField(name = "install_telegraf") + private boolean installTelegraf; + @JSONField(name = "redis_master_nodes") + private List redisMasterNodes; + @JSONField(name = "redis_slave_nodes") + private List redisSlaveNodes; + @JSONField(name = "cluster_type") + private String clusterType; + + public RedisFront(String version, List groups, boolean clusterInstall, Map softwareConfig, + Map manageConfig, List> mntDisks, boolean installTelegraf, + List redisMasterNodes, List redisSlaveNodes) { + this.version = version; + this.groups = groups; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.manageConfig = manageConfig; + this.mntDisks = mntDisks; + this.installTelegraf = installTelegraf; + this.redisMasterNodes = redisMasterNodes; + this.redisSlaveNodes = redisSlaveNodes; + } + + public RedisFront() {} + + public void setManageConfig(Map manageConfig) { + if (null == manageConfig || manageConfig.isEmpty()) { + return; + } + this.manageConfig = manageConfig; + } + + public void setMntDisks(List> mntDisks) { + if (null == mntDisks || mntDisks.isEmpty()) { + return; + } + this.mntDisks = mntDisks; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RocketmqFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RocketmqFront.java new file mode 100644 index 0000000..9f435be --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/RocketmqFront.java @@ -0,0 +1,45 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class RocketmqFront { + + private String version; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "cluster_name") + private String clusterName; + @JSONField(name = "rocketmq_nameserver_list") + private String rocketmqNameserverList; + @JSONField(name = "install_rocketmq_exporter") + private boolean installRocketmqExporter; + // @JSONField(name = "rocketmq_exporter_config") + // private Map rocketmqExporterConfig; + private List groups; + + public RocketmqFront(String version, boolean clusterInstall, Map softwareConfig, String clusterName, + String rocketmqNameserverList, boolean installRocketmqExporter, List groups) { + super(); + this.version = version; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + this.clusterName = clusterName; + this.rocketmqNameserverList = rocketmqNameserverList; + this.installRocketmqExporter = installRocketmqExporter; + this.groups = groups; + } + + public RocketmqFront() { + super(); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/SqlserverFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/SqlserverFront.java new file mode 100644 index 0000000..f6cb652 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/SqlserverFront.java @@ -0,0 +1,33 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class SqlserverFront { + + private String version; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "win_disk") + private Map winDisk; + + public SqlserverFront(String version, Map softwareConfig, Map winDisk) { + this.version = version; + this.softwareConfig = softwareConfig; + this.winDisk = winDisk; + } + + public SqlserverFront() {} + + public void setWinDisk(Map winDisk) { + if (null == winDisk || winDisk.isEmpty()) { + return; + } + this.winDisk = winDisk; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/TomcatFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/TomcatFront.java new file mode 100644 index 0000000..aad87ef --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/TomcatFront.java @@ -0,0 +1,28 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.common.TomcatInstance; + +import lombok.Data; + +@Data +public class TomcatFront { + + private String version; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "tomcat_instances") + private List tomcatInstances; + + public TomcatFront() {} + + public void setTomcatInstances(List tomcatInstances) { + if (null != tomcatInstances && !tomcatInstances.isEmpty()) { + this.tomcatInstances = tomcatInstances; + } + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WeblogicFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WeblogicFront.java new file mode 100644 index 0000000..d549cf6 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WeblogicFront.java @@ -0,0 +1,33 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class WeblogicFront { + + private String version; + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "manage_config") + private Map manageConfig; + @JSONField(name = "jdk_version") + private String jdkVersion; + @JSONField(name = "os_user") + private String osUser; + + public WeblogicFront(String version, Map softwareConfig, Map manageConfig, + String jdkVersion, String osUser) { + this.version = version; + this.softwareConfig = softwareConfig; + this.manageConfig = manageConfig; + this.jdkVersion = jdkVersion; + this.osUser = osUser; + } + + public WeblogicFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WebsphereFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WebsphereFront.java new file mode 100644 index 0000000..3da0786 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WebsphereFront.java @@ -0,0 +1,23 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class WebsphereFront { + + @JSONField(name = "software_config") + private Map softwareConfig; + + public WebsphereFront(Map softwareConfig) { + this.softwareConfig = softwareConfig; + } + + public WebsphereFront() { + super(); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WebspheremqFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WebspheremqFront.java new file mode 100644 index 0000000..dfe3b5f --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/WebspheremqFront.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; + +import lombok.Data; + +@Data +public class WebspheremqFront { + + @JSONField(name = "software_config") + private Map softwareConfig; + @JSONField(name = "version") + private String version; + + public WebspheremqFront() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ZookeeperFront.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ZookeeperFront.java new file mode 100644 index 0000000..8f11ac4 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/front/software/ZookeeperFront.java @@ -0,0 +1,31 @@ +package com.bocloud.tse.core.domain.front.software; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.annotation.JSONField; +import com.bocloud.tse.core.domain.group.Group; + +import lombok.Data; + +@Data +public class ZookeeperFront { + + private String version; + private List groups; + @JSONField(name = "cluster_install") + private boolean clusterInstall; + @JSONField(name = "software_config") + private Map softwareConfig; + + public ZookeeperFront() {} + + public ZookeeperFront(String version, List groups, boolean clusterInstall, + Map softwareConfig) { + this.version = version; + this.groups = groups; + this.clusterInstall = clusterInstall; + this.softwareConfig = softwareConfig; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/ElasticsearchGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/ElasticsearchGroup.java new file mode 100644 index 0000000..026b387 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/ElasticsearchGroup.java @@ -0,0 +1,123 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import com.bocloud.tse.core.domain.front.software.ElasticsearchFront; +import com.bocloud.tse.model.WorkerHost; +import com.megatron.common.utils.ListTool; +import com.megatron.common.utils.MapTools; + +public class ElasticsearchGroup { + + private ElasticsearchFront front; + private List targets; + private Map> targetsMap; + private List groups; + private int index = 1; + + public ElasticsearchGroup(ElasticsearchFront front, List targets, + Map> targetsMap) { + this.front = front; + this.targets = targets; + this.targetsMap = targetsMap; + this.groups = new ArrayList<>(); + this.build(); + } + + private void build() { + List list = targets; + // 对数据进行处理 + if (ListTool.isEmpty(list) && null != targetsMap) { + list = new ArrayList<>(); + Iterator> iterator = targetsMap.values().iterator(); + while (iterator.hasNext()) { + list.addAll(iterator.next()); + } + } + this.groups.add(buildGroup(list)); + } + + private Group buildGroup(List list) { + Group group = new Group(); + group.setName("es_hosts"); + if (null == list) { + list = new ArrayList<>(); + } + List hosts = new ArrayList<>(); + if (1 == list.size() || 3 == list.size()) { + // 一个节点, 这个节点为master和data节点 + // 三个节点,三个节点全是master和data节点。 + hosts = buildAllMasterGroup(list); + } else if (2 == list.size()) { + // 二个节点,这二个节点都是data节点,仅仅第一个节点是master节点 + hosts = buildFirstMasterGroup(list); + } + // 暂时不考虑大于3个节点的情况 + group.setHosts(hosts); + return group; + } + + private List buildAllMasterGroup(List workers) { + List instances = new ArrayList<>(); + List masters = new ArrayList<>(); + List list = new ArrayList<>(); + workers.stream().forEach(worker -> { + GroupHost host = new GroupHost(); + host.setHost(worker.getHost()); + // 节点名称规则固定 + String nodeName = "es_node_" + (index++); + Map vars = MapTools.simpleMap("node_name", nodeName); + vars.put("node_master", true); + vars.put("node_data", true); + host.setVars(vars); + list.add(host); + // 拼接software config中参数 + instances.add(worker.getHost() + ":" + worker.getPort()); + masters.add(nodeName); + }); + // 处理soft config中跟节点相关的配置 + Map config = front.getSoftwareConfig(); + config.put("discovery_seed_hosts", instances); + config.put("cluster_initial_master_node", masters); + front.setSoftwareConfig(config); + return list; + } + + private List buildFirstMasterGroup(List workers) { + List instances = new ArrayList<>(); + List masters = new ArrayList<>(); + List list = new ArrayList<>(); + workers.stream().forEach(worker -> { + GroupHost host = new GroupHost(); + host.setHost(worker.getHost()); + // 节点名称规则固定 + String nodeName = "es_node_" + index; + Map vars = MapTools.simpleMap("node_name", nodeName); + vars.put("node_data", true); + if (index++ > 1) { + // 只有第一个节点为master + vars.put("node_master", false); + } else { + vars.put("node_master", true); + masters.add(nodeName); + } + host.setVars(vars); + list.add(host); + // 拼接software config中参数 + instances.add(worker.getHost() + ":" + worker.getPort()); + }); + // 处理soft config中跟节点相关的配置 + Map config = front.getSoftwareConfig(); + config.put("discovery_seed_hosts", instances); + config.put("cluster_initial_master_node", masters); + front.setSoftwareConfig(config); + return list; + } + + public List getGroups() { + return groups; + } +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/Group.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/Group.java new file mode 100644 index 0000000..5627d7d --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/Group.java @@ -0,0 +1,23 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.List; +import java.util.Map; + +import lombok.Data; + +@Data +public class Group { + + private String name; + private List hosts; + private Map vars; + + public Group(String name, List hosts, Map vars) { + this.name = name; + this.hosts = hosts; + this.vars = vars; + } + + public Group() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/GroupHost.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/GroupHost.java new file mode 100644 index 0000000..7e805e2 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/GroupHost.java @@ -0,0 +1,21 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.Map; + +import lombok.Data; + +@Data +public class GroupHost { + + private String host; + private String real; + private Map vars; + + public GroupHost(String host, Map vars) { + this.host = host; + this.vars = vars; + } + + public GroupHost() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/IscsiGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/IscsiGroup.java new file mode 100644 index 0000000..da590cc --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/IscsiGroup.java @@ -0,0 +1,45 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.List; + +import com.bocloud.tse.core.domain.front.software.RacIscsiFront; +import com.megatron.common.utils.ListTool; +import com.megatron.common.utils.MapTools; + +public class IscsiGroup { + + private RacIscsiFront front; + private List groups; + + public IscsiGroup(RacIscsiFront front) { + this.front = front; + this.groups = new ArrayList<>(); + this.build(); + } + + private void build() { + List list = front.getGroups(); + if (ListTool.isEmpty(list)) { + return; + } + for (Group group : list) { + switch (group.getName()) { + case "iscsi_client": + group.setVars(MapTools.simpleMap("iscsi_role", "client")); + break; + case "iscsi_server": + group.setVars(MapTools.simpleMap("iscsi_role", "server")); + break; + default: + continue; + } + this.groups.add(group); + } + } + + public List getGroups() { + return groups; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/K8sGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/K8sGroup.java new file mode 100644 index 0000000..0c9ef0f --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/K8sGroup.java @@ -0,0 +1,30 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.List; + +import com.bocloud.tse.core.domain.front.software.K8sFront; + +public class K8sGroup { + + private K8sFront front; + private List groups; + + public K8sGroup(K8sFront front) { + this.front = front; + this.groups = new ArrayList<>(); + this.build(); + } + + private void build() { + List list = front.getGroups(); + for (Group group : list) { + this.groups.add(group); + } + } + + public List getGroups() { + return groups; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/KafkaGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/KafkaGroup.java new file mode 100644 index 0000000..1844dba --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/KafkaGroup.java @@ -0,0 +1,87 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import com.alibaba.druid.util.StringUtils; +import com.alibaba.fastjson.JSONObject; +import com.bocloud.tse.core.domain.front.software.KafkaFront; +import com.megatron.common.utils.ListTool; +import com.megatron.common.utils.MapTools; + +public class KafkaGroup { + + private KafkaFront front; + private List groups; + private boolean networks; + + public KafkaGroup(KafkaFront front) { + this.front = front; + this.groups = new ArrayList<>(); + this.build(); + } + + private void build() { + List list = front.getGroups(); + if (ListTool.isEmpty(list)) { + return; + } + for (Group group : list) { + switch (group.getName()) { + case "kafka": + group = buildKafkaGroup(group); + break; + case "zookeeper": + group = buildZkGroup(group); + break; + default: + break; + } + this.groups.add(group); + } + } + + private Group buildKafkaGroup(Group group) { + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + JSONObject object = new JSONObject(); + if (StringUtils.isEmpty(host.getReal()) || host.getHost().equals(host.getReal())) { + object.put("listeners", "PLAINTEXT://0.0.0.0:9092"); + object.put("advertised_listeners", "PLAINTEXT://" + host.getHost() + ":9092"); + } else { + object.put("listeners", "INSIDE://0.0.0.0:9093,OUTSIDE://0.0.0.0:9092"); + object.put("advertised_listeners", + "OUTSIDE://" + host.getReal() + ":9092,INSIDE://" + host.getHost() + ":9093"); + networks = true; + } + + Map vars = MapTools.simpleMap("node_server_cfg", object); + host.setVars(vars); + } + return new Group(group.getName(), hosts, group.getVars()); + } + + private Group buildZkGroup(Group group) { + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + if (StringUtils.isEmpty(host.getReal())) { + Map vars = MapTools.simpleMap("proxy_host", host.getHost()); + host.setVars(vars); + } else { + Map vars = MapTools.simpleMap("proxy_host", host.getReal()); + host.setVars(vars); + } + } + return new Group(group.getName(), hosts, group.getVars()); + } + + public List getGroups() { + return groups; + } + + public boolean isNetworks() { + return networks; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MemcacheGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MemcacheGroup.java new file mode 100644 index 0000000..8b90a12 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MemcacheGroup.java @@ -0,0 +1,36 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.List; + +import com.bocloud.tse.core.domain.input.software.MemcacheInput; +import com.bocloud.tse.model.WorkerHost; + +public class MemcacheGroup { + + private List groups; + + public MemcacheGroup(MemcacheInput input) { + if (input.getFronts().isClusterInstall()) { + this.groups = input.getFronts().getGroups(); + } else { + this.groups = new ArrayList<>(); + this.build(input); + } + } + + private void build(MemcacheInput input) { + List hosts = input.getTarget().getData(); + List list = new ArrayList<>(); + for (WorkerHost host : hosts) { + list.add(new GroupHost(host.getHost(), null)); + } + Group group = new Group("memcached_masters", list, null); + this.groups.add(group); + } + + public List getGroups() { + return groups; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MongoGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MongoGroup.java new file mode 100644 index 0000000..8754ad4 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MongoGroup.java @@ -0,0 +1,111 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; + +import com.bocloud.tse.core.domain.front.software.MongodbFront; +import com.megatron.common.utils.ListTool; +import com.megatron.common.utils.MapTools; + +public class MongoGroup { + + private MongodbFront front; + private List groups; + + public MongoGroup(MongodbFront front) { + this.front = front; + this.groups = new ArrayList<>(); + this.build(); + } + + private void build() { + List list = front.getGroups(); + if (ListTool.isEmpty(list) || !front.isClusterInstall()) { + return; + } + for (Group group : list) { + switch (group.getName()) { + case "mongo_master": + group = buildMasterGroup(group); + break; + case "mongo_replicas": + group = buildSlaveGroup(group); + break; + case "mongo_arbiter": + group = buildArbiterGroup(group); + break; + default: + continue; + } + this.groups.add(group); + } + } + + private Group buildMasterGroup(Group group) { + Map config = front.getManageConfig(); + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + Map vars = MapTools.simpleMap("mongodb_master", true); + List> params = new ArrayList<>(); + if (StringUtils.isEmpty(host.getReal())) { + params.add(MapTools.simpleMap("host_name", host.getHost())); + config.put("mongodb_login_host", host.getHost()); + } else { + params.add(MapTools.simpleMap("host_name", host.getReal())); + config.put("mongodb_login_host", host.getReal()); + } + vars.put("mongodb_replication_params", params); + host.setVars(vars); + hosts.set(hosts.indexOf(host), host); + } + front.setManageConfig(config); + return new Group(group.getName(), hosts, group.getVars()); + } + + private Group buildSlaveGroup(Group group) { + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + Map vars = new HashMap<>(); + List> params = new ArrayList<>(); + Map param = MapTools.simpleMap("host_type", "replica"); + if (StringUtils.isEmpty(host.getReal())) { + param.put("host_name", host.getHost()); + } else { + param.put("host_name", host.getReal()); + } + params.add(param); + vars.put("mongodb_replication_params", params); + host.setVars(vars); + hosts.set(hosts.indexOf(host), host); + } + return new Group(group.getName(), hosts, group.getVars()); + } + + private Group buildArbiterGroup(Group group) { + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + Map vars = new HashMap<>(); + List> params = new ArrayList<>(); + Map param = MapTools.simpleMap("host_type", "arbiter"); + if (StringUtils.isEmpty(host.getReal())) { + param.put("host_name", host.getHost()); + } else { + param.put("host_name", host.getReal()); + } + params.add(param); + vars.put("mongodb_replication_params", params); + host.setVars(vars); + hosts.set(hosts.indexOf(host), host); + } + return new Group(group.getName(), hosts, group.getVars()); + } + + public List getGroups() { + return groups; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MysqlGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MysqlGroup.java new file mode 100644 index 0000000..7091f18 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/MysqlGroup.java @@ -0,0 +1,134 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; + +import com.bocloud.tse.core.domain.front.software.MysqlFront; +import com.megatron.common.utils.ListTool; +import com.megatron.common.utils.MapTools; + +public class MysqlGroup { + + private MysqlFront front; + private List groups; + private int index = 1; + + public MysqlGroup(MysqlFront front) { + this.front = front; + this.groups = new ArrayList<>(); + this.build(); + } + + private void build() { + List list = front.getGroups(); + if (!front.isClusterInstall() || ListTool.isEmpty(list)) { + return; + } + for (Group group : list) { + switch (group.getName()) { + case "mysql_master": + group = buildMasterGroup(group); + break; + case "mysql_slave": + group = buildSlaveGroup(group); + break; + case "mysql": + group = buildMysqlGroup(group); + break; + default: + continue; + } + this.groups.add(group); + } + if (front.isClusterInstall()) { + boolean hasMysql = false; + List hosts = new ArrayList<>(); + for (Group group : groups) { + if ("mysql".equalsIgnoreCase(group.getName())) { + hasMysql = true; + } + List groupHosts = group.getHosts(); + for (GroupHost host : groupHosts) { + if (!hosts.contains(host.getHost())) { + hosts.add(host.getHost()); + } + } + } + if (!hasMysql) { + List groupHosts = new ArrayList<>(); + for (String host : hosts) { + groupHosts.add(new GroupHost(host, null)); + } + groups.add(new Group("mysql", groupHosts, null)); + } + } + String type = front.getClusterType(); + if ("msb".equalsIgnoreCase(type) || "mgr.single".equalsIgnoreCase(type)) { + String vip = front.getClusterVip(); + if (StringUtils.isNotEmpty(vip)) { + front.setKeepalivedVirtualRouterId(Integer.valueOf(vip.substring(vip.lastIndexOf(".") + 1))); + } + } + if (type.startsWith("mgr")) { + Map config = front.getSoftwareConfig(); + config.put("mysql_group_replication_single_primary_mode", + type.equalsIgnoreCase("mgr.single") ? "ON" : "OFF"); + config.put("mysql_group_replication_enforce_update_everywhere_checks", + type.equalsIgnoreCase("mgr.single") ? "OFF" : "ON"); + front.setSoftwareConfig(config); + front.setClusterType("mgr"); + } + } + + private Group buildMasterGroup(Group group) { + if (front.getClusterType().equalsIgnoreCase("mgr.multi")) { + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + Map vars = MapTools.simpleMap("mysql_server_id", index); + vars.put("mysql_replication_role", index == 1 ? "master" : "second_master"); + vars.put("public_ip", StringUtils.isEmpty(host.getReal()) ? host.getHost() : host.getReal()); + host.setVars(vars); + index++; + } + return group; + } + GroupHost host = group.getHosts().get(0); + String address = StringUtils.isEmpty(host.getReal()) ? host.getHost() : host.getReal(); + Map vars = MapTools.simpleMap("mysql_server_id", index); + vars.put("mysql_replication_role", "master"); + vars.put("public_ip", address); + host.setVars(vars); + Map config = front.getSoftwareConfig(); + config.put("replication_master_host", address); + front.setSoftwareConfig(config); + index++; + return group; + } + + private Group buildSlaveGroup(Group group) { + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + Map vars = MapTools.simpleMap("mysql_server_id", index); + vars.put("mysql_replication_role", "slave"); + if (front.getClusterType().equalsIgnoreCase("mha") && hosts.indexOf(host) == 0) { + vars.put("is_manager", true); + } + vars.put("public_ip", StringUtils.isEmpty(host.getReal()) ? host.getHost() : host.getReal()); + host.setVars(vars); + index++; + } + return group; + } + + private Group buildMysqlGroup(Group group) { + return group; + } + + public List getGroups() { + return groups; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/NfsGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/NfsGroup.java new file mode 100644 index 0000000..19dd3df --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/NfsGroup.java @@ -0,0 +1,55 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.bocloud.tse.core.domain.front.software.NfsFront; +import com.megatron.common.utils.ListTool; +import com.megatron.common.utils.MapTools; + +public class NfsGroup { + + private NfsFront front; + private List groups; + + public NfsGroup(NfsFront front) { + this.front = front; + this.groups = new ArrayList<>(); + this.build(); + } + + private void build() { + List list = front.getGroups(); + if (ListTool.isEmpty(list)) { + return; + } + for (Group group : list) { + switch (group.getName()) { + case "nfs_client": + group = buildGroup(group); + break; + default: + continue; + } + this.groups.add(group); + } + } + + private Group buildGroup(Group group) { + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + JSONArray array = JSONArray.parseArray(JSONObject.toJSONString(front.getMountPointers())); + Map vars = MapTools.simpleMap("mount_pointers", array); + host.setVars(vars); + } + return new Group(group.getName(), hosts, group.getVars()); + } + + public List getGroups() { + return groups; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/PostgresqlGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/PostgresqlGroup.java new file mode 100644 index 0000000..a2fc973 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/PostgresqlGroup.java @@ -0,0 +1,77 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; + +import com.bocloud.tse.core.domain.front.software.PostgresqlFront; +import com.megatron.common.utils.ListTool; +import com.megatron.common.utils.MapTools; + +public class PostgresqlGroup { + + private PostgresqlFront front; + private List groups; + + public PostgresqlGroup(PostgresqlFront front) { + this.front = front; + this.groups = new ArrayList<>(); + this.build(); + } + + private void build() { + List list = front.getGroups(); + if (ListTool.isEmpty(list)) { + return; + } + for (Group group : list) { + switch (group.getName()) { + case "postgres_cluster": + group = buildGroup(group); + List hosts = group.getHosts(); + List etcdHosts = new ArrayList<>(); + for (GroupHost host : hosts) { + GroupHost groupHost = new GroupHost(); + groupHost.setHost(host.getHost()); + groupHost.setReal(host.getReal()); + etcdHosts.add(groupHost); + } + this.groups.add(new Group("etcd_hosts", etcdHosts, null)); + break; + default: + break; + } + this.groups.add(group); + } + } + + private Group buildGroup(Group group) { + List hosts = group.getHosts(); + if (!ListTool.isEmpty(hosts)) { + int index = 1; + List etcdHosts = new ArrayList<>(); + for (GroupHost host : hosts) { + Map vars = MapTools.simpleMap("is_master", index == 1); + vars.put("hostname", "pgnode_" + index); + host.setVars(vars); + index++; + etcdHosts.add(StringUtils.isEmpty(host.getReal()) ? host.getHost() : host.getReal()); + } + Map clusterConfig = front.getClusterConfig(); + if (null == clusterConfig) { + clusterConfig = new HashMap<>(); + } + clusterConfig.put("patroni_etcd_hosts", etcdHosts); + front.setClusterConfig(clusterConfig); + } + return new Group(group.getName(), hosts, group.getVars()); + } + + public List getGroups() { + return groups; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RabbitmqGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RabbitmqGroup.java new file mode 100644 index 0000000..a87dbc6 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RabbitmqGroup.java @@ -0,0 +1,49 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import com.bocloud.tse.core.domain.front.software.RabbitmqFront; +import com.bocloud.tse.model.WorkerHost; +import com.megatron.common.utils.MapTools; + +public class RabbitmqGroup { + + private RabbitmqFront front; + private List groups; + + public RabbitmqGroup(RabbitmqFront front, List hosts) { + this.front = front; + this.groups = new ArrayList<>(); + this.build(hosts); + } + + private void build(List hosts) { + if (front.isClusterInstall()) { + this.groups.add(buildGroup(hosts)); + } + } + + private Group buildGroup(List hosts) { + Group group = new Group(); + group.setName("rabbitmq_cluster"); + List list = new ArrayList<>(); + int index = 1; + for (WorkerHost host : hosts) { + GroupHost groupHost = new GroupHost(); + groupHost.setHost(host.getHost()); + Map vars = MapTools.simpleMap("hostname", "rabbitmq_" + index); + groupHost.setVars(vars); + index++; + list.add(groupHost); + } + group.setHosts(list); + return group; + } + + public List getGroups() { + return groups; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RedisGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RedisGroup.java new file mode 100644 index 0000000..b09d742 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RedisGroup.java @@ -0,0 +1,100 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; + +import com.bocloud.tse.core.domain.front.software.RedisFront; +import com.megatron.common.utils.ListTool; +import com.megatron.common.utils.MapTools; + +public class RedisGroup { + + private List masters; + private List groups; + private RedisFront front; + + public RedisGroup(RedisFront front) { + this.front = front; + this.groups = new ArrayList<>(); + this.build(); + } + + private void build() { + List list = front.getGroups(); + if (ListTool.isEmpty(list)) { + return; + } + for (Group group : list) { + switch (group.getName()) { + case "redis_master": + this.masters = group.getHosts(); + group = buildMasterGroup(group); + break; + case "redis_slave": + group = buildSlaveGroup(group, front.getSoftwareConfig()); + break; + case "redis_sentinel": + group.setVars(MapTools.simpleMap("redis_sentinel", true)); + break; + default: + continue; + } + if (!ListTool.isEmpty(group.getHosts())) { + this.groups.add(group); + } + } + } + + private Group buildMasterGroup(Group group) { + List hosts = group.getHosts(); + List nodes = new ArrayList<>(); + for (GroupHost host : hosts) { + String proxyHost = StringUtils.isEmpty(host.getReal()) ? host.getHost() : host.getReal(); + Map vars = MapTools.simpleMap("proxy_host", proxyHost); + vars.put("is_master", true); + host.setVars(vars); + hosts.set(hosts.indexOf(host), host); + nodes.add(proxyHost); + } + front.setRedisMasterNodes(nodes); + return new Group(group.getName(), hosts, group.getVars()); + } + + private Group buildSlaveGroup(Group group, Map config) { + List hosts = group.getHosts(); + int size = this.masters.size(); + String port = String.valueOf(config.get("redis_port")); + if (StringUtils.isEmpty(port)) { + port = "6379"; + } + List nodes = new ArrayList<>(); + for (GroupHost host : hosts) { + if (StringUtils.isEmpty(host.getReal())) { + String master = masters.get(hosts.indexOf(host) % size).getHost(); + Map vars = MapTools.simpleMap("redis_slaveof", master + " " + port); + vars.put("proxy_host", host.getHost()); + vars.put("is_slave", true); + host.setVars(vars); + nodes.add(host.getHost()); + } else { + String master = masters.get(hosts.indexOf(host) % size).getReal(); + Map vars = MapTools.simpleMap("redis_slaveof", master + " " + port); + vars.put("proxy_host", host.getReal()); + vars.put("is_slave", true); + host.setVars(vars); + nodes.add(host.getReal()); + } + hosts.set(hosts.indexOf(host), host); + } + front.setRedisSlaveNodes(nodes); + return new Group(group.getName(), hosts, group.getVars()); + } + + public List getGroups() { + return groups; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RocketmqGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RocketmqGroup.java new file mode 100644 index 0000000..18420c9 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/RocketmqGroup.java @@ -0,0 +1,77 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.bocloud.tse.core.domain.front.software.RocketmqFront; +import com.megatron.common.utils.ListTool; + +public class RocketmqGroup { + + private RocketmqFront front; + private List groups; + + public RocketmqGroup(RocketmqFront front) { + this.front = front; + this.groups = new ArrayList<>(); + this.build(); + } + + private void build() { + List list = front.getGroups(); + if (ListTool.isEmpty(list)) { + return; + } + List hosts = new ArrayList<>(); + for (Group group : list) { + switch (group.getName()) { + case "rocketmq_master": + hosts.add(buildMasterHost(group)); + break; + case "rocketmq_slaver": + hosts.addAll(buildSlaverHost(group)); + break; + case "rocketmq_namesrv": + this.groups.add(buildNSGroup(group)); + break; + default: + continue; + } + } + this.groups.add(new Group("rocketmq_broker", hosts, null)); + } + + private GroupHost buildMasterHost(Group group) { + Map vars = new HashMap<>(); + vars.put("broker_id", "0"); + vars.put("broker_role", "ASYNC_MASTER"); + vars.put("broker_name", "broker_" + front.getClusterName()); + return new GroupHost(group.getHosts().get(0).getHost(), vars); + } + + private List buildSlaverHost(Group group) { + List hosts = group.getHosts(); + List list = new ArrayList<>(); + int index = 1; + for (GroupHost host : hosts) { + Map vars = new HashMap<>(); + vars.put("broker_id", index + ""); + vars.put("broker_role", "SLAVE"); + vars.put("broker_name", "broker_" + front.getClusterName()); + list.add(new GroupHost(host.getHost(), vars)); + index++; + } + return list; + } + + private Group buildNSGroup(Group group) { + return group; + } + + public List getGroups() { + return groups; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/ZookeeperGroup.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/ZookeeperGroup.java new file mode 100644 index 0000000..432d36b --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/group/ZookeeperGroup.java @@ -0,0 +1,59 @@ +package com.bocloud.tse.core.domain.group; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; + +import com.bocloud.tse.core.domain.front.software.ZookeeperFront; +import com.megatron.common.utils.ListTool; +import com.megatron.common.utils.MapTools; + +public class ZookeeperGroup { + + private ZookeeperFront front; + private List groups; + + public ZookeeperGroup(ZookeeperFront front) { + this.front = front; + this.groups = new ArrayList<>(); + this.build(); + } + + private void build() { + List list = front.getGroups(); + if (ListTool.isEmpty(list)) { + return; + } + for (Group group : list) { + switch (group.getName()) { + case "zookeeper": + group = buildZkGroup(group); + break; + default: + break; + } + this.groups.add(group); + } + } + + private Group buildZkGroup(Group group) { + List hosts = group.getHosts(); + for (GroupHost host : hosts) { + if (StringUtils.isEmpty(host.getReal())) { + Map vars = MapTools.simpleMap("proxy_host", host.getHost()); + host.setVars(vars); + } else { + Map vars = MapTools.simpleMap("proxy_host", host.getReal()); + host.setVars(vars); + } + } + return new Group(group.getName(), hosts, group.getVars()); + } + + public List getGroups() { + return groups; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Depend.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Depend.java new file mode 100644 index 0000000..d7f5dbf --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Depend.java @@ -0,0 +1,17 @@ +package com.bocloud.tse.core.domain.input; + +import lombok.Data; + +@Data +public class Depend { + + private String key; + private String desp; + private Object value; + private Source source; + + static enum Source { + Internal, External; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Input.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Input.java new file mode 100644 index 0000000..9c66cfb --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Input.java @@ -0,0 +1,31 @@ +package com.bocloud.tse.core.domain.input; + +import lombok.Data; + +/** + * 任务输入抽象封装类 + */ +@Data +public abstract class Input { + + private Fronts fronts; + private Target target; + private Depend depend; + private String code; + + public Input() {} + + public Input(Fronts fronts, Target target, Depend depend) { + this.fronts = fronts; + this.target = target; + this.depend = depend; + } + + public Input(Fronts fronts, Target target, Depend depend, String code) { + this.fronts = fronts; + this.target = target; + this.depend = depend; + this.code = code; + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Target.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Target.java new file mode 100644 index 0000000..41fa5a9 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/Target.java @@ -0,0 +1,33 @@ +package com.bocloud.tse.core.domain.input; + +import java.util.List; + +import com.bocloud.tse.model.WorkerHost; + +import lombok.Data; + +/** + * 任务执行目标主机 + */ +@Data +public class Target { + + private Boolean sudo; + private Boolean become; + private String becomeUser; + private String becomePass; + private Integer identId; + private List data; + private String authenMode; + private String executeType; + + public Target(Boolean sudo, Integer identId, List data, String authenMode) { + this.sudo = sudo; + this.identId = identId; + this.data = data; + this.authenMode = authenMode; + } + + public Target() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/BackupInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/BackupInput.java new file mode 100644 index 0000000..8d38a28 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/BackupInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.maintain; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.FileFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.backup") +public class BackupInput extends Input { + + public BackupInput() {} + + public BackupInput(FileFront fileFront, Target target, Depend depend) { + super(fileFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/DBInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/DBInput.java new file mode 100644 index 0000000..f0b93fd --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/DBInput.java @@ -0,0 +1,17 @@ +package com.bocloud.tse.core.domain.input.maintain; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.DBFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.database") +public class DBInput extends Input { + + public DBInput(DBFront dbFront, Target target, Depend depend) { + super(dbFront, target, depend); + } + + public DBInput() {} +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/GaiaInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/GaiaInput.java new file mode 100644 index 0000000..98ec9ac --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/GaiaInput.java @@ -0,0 +1,21 @@ +package com.bocloud.tse.core.domain.input.maintain; + + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.GaiaFront; +import com.bocloud.tse.core.domain.front.maintain.TemplateFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.gaia") +public class GaiaInput extends Input { + + public GaiaInput() { + super(); + } + + public GaiaInput(GaiaFront front, Target target, Depend depend) { + super(front, target, depend); + } +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/HostAllowInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/HostAllowInput.java new file mode 100644 index 0000000..3590308 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/HostAllowInput.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.domain.input.maintain; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.HostAllowFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.hostallow") +public class HostAllowInput extends Input { + + public HostAllowInput() { + super(); + } + + public HostAllowInput(HostAllowFront front, Target target, Depend depend) { + super(front, target, depend); + } +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/HttpInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/HttpInput.java new file mode 100644 index 0000000..6137f41 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/HttpInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.maintain; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.HttpFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.method") +public class HttpInput extends Input { + + public HttpInput(HttpFront httpFront, Target target, Depend depend) { + super(httpFront, target, depend); + } + + public HttpInput() {} + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/RecoveryInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/RecoveryInput.java new file mode 100644 index 0000000..60989db --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/RecoveryInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.maintain; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.FileFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.recovery") +public class RecoveryInput extends Input { + + public RecoveryInput() {} + + public RecoveryInput(FileFront fileFront, Target target, Depend depend) { + super(fileFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptInput.java new file mode 100644 index 0000000..b9b7daf --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptInput.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.domain.input.maintain; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.ScriptFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.script") +public class ScriptInput extends Input { + + public ScriptInput() { + super(); + } + + public ScriptInput(ScriptFront scriptFront, Target target, Depend depend, String code) { + super(scriptFront, target, depend, code); + } +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptLocalInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptLocalInput.java new file mode 100644 index 0000000..2b00fdb --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptLocalInput.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.domain.input.maintain; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.ScriptLocalFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.script.local") +public class ScriptLocalInput extends Input { + + public ScriptLocalInput() { + super(); + } + + public ScriptLocalInput(ScriptLocalFront scriptFront, Target target, Depend depend, String code) { + super(scriptFront, target, depend, code); + } +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptsInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptsInput.java new file mode 100644 index 0000000..24e904e --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ScriptsInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.maintain; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.ScriptsFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.scripts") +public class ScriptsInput extends Input { + + public ScriptsInput() { + } + + public ScriptsInput(ScriptsFront fileFront, Target target, Depend depend) { + super(fileFront, target, depend); + } +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ServiceInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ServiceInput.java new file mode 100644 index 0000000..b62ed64 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/ServiceInput.java @@ -0,0 +1,16 @@ +package com.bocloud.tse.core.domain.input.maintain; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.ServiceFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.service") +public class ServiceInput extends Input { + public ServiceInput() {} + + public ServiceInput(ServiceFront serviceFront, Target target, Depend depend) { + super(serviceFront, target, depend); + } +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/TemplateInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/TemplateInput.java new file mode 100644 index 0000000..1dcc0d1 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/TemplateInput.java @@ -0,0 +1,20 @@ +package com.bocloud.tse.core.domain.input.maintain; + + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.TemplateFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.template") +public class TemplateInput extends Input { + + public TemplateInput() { + super(); + } + + public TemplateInput(TemplateFront front, Target target, Depend depend) { + super(front, target, depend); + } +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/UploadInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/UploadInput.java new file mode 100644 index 0000000..fa3f01a --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/UploadInput.java @@ -0,0 +1,17 @@ +package com.bocloud.tse.core.domain.input.maintain; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.FileFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.upload") +public class UploadInput extends Input { + + public UploadInput() {} + + public UploadInput(FileFront fileFront, Target target, Depend depend) { + super(fileFront, target, depend); + } +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/UserInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/UserInput.java new file mode 100644 index 0000000..4a8062e --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/maintain/UserInput.java @@ -0,0 +1,17 @@ +package com.bocloud.tse.core.domain.input.maintain; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.maintain.UserFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.maintain.user") +public class UserInput extends Input { + + public UserInput() {} + + public UserInput(UserFront userFront, Target target, Depend depend) { + super(userFront, target, depend); + } +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ActivemqInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ActivemqInput.java new file mode 100644 index 0000000..a26f9ee --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ActivemqInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.ActivemqFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.activemq") +public class ActivemqInput extends Input { + + public ActivemqInput() {} + + public ActivemqInput(ActivemqFront activemqFront, Target target, Depend depend) { + super(activemqFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ApacheInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ApacheInput.java new file mode 100644 index 0000000..21fc3fd --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ApacheInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.ApacheFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.apache") +public class ApacheInput extends Input { + + public ApacheInput() {} + + public ApacheInput(ApacheFront apacheFront, Target target, Depend depend) { + super(apacheFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ElasticsearchInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ElasticsearchInput.java new file mode 100644 index 0000000..8fc44ad --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ElasticsearchInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.ElasticsearchFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.elasticsearch") +public class ElasticsearchInput extends Input { + + public ElasticsearchInput() {} + + public ElasticsearchInput(ElasticsearchFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/EtcdInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/EtcdInput.java new file mode 100644 index 0000000..dbd2d58 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/EtcdInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.EtcdFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.etcd") +public class EtcdInput extends Input { + + public EtcdInput() {} + + public EtcdInput(EtcdFront etcdFront, Target target, Depend depend) { + super(etcdFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ExporterInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ExporterInput.java new file mode 100644 index 0000000..8a9ff3b --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ExporterInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.ExporterFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.exporter") +public class ExporterInput extends Input { + + public ExporterInput() {} + + public ExporterInput(ExporterFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/GitlabInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/GitlabInput.java new file mode 100644 index 0000000..3c04717 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/GitlabInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.GitlabFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.gitlab") +public class GitlabInput extends Input { + + public GitlabInput() {} + + public GitlabInput(GitlabFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsiInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsiInput.java new file mode 100644 index 0000000..9728134 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsiInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.RacIscsiFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.iscsi") +public class IscsiInput extends Input { + + public IscsiInput() {} + + public IscsiInput(RacIscsiFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsicInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsicInput.java new file mode 100644 index 0000000..a4061af --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsicInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.RacIscsiFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.iscsi.client") +public class IscsicInput extends Input { + + public IscsicInput() {} + + public IscsicInput(RacIscsiFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsisInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsisInput.java new file mode 100644 index 0000000..7e6a343 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/IscsisInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.RacIscsiFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.iscsi.server") +public class IscsisInput extends Input { + + public IscsisInput() {} + + public IscsisInput(RacIscsiFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/JdkInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/JdkInput.java new file mode 100644 index 0000000..3b7513d --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/JdkInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.JdkFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.jdk") +public class JdkInput extends Input { + + public JdkInput() {} + + public JdkInput(JdkFront jdkFront, Target target, Depend depend) { + super(jdkFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/JenkinsInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/JenkinsInput.java new file mode 100644 index 0000000..930202c --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/JenkinsInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.JenkinsFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.jenkins") +public class JenkinsInput extends Input { + + public JenkinsInput() {} + + public JenkinsInput(JenkinsFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/K8sInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/K8sInput.java new file mode 100644 index 0000000..82d40a4 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/K8sInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.K8sFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.k8s") +public class K8sInput extends Input { + + public K8sInput() {} + + public K8sInput(K8sFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/KafkaInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/KafkaInput.java new file mode 100644 index 0000000..d0a11ae --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/KafkaInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.KafkaFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.kafka") +public class KafkaInput extends Input { + + public KafkaInput() {} + + public KafkaInput(KafkaFront kafkaFront, Target target, Depend depend) { + super(kafkaFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MemcacheInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MemcacheInput.java new file mode 100644 index 0000000..4d1d340 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MemcacheInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.MemcacheFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.memcache") +public class MemcacheInput extends Input { + + public MemcacheInput() {} + + public MemcacheInput(MemcacheFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MongodbInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MongodbInput.java new file mode 100644 index 0000000..4cb266d --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MongodbInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.MongodbFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.mongodb") +public class MongodbInput extends Input { + + public MongodbInput() {} + + public MongodbInput(MongodbFront mongodbFront, Target target, Depend depend) { + super(mongodbFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MysqlInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MysqlInput.java new file mode 100644 index 0000000..b5b021f --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/MysqlInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.MysqlFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.mysql") +public class MysqlInput extends Input { + + public MysqlInput() {} + + public MysqlInput(MysqlFront mysqlFront, Target target, Depend depend) { + super(mysqlFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NfscInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NfscInput.java new file mode 100644 index 0000000..561a3f9 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NfscInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.NfsFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.nfs.client") +public class NfscInput extends Input { + + public NfscInput() {} + + public NfscInput(NfsFront nfsFront, Target target, Depend depend) { + super(nfsFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NfssInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NfssInput.java new file mode 100644 index 0000000..8ae5dc3 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NfssInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.NfsFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.nfs.server") +public class NfssInput extends Input { + + public NfssInput() {} + + public NfssInput(NfsFront nfsFront, Target target, Depend depend) { + super(nfsFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NginxInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NginxInput.java new file mode 100644 index 0000000..db84f0b --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/NginxInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.NginxFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.nginx") +public class NginxInput extends Input { + + public NginxInput() {} + + public NginxInput(NginxFront nginxFront, Target target, Depend depend) { + super(nginxFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/OracleInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/OracleInput.java new file mode 100644 index 0000000..a58ed00 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/OracleInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.OracleFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.oracle") +public class OracleInput extends Input { + + public OracleInput() {} + + public OracleInput(OracleFront oracleFront, Target target, Depend depend) { + super(oracleFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/PhpInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/PhpInput.java new file mode 100644 index 0000000..d77060b --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/PhpInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.PhpFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.php") +public class PhpInput extends Input { + + public PhpInput() {} + + public PhpInput(PhpFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/PostgresqlInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/PostgresqlInput.java new file mode 100644 index 0000000..2c13250 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/PostgresqlInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.PostgresqlFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.postgresql") +public class PostgresqlInput extends Input { + + public PostgresqlInput() {} + + public PostgresqlInput(PostgresqlFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RabbitmqInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RabbitmqInput.java new file mode 100644 index 0000000..89f3546 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RabbitmqInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.RabbitmqFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.rabbitmq") +public class RabbitmqInput extends Input { + + public RabbitmqInput() {} + + public RabbitmqInput(RabbitmqFront rabbitmqFront, Target target, Depend depend) { + super(rabbitmqFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RedisInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RedisInput.java new file mode 100644 index 0000000..d360df1 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RedisInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.RedisFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.redis") +public class RedisInput extends Input { + + public RedisInput() {} + + public RedisInput(RedisFront redisFront, Target target, Depend depend) { + super(redisFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RocketmqInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RocketmqInput.java new file mode 100644 index 0000000..c545d10 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/RocketmqInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.RocketmqFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.rocketmq") +public class RocketmqInput extends Input { + + public RocketmqInput() {} + + public RocketmqInput(RocketmqFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/SqlserverInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/SqlserverInput.java new file mode 100644 index 0000000..cfdd125 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/SqlserverInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.SqlserverFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.sqlserver") +public class SqlserverInput extends Input { + + public SqlserverInput() {} + + public SqlserverInput(SqlserverFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/TomcatInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/TomcatInput.java new file mode 100644 index 0000000..e2e9fb6 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/TomcatInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.TomcatFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.tomcat") +public class TomcatInput extends Input { + + public TomcatInput() {} + + public TomcatInput(TomcatFront tomcatFront, Target target, Depend depend) { + super(tomcatFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WeblogicInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WeblogicInput.java new file mode 100644 index 0000000..b3f9eed --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WeblogicInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.WeblogicFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.weblogic") +public class WeblogicInput extends Input { + + public WeblogicInput() {} + + public WeblogicInput(WeblogicFront weblogicFront, Target target, Depend depend) { + super(weblogicFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WebsphereInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WebsphereInput.java new file mode 100644 index 0000000..5eefa5d --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WebsphereInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.WebsphereFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.websphere") +public class WebsphereInput extends Input { + + public WebsphereInput() {} + + public WebsphereInput(WebsphereFront websphereFront, Target target, Depend depend) { + super(websphereFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WebspheremqInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WebspheremqInput.java new file mode 100644 index 0000000..fd4ff9d --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/WebspheremqInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.WebspheremqFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.webspheremq") +public class WebspheremqInput extends Input { + + public WebspheremqInput() {} + + public WebspheremqInput(WebspheremqFront front, Target target, Depend depend) { + super(front, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ZookeeperInput.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ZookeeperInput.java new file mode 100644 index 0000000..ae109f8 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/domain/input/software/ZookeeperInput.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.domain.input.software; + +import com.bocloud.tse.core.annotation.Module; +import com.bocloud.tse.core.domain.front.software.ZookeeperFront; +import com.bocloud.tse.core.domain.input.Depend; +import com.bocloud.tse.core.domain.input.Input; +import com.bocloud.tse.core.domain.input.Target; + +@Module(code = "task.software.zookeeper") +public class ZookeeperInput extends Input { + + public ZookeeperInput() {} + + public ZookeeperInput(ZookeeperFront zookeeperFront, Target target, Depend depend) { + super(zookeeperFront, target, depend); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/exception/NodeFormatException.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/exception/NodeFormatException.java new file mode 100644 index 0000000..9e94330 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/exception/NodeFormatException.java @@ -0,0 +1,30 @@ +package com.bocloud.tse.core.exception; + +/** + * 任务节点参数异常 + */ +public class NodeFormatException extends Exception { + + private static final long serialVersionUID = 1L; + + public NodeFormatException() { + super("任务节点参数异常!"); + } + + public NodeFormatException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + + public NodeFormatException(String message, Throwable cause) { + super(message, cause); + } + + public NodeFormatException(String message) { + super(message); + } + + public NodeFormatException(Throwable cause) { + super(cause); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/exception/TaskFormatException.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/exception/TaskFormatException.java new file mode 100644 index 0000000..95666ac --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/exception/TaskFormatException.java @@ -0,0 +1,30 @@ +package com.bocloud.tse.core.exception; + +/** + * 任务参数异常 + */ +public class TaskFormatException extends Exception { + + private static final long serialVersionUID = 1L; + + public TaskFormatException() { + super("任务参数格式异常"); + } + + public TaskFormatException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + + public TaskFormatException(String message, Throwable cause) { + super(message, cause); + } + + public TaskFormatException(String message) { + super(message); + } + + public TaskFormatException(Throwable cause) { + super(cause); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/Module.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/Module.java new file mode 100644 index 0000000..c4327a0 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/Module.java @@ -0,0 +1,29 @@ +package com.bocloud.tse.core.module; + +import com.bocloud.tse.core.domain.Option; + +import lombok.Data; + +@Data +public class Module { + + private String name; + private Entity args; + private Option options; + + public Module(String name, Entity args) { + this.name = name; + this.args = args; + } + + public Module(String name, Entity args, Option options) { + this.name = name; + this.args = args; + this.options = options; + } + + public Module() { + super(); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/BackupModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/BackupModule.java new file mode 100644 index 0000000..ba82bff --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/BackupModule.java @@ -0,0 +1,22 @@ +package com.bocloud.tse.core.module.maintain; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.maintain.FileArg; +import com.bocloud.tse.core.module.Module; + +/** + * 文件备份Module封装类 + */ +public class BackupModule extends Module { + + private static final String name = "bocloud_backup"; + + public BackupModule(FileArg arg) { + super(name, arg); + } + + public BackupModule(FileArg args, Option option) { + super(name, args, option); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/GaiaModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/GaiaModule.java new file mode 100644 index 0000000..87f8742 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/GaiaModule.java @@ -0,0 +1,24 @@ +package com.bocloud.tse.core.module.maintain; + +import com.alibaba.fastjson.JSONObject; +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.module.Module; + + +/** + * 模板 + * + * @author weiwei + */ +public class GaiaModule extends Module { + + private static final String name = "deploy_gaia"; + + public GaiaModule(String name, JSONObject args) { + super(name, args); + } + + public GaiaModule(String name, JSONObject args, Option option) { + super(name, args, option); + } +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/HostAllowModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/HostAllowModule.java new file mode 100644 index 0000000..0821c4f --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/HostAllowModule.java @@ -0,0 +1,22 @@ +package com.bocloud.tse.core.module.maintain; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.maintain.HostAllowArg; +import com.bocloud.tse.core.module.Module; + +/** + * 配置Host allow + */ +public class HostAllowModule extends Module { + + private static final String name = "config_hosts_allow"; + + public HostAllowModule(HostAllowArg args) { + super(name, args); + } + + public HostAllowModule(HostAllowArg args, Option option) { + super(name, args, option); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/RecoveryModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/RecoveryModule.java new file mode 100644 index 0000000..6bb6501 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/RecoveryModule.java @@ -0,0 +1,22 @@ +package com.bocloud.tse.core.module.maintain; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.maintain.FileArg; +import com.bocloud.tse.core.module.Module; + +/** + * 备份恢复Module封装类 + */ +public class RecoveryModule extends Module { + + private static final String name = "bocloud_copy"; + + public RecoveryModule(FileArg arg) { + super(name, arg); + } + + public RecoveryModule(FileArg args, Option option) { + super(name, args, option); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ScriptLocalModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ScriptLocalModule.java new file mode 100644 index 0000000..059d96f --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ScriptLocalModule.java @@ -0,0 +1,22 @@ +package com.bocloud.tse.core.module.maintain; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.maintain.ScriptLocalArg; +import com.bocloud.tse.core.module.Module; + +/** + * 多脚本执行 + */ +public class ScriptLocalModule extends Module { + + private static final String name = "script_local"; + + public ScriptLocalModule(ScriptLocalArg args) { + super(name, args); + } + + public ScriptLocalModule(ScriptLocalArg args, Option option) { + super(name, args, option); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ScriptsModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ScriptsModule.java new file mode 100644 index 0000000..0f80f0e --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ScriptsModule.java @@ -0,0 +1,22 @@ +package com.bocloud.tse.core.module.maintain; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.maintain.ScriptsArg; +import com.bocloud.tse.core.module.Module; + +/** + * 多脚本执行 + */ +public class ScriptsModule extends Module { + + private static final String name = "run_scripts"; + + public ScriptsModule(ScriptsArg args) { + super(name, args); + } + + public ScriptsModule(ScriptsArg args, Option option) { + super(name, args, option); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ServiceModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ServiceModule.java new file mode 100644 index 0000000..d2e4adf --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/ServiceModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.maintain; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.maintain.ServiceArg; +import com.bocloud.tse.core.module.Module; + +public class ServiceModule extends Module { + + private static final String name = "service"; + + public ServiceModule(ServiceArg arg) { + super(name, arg); + } + + public ServiceModule(ServiceArg args, Option option) { + super(name, args, option); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/TemplateModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/TemplateModule.java new file mode 100644 index 0000000..c9b395a --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/TemplateModule.java @@ -0,0 +1,22 @@ +package com.bocloud.tse.core.module.maintain; + +import com.alibaba.fastjson.JSONObject; +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.module.Module; + + +/** + * 模板 + * + * @author weiwei + */ +public class TemplateModule extends Module { + + public TemplateModule(String name, JSONObject args) { + super(name, args); + } + + public TemplateModule(String name, JSONObject args, Option option) { + super(name, args, option); + } +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/UploadModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/UploadModule.java new file mode 100644 index 0000000..3e782f9 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/UploadModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.maintain; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.maintain.FileArg; +import com.bocloud.tse.core.module.Module; + +public class UploadModule extends Module { + + private static final String name = "bocloud_copy"; + + public UploadModule(FileArg args) { + super(name, args); + } + + public UploadModule(FileArg args, Option option) { + super(name, args, option); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/UserModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/UserModule.java new file mode 100644 index 0000000..927c9ee --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/maintain/UserModule.java @@ -0,0 +1,22 @@ +package com.bocloud.tse.core.module.maintain; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.maintain.UserArg; +import com.bocloud.tse.core.module.Module; + +/** + * 用户管理Module封装类 + */ +public class UserModule extends Module { + + private static final String name = "authority"; + + public UserModule(UserArg args) { + super(name, args); + } + + public UserModule(UserArg args, Option option) { + super(name, args, option); + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ActivemqModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ActivemqModule.java new file mode 100644 index 0000000..f8cd0f3 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ActivemqModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.ActivemqArg; +import com.bocloud.tse.core.module.Module; + +public class ActivemqModule extends Module { + + private static final String name = "install_activemq"; + + public ActivemqModule(ActivemqArg args) { + super(name, args); + } + + public ActivemqModule(ActivemqArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ApacheModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ApacheModule.java new file mode 100644 index 0000000..d63e39f --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ApacheModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.ApacheArg; +import com.bocloud.tse.core.module.Module; + +public class ApacheModule extends Module { + + private static final String name = "install_apache"; + + public ApacheModule(ApacheArg args) { + super(name, args); + } + + public ApacheModule(ApacheArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ElasticsearchModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ElasticsearchModule.java new file mode 100644 index 0000000..fc82b9a --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ElasticsearchModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.ElasticsearchArg; +import com.bocloud.tse.core.module.Module; + +public class ElasticsearchModule extends Module { + + private static final String name = "install_elasticsearch"; + + public ElasticsearchModule(ElasticsearchArg args) { + super(name, args); + } + + public ElasticsearchModule(ElasticsearchArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/EtcdModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/EtcdModule.java new file mode 100644 index 0000000..072e4aa --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/EtcdModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.EtcdArg; +import com.bocloud.tse.core.module.Module; + +public class EtcdModule extends Module { + + private static final String name = "install_etcd"; + + public EtcdModule(EtcdArg args) { + super(name, args); + } + + public EtcdModule(EtcdArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ExporterModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ExporterModule.java new file mode 100644 index 0000000..8e08bca --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ExporterModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.ExporterArg; +import com.bocloud.tse.core.module.Module; + +public class ExporterModule extends Module { + + private static final String name = "install_bocloud_exporter"; + + public ExporterModule(ExporterArg args) { + super(name, args); + } + + public ExporterModule(ExporterArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/GitlabModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/GitlabModule.java new file mode 100644 index 0000000..9a18015 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/GitlabModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.GitlabArg; +import com.bocloud.tse.core.module.Module; + +public class GitlabModule extends Module { + + private static final String name = "install_gitlab"; + + public GitlabModule(GitlabArg args) { + super(name, args); + } + + public GitlabModule(GitlabArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/IscsiModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/IscsiModule.java new file mode 100644 index 0000000..f858a81 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/IscsiModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.RacIscsiArg; +import com.bocloud.tse.core.module.Module; + +public class IscsiModule extends Module { + + private static final String name = "deploy_iscsi"; + + public IscsiModule(RacIscsiArg args) { + super(name, args); + } + + public IscsiModule(RacIscsiArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/JdkModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/JdkModule.java new file mode 100644 index 0000000..374ad23 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/JdkModule.java @@ -0,0 +1,18 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.JdkArg; +import com.bocloud.tse.core.module.Module; + +public class JdkModule extends Module { + private static final String name = "install_java"; + + public JdkModule(JdkArg args) { + super(name, args); + } + + public JdkModule(JdkArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/JenkinsModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/JenkinsModule.java new file mode 100644 index 0000000..91455d4 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/JenkinsModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.JenkinsArg; +import com.bocloud.tse.core.module.Module; + +public class JenkinsModule extends Module { + + private static final String name = "install_jenkins"; + + public JenkinsModule(JenkinsArg args) { + super(name, args); + } + + public JenkinsModule(JenkinsArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/K8sModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/K8sModule.java new file mode 100644 index 0000000..e3c534b --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/K8sModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.K8sArg; +import com.bocloud.tse.core.module.Module; + +public class K8sModule extends Module { + + private static final String name = "install_k8s"; + + public K8sModule(K8sArg args) { + super(name, args); + } + + public K8sModule(K8sArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/KafkaModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/KafkaModule.java new file mode 100644 index 0000000..940b804 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/KafkaModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.KafkaArg; +import com.bocloud.tse.core.module.Module; + +public class KafkaModule extends Module { + + private static final String name = "install_kafka"; + + public KafkaModule(KafkaArg args) { + super(name, args); + } + + public KafkaModule(KafkaArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MemcacheModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MemcacheModule.java new file mode 100644 index 0000000..51e72d2 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MemcacheModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.MemcacheArg; +import com.bocloud.tse.core.module.Module; + +public class MemcacheModule extends Module { + + private static final String name = "install_memcached"; + + public MemcacheModule(MemcacheArg args) { + super(name, args); + } + + public MemcacheModule(MemcacheArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MongoModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MongoModule.java new file mode 100644 index 0000000..8f364a1 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MongoModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.MongodbArg; +import com.bocloud.tse.core.module.Module; + +public class MongoModule extends Module { + + private static final String name = "install_mongodb"; + + public MongoModule(MongodbArg args) { + super(name, args); + } + + public MongoModule(MongodbArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MysqlModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MysqlModule.java new file mode 100644 index 0000000..2e0e612 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/MysqlModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.MysqlArg; +import com.bocloud.tse.core.module.Module; + +public class MysqlModule extends Module { + + private static final String name = "install_mysql"; + + public MysqlModule(MysqlArg args) { + super(name, args); + } + + public MysqlModule(MysqlArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/NfsModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/NfsModule.java new file mode 100644 index 0000000..b3f207e --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/NfsModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.NfsArg; +import com.bocloud.tse.core.module.Module; + +public class NfsModule extends Module { + + private static final String name = "install_nfs"; + + public NfsModule(NfsArg args) { + super(name, args); + } + + public NfsModule(NfsArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/NginxModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/NginxModule.java new file mode 100644 index 0000000..2bfeffa --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/NginxModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.NginxArg; +import com.bocloud.tse.core.module.Module; + +public class NginxModule extends Module { + + private static final String name = "install_nginx"; + + public NginxModule(NginxArg args) { + super(name, args); + } + + public NginxModule(NginxArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/OracleModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/OracleModule.java new file mode 100644 index 0000000..baa82ec --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/OracleModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.OracleArg; +import com.bocloud.tse.core.module.Module; + +public class OracleModule extends Module { + + private static final String name = "install_oracle"; + + public OracleModule(OracleArg args) { + super(name, args); + } + + public OracleModule(OracleArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/PhpModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/PhpModule.java new file mode 100644 index 0000000..8851bb5 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/PhpModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.PhpArg; +import com.bocloud.tse.core.module.Module; + +public class PhpModule extends Module { + + private static final String name = "install_php"; + + public PhpModule(PhpArg args) { + super(name, args); + } + + public PhpModule(PhpArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/PostgresqlModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/PostgresqlModule.java new file mode 100644 index 0000000..63e7386 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/PostgresqlModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.PostgresqlArg; +import com.bocloud.tse.core.module.Module; + +public class PostgresqlModule extends Module { + + private static final String name = "install_postgresql"; + + public PostgresqlModule(PostgresqlArg args) { + super(name, args); + } + + public PostgresqlModule(PostgresqlArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RabbitModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RabbitModule.java new file mode 100644 index 0000000..d87be34 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RabbitModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.RabbitmqArg; +import com.bocloud.tse.core.module.Module; + +public class RabbitModule extends Module { + + private static final String name = "install_rabbitmq"; + + public RabbitModule(RabbitmqArg args) { + super(name, args); + } + + public RabbitModule(RabbitmqArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RedisModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RedisModule.java new file mode 100644 index 0000000..0b8e24d --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RedisModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.RedisArg; +import com.bocloud.tse.core.module.Module; + +public class RedisModule extends Module { + + private static final String name = "install_redis"; + + public RedisModule(RedisArg args) { + super(name, args); + } + + public RedisModule(RedisArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RocketmqModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RocketmqModule.java new file mode 100644 index 0000000..2b6a926 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/RocketmqModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.RocketmqArg; +import com.bocloud.tse.core.module.Module; + +public class RocketmqModule extends Module { + + private static final String name = "install_rocketmq"; + + public RocketmqModule(RocketmqArg args) { + super(name, args); + } + + public RocketmqModule(RocketmqArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/SqlserverModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/SqlserverModule.java new file mode 100644 index 0000000..9290f86 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/SqlserverModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.SqlserverArg; +import com.bocloud.tse.core.module.Module; + +public class SqlserverModule extends Module { + + private static final String name = "install_mssql"; + + public SqlserverModule(SqlserverArg args) { + super(name, args); + } + + public SqlserverModule(SqlserverArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/TomcatModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/TomcatModule.java new file mode 100644 index 0000000..1b97e9e --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/TomcatModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.TomcatArg; +import com.bocloud.tse.core.module.Module; + +public class TomcatModule extends Module { + + private static final String name = "install_tomcat"; + + public TomcatModule(TomcatArg args) { + super(name, args); + } + + public TomcatModule(TomcatArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WebSphereModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WebSphereModule.java new file mode 100644 index 0000000..c185b55 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WebSphereModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.WebSphereArg; +import com.bocloud.tse.core.module.Module; + +public class WebSphereModule extends Module { + + private static final String name = "install_was"; + + public WebSphereModule(WebSphereArg args) { + super(name, args); + } + + public WebSphereModule(WebSphereArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WeblogicModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WeblogicModule.java new file mode 100644 index 0000000..f83b6d2 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WeblogicModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.WeblogicArg; +import com.bocloud.tse.core.module.Module; + +public class WeblogicModule extends Module { + + private static final String name = "install_weblogic"; + + public WeblogicModule(WeblogicArg args) { + super(name, args); + } + + public WeblogicModule(WeblogicArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WebspheremqModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WebspheremqModule.java new file mode 100644 index 0000000..d60148b --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/WebspheremqModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.WebspheremqArg; +import com.bocloud.tse.core.module.Module; + +public class WebspheremqModule extends Module { + + private static final String name = "install_webspheremq"; + + public WebspheremqModule(WebspheremqArg args) { + super(name, args); + } + + public WebspheremqModule(WebspheremqArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ZookeeperModule.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ZookeeperModule.java new file mode 100644 index 0000000..868adc6 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/module/software/ZookeeperModule.java @@ -0,0 +1,19 @@ +package com.bocloud.tse.core.module.software; + +import com.bocloud.tse.core.domain.Option; +import com.bocloud.tse.core.domain.args.software.ZookeeperArg; +import com.bocloud.tse.core.module.Module; + +public class ZookeeperModule extends Module { + + private static final String name = "install_zookeeper"; + + public ZookeeperModule(ZookeeperArg args) { + super(name, args); + } + + public ZookeeperModule(ZookeeperArg args, Option option) { + super(name, args, option); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/CronUtils.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/CronUtils.java new file mode 100644 index 0000000..b908015 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/CronUtils.java @@ -0,0 +1,100 @@ +package com.bocloud.tse.core.utils; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import org.springframework.scheduling.support.CronExpression; +import org.springframework.util.StringUtils; + +import com.google.common.collect.Lists; +import com.megatron.common.model.GeneralResult; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class CronUtils { + + /** + * 校验cron表达式是否合法 + */ + public static GeneralResult isValid(String expression) { + String message = "保存任务失败:Cron表达式有误或者执行时间是过去的时间"; + try { + String[] fields = StringUtils.tokenizeToStringArray(expression, " "); + List years = Lists.newArrayList(); + if (null == fields || fields.length < 6 || fields.length > 7) { + return new GeneralResult<>(false, message); + } else if (fields.length == 7) { + if (fields[6].contains("/")) { + return new GeneralResult<>(false, message); + } + String[] values = StringUtils.delimitedListToStringArray(fields[6], ","); + for (String value : values) { + int[] range = getRange(value, 0, 10000); + for (int i : range) { + years.add(i); + } + } + int currentYear = Calendar.getInstance().get(Calendar.YEAR); + boolean flag = false; + for (Integer year : years) { + if (year >= currentYear) { + flag = true; + } + } + if (!flag) { + return new GeneralResult<>(false, message); + } + expression = + fields[0] + " " + fields[1] + " " + fields[2] + " " + fields[3] + " " + fields[4] + " " + fields[5]; + } + CronExpression generator = CronExpression.parse(expression); + LocalDateTime time = generator.next(LocalDateTime.now()); + if (null == time) { + return new GeneralResult<>(false, message); + } + if (fields.length == 7) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(Date.from(time.atZone(ZoneId.systemDefault()).toInstant())); + int execYear = calendar.get(Calendar.YEAR); + for (Integer year : years) { + if (execYear > year) { + return new GeneralResult<>(false, message); + } + } + } + return new GeneralResult<>(true, "success"); + } catch (Exception e) { + log.warn("Cron expression is invalid"); + return new GeneralResult<>(false, message); + } + } + + private static int[] getRange(String field, int min, int max) { + int[] result = new int[2]; + if (!field.contains("-")) { + result[0] = result[1] = Integer.valueOf(field); + } else { + String[] split = StringUtils.delimitedListToStringArray(field, "-"); + if (split.length > 2) { + throw new IllegalArgumentException("Range has more than two fields: '" + field + "' in expression"); + } + result[0] = Integer.valueOf(split[0]); + result[1] = Integer.valueOf(split[1]); + } + if (result[0] >= max || result[1] >= max) { + throw new IllegalArgumentException("Range exceeds maximum (" + max + "): '" + field + "' in expression"); + } + if (result[0] < min || result[1] < min) { + throw new IllegalArgumentException("Range less than minimum (" + min + "): '" + field + "' in expression"); + } + if (result[0] > result[1]) { + throw new IllegalArgumentException("Invalid inverted range: '" + field + "' in expression"); + } + return result; + } + +} diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/DBDriver.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/DBDriver.java new file mode 100644 index 0000000..50c81dd --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/DBDriver.java @@ -0,0 +1,43 @@ +package com.bocloud.tse.core.utils; + +import com.megatron.common.model.GeneralResult; + +public enum DBDriver { + + /** + * Oracle数据库驱动 + */ + ORACLE("oracle.jdbc.OracleDriver"), + /** + * Mysql数据库驱动 + */ + MYSQL("com.mysql.jdbc.Driver"), + /** + * SQLServer数据库驱动 + */ + SQLSERVER_JTS("net.sourceforge.jtds.jdbc.Driver"), + /** + * SQLServer数据库驱动 + */ + SQLSERVER_MS("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + + private String driver; + + DBDriver(String driver) { + this.driver = driver; + } + + public String getDriver() { + return driver; + } + + public static GeneralResult has(String driver) { + for (DBDriver dbDriver : DBDriver.values()) { + if (dbDriver.name().equalsIgnoreCase(driver)) { + return new GeneralResult(true, dbDriver, "success"); + } + } + return new GeneralResult<>(true, "not found!"); + } + +} \ No newline at end of file diff --git a/bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/DBTool.java b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/DBTool.java new file mode 100644 index 0000000..37d5893 --- /dev/null +++ b/bocloud.tse.core/src/main/java/com/bocloud/tse/core/utils/DBTool.java @@ -0,0 +1,64 @@ +package com.bocloud.tse.core.utils; + +public class DBTool { + + /** + * 获取mysql的分页语句 pageNo 从0 开始 + */ + public static String buildMysqlPageSql(String sql, Integer pageNo, Integer pageSize) { + StringBuilder sqlBuilder = new StringBuilder(sql.length() + 14); + sqlBuilder.append(sql); + if (pageNo == 0) { + sqlBuilder.append(" LIMIT ").append(pageSize); + } else { + sqlBuilder.append(" LIMIT ").append(pageNo).append(",").append(pageSize); + } + return sqlBuilder.toString(); + } + + /** + * 获取oracle的分页语句 pageNo 从0 开始 + */ + public static String buildOraclePageSql(String sql, Integer pageNo, Integer pageSize) { + int startRow = pageNo; + int endRow = pageNo + pageSize; + StringBuilder sqlBuilder = new StringBuilder(sql.length() + 120); + if (startRow > 0) { + sqlBuilder.append("SELECT * FROM ( "); + } + if (endRow > 0) { + sqlBuilder.append(" SELECT TMP_PAGE.*, ROWNUM ROW_ID FROM ( "); + } + sqlBuilder.append(sql); + if (endRow > 0) { + sqlBuilder.append(" ) TMP_PAGE WHERE ROWNUM <= ").append(endRow); + } + if (startRow > 0) { + sqlBuilder.append(" ) WHERE ROW_ID > ").append(startRow); + } + return sqlBuilder.toString(); + } + + /** + * 获取sqlserver2012的分页语句 pageNo 由 0 开始 + */ + public static String buildSqlServer2012PageSql(String sql, Integer pageNo, Integer pageSize) { + StringBuilder sqlBuilder = new StringBuilder(sql.length() + 14); + sqlBuilder.append(sql).append(" OFFSET ").append(pageNo).append(" ROWS ").append(" FETCH NEXT ") + .append(pageSize).append(" ROWS ONLY"); + return sqlBuilder.toString(); + } + + public static boolean isSqlServer(String driver) { + return DBDriver.SQLSERVER_JTS.getDriver().equals(driver) || DBDriver.SQLSERVER_MS.getDriver().equals(driver); + } + + public static boolean isOracle(String driver) { + return DBDriver.ORACLE.getDriver().equals(driver); + } + + public static boolean isMySql(String driver) { + return DBDriver.MYSQL.getDriver().equals(driver); + } + +} \ No newline at end of file diff --git a/bocloud.tse.entity/pom.xml b/bocloud.tse.entity/pom.xml new file mode 100644 index 0000000..4d18309 --- /dev/null +++ b/bocloud.tse.entity/pom.xml @@ -0,0 +1,18 @@ + + + 4.0.0 + + com.bocloud + bocloud.tse + 6.5.0-LTS-SZ + + bocloud.tse.entity + + + com.freedom + megatron.database + + + \ No newline at end of file diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/CacheConstant.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/CacheConstant.java new file mode 100644 index 0000000..555b824 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/CacheConstant.java @@ -0,0 +1,12 @@ +package com.bocloud.tse.constant; + +public class CacheConstant { + + // prefix + public static final String WORKERGROUP_ = "workergroup_"; + public static final String SALTMASTER_ = "saltmaster_"; + public static final String SEGMENT_ = "segment_"; + + // key + public static final String SUPER_WORKERS = "workergroup_super_workers"; +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/CommonConstant.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/CommonConstant.java new file mode 100644 index 0000000..146be49 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/CommonConstant.java @@ -0,0 +1,9 @@ +package com.bocloud.tse.constant; + +public class CommonConstant { + + public static final String SUCCESS = "success"; + public static final String SOFTUSER = "zeus"; + public static final String SOFTPSWD = "Zeus@v587"; + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/ExecuteTypeConstant.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/ExecuteTypeConstant.java new file mode 100644 index 0000000..f88dbe1 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/constant/ExecuteTypeConstant.java @@ -0,0 +1,8 @@ +package com.bocloud.tse.constant; + +public class ExecuteTypeConstant { + + // worker 执行方式 + public static final String SALTSTACK = "SaltStack"; + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Command.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Command.java new file mode 100644 index 0000000..42f53f0 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Command.java @@ -0,0 +1,62 @@ +package com.bocloud.tse.entity; + +import java.util.Date; + +import org.springframework.format.annotation.DateTimeFormat; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.megatron.common.utils.DateSerializer; +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.IgnoreAll; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.Generic; +import com.megatron.entity.meta.PKStrategy; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 高危命令管理表 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Table("command") +public class Command extends Generic { + + @PK(value = PKStrategy.AUTO) + private Long id; // ID + @Column("name") + private String name; // 名称 + @Column("level") + private String level; // 级别 + @Column("content") + private String content; // 内容 + @IgnoreAll + private boolean checked; + @Column("tenant_id") + private Long tenantId;// 租户ID + // 创建时间 + @Column("gmt_create") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtCreate; + // 修改时间 + @Column("gmt_modify") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtModify; + // 创建人 + @Column("creator_id") + private Long creatorId; + // 修改人 + @Column("mender_id") + private Long menderId; + @Column("is_deleted") + private Boolean deleted; + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/CommandInstance.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/CommandInstance.java new file mode 100644 index 0000000..1e5886b --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/CommandInstance.java @@ -0,0 +1,37 @@ +package com.bocloud.tse.entity; + +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.Generic; +import com.megatron.entity.meta.PKStrategy; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 高危命令作业实例关系表 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Table("command_instance") +public class CommandInstance extends Generic { + + @PK(value = PKStrategy.AUTO) + private Long id; // ID + @Column("command_id") + private Long commandId; + @Column("instance_id") + private Long instanceId; + + public CommandInstance(Long commandId, Long instanceId) { + super(); + this.commandId = commandId; + this.instanceId = instanceId; + } + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Identification.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Identification.java new file mode 100644 index 0000000..be8da52 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Identification.java @@ -0,0 +1,120 @@ +package com.bocloud.tse.entity; + +import java.util.Date; +import java.util.List; + +import org.springframework.format.annotation.DateTimeFormat; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.megatron.common.utils.DateSerializer; +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.IgnoreAll; +import com.megatron.entity.annotations.IgnoreUpdate; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.Generic; +import com.megatron.entity.meta.PKStrategy; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 认证类 + */ +@Data +@Table("identification") +@EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor +public class Identification extends Generic { + /** + * ID + */ + @PK(value = PKStrategy.AUTO) + private Long id; + + /** + * 用户名 + */ + @Column("username") + private String username; + + /** + * 密码 + */ + @Column("password") + private String password; + + /** + * 是否sudo + */ + @Column("is_sudo") + private Boolean isSudo; + + /** + * 备注 + */ + @Column("remark") + private String remark; + + /** + * 创建时间 + */ + @Column("gmt_create") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtCreate; + + /** + * 修改时间 + */ + @Column("gmt_modify") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtModify; + + /** + * 创建人 + */ + + @Column("creator_id") + @IgnoreUpdate + private Long creatorId; + + /** + * 修改人 + */ + @Column("mender_id") + private Long menderId; + + /** + * 账号名称 + */ + @Column("account_name") + private String accountName; + + @Column("mender") + private String mender; + + @Column("creator") + @IgnoreUpdate + private String creator; + + @Column("is_deleted") + private Boolean deleted; + + /** + * 关联资源的数量 + */ + @IgnoreAll + private Long relationCount; + + @IgnoreAll + private List taskHostIds; + + @IgnoreAll + private String oldPassword; + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/NodeModule.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/NodeModule.java new file mode 100644 index 0000000..e28fe43 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/NodeModule.java @@ -0,0 +1,67 @@ +package com.bocloud.tse.entity; + +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.IgnoreAll; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.GenericEntity; +import com.megatron.entity.meta.PKStrategy; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 编排节点模型实体类 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Table("task_node_module") +public class NodeModule extends GenericEntity { + + @PK(PKStrategy.AUTO) + private Long id;// ID + @Column("code") + private String code;// 模型编号 + @Column("pre_constraints") + private String preConstraints = "{\"rule\":\"free\"}";// 上游约束 + @Column("post_constraints") + private String postConstraints = "{\"rule\":\"free\"}";// 下游约束 + @Column("icon") + private String icon;// 图标类型 + @Column("group_id") + private Long groupId; // 分组ID + @Column("group_ids") + private String groupIds; // 分组IDs + @Column("internal") + private Boolean internal = false; + @Column("template") + private String template;// 模型 + @Column("shape") + private String shape = "{\"shape\":\"maintain-node\"}"; + @Column("requires") + private String requires; + @Column("params") + private String params; + @Column("module_type") + private String moduleType; + @Column("is_default_setting") + private Boolean defaultSetting = false; + @Column("output") + private String output; + @Column("execute_type") + private String executeType; + @Column("available") + private Boolean available; // 租户端可用的 + @IgnoreAll + private String creator; + @IgnoreAll + private String mender; + + public enum Type { + SCRIPT, SCRIPTS + } +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/NodeRelation.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/NodeRelation.java new file mode 100644 index 0000000..753aee1 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/NodeRelation.java @@ -0,0 +1,46 @@ +package com.bocloud.tse.entity; + +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.Generic; +import com.megatron.entity.meta.PKStrategy; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 任务主机表 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Table("task_node_relation") +public class NodeRelation extends Generic { + + @PK(value = PKStrategy.AUTO) + private Long id; // ID + @Column("source") + private Long source; + @Column("target") + private Long target; + @Column("instance_id") + private Long instanceId; + @Column("status") + private String status; + @Column("dicision") + private Boolean dicision; + + public NodeRelation() { + super(); + } + + public NodeRelation(Long source, Long target, Long instanceId, String status, boolean dicision) { + super(); + this.source = source; + this.target = target; + this.instanceId = instanceId; + this.status = status; + this.dicision = dicision; + } + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Task.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Task.java new file mode 100644 index 0000000..e9184f1 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/Task.java @@ -0,0 +1,83 @@ +package com.bocloud.tse.entity; + +import java.util.Date; + +import org.springframework.format.annotation.DateTimeFormat; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.megatron.common.model.RequestContext.Catalog; +import com.megatron.common.utils.DateSerializer; +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.IgnoreAll; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.GenericEntity; +import com.megatron.entity.meta.PKStrategy; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 任务类 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AllArgsConstructor +@NoArgsConstructor +@Table("task") +public class Task extends GenericEntity { + + @PK(value = PKStrategy.AUTO) + private Long id; // ID + @Column("uuid") + private String uuid; // 任务ID + @Column("code") + private String code; // 任务编码 + @Column("graph") + private Object graph; + @Column("cron") + private String cron; // cron表达式 + @Column("has_suspend") + private Boolean hasSuspend;// 是否有暂停节点 + @Column("scene_id") + private Long sceneId; // 场景ID + @Column("template_id") + private Long templateId; // 模板ID + @Column("gmt_execute") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtExecute; + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Column("run_time") + private Date runTime; + @Column("is_loop") + private Boolean isLoop; + @Column("target") + private String target; // 目标池 authenMode认证方式 sudo是否sudo executerType执行方式 + @Column("tenant_id") + private Long tenantId; // 租户ID + @Column("catalog") + private Catalog catalog;// 账号类别 + @Column("email_enabled") + private Boolean emailEnabled; + @IgnoreAll + private String creator; + @IgnoreAll + private String mender; + @IgnoreAll + private String templateName; + @IgnoreAll + private String sceneName; + @IgnoreAll + private String tenantName; + + public void preSave(Long creatorId, Long menderId, Long tenantId, Catalog catalog) { + this.setCreatorId(creatorId); + this.setMenderId(menderId); + this.setTenantId(tenantId); + this.setCatalog(catalog); + } +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskFailRecord.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskFailRecord.java new file mode 100644 index 0000000..38e90c3 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskFailRecord.java @@ -0,0 +1,87 @@ +package com.bocloud.tse.entity; + +import java.util.Date; + +import org.springframework.format.annotation.DateTimeFormat; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.megatron.common.utils.DateSerializer; +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.IgnoreUpdate; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.Generic; +import com.megatron.entity.meta.PKStrategy; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Data +@EqualsAndHashCode(callSuper = true) +@AllArgsConstructor +@NoArgsConstructor +@Table("task_fail_record") +public class TaskFailRecord extends Generic { + + /** + * 唯一标识 + */ + @PK(value = PKStrategy.AUTO) + private Long id; + + /** + * 任务实例id + */ + @Column("instance_id") + private Long instanceId; + + /** + * 任务实例名称 + */ + @Column("instance_name") + private String instanceName; + + /** + * 任务节点id + */ + @Column("node_id") + private Long nodeId; + + /** + * 任务节点名称 + */ + @Column("node_name") + private String nodeName; + + /** + * 目标主机ip + */ + @Column("host") + private String host; + + /** + * 错误信息 + */ + @Column("message") + private String message; + + /** + * 创建时间 + */ + @IgnoreUpdate + @Column("gmt_create") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtCreate; + + /** + * 更新时间 + */ + @Column("gmt_modify") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtModify; + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskHost.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskHost.java new file mode 100644 index 0000000..23685a4 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskHost.java @@ -0,0 +1,324 @@ +package com.bocloud.tse.entity; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.megatron.common.utils.DateDeserializer; +import com.megatron.common.utils.DateSerializer; +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.IgnoreAll; +import com.megatron.entity.annotations.IgnoreUpdate; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.Generic; +import com.megatron.entity.meta.PKStrategy; + +import lombok.Data; + +@EqualsAndHashCode(callSuper = true) +@AllArgsConstructor +@NoArgsConstructor +@Data +@Table("task_host") +public class TaskHost extends Generic { + + @PK(value = PKStrategy.AUTO) + private Long id; // ID + @Column("ip") + private String ip; + @Column("ips") + private Object ips; + @Column("catalog") + private String catalog; // 类型(大类) + @Column("category") + private String category; // 类型(小类) + @Column("os_category") + private String osCategory; // 操作系统类型 + @Column("username") + private String username;// 用户名 + @Column("password") + private String password;// 密码 + @Column("known") + private Boolean known; + @Column("segment_id") + private Long segmentId; + @IgnoreAll + private String segmentName; + @IgnoreAll + private Boolean isTemplate; + /** + * 实例id:数据来源为:IMS时有值 pm:uuid,vm:instance_id + */ + @Column("instance_id") + private String instanceId; + /** + * 数据来源:IMS(IMS同步),IMPORT(批量导入),CREATE(手动创建) + */ + @Column("source_type") + private String sourceType; + /** + * 平台id,数据来源为:IMS时有值 + */ + @Column("vendor_id") + private Long vendorId; + @Column("vendor_type") + private String vendorType; + + @Column("vendor_name") + private String vendorName; + /** + * AUTO 自动同步,MANUAL 手动配置 + */ + @Column("update_mode") + private String updateMode; + + /** + * 租户id + */ + @Column("tenant_id") + private Long tenantId; + + /** + * 操作系统 + */ + @Column("os_name") + private String osName; + + /** + * 作系统版本号 + */ + @Column("os_version") + private String osVersion; + + /** + * 连接协议 + */ + @Column("conn_protocol") + private String connProtocol; + + /** + * saltId + */ + @Column("salt_id") + private Long saltId; + + /** + * 关联认证账号id + */ + @IgnoreAll + private List identificationIds; + + /** + * 关联用户id + */ + @IgnoreAll + private List userGroupIds; + + @IgnoreAll + private List userGroupNames; + + @IgnoreAll + private List connProtocols; + + /** + * 认证账号 + */ + @IgnoreAll + private List> identifications; + + @IgnoreAll + private String tenantName; + + public void setIps(Object ips) { + if (null == ips || ips instanceof String) { + this.ips = ips; + } else { + this.ips = JSONArray.toJSONString(ips); + } + } + + public String getIps() { + if (null == ips) { + return null; + } + return ips.toString(); + } + + @IgnoreUpdate + @Column(value = "gmt_create", nullable = false) + @JsonSerialize(using = DateSerializer.class) + @JsonDeserialize(using = DateDeserializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtCreate; + @Column("gmt_modify") + @JsonSerialize(using = DateSerializer.class) + @JsonDeserialize(using = DateDeserializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtModify; + @Column("creator_id") + private Long creatorId; + @Column("owner_id") + private Long ownerId; + @Column("mender_id") + private Long menderId; + @Column("name") + private String name; + @Column("status") + private String status; + @Column("is_deleted") + private Boolean deleted; + @Column("props") + private String props; + @Column("remark") + private String remark; + /** + * 类型(小类) + */ + @Column("user_catalog") + private String userCatalog; + /** + * 数据中心 + */ + @Column + private String dataCenter; + + /** + * salt minionId + */ + @Column("salt_minion_id") + private String saltMinionId; + + /** + * 数据中心名称 + */ + @IgnoreAll + private String dataCenterName; + /** + * 机房 + */ + @Column + private String room; + /** + * 机房名称 + */ + @IgnoreAll + private String roomName; + /** + * 机柜 + */ + @Column + private String rack; + /** + * 机柜名称 + */ + @IgnoreAll + private String rackName; + /** + * 槽位 + */ + @Column + private String slot; + /** + * 槽位名称 + */ + @IgnoreAll + private String slotName; + + @Override + public String toString() { + return JSONObject.toJSONString(this); + } + + public Date getGmtCreate() { + return this.gmtCreate; + } + + public Date getGmtModify() { + return this.gmtModify; + } + + public Long getCreatorId() { + return this.creatorId; + } + + public Long getOwnerId() { + return this.ownerId; + } + + public Long getMenderId() { + return this.menderId; + } + + public String getName() { + return this.name; + } + + public String getStatus() { + return this.status; + } + + public Boolean getDeleted() { + return this.deleted; + } + + public String getProps() { + return this.props; + } + + public String getRemark() { + return this.remark; + } + + @JsonDeserialize(using = DateDeserializer.class) + public void setGmtCreate(Date gmtCreate) { + this.gmtCreate = gmtCreate; + } + + @JsonDeserialize(using = DateDeserializer.class) + public void setGmtModify(Date gmtModify) { + this.gmtModify = gmtModify; + } + + public void setCreatorId(Long creatorId) { + this.creatorId = creatorId; + } + + public void setOwnerId(Long ownerId) { + this.ownerId = ownerId; + } + + public void setMenderId(Long menderId) { + this.menderId = menderId; + } + + public void setName(String name) { + this.name = name; + } + + public void setStatus(String status) { + this.status = status; + } + + public void setDeleted(Boolean deleted) { + this.deleted = deleted; + } + + public void setProps(String props) { + this.props = props; + } + + public void setRemark(String remark) { + this.remark = remark; + } + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstance.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstance.java new file mode 100644 index 0000000..3e774f8 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstance.java @@ -0,0 +1,148 @@ +package com.bocloud.tse.entity; + +import java.util.Date; +import java.util.List; + +import org.springframework.format.annotation.DateTimeFormat; + +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.megatron.common.model.RequestContext; +import com.megatron.common.model.RequestContext.Catalog; +import com.megatron.common.utils.DateSerializer; +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.IgnoreAll; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.GenericEntity; +import com.megatron.entity.meta.PKStrategy; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 任务实例类 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor +@Table("task_instance") +public class TaskInstance extends GenericEntity { + + @PK(value = PKStrategy.AUTO) + private Long id; // ID + @Column("uuid") + private String uuid; // uuid + @Column("type") + private String type; // 任务类型:temporary-临时,standard-标准,inspection-巡检,compliance-合规,patch-补丁,compare-配置对比 + @Column("code") + private String code; // 任务种类:standard-标准,scheduled-定时 + @Column("graph") + private String graph; + @Column("cron") + private String cron; // cron表达式 + @Column("gmt_start") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtStart; // 开始时间 + @Column("gmt_finish") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtFinish; // 结束时间 + @Column("task_id") + private Long taskId; // 任务ID + @Column("execute_mode") + private String executeMode; // 启动方式 + @Column("execute_host") + private String executeHost;// 执行主机 + @Column("tenant_id") + private Long tenantId; // 租户ID + @Column("catalog") + private Catalog catalog;// 账号类别 + @Column("rollbacks") + private Boolean rollbacks;// 超时回滚 + @Column("timeout") + private Long timeout;// 超时时间 + @Column("is_backup") + private Boolean isBackup; // 是否纯备份任务 + @IgnoreAll + private Double cost; // 总耗时 + @IgnoreAll + private String operator; // 启动人 + @IgnoreAll + private List results; + @IgnoreAll + private List nodes;// 资源堆栈下的所有堆栈节点 + @IgnoreAll + private String templateName;// 模板名称 + @IgnoreAll + private String vendorName;// 平台名称 + @IgnoreAll + private RequestContext context; + @IgnoreAll + private String tenantName;// 租户名称 + @IgnoreAll + private Long count; + @IgnoreAll + private String extension; + @Column("email_enabled") + private Boolean emailEnabled; + @IgnoreAll + private List taskInstanceHosts; + + @Column("priority") + private Integer priority; + + /** + * 所属平台 + */ + @Column("platform") + private String platform; + + /** + * 是否限制执行 + */ + @Column("is_limited") + private Boolean isLimited; + /** + * 限制释放时间 + */ + @Column("limited_release_time") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date limitedReleaseTime; + + @Column("platform_alert_id") + private Long platformAlertId; + + /** + * 目标任务数 + */ + @IgnoreAll + private Integer targetHostNum; + + /** + * 备份场景名称 + */ + @IgnoreAll + private String sceneName; + + public TaskInstance(Long creatorId, Long ownerId, Long menderId, String name, String status, String remark, + String code, String graph, String cron, Long tenantId, Catalog catalog) { + this.setName(name); + this.setStatus(status); + this.setRemark(remark); + this.code = code; + this.graph = graph; + this.cron = cron; + this.setCreatorId(creatorId); + this.setOwnerId(ownerId); + this.setMenderId(menderId); + this.tenantId = tenantId; + this.catalog = catalog; + } + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstanceHost.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstanceHost.java new file mode 100644 index 0000000..9959187 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstanceHost.java @@ -0,0 +1,48 @@ +package com.bocloud.tse.entity; + +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.Generic; +import com.megatron.entity.meta.PKStrategy; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 任务主机表 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AllArgsConstructor +@NoArgsConstructor +@Table("task_instance_host") +public class TaskInstanceHost extends Generic { + + @PK(value = PKStrategy.AUTO) + private Long id; // ID + @Column("host") + private String host; + @Column("instance_id") + private Long instanceId; + /** + * 任务执行引擎 + */ + @Column("execute_host") + private String executeHost; + + /** + * 任务执行worker + */ + @Column("execute_worker") + private String executeWorker; + + @Column("node_id") + private Long nodeId; + + @Column("node_name") + private String nodeName; + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstanceJob.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstanceJob.java new file mode 100644 index 0000000..1294d76 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskInstanceJob.java @@ -0,0 +1,39 @@ +package com.bocloud.tse.entity; + +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.Generic; +import com.megatron.entity.meta.PKStrategy; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 任务主机表 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AllArgsConstructor +@NoArgsConstructor +@Table("task_instance_job") +public class TaskInstanceJob extends Generic { + + @PK(value = PKStrategy.AUTO) + private Long id; // ID + @Column("task_id") + private String taskId; + @Column("job") + private String job; + @Column("priority") + private Integer priority; + + public TaskInstanceJob(String taskId, String job) { + super(); + this.taskId = taskId; + this.job = job; + } + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskNode.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskNode.java new file mode 100644 index 0000000..f4b53bf --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskNode.java @@ -0,0 +1,110 @@ +package com.bocloud.tse.entity; + +import java.util.Date; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.format.annotation.DateTimeFormat; + +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.megatron.common.model.GeneralResult; +import com.megatron.common.model.RequestContext; +import com.megatron.common.utils.DateSerializer; +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.IgnoreAll; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.GenericEntity; +import com.megatron.entity.meta.PKStrategy; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 任务节点类 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AllArgsConstructor +@NoArgsConstructor +@Table("task_node") +public class TaskNode extends GenericEntity { + + @PK(value = PKStrategy.AUTO) + private Long id; // ID + @Column("uuid") + private String uuid; // 任务ID + @Column("code") + private String code; // 节点编码 + @Column("category") + private String category; // 节点类型 + @Column("catalog") + private String catalog; // 节点分类 + @Column("input") + private String input; // 参数 + @Column("output") + private String output; // 输出 + @Column("content") + private String content; // 默认参数 + @Column("rollbacks") + private String rollbacks;// 回滚 + @Column("config") + private String config; // 配置信息 + @Column("control") + private String control;// 控制信息 + @Column("cost") + private Double cost;// 任务耗时 + @Column("node_id") + private String nodeId; // 节点ID + @Column("instance_id") + private Long instanceId; // 实例ID + @Column("gmt_start") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtStart; // 开始时间 + @Column("gmt_finish") + @JsonSerialize(using = DateSerializer.class) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date gmtFinish; // 结束时间 + @Column("module_type") + private String moduleType; // 节点类型 + @IgnoreAll + private List successes; // 成功的 + @IgnoreAll + private List failures; // 失败的 + @IgnoreAll + private JSONObject outputs; + @IgnoreAll + private RequestContext context; + @IgnoreAll + private Boolean dicision; + @IgnoreAll + private String params; + @IgnoreAll + private Long createrId; + @IgnoreAll + private String instanceName; + + public void preSave(Long creatorId, Long menderId, Long instanceId, String status) { + this.setCreatorId(creatorId); + this.setMenderId(menderId); + this.instanceId = instanceId; + this.setStatus(status); + } + + public static GeneralResult convert(String content) { + if (StringUtils.isEmpty(content)) { + return new GeneralResult<>(false, "参数为空!"); + } + try { + TaskNode taskNode = JSONObject.parseObject(content, TaskNode.class); + return new GeneralResult(true, taskNode, "success"); + } catch (Exception e) { + return new GeneralResult<>(false, e.getLocalizedMessage()); + } + } + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskWorker.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskWorker.java new file mode 100644 index 0000000..9429ba5 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/entity/TaskWorker.java @@ -0,0 +1,70 @@ +package com.bocloud.tse.entity; + +import com.megatron.entity.annotations.Column; +import com.megatron.entity.annotations.IgnoreAll; +import com.megatron.entity.annotations.PK; +import com.megatron.entity.annotations.Table; +import com.megatron.entity.bean.GenericEntity; +import com.megatron.entity.meta.PKStrategy; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Table("task_worker") +public class TaskWorker extends GenericEntity { + + /** + * 主键ID + */ + @PK(value = PKStrategy.AUTO) + private Long id; + /** + * worker实例地址 + */ + @Column("instance") + private String instance; + /** + * worker 实例类别 + */ + @Column("category") + private Category category; + /** + * 协议类型 + */ + @Column("protocol") + private String protocol; + @Column("uri") + private String uri; + @Column("username") + private String username; + @Column("password") + private String password; + @Column("count") + private Long count; + @Column("is_super") + private Boolean isSuper; + @Column("group_id") + private Long groupId; + @IgnoreAll + private String groupName; + + public enum Category { + /** + * Ansible 类型worker + */ + Ansible, + /** + * SaltStack类型worker + */ + SaltMaster; + } + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/AuthenMode.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/AuthenMode.java new file mode 100644 index 0000000..863b2b5 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/AuthenMode.java @@ -0,0 +1,40 @@ +package com.bocloud.tse.enums; + +import org.apache.commons.lang3.StringUtils; + +/** + * 认证模式 + */ +public enum AuthenMode { + + /** + * 互信认证,不需要用户名和密码 + */ + TRUST, + /** + * 单一认证,每个目标主机都要有认证账户和密码 + */ + SINGLE, + /** + * 认证账号,每个目标主机都要有认证账户和密码 + */ + ACCOUNT, + /** + * 批量认证,多个目标主机公用一个认证账号和密码 + */ + BATCH; + + public static boolean hasValue(String value) { + if (StringUtils.isEmpty(value)) { + return false; + } + AuthenMode[] modes = AuthenMode.values(); + for (AuthenMode mode : modes) { + if (mode.name().equalsIgnoreCase(value)) { + return true; + } + } + return false; + } + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/Catalog.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/Catalog.java new file mode 100644 index 0000000..7f1cf81 --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/Catalog.java @@ -0,0 +1,92 @@ +package com.bocloud.tse.enums; + +import org.apache.commons.lang3.StringUtils; + +import com.megatron.common.model.GeneralResult; + +/** + * 分类枚举类,用来提供各种资源的分类枚举 + */ +public class Catalog { + + public static enum Task { + /** + * 定时任务 + */ + SCHEDULED("scheduled"), + /** + * 标准任务 + */ + STANDARD("standard"), + /** + * 临时任务 + */ + TEMPORARY("temporary"), + /** + * 任务模板 + */ + TEMPLATE("template"); + + public static GeneralResult hasValue(String value) { + if (StringUtils.isEmpty(value)) { + return new GeneralResult<>(false, "参数为空!"); + } + Task[] tasks = Task.values(); + for (Task task : tasks) { + if (task.name().equalsIgnoreCase(value)) { + return new GeneralResult(true, task, "success"); + } + } + return new GeneralResult<>(false, "数值不存在!"); + } + + private String value; + + Task(String value) { + this.value = value; + } + + public String getValue() { + return this.value; + } + } + + /** + * 任务节点分类 + */ + public static enum Node { + + /** + * 任务节点 + */ + TASK("task"), + /** + * 控制节点 + */ + CTRL("ctrl"); + + public static GeneralResult hasValue(String value) { + if (StringUtils.isEmpty(value)) { + return new GeneralResult<>(false, "参数为空!"); + } + Node[] nodes = Node.values(); + for (Node node : nodes) { + if (node.name().equalsIgnoreCase(value)) { + return new GeneralResult(true, node, "success"); + } + } + return new GeneralResult<>(false, "数值不存在!"); + } + + private String value; + + Node(String value) { + this.value = value; + } + + public String getValue() { + return this.value; + } + } + +} diff --git a/bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/Category.java b/bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/Category.java new file mode 100644 index 0000000..38ee7ae --- /dev/null +++ b/bocloud.tse.entity/src/main/java/com/bocloud/tse/enums/Category.java @@ -0,0 +1,142 @@ +package com.bocloud.tse.enums; + +import org.apache.commons.lang3.StringUtils; + +import com.megatron.common.model.GeneralResult; + +/** + * 类型枚举类,用来提供各种资源的枚举类型
+ * 目前支持 编排任务类型,任务节点类型和脚本类型 + */ +public class Category { + + public static enum Task { + /** + * 运维类型 + */ + MAINTAIN("maintain"), + /** + * 资源类型 + */ + RESOURCE("resource"), + /** + * 软件类型 + */ + SOFTWARE("software"), + /** + * 混合类型 + */ + MULTIFUL("multiful"); + + private String value; + + Task(String value) { + this.value = value; + } + + public String getValue() { + return this.value; + } + } + + /** + * 节点类型 + */ + public static enum Node { + /** + * 开始节点 + */ + START("start"), + /** + * 开始节点 + */ + STOP("stop"), + /** + * 开始节点 + */ + JUDGE("judge"), + /** + * 运维节点 + */ + MAINTAIN("maintain"), + /** + * 资源节点 + */ + RESOURCE("resource"), + /** + * 软件节点 + */ + SOFTWARE("software"); + + public static GeneralResult hasValue(String value) { + if (StringUtils.isEmpty(value)) { + return new GeneralResult<>(false, "参数为空!"); + } + Node[] nodes = Node.values(); + for (Node node : nodes) { + if (node.name().equalsIgnoreCase(value)) { + return new GeneralResult(true, node, "success"); + } + } + return new GeneralResult<>(false, "数值不存在!"); + } + + private String value; + + Node(String value) { + this.value = value; + } + + public String getValue() { + return this.value; + } + } + + /** + * 脚本类型 + */ + public static enum Script { + /** + * + */ + SHELL, + /** + * + */ + POWERSHELL, + /** + * + */ + PYTHON, + /** + * + */ + BAT, + /** + * + */ + PERL, + /** + * + */ + PLAYBOOK, + /** + * + */ + DATABASE; + + public static GeneralResult