引入Maven依赖
<dependency>
<groupId>com.mesosphere</groupId>
<artifactId>marathon-client</artifactId>
<version>0.6.0</version>
</dependency>
自动配置
@Configuration
@EnableConfigurationProperties(MarathonConfig.MarathonProperties.class)
public class MarathonAutoConfig {
@Autowired
private MarathonProperties marathonProperties;
@Data
@ConfigurationProperties("marathon")
public static class MarathonProperties {
private String uri;
}
@Bean
public MarathonUtils marathonUtils(){
if(marathonProperties == null){
return null;
}
final MarathonUtils hdfsUtils = new MarathonUtils(marathonProperties.getUri());
return hdfsUtils;
}
}
配置Marathon地址
在spring.properties中添加如下配置:
marathon.uri=http://marathon.xxx.com:8080
MarathonUtils
import lombok.extern.slf4j.Slf4j;
import mesosphere.marathon.client.Marathon;
import mesosphere.marathon.client.MarathonClient;
import mesosphere.marathon.client.model.v2.*;
import java.util.Collection;
import java.util.List;
/**
* Marathon服务管理
*
* 参考文档:https://blog.csdn.net/qq_27232757/article/details/74565095
* @author wangyong
* @date 2018/11/1
*/
@Slf4j
public class MarathonUtils {
private final Marathon marathon ;
public MarathonUtils(final String marathonUrl) {
marathon = MarathonClient.getInstance(marathonUrl);
}
public List<VersionedApp> getApps(){
final GetAppsResponse response = marathon.getApps();
return response.getApps();
}
/**
* 获取App信息
* @param id 应用ID
*/
public VersionedApp getApp(String id) {
final GetAppResponse appResp = marathon.getApp(id);
final VersionedApp app = appResp.getApp();
return app;
}
/**
* 获取正在部署的App
*/
public List<Deployment> getDeployments() {
final List<Deployment> deployments = marathon.getDeployments();
return deployments;
}
/**
* 获取任务列表
*/
public Collection<Task> getTasks() {
final GetTasksResponse tasksResponse = marathon.getTasks();
final Collection<Task> tasks = tasksResponse.getTasks();
return tasks;
}
/**
* 获取指定APP下的所有任务
* @param appid
*/
public Collection<Task> getTasks(String appid){
final GetAppTasksResponse tasksResponse = marathon.getAppTasks(appid);
final Collection<Task> tasks = tasksResponse.getTasks();
return tasks;
}
/**
* 删除所有Apps
* @return
*/
public boolean deleteAllApps() {
final GetAppsResponse appsResponse = marathon.getApps();
final List<VersionedApp> apps = appsResponse.getApps();
for (VersionedApp app : apps) {
marathon.deleteApp(app.getId());
}
return true;
}
public Group getGroup(String groupName){
final Group group = marathon.getGroup(groupName);
return group;
}
public boolean cancelDeployment(String s){
marathon.cancelDeployment(s);
return true;
}
public void updateGroup(){
// marathon.updateGroup();
}
/**
* 重启App
* @param appid
* @param force
* @return
*/
public String restartApp(final String appid, final boolean force){
final Result result = marathon.restartApp(appid, force);
return result.getDeploymentId();
}
/**
* 更新App信息
* @param appId
* @param app
* @param force
* @return
*/
public String updateApp(final String appId, App app, boolean force){
final Result result = marathon.updateApp(appId, app, force);
return result.getDeploymentId();
}
/**
* 查看服务器信息
* @return
*/
public GetServerInfoResponse getServerInfo(){
final GetServerInfoResponse response = marathon.getServerInfo();
return response;
}
/**
* 取消部署并回滚
* @param id
* @return
*/
public String cancelDeploymentAndRollback(String id){
final Result result = marathon.cancelDeploymentAndRollback(id);
return result.getDeploymentId();
}
/**
* 创建App
* @param app
* @return
*/
public VersionedApp createApp(App app){
try {
return marathon.createApp(app);
}catch (Exception e){
log.error("App已存在", e);
}
return null;
}
/**
* 创建Group
* @param group
* @return
*/
public String createGroup(Group group){
final Result result = marathon.createGroup(group);
return result.getDeploymentId();
}
}