diff --git a/apollo-biz/src/main/java/com/ctrip/apollo/biz/entity/Commit.java b/apollo-biz/src/main/java/com/ctrip/apollo/biz/entity/Commit.java new file mode 100644 index 0000000000000000000000000000000000000000..0839e46a5cd3297b57e0eaf8f3ad5b0ee252963b --- /dev/null +++ b/apollo-biz/src/main/java/com/ctrip/apollo/biz/entity/Commit.java @@ -0,0 +1,76 @@ +package com.ctrip.apollo.biz.entity; + +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +@Entity +@Table(name = "commit") +@SQLDelete(sql = "Update commit set isDeleted = 1 where id = ?") +@Where(clause = "isDeleted = 0") +public class Commit extends BaseEntity{ + + @Column(name = "ChangeSets", nullable = false) + private String changeSets; + + @Column(name = "AppId", nullable = false) + private String appId; + + @Column(name = "ClusterName", nullable = false) + private String clusterName; + + @Column(name = "NamespaceName", nullable = false) + private String namespaceName; + + @Column(name = "Comment") + private String comment; + + public String getChangeSets() { + return changeSets; + } + + public void setChangeSets(String changeSets) { + this.changeSets = changeSets; + } + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getClusterName() { + return clusterName; + } + + public void setClusterName(String clusterName) { + this.clusterName = clusterName; + } + + public String getNamespaceName() { + return namespaceName; + } + + public void setNamespaceName(String namespaceName) { + this.namespaceName = namespaceName; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + @Override + public String toString() { + return toStringHelper().add("changeSets", changeSets).add("appId", appId).add("clusterName", clusterName) + .add("namespaceName", namespaceName).add("comment", comment).toString(); + } +} diff --git a/apollo-biz/src/main/java/com/ctrip/apollo/biz/repository/CommitRepository.java b/apollo-biz/src/main/java/com/ctrip/apollo/biz/repository/CommitRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..ab0586b95d38f8ad9d7002e8e0cdf36b436c1e31 --- /dev/null +++ b/apollo-biz/src/main/java/com/ctrip/apollo/biz/repository/CommitRepository.java @@ -0,0 +1,14 @@ +package com.ctrip.apollo.biz.repository; + +import com.ctrip.apollo.biz.entity.Commit; + +import org.springframework.data.repository.PagingAndSortingRepository; + +import java.util.List; + +public interface CommitRepository extends PagingAndSortingRepository { + + List findByAppIdAndClusterNameAndNamespaceName(String appId, String clusterName, + String namespaceName); + +} diff --git a/apollo-biz/src/main/java/com/ctrip/apollo/biz/service/CommitService.java b/apollo-biz/src/main/java/com/ctrip/apollo/biz/service/CommitService.java new file mode 100644 index 0000000000000000000000000000000000000000..3bdb796da705c7737413f262399a762529fdeed2 --- /dev/null +++ b/apollo-biz/src/main/java/com/ctrip/apollo/biz/service/CommitService.java @@ -0,0 +1,24 @@ +package com.ctrip.apollo.biz.service; + +import com.ctrip.apollo.biz.entity.Commit; +import com.ctrip.apollo.biz.repository.CommitRepository; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; + +@Service +public class CommitService { + + @Autowired + private CommitRepository commitRepository; + + public void save(Commit commit, String user){ + + commit.setDataChangeCreatedBy(user); + commit.setDataChangeCreatedTime(new Date()); + commitRepository.save(commit); + } + +} diff --git a/apollo-biz/src/main/java/com/ctrip/apollo/biz/service/ItemSetService.java b/apollo-biz/src/main/java/com/ctrip/apollo/biz/service/ItemSetService.java index ab287be2c1221edd205147c86e155f38383179cf..f6013123fc12d09549e188b229927e913fcbe26e 100644 --- a/apollo-biz/src/main/java/com/ctrip/apollo/biz/service/ItemSetService.java +++ b/apollo-biz/src/main/java/com/ctrip/apollo/biz/service/ItemSetService.java @@ -11,6 +11,8 @@ import com.ctrip.apollo.common.utils.BeanUtils; import com.ctrip.apollo.core.dto.ItemChangeSets; import com.ctrip.apollo.core.dto.ItemDTO; +import java.util.Date; + @Service public class ItemSetService { @@ -25,6 +27,7 @@ public class ItemSetService { if (changeSet.getCreateItems() != null) { for (ItemDTO item : changeSet.getCreateItems()) { Item entity = BeanUtils.transfrom(Item.class, item); + entity.setDataChangeCreatedTime(new Date()); entity.setDataChangeCreatedBy(owner); entity.setDataChangeLastModifiedBy(owner); itemRepository.save(entity); diff --git a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/AppConfigVO.java b/apollo-core/src/main/java/com/ctrip/apollo/core/dto/AppConfigVO.java deleted file mode 100644 index 2c1745faff6257c3c940f5195074455aadc54c1d..0000000000000000000000000000000000000000 --- a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/AppConfigVO.java +++ /dev/null @@ -1,181 +0,0 @@ -package com.ctrip.apollo.core.dto; - - -import com.ctrip.apollo.core.enums.Env; - -import java.util.LinkedList; -import java.util.List; - -public class AppConfigVO { - - private String appId; - - private Env env; - - /** - * latest version if version is zero, or is release version - */ - private long versionId; - - /** - * default cluster and app self’s configs - */ - private List defaultClusterConfigs; - - /** - * default cluster and override other app configs - */ - private List overrideAppConfigs; - - /** - * configs in different cluster maybe different. - * overrideClusterConfigs only save diff configs from default cluster. - * For example: - * default cluster has 3 configs: - * {a -> A, b -> B, c -> C} - * - * cluster1 has 1 config - * {b -> D} - * - * if client read cluster1 configs will return {a -> A, b -> D, c -> C} - */ - private List overrideClusterConfigs; - - public AppConfigVO() { - - } - - public static AppConfigVO newInstance(String appId, long versionId) { - AppConfigVO instance = new AppConfigVO(); - instance.setAppId(appId); - instance.setVersionId(versionId); - instance.setDefaultClusterConfigs(new LinkedList<>()); - instance.setOverrideAppConfigs(new LinkedList<>()); - instance.setOverrideClusterConfigs(new LinkedList<>()); - return instance; - } - - public boolean isLatestVersion() { - return versionId == 0; - } - - public static class OverrideAppConfig { - - private String appId; - private List configs; - - public OverrideAppConfig() { - - } - - public String getAppId() { - return appId; - } - - public void setAppId(String appId) { - this.appId = appId; - } - - public List getConfigs() { - return configs; - } - - public void setConfigs(List configs) { - this.configs = configs; - } - - public void addConfig(ItemDTO config) { - if (configs == null) { - configs = new LinkedList<>(); - } - configs.add(config); - } - } - - - public static class OverrideClusterConfig { - - private String clusterName; - private List configs; - - public OverrideClusterConfig() { - } - - public String getClusterName() { - return clusterName; - } - - public void setClusterName(String clusterName) { - this.clusterName = clusterName; - } - - public List getConfigs() { - return configs; - } - - public void setConfigs(List configs) { - this.configs = configs; - } - } - - - public String getAppId() { - return appId; - } - - public void setAppId(String appId) { - this.appId = appId; - } - - public Env getEnv() { - return env; - } - - public void setEnv(Env env) { - this.env = env; - } - - public long getVersionId() { - return versionId; - } - - public void setVersionId(long versionId) { - this.versionId = versionId; - } - - public List getDefaultClusterConfigs() { - return defaultClusterConfigs; - } - - public void setDefaultClusterConfigs(List defaultClusterConfigs) { - this.defaultClusterConfigs = defaultClusterConfigs; - } - - public List getOverrideAppConfigs() { - return overrideAppConfigs; - } - - public void setOverrideAppConfigs(List overrideAppConfigs) { - this.overrideAppConfigs = overrideAppConfigs; - } - - public List getOverrideClusterConfigs() { - return overrideClusterConfigs; - } - - public void setOverrideClusterConfigs(List overrideClusterConfigs) { - this.overrideClusterConfigs = overrideClusterConfigs; - } - - @Override - public String toString() { - return "Config4PortalDTO{" + - "appId=" + appId + - ", env=" + env + - ", versionId=" + versionId + - ", defaultClusterConfigs=" + defaultClusterConfigs + - ", overrideAppConfigs=" + overrideAppConfigs + - ", overrideClusterConfigs=" + overrideClusterConfigs + - '}'; - } -} diff --git a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/AppDTO.java b/apollo-core/src/main/java/com/ctrip/apollo/core/dto/AppDTO.java index ad9d0acfe1215490e078e80d46e2f8c82185442b..1ade1df6f595a1ae328979fb9d3f219ad1584e64 100644 --- a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/AppDTO.java +++ b/apollo-core/src/main/java/com/ctrip/apollo/core/dto/AppDTO.java @@ -1,11 +1,9 @@ package com.ctrip.apollo.core.dto; -import java.util.Date; - public class AppDTO { private long id; - + private String name; private String appId; @@ -14,20 +12,18 @@ public class AppDTO { private String ownerEmail; - private String dataChangeCreatedBy; - - private Date dataChangeCreatedTime; + public long getId() { + return id; + } - private String dataChangeLastModifiedBy; + public void setId(long id) { + this.id = id; + } public String getAppId() { return appId; } - public long getId() { - return id; - } - public String getName() { return name; } @@ -44,10 +40,6 @@ public class AppDTO { this.appId = appId; } - public void setId(long id) { - this.id = id; - } - public void setName(String name) { this.name = name; } @@ -60,27 +52,4 @@ public class AppDTO { this.ownerName = ownerName; } - public String getDataChangeCreatedBy() { - return dataChangeCreatedBy; - } - - public void setDataChangeCreatedBy(String dataChangeCreatedBy) { - this.dataChangeCreatedBy = dataChangeCreatedBy; - } - - public Date getDataChangeCreatedTime() { - return dataChangeCreatedTime; - } - - public void setDataChangeCreatedTime(Date dataChangeCreatedTime) { - this.dataChangeCreatedTime = dataChangeCreatedTime; - } - - public String getDataChangeLastModifiedBy() { - return dataChangeLastModifiedBy; - } - - public void setDataChangeLastModifiedBy(String dataChangeLastModifiedBy) { - this.dataChangeLastModifiedBy = dataChangeLastModifiedBy; - } } diff --git a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ItemChangeSets.java b/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ItemChangeSets.java index 5935eeab1764d8d80392c2467644aa954a567e1d..05c8f506351a100a707956c086b32485ea56c17c 100644 --- a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ItemChangeSets.java +++ b/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ItemChangeSets.java @@ -24,6 +24,10 @@ public class ItemChangeSets { deleteItems.add(item); } + public boolean isEmpty(){ + return createItems.isEmpty() && updateItems.isEmpty() && deleteItems.isEmpty(); + } + public List getCreateItems() { return createItems; } diff --git a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ItemDTO.java b/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ItemDTO.java index 84b52f6c7de59f36a4f87bfb599295863e949bd8..66aafa58422879b4c34842c2589734516321fff8 100644 --- a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ItemDTO.java +++ b/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ItemDTO.java @@ -1,8 +1,6 @@ package com.ctrip.apollo.core.dto; -import java.util.Date; - -public class ItemDTO{ +public class ItemDTO { private long id; @@ -16,14 +14,6 @@ public class ItemDTO{ private int lineNum; - private String dataChangeCreatedBy; - - private Date dataChangeCreatedTime; - - private String dataChangeLastModifiedBy; - - private Date dataChangeLastModifiedTime; - public ItemDTO() { } @@ -35,14 +25,18 @@ public class ItemDTO{ this.lineNum = lineNum; } - public String getComment() { - return comment; - } - public long getId() { return id; } + public void setId(long id) { + this.id = id; + } + + public String getComment() { + return comment; + } + public String getKey() { return key; } @@ -59,10 +53,6 @@ public class ItemDTO{ this.comment = comment; } - public void setId(long id) { - this.id = id; - } - public void setKey(String key) { this.key = key; } @@ -83,37 +73,6 @@ public class ItemDTO{ this.lineNum = lineNum; } - public String getDataChangeLastModifiedBy() { - return dataChangeLastModifiedBy; - } - - public void setDataChangeLastModifiedBy(String dataChangeLastModifiedBy) { - this.dataChangeLastModifiedBy = dataChangeLastModifiedBy; - } - - public Date getDataChangeLastModifiedTime() { - return dataChangeLastModifiedTime; - } - - public void setDataChangeLastModifiedTime(Date dataChangeLastModifiedTime) { - this.dataChangeLastModifiedTime = dataChangeLastModifiedTime; - } - - public String getDataChangeCreatedBy() { - return dataChangeCreatedBy; - } - - public void setDataChangeCreatedBy(String dataChangeCreatedBy) { - this.dataChangeCreatedBy = dataChangeCreatedBy; - } - - public Date getDataChangeCreatedTime() { - return dataChangeCreatedTime; - } - - public void setDataChangeCreatedTime(Date dataChangeCreatedTime) { - this.dataChangeCreatedTime = dataChangeCreatedTime; - } @Override public String toString() { @@ -124,10 +83,6 @@ public class ItemDTO{ ", value='" + value + '\'' + ", comment='" + comment + '\'' + ", lineNum=" + lineNum + - ", dataChangeCreatedBy='" + dataChangeCreatedBy + '\'' + - ", dataChangeCreatedTime=" + dataChangeCreatedTime + - ", dataChangeLastModifiedBy='" + dataChangeLastModifiedBy + '\'' + - ", dataChangeLastModifiedTime=" + dataChangeLastModifiedTime + '}'; } } diff --git a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/NamespaceDTO.java b/apollo-core/src/main/java/com/ctrip/apollo/core/dto/NamespaceDTO.java index f160f6ae4e8826d5268af9c77c139ff02b8bd622..b7f17f9c083782c0ce317dc552b25bfe7f8e23d1 100644 --- a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/NamespaceDTO.java +++ b/apollo-core/src/main/java/com/ctrip/apollo/core/dto/NamespaceDTO.java @@ -1,15 +1,22 @@ package com.ctrip.apollo.core.dto; -public class NamespaceDTO { - +public class NamespaceDTO{ private long id; - + private String appId; private String clusterName; private String namespaceName; + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + public String getAppId() { return appId; } @@ -18,10 +25,6 @@ public class NamespaceDTO { return clusterName; } - public long getId() { - return id; - } - public String getNamespaceName() { return namespaceName; } @@ -34,10 +37,6 @@ public class NamespaceDTO { this.clusterName = clusterName; } - public void setId(long id) { - this.id = id; - } - public void setNamespaceName(String namespaceName) { this.namespaceName = namespaceName; } diff --git a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ReleaseDTO.java b/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ReleaseDTO.java index 49685c9a326014e3b0c33f1214124aad1b1d105a..48c3ed03b46139c9e619351c95bd0493f070a9cd 100644 --- a/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ReleaseDTO.java +++ b/apollo-core/src/main/java/com/ctrip/apollo/core/dto/ReleaseDTO.java @@ -1,7 +1,6 @@ package com.ctrip.apollo.core.dto; -public class ReleaseDTO { - +public class ReleaseDTO{ private long id; private String name; @@ -16,6 +15,14 @@ public class ReleaseDTO { private String comment; + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + public String getAppId() { return appId; } @@ -32,10 +39,6 @@ public class ReleaseDTO { return configurations; } - public long getId() { - return id; - } - public String getName() { return name; } @@ -60,10 +63,6 @@ public class ReleaseDTO { this.configurations = configurations; } - public void setId(long id) { - this.id = id; - } - public void setName(String name) { this.name = name; } diff --git a/apollo-portal/src/main/java/com/ctrip/apollo/portal/api/AdminServiceAPI.java b/apollo-portal/src/main/java/com/ctrip/apollo/portal/api/AdminServiceAPI.java index 1a09278dc7367dd815ff29fdeefdf46944af7811..4c9f4903794da5411ac77b6f9ca15e5ad25606f3 100644 --- a/apollo-portal/src/main/java/com/ctrip/apollo/portal/api/AdminServiceAPI.java +++ b/apollo-portal/src/main/java/com/ctrip/apollo/portal/api/AdminServiceAPI.java @@ -157,15 +157,15 @@ public class AdminServiceAPI { HttpEntity> entity = new HttpEntity>(parameters, null); ResponseEntity response = restTemplate.postForEntity(getAdminServiceHost(env) + String. - format("apps/%s/clusters/%s/namespaces/%s/releases", appId, clusterName, namespace), - entity, ReleaseDTO.class); + format("apps/%s/clusters/%s/namespaces/%s/releases", appId, clusterName, namespace), + entity, ReleaseDTO.class); if (response != null && response.getStatusCode() == HttpStatus.OK){ return response.getBody(); }else { logger.error("createRelease fail.id:{}, env:{}, clusterName:{}, namespace:{},releaseBy{}", appId, env, clusterName, namespace, releaseBy); - throw new ServiceException("call create createRelease api error."); + throw new ServiceException(" call create createRelease api error."); } } } diff --git a/apollo-portal/src/main/java/com/ctrip/apollo/portal/entity/form/NamespaceTextModel.java b/apollo-portal/src/main/java/com/ctrip/apollo/portal/entity/form/NamespaceTextModel.java index 32b2a2adf3c5342f751a24f5711858e655215b94..c191ecf393f989af603dcb17851a83f85cbc591f 100644 --- a/apollo-portal/src/main/java/com/ctrip/apollo/portal/entity/form/NamespaceTextModel.java +++ b/apollo-portal/src/main/java/com/ctrip/apollo/portal/entity/form/NamespaceTextModel.java @@ -13,6 +13,7 @@ public class NamespaceTextModel implements FormModel{ private int namespaceId; private String configText; private String modifyBy; + private String comment; @Override public boolean isInvalid(){ @@ -73,4 +74,12 @@ public class NamespaceTextModel implements FormModel{ public void setModifyBy(String modifyBy) { this.modifyBy = modifyBy; } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } } diff --git a/apollo-portal/src/main/java/com/ctrip/apollo/portal/service/ConfigService.java b/apollo-portal/src/main/java/com/ctrip/apollo/portal/service/ConfigService.java index 35b8af35de4ec58bfc93223f1d8e68f507581bec..41d1a0e7f8534de22ceba09136a684137547529e 100644 --- a/apollo-portal/src/main/java/com/ctrip/apollo/portal/service/ConfigService.java +++ b/apollo-portal/src/main/java/com/ctrip/apollo/portal/service/ConfigService.java @@ -146,22 +146,19 @@ public class ConfigService { ItemChangeSets changeSets = resolver.resolve(namespaceId, configText, itemAPI.findItems(appId, env, clusterName, namespaceName)); + if (changeSets.isEmpty()){ + return; + } try { - enrichChangeSetBaseInfo(changeSets); itemAPI.updateItems(appId, env, clusterName, namespaceName, changeSets); } catch (Exception e) { logger.error("itemAPI.updateItems error. appId{},env:{},clusterName:{},namespaceName:{}", appId, env, clusterName, namespaceName); - throw new ServiceException("oops! call admin service config error. "); + throw new ServiceException(e.getMessage()); } } - private void enrichChangeSetBaseInfo(ItemChangeSets changeSets) { - for (ItemDTO item : changeSets.getCreateItems()) { - item.setDataChangeCreatedTime(new Date()); - } - } /** * createRelease config items diff --git a/apollo-portal/src/main/resources/static/scripts/controller/CreateAppController.js b/apollo-portal/src/main/resources/static/scripts/controller/CreateAppController.js index 774c4f32d34fc874b8eb56ebe1401b9a66b4b826..ae699a77b9164724525664a575129ce62606703c 100644 --- a/apollo-portal/src/main/resources/static/scripts/controller/CreateAppController.js +++ b/apollo-portal/src/main/resources/static/scripts/controller/CreateAppController.js @@ -8,11 +8,7 @@ create_app_module.controller('CreateAppController', ['$scope', '$window', 'toast $window.location.href = '/views/app.html?#appid=' + result.appId; }, 1000); }, function (result) { - if (result.status == 400){ - toastr.error('params error','添加失败!'); - }else { - toastr.error('server error','添加失败!'); - } + toastr.error(result.status + result.data.message, '添加失败!'); }); }; diff --git a/apollo-portal/src/main/resources/static/scripts/controller/app/AppConfigController.js b/apollo-portal/src/main/resources/static/scripts/controller/app/AppConfigController.js index a0481c35c96198555b85101cad66677b1d12d59a..c39a353a94f98be5ec089293045e3e37ce443fde 100644 --- a/apollo-portal/src/main/resources/static/scripts/controller/app/AppConfigController.js +++ b/apollo-portal/src/main/resources/static/scripts/controller/app/AppConfigController.js @@ -3,7 +3,7 @@ application_module.controller("AppConfigController", function ($scope, $location, toastr, AppService, ConfigService) { var appId = $location.$$url.split("=")[1]; - var currentUser = 'lepdou'; + var currentUser = 'test_user'; var pageContext = { appId: appId, env: 'LOCAL', @@ -49,7 +49,7 @@ application_module.controller("AppConfigController", } }); }, function (result) { - toastr.error("加载导航出错:" + result); + toastr.error(result.status + result.data.message, "加载导航出错"); }); /////////// namespace //////////// @@ -84,7 +84,7 @@ application_module.controller("AppConfigController", } }, function (result) { - toastr.error("加载配置信息出错"); + toastr.error(result.status + result.data.message, "加载配置信息出错"); }); } @@ -127,11 +127,12 @@ application_module.controller("AppConfigController", $scope.draft = namespace; }; + $scope.commitComment = ''; //更新配置 $scope.commitChange = function () { ConfigService.modify_items($scope.pageContext.appId, $scope.pageContext.env, $scope.pageContext.clusterName, $scope.draft.namespace.namespaceName, $scope.draft.text, - $scope.draft.namespace.id, 'lepdou').then( + $scope.draft.namespace.id, $scope.commitComment, currentUser).then( function (result) { toastr.success("更新成功"); //refresh all namespace items @@ -141,7 +142,7 @@ application_module.controller("AppConfigController", $scope.toggleTextEditStatus($scope.draft); }, function (result) { - toastr.error(result.data.message, "更新失败"); + toastr.error(result.status + result.data.message, "更新失败"); } ); @@ -189,7 +190,7 @@ application_module.controller("AppConfigController", refreshNamespaces(); }, function (result) { - toastr.error(result.data.message, "发布失败"); + toastr.error(result.status + result.data.message, "发布失败"); } ); diff --git a/apollo-portal/src/main/resources/static/scripts/services/ConfigService.js b/apollo-portal/src/main/resources/static/scripts/services/ConfigService.js index 5ff916adb9ece6af02ece8764a5edc3bec220b08..711c3eb8bc624d67986a7448f9b0005de2de07c7 100644 --- a/apollo-portal/src/main/resources/static/scripts/services/ConfigService.js +++ b/apollo-portal/src/main/resources/static/scripts/services/ConfigService.js @@ -30,7 +30,7 @@ appService.service("ConfigService", ['$resource', '$q', function ($resource, $q) return d.promise; }, - modify_items: function (appId, env, clusterName, namespaceName, configText, namespaceId, modifyBy) { + modify_items: function (appId, env, clusterName, namespaceName, configText, namespaceId, comment, modifyBy) { var d = $q.defer(); config_source.modify_items({ appId: appId, @@ -41,6 +41,7 @@ appService.service("ConfigService", ['$resource', '$q', function ($resource, $q) { configText: configText, namespaceId: namespaceId, + comment:comment, modifyBy: modifyBy }, function (result) { d.resolve(result); diff --git a/apollo-portal/src/main/resources/static/views/app.html b/apollo-portal/src/main/resources/static/views/app.html index 784331e6e3af0ac629ac1e897b5d1a373f332560..19add7be36ed6756f3b1c8cc699c19191d6887b2 100644 --- a/apollo-portal/src/main/resources/static/views/app.html +++ b/apollo-portal/src/main/resources/static/views/app.html @@ -241,7 +241,7 @@ -
- +
- +
- +
- +
diff --git a/apollo-portal/src/test/java/com/ctrip/apollo/portal/ConfigServiceTest.java b/apollo-portal/src/test/java/com/ctrip/apollo/portal/ConfigServiceTest.java index 535931603b9786b4181d22830c19036cf787132e..c4d0b2545643de0b88892412395212be306b1e7f 100644 --- a/apollo-portal/src/test/java/com/ctrip/apollo/portal/ConfigServiceTest.java +++ b/apollo-portal/src/test/java/com/ctrip/apollo/portal/ConfigServiceTest.java @@ -5,7 +5,6 @@ import com.ctrip.apollo.core.dto.ItemDTO; import com.ctrip.apollo.core.dto.NamespaceDTO; import com.ctrip.apollo.core.dto.ReleaseDTO; import com.ctrip.apollo.core.enums.Env; -import com.ctrip.apollo.core.exception.ServiceException; import com.ctrip.apollo.portal.api.AdminServiceAPI; import com.ctrip.apollo.portal.entity.NamespaceVO; import com.ctrip.apollo.portal.entity.form.NamespaceTextModel; @@ -101,22 +100,18 @@ public class ConfigServiceTest extends AbstractPortalTest{ model.setNamespaceName(namespaceName); model.setClusterName(clusterName); model.setAppId(appId); - model.setConfigText("a=b\nb=c\nc=d"); - + model.setConfigText("a=b\nb=c\nc=d\nd=e"); List itemDTOs = mockBaseItemHas3Key(); ItemChangeSets changeSets = new ItemChangeSets(); changeSets.addCreateItem(new ItemDTO("d", "c", "", 4)); when(itemAPI.findItems(appId, Env.DEV, clusterName, namespaceName)).thenReturn(itemDTOs); - + when(resolver.resolve(0, model.getConfigText(), itemDTOs)).thenReturn(changeSets); try { - // 调用itemAPI.updateConfig 会抛出ServiceException. - // itemAPI.updateConfig ut 放在admin service. - // 所以只要在调用itemAPI.updateConfig前全部通过,此ut应该通过. configService.updateConfigItemByText(model); }catch (Exception e){ - Assert.assertTrue(e instanceof ServiceException); + Assert.fail(); } }