Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimized ark console version registry #17

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -86,20 +86,28 @@ public interface ArkDao {
void removeModuleUser(int mId);

/**
* 根据插件吗查询插件详情
* 根据插件名查询插件详情-模糊查询
*
* @param pluginName
* @return
*/
List<ArkPluginDO> queryModuleInfoByName(@Param("pluginName") String pluginName);

/**
* 根据插件名查询插件详情
*
* @param pluginName
* @return
*/
List<ArkPluginDO> queryModuleInfoByNameStrict(@Param("pluginName") String pluginName);

/**
* 根据插件ID 查询所有插件版本
*
* @param id
* @return
*/
List<String> queryVersionsByMid(int id);
List<ArkModuleVersionDO> queryVersionsByMid(int id);

/**
* 插件关联应用信息入库
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,12 @@
*/
package com.alipay.sofa.dashboard.impl;

import com.alipay.sofa.dashboard.constants.SofaDashboardConstants;
import com.alipay.sofa.dashboard.dao.ArkDao;
import com.alipay.sofa.dashboard.model.*;
import com.alipay.sofa.dashboard.model.AppArkDO;
import com.alipay.sofa.dashboard.model.ArkModuleUserDO;
import com.alipay.sofa.dashboard.model.ArkModuleVersionDO;
import com.alipay.sofa.dashboard.model.ArkPluginDO;
import com.alipay.sofa.dashboard.model.ArkPluginModel;
import com.alipay.sofa.dashboard.service.ArkMngService;
import com.alipay.sofa.dashboard.utils.DateUtil;
import org.slf4j.Logger;
Expand Down Expand Up @@ -51,14 +54,12 @@ public List<ArkPluginModel> fetchRegisteredPlugins() {

@Transactional(rollbackFor = Exception.class)
@Override
public boolean registerPlugin(ArkPluginDO model, String version) {
public boolean registerPlugin(ArkPluginDO model) {
try {
// 向模块表中插入一条数据
arkDao.insert(model);
int mId = model.getId();
// 向模板版本表中插入数据
doInsertModuleVersion(mId, version, model.getPluginName());
// 向模板Owner表中插入数据
// 向模板 Owner 表中插入数据
ArkModuleUserDO arkModuleUserDO = new ArkModuleUserDO();
arkModuleUserDO.setModuleId(mId);
// -1 不需要权限校验即可访问使用
Expand All @@ -73,10 +74,10 @@ public boolean registerPlugin(ArkPluginDO model, String version) {
}

@Override
public boolean addNewVersion(String pluginName, String version) {
public boolean addNewVersion(String pluginName, String version, String address) {
int mId = arkDao.queryModuleIdByName(pluginName);
// 向模板版本表中插入数据
return doInsertModuleVersion(mId, version, pluginName) > 0;
return doInsertModuleVersion(mId, version, address) > 0;
}

@Transactional(rollbackFor = Exception.class)
Expand Down Expand Up @@ -138,10 +139,16 @@ private List<ArkPluginModel> doFetchPluginsByName(String pluginName) {
List<ArkPluginDO> list = arkDao.queryModuleInfoByName(pluginName);
for (ArkPluginDO item : list) {
ArkPluginModel temp = new ArkPluginModel();
List<String> versions = arkDao.queryVersionsByMid(item.getId());
List<ArkModuleVersionDO> arkModuleVersionDOList = arkDao.queryVersionsByMid(item.getId());
List<ArkPluginModel.Version> versions = new ArrayList<>();
arkModuleVersionDOList.forEach(ver -> {
ArkPluginModel.Version version = new ArkPluginModel.Version();
version.setSourcePath(ver.getSourcePath());
version.setVersion(ver.getModuleVersion());
versions.add(version);
});
temp.setVersions(versions);
temp.setId(item.getId());
temp.setAddress(item.getPluginUrl());
temp.setDescription(item.getDescription());
temp.setPluginName(item.getPluginName());
result.add(temp);
Expand All @@ -150,28 +157,18 @@ private List<ArkPluginModel> doFetchPluginsByName(String pluginName) {
}

/**
* 构建版本信息,此处会生成默认的 版本地址,与插件地址组合之后可以唯一确定当前 插件包的地址
* <p>
* 如 插件地址 为 :http://ip:port/sofa/ark
* 版本地址 为 :/1.0.0/test-plugin-1.0.0-ark-biz.jar
* <p>
* 则 最终地址为 http://ip:port/sofa/ark/1.0.0/test-plugin-1.0.0-ark-biz.jar
*
* @param mId
* @param version
* @param pluginName
* @param address
* @return
*/
private int doInsertModuleVersion(int mId, String version, String pluginName) {
private int doInsertModuleVersion(int mId, String version, String address) {
// 向模板版本表中插入数据
ArkModuleVersionDO arkModuleVersionDO = new ArkModuleVersionDO();
arkModuleVersionDO.setCreateTime(DateUtil.now());
arkModuleVersionDO.setModuleId(mId);
arkModuleVersionDO.setModuleVersion(version);
arkModuleVersionDO.setSourcePath(SofaDashboardConstants.SEPARATOR + version
+ SofaDashboardConstants.SEPARATOR + pluginName
+ SofaDashboardConstants.HORIZONTAL + version
+ "-ark-biz.jar");
arkModuleVersionDO.setSourcePath(address);
arkModuleVersionDO.setIsRelease((byte) 0);
arkDao.insertModuleVersion(arkModuleVersionDO);
return arkModuleVersionDO.getId();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,20 +203,16 @@ private ArkOperation getData(CommandRequest commandRequest) {
}

private String getBizPluginFileUrl(CommandRequest commandRequest) {
List<ArkPluginDO> arkPluginList = arkDao.queryModuleInfoByName(commandRequest
List<ArkPluginDO> arkPluginList = arkDao.queryModuleInfoByNameStrict(commandRequest
.getPluginName());
if (arkPluginList.size() > 1) {
throw new RuntimeException("Multiple modules with the same name coexist.");
}
if (arkPluginList.size() == 1) {
ArkPluginDO arkPlugin = arkPluginList.get(0);
String pluginUrl = arkPlugin.getPluginUrl();
ArkModuleVersionDO arkModuleVersion = arkDao.queryByModuleIdAndModuleVersion(
arkPlugin.getId(), commandRequest.getPluginVersion());
if (pluginUrl.endsWith(SofaDashboardConstants.SEPARATOR)) {
pluginUrl = pluginUrl.substring(0, pluginUrl.length() - 1);
}
return pluginUrl + arkModuleVersion.getSourcePath();
return arkModuleVersion.getSourcePath();
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
public class ArkPluginDO {
private Integer id;
private String pluginName;
private String pluginUrl;
private Date createTime;
private String description;

Expand All @@ -45,14 +44,6 @@ public void setPluginName(String pluginName) {
this.pluginName = pluginName;
}

public String getPluginUrl() {
return pluginUrl;
}

public void setPluginUrl(String pluginUrl) {
this.pluginUrl = pluginUrl;
}

public String getDescription() {
return description;
}
Expand All @@ -69,9 +60,8 @@ public void setCreateTime(Date createTime) {
this.createTime = createTime;
}

public ArkPluginDO(String pluginName, String pluginUrl, Date createTime, String description) {
public ArkPluginDO(String pluginName, Date createTime, String description) {
this.pluginName = pluginName;
this.pluginUrl = pluginUrl;
this.createTime = createTime;
this.description = description;
}
Expand All @@ -81,8 +71,7 @@ public ArkPluginDO() {

@Override
public String toString() {
return "ArkPluginDO{" + "id=" + id + ", pluginName='" + pluginName + '\'' + ", pluginUrl='"
+ pluginUrl + '\'' + ", createTime=" + createTime + ", description='" + description
+ '\'' + '}';
return "ArkPluginDO{" + "id=" + id + ", pluginName='" + pluginName + '\'' + ", createTime="
+ createTime + ", description='" + description + '\'' + '}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
public class ArkPluginModel {
private int id;
private String pluginName;
private List<String> versions;
private List<Version> versions;
private String address;
private String description;
private List<AppArkModel> appArkList;
Expand All @@ -46,14 +46,6 @@ public void setPluginName(String pluginName) {
this.pluginName = pluginName;
}

public List<String> getVersions() {
return versions;
}

public void setVersions(List<String> versions) {
this.versions = versions;
}

public String getAddress() {
return address;
}
Expand All @@ -77,4 +69,35 @@ public List<AppArkModel> getAppArkList() {
public void setAppArkList(List<AppArkModel> appArkList) {
this.appArkList = appArkList;
}

public List<Version> getVersions() {
return versions;
}

public void setVersions(List<Version> versions) {
this.versions = versions;
}

public static class Version {

private String version;

private String sourcePath;

public String getVersion() {
return version;
}

public void setVersion(String version) {
this.version = version;
}

public String getSourcePath() {
return sourcePath;
}

public void setSourcePath(String sourcePath) {
this.sourcePath = sourcePath;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,19 @@ public interface ArkMngService {
* 向管控端注册插件
*
* @param model
* @param version
* @return
*/
boolean registerPlugin(ArkPluginDO model, String version);
boolean registerPlugin(ArkPluginDO model);

/**
* 给模块增加新的版本
*
* @param pluginName
* @param version
* @param address
* @return
*/
boolean addNewVersion(String pluginName, String version);
boolean addNewVersion(String pluginName, String version, String address);

/**
* 删除一个模块
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.alipay.sofa.dashboard.domain.RpcConsumer;
import com.alipay.sofa.dashboard.domain.RpcProvider;
import com.alipay.sofa.dashboard.domain.RpcService;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.alipay.sofa.dashboard.domain.RpcProvider;
import com.alipay.sofa.dashboard.domain.RpcService;
import com.alipay.sofa.rpc.common.utils.StringUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.alipay.sofa.rpc.common.utils.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.springframework.core.env.Environment;
import org.springframework.core.env.MapPropertySource;
import org.springframework.core.env.PropertySource;

import java.util.HashMap;
import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
* @author: guolei.sgl ([email protected]) 18/12/7 下午5:15
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,11 @@ public AppModuleModel fetchArlApps(@RequestParam("pluginName") String pluginName
}

List<ArkPluginModel> arkPluginModels = arkMngService.fetchPluginsByName(pluginName);
arkPluginModels.forEach((item) -> versions.addAll(item.getVersions()));
arkPluginModels.forEach((item) ->
item.getVersions().forEach((versionItem -> {
versions.add(versionItem.getVersion());
}))
);

// 版本为空,则插件当前插件的所有版本,然后选择一个默认的
if (StringUtils.isEmpty(version) && !versions.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,11 +94,9 @@ public boolean registerPlugin(@RequestBody Map<String, String> map) {
return false;
}
String pluginName = map.get(SofaDashboardConstants.PLUGIN_NAME);
String version = map.get(SofaDashboardConstants.VERSION);
String address = map.get(SofaDashboardConstants.ADDRESS);
String description = map.get(SofaDashboardConstants.DESCRIPTION);
ArkPluginDO arkPluginDO = new ArkPluginDO(pluginName, address, DateUtil.now(), description);
return arkMngService.registerPlugin(arkPluginDO, version);
ArkPluginDO arkPluginDO = new ArkPluginDO(pluginName, DateUtil.now(), description);
return arkMngService.registerPlugin(arkPluginDO);
}

@RequestMapping("/registerNewVersion")
Expand All @@ -108,7 +106,8 @@ public boolean registerNewVersion(@RequestBody Map<String, String> map) {
}
String version = map.get(SofaDashboardConstants.VERSION);
String pluginName = map.get(SofaDashboardConstants.PLUGIN_NAME);
return arkMngService.addNewVersion(pluginName, version);
String address = map.get(SofaDashboardConstants.ADDRESS);
return arkMngService.addNewVersion(pluginName, version, address);
}

@RequestMapping("/deletePluginModel")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.HashSet;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# ark 管控端配置中心地址
com.alipay.sofa.dashboard.zookeeper.address=127.0.0.1:2181
com.alipay.sofa.dashboard.zookeeper.address=localhost:2181
# mysql 数据库连接属性配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/SofaDashboardDB
spring.datasource.url=jdbc:mysql://localhost:3306/SofaDashboardDB
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.password=root
# zookeeper 注册中心地址
com.alipay.sofa.dashboard.registry=zookeeper://127.0.0.1:2181
com.alipay.sofa.dashboard.registry=zookeeper://localhost:2181
Loading