Commit ea20fad0 authored by lepdou's avatar lepdou

用户信息通过dto传递

parent be118512
...@@ -4,7 +4,6 @@ import java.util.List; ...@@ -4,7 +4,6 @@ import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -15,7 +14,6 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -15,7 +14,6 @@ import org.springframework.web.bind.annotation.RestController;
import com.ctrip.framework.apollo.biz.entity.App; import com.ctrip.framework.apollo.biz.entity.App;
import com.ctrip.framework.apollo.biz.service.AdminService; import com.ctrip.framework.apollo.biz.service.AdminService;
import com.ctrip.framework.apollo.biz.service.AppService; import com.ctrip.framework.apollo.biz.service.AppService;
import com.ctrip.framework.apollo.common.auth.ActiveUser;
import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.common.utils.BeanUtils;
import com.ctrip.framework.apollo.core.dto.AppDTO; import com.ctrip.framework.apollo.core.dto.AppDTO;
import com.ctrip.framework.apollo.core.exception.NotFoundException; import com.ctrip.framework.apollo.core.exception.NotFoundException;
...@@ -31,16 +29,14 @@ public class AppController { ...@@ -31,16 +29,14 @@ public class AppController {
private AdminService adminService; private AdminService adminService;
@RequestMapping(path = "/apps", method = RequestMethod.POST) @RequestMapping(path = "/apps", method = RequestMethod.POST)
public AppDTO createOrUpdate(@RequestBody AppDTO dto, @ActiveUser UserDetails user) { public AppDTO createOrUpdate(@RequestBody AppDTO dto) {
App entity = BeanUtils.transfrom(App.class, dto); App entity = BeanUtils.transfrom(App.class, dto);
App managedEntity = appService.findOne(entity.getAppId()); App managedEntity = appService.findOne(entity.getAppId());
if (managedEntity != null) { if (managedEntity != null) {
managedEntity.setDataChangeLastModifiedBy(user.getUsername()); managedEntity.setDataChangeLastModifiedBy(entity.getDataChangeLastModifiedBy());
BeanUtils.copyEntityProperties(entity, managedEntity); BeanUtils.copyEntityProperties(entity, managedEntity);
entity = appService.update(managedEntity); entity = appService.update(managedEntity);
} else { } else {
entity.setDataChangeCreatedBy(user.getUsername());
entity.setDataChangeLastModifiedBy(user.getUsername());
entity = adminService.createNewApp(entity); entity = adminService.createNewApp(entity);
} }
...@@ -49,10 +45,10 @@ public class AppController { ...@@ -49,10 +45,10 @@ public class AppController {
} }
@RequestMapping(path = "/apps/{appId}", method = RequestMethod.DELETE) @RequestMapping(path = "/apps/{appId}", method = RequestMethod.DELETE)
public void delete(@PathVariable("appId") String appId, @ActiveUser UserDetails user) { public void delete(@PathVariable("appId") String appId, @RequestParam String operator) {
App entity = appService.findOne(appId); App entity = appService.findOne(appId);
if (entity == null) throw new NotFoundException("app not found for appId " + appId); if (entity == null) throw new NotFoundException("app not found for appId " + appId);
appService.delete(entity.getId(), user.getUsername()); appService.delete(entity.getId(), operator);
} }
@RequestMapping("/apps") @RequestMapping("/apps")
......
package com.ctrip.framework.apollo.adminservice.controller; package com.ctrip.framework.apollo.adminservice.controller;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -10,7 +9,6 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -10,7 +9,6 @@ import org.springframework.web.bind.annotation.RestController;
import com.ctrip.framework.apollo.biz.entity.AppNamespace; import com.ctrip.framework.apollo.biz.entity.AppNamespace;
import com.ctrip.framework.apollo.biz.service.AppNamespaceService; import com.ctrip.framework.apollo.biz.service.AppNamespaceService;
import com.ctrip.framework.apollo.common.auth.ActiveUser;
import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.common.utils.BeanUtils;
import com.ctrip.framework.apollo.core.dto.AppNamespaceDTO; import com.ctrip.framework.apollo.core.dto.AppNamespaceDTO;
...@@ -35,20 +33,17 @@ public class AppNamespaceController { ...@@ -35,20 +33,17 @@ public class AppNamespaceController {
} }
@RequestMapping(value = "/apps/{appId}/appnamespaces", method = RequestMethod.POST) @RequestMapping(value = "/apps/{appId}/appnamespaces", method = RequestMethod.POST)
public AppNamespaceDTO createOrUpdate( @RequestBody AppNamespaceDTO appNamespace, @ActiveUser UserDetails user){ public AppNamespaceDTO createOrUpdate( @RequestBody AppNamespaceDTO appNamespace){
AppNamespace entity = BeanUtils.transfrom(AppNamespace.class, appNamespace); AppNamespace entity = BeanUtils.transfrom(AppNamespace.class, appNamespace);
AppNamespace managedEntity = appNamespaceService.findOne(entity.getAppId(), entity.getName()); AppNamespace managedEntity = appNamespaceService.findOne(entity.getAppId(), entity.getName());
String userName = user.getUsername();
if (managedEntity != null){ if (managedEntity != null){
managedEntity.setDataChangeLastModifiedBy(userName); managedEntity.setDataChangeLastModifiedBy(entity.getDataChangeLastModifiedBy());
BeanUtils.copyEntityProperties(entity, managedEntity); BeanUtils.copyEntityProperties(entity, managedEntity);
entity = appNamespaceService.update(managedEntity); entity = appNamespaceService.update(managedEntity);
}else { }else {
entity.setDataChangeLastModifiedBy(userName); entity = appNamespaceService.createAppNamespace(entity, entity.getDataChangeCreatedBy());
entity.setDataChangeCreatedBy(userName);
entity = appNamespaceService.createAppNamespace(entity, userName);
} }
return BeanUtils.transfrom(AppNamespaceDTO.class, entity); return BeanUtils.transfrom(AppNamespaceDTO.class, entity);
......
...@@ -3,16 +3,15 @@ package com.ctrip.framework.apollo.adminservice.controller; ...@@ -3,16 +3,15 @@ package com.ctrip.framework.apollo.adminservice.controller;
import java.util.List; import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.ctrip.framework.apollo.biz.entity.Cluster; import com.ctrip.framework.apollo.biz.entity.Cluster;
import com.ctrip.framework.apollo.biz.service.ClusterService; import com.ctrip.framework.apollo.biz.service.ClusterService;
import com.ctrip.framework.apollo.common.auth.ActiveUser;
import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.common.utils.BeanUtils;
import com.ctrip.framework.apollo.core.dto.ClusterDTO; import com.ctrip.framework.apollo.core.dto.ClusterDTO;
import com.ctrip.framework.apollo.core.exception.NotFoundException; import com.ctrip.framework.apollo.core.exception.NotFoundException;
...@@ -24,16 +23,13 @@ public class ClusterController { ...@@ -24,16 +23,13 @@ public class ClusterController {
private ClusterService clusterService; private ClusterService clusterService;
@RequestMapping(path = "/apps/{appId}/clusters", method = RequestMethod.POST) @RequestMapping(path = "/apps/{appId}/clusters", method = RequestMethod.POST)
public ClusterDTO createOrUpdate(@PathVariable("appId") String appId, @RequestBody ClusterDTO dto, public ClusterDTO createOrUpdate(@PathVariable("appId") String appId, @RequestBody ClusterDTO dto) {
@ActiveUser UserDetails user) {
Cluster entity = BeanUtils.transfrom(Cluster.class, dto); Cluster entity = BeanUtils.transfrom(Cluster.class, dto);
Cluster managedEntity = clusterService.findOne(appId, entity.getName()); Cluster managedEntity = clusterService.findOne(appId, entity.getName());
if (managedEntity != null) { if (managedEntity != null) {
managedEntity.setDataChangeLastModifiedBy(user.getUsername());
BeanUtils.copyEntityProperties(entity, managedEntity); BeanUtils.copyEntityProperties(entity, managedEntity);
entity = clusterService.update(managedEntity); entity = clusterService.update(managedEntity);
} else { } else {
entity.setDataChangeCreatedBy(user.getUsername());
entity = clusterService.save(entity); entity = clusterService.save(entity);
} }
...@@ -41,13 +37,13 @@ public class ClusterController { ...@@ -41,13 +37,13 @@ public class ClusterController {
return dto; return dto;
} }
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}", method = RequestMethod.DELETE) @RequestMapping(path = "/apps/{appId}/clusters/{clusterName:.+}", method = RequestMethod.DELETE)
public void delete(@PathVariable("appId") String appId, public void delete(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName, @ActiveUser UserDetails user) { @PathVariable("clusterName") String clusterName, @RequestParam String operator) {
Cluster entity = clusterService.findOne(appId, clusterName); Cluster entity = clusterService.findOne(appId, clusterName);
if (entity == null) if (entity == null)
throw new NotFoundException("cluster not found for clusterName " + clusterName); throw new NotFoundException("cluster not found for clusterName " + clusterName);
clusterService.delete(entity.getId(), user.getUsername()); clusterService.delete(entity.getId(), operator);
} }
@RequestMapping("/apps/{appId}/clusters") @RequestMapping("/apps/{appId}/clusters")
...@@ -56,7 +52,7 @@ public class ClusterController { ...@@ -56,7 +52,7 @@ public class ClusterController {
return BeanUtils.batchTransform(ClusterDTO.class, clusters); return BeanUtils.batchTransform(ClusterDTO.class, clusters);
} }
@RequestMapping("/apps/{appId}/clusters/{clusterName}") @RequestMapping("/apps/{appId}/clusters/{clusterName:.+}")
public ClusterDTO get(@PathVariable("appId") String appId, public ClusterDTO get(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName) { @PathVariable("clusterName") String clusterName) {
Cluster cluster = clusterService.findOne(appId, clusterName); Cluster cluster = clusterService.findOne(appId, clusterName);
......
...@@ -4,16 +4,15 @@ import java.util.LinkedList; ...@@ -4,16 +4,15 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.ctrip.framework.apollo.biz.entity.Item; import com.ctrip.framework.apollo.biz.entity.Item;
import com.ctrip.framework.apollo.biz.service.ItemService; import com.ctrip.framework.apollo.biz.service.ItemService;
import com.ctrip.framework.apollo.common.auth.ActiveUser;
import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.common.utils.BeanUtils;
import com.ctrip.framework.apollo.core.dto.ItemDTO; import com.ctrip.framework.apollo.core.dto.ItemDTO;
import com.ctrip.framework.apollo.core.exception.NotFoundException; import com.ctrip.framework.apollo.core.exception.NotFoundException;
...@@ -27,23 +26,20 @@ public class ItemController { ...@@ -27,23 +26,20 @@ public class ItemController {
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items", method = RequestMethod.POST) @RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items", method = RequestMethod.POST)
public ItemDTO createOrUpdate(@PathVariable("appId") String appId, public ItemDTO createOrUpdate(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName, @PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName, @RequestBody ItemDTO dto, @PathVariable("namespaceName") String namespaceName, @RequestBody ItemDTO dto) {
@ActiveUser UserDetails user) {
Item entity = BeanUtils.transfrom(Item.class, dto); Item entity = BeanUtils.transfrom(Item.class, dto);
Item managedEntity = itemService.findOne(appId, clusterName, namespaceName, entity.getKey()); Item managedEntity = itemService.findOne(appId, clusterName, namespaceName, entity.getKey());
if (managedEntity != null) { if (managedEntity != null) {
managedEntity.setDataChangeLastModifiedBy(user.getUsername());
BeanUtils.copyEntityProperties(entity, managedEntity); BeanUtils.copyEntityProperties(entity, managedEntity);
entity = itemService.update(managedEntity); entity = itemService.update(managedEntity);
} else { } else {
Item lastItem = itemService.findLastOne(appId, clusterName, namespaceName); Item lastItem = itemService.findLastOne(appId, clusterName, namespaceName);
int lineNum = 1; int lineNum = 1;
if (lastItem != null){ if (lastItem != null) {
lineNum = lastItem.getLineNum() + 1; Integer lastItemNum = lastItem.getLineNum();
lineNum = lastItemNum == null ? 1 : lastItemNum + 1;
} }
entity.setLineNum(lineNum); entity.setLineNum(lineNum);
entity.setDataChangeCreatedBy(user.getUsername());
entity.setDataChangeLastModifiedBy(user.getUsername());
entity = itemService.save(entity); entity = itemService.save(entity);
} }
...@@ -52,10 +48,12 @@ public class ItemController { ...@@ -52,10 +48,12 @@ public class ItemController {
} }
@RequestMapping(path = "/items/{itemId}", method = RequestMethod.DELETE) @RequestMapping(path = "/items/{itemId}", method = RequestMethod.DELETE)
public void delete(@PathVariable("itemId") long itemId, @ActiveUser UserDetails user) { public void delete(@PathVariable("itemId") long itemId, @RequestParam String operator) {
Item entity = itemService.findOne(itemId); Item entity = itemService.findOne(itemId);
if (entity == null) throw new NotFoundException("item not found for itemId " + itemId); if (entity == null) {
itemService.delete(entity.getId(), user.getUsername()); throw new NotFoundException("item not found for itemId " + itemId);
}
itemService.delete(entity.getId(), operator);
} }
@RequestMapping("/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items") @RequestMapping("/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items")
...@@ -65,7 +63,7 @@ public class ItemController { ...@@ -65,7 +63,7 @@ public class ItemController {
List<Item> items = itemService.findItems(appId, clusterName, namespaceName); List<Item> items = itemService.findItems(appId, clusterName, namespaceName);
List<ItemDTO> itemDTOs = new LinkedList<>(); List<ItemDTO> itemDTOs = new LinkedList<>();
for (Item item: items){ for (Item item : items) {
ItemDTO itemDTO = BeanUtils.transfrom(ItemDTO.class, item); ItemDTO itemDTO = BeanUtils.transfrom(ItemDTO.class, item);
itemDTO.setLastModifiedBy(item.getDataChangeLastModifiedBy()); itemDTO.setLastModifiedBy(item.getDataChangeLastModifiedBy());
itemDTO.setLastModifiedTime(item.getDataChangeLastModifiedTime()); itemDTO.setLastModifiedTime(item.getDataChangeLastModifiedTime());
...@@ -77,17 +75,21 @@ public class ItemController { ...@@ -77,17 +75,21 @@ public class ItemController {
@RequestMapping("/items/{itemId}") @RequestMapping("/items/{itemId}")
public ItemDTO get(@PathVariable("itemId") long itemId) { public ItemDTO get(@PathVariable("itemId") long itemId) {
Item item = itemService.findOne(itemId); Item item = itemService.findOne(itemId);
if (item == null) throw new NotFoundException("item not found for itemId " + itemId); if (item == null) {
throw new NotFoundException("item not found for itemId " + itemId);
}
return BeanUtils.transfrom(ItemDTO.class, item); return BeanUtils.transfrom(ItemDTO.class, item);
} }
@RequestMapping("/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key}") @RequestMapping("/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items/{key:.+}")
public ItemDTO get(@PathVariable("appId") String appId, public ItemDTO get(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName, @PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName, @PathVariable("key") String key) { @PathVariable("namespaceName") String namespaceName, @PathVariable("key") String key) {
Item item = itemService.findOne(appId, clusterName, namespaceName, key); Item item = itemService.findOne(appId, clusterName, namespaceName, key);
if (item == null) throw new NotFoundException( if (item == null) {
throw new NotFoundException(
String.format("item not found for %s %s %s %s", appId, clusterName, namespaceName, key)); String.format("item not found for %s %s %s %s", appId, clusterName, namespaceName, key));
}
return BeanUtils.transfrom(ItemDTO.class, item); return BeanUtils.transfrom(ItemDTO.class, item);
} }
} }
...@@ -3,14 +3,12 @@ package com.ctrip.framework.apollo.adminservice.controller; ...@@ -3,14 +3,12 @@ package com.ctrip.framework.apollo.adminservice.controller;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.ctrip.framework.apollo.biz.service.ItemSetService; import com.ctrip.framework.apollo.biz.service.ItemSetService;
import com.ctrip.framework.apollo.common.auth.ActiveUser;
import com.ctrip.framework.apollo.core.dto.ItemChangeSets; import com.ctrip.framework.apollo.core.dto.ItemChangeSets;
@RestController @RestController
...@@ -20,8 +18,8 @@ public class ItemSetController { ...@@ -20,8 +18,8 @@ public class ItemSetController {
private ItemSetService itemSetService; private ItemSetService itemSetService;
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/itemset", method = RequestMethod.POST) @RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/itemset", method = RequestMethod.POST)
public ResponseEntity<Void> create(@RequestBody ItemChangeSets changeSet, @ActiveUser UserDetails user) { public ResponseEntity<Void> create(@RequestBody ItemChangeSets changeSet) {
itemSetService.updateSet(changeSet, user.getUsername()); itemSetService.updateSet(changeSet);
return ResponseEntity.status(HttpStatus.OK).build(); return ResponseEntity.status(HttpStatus.OK).build();
} }
} }
...@@ -3,16 +3,15 @@ package com.ctrip.framework.apollo.adminservice.controller; ...@@ -3,16 +3,15 @@ package com.ctrip.framework.apollo.adminservice.controller;
import java.util.List; import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.ctrip.framework.apollo.biz.entity.Namespace; import com.ctrip.framework.apollo.biz.entity.Namespace;
import com.ctrip.framework.apollo.biz.service.NamespaceService; import com.ctrip.framework.apollo.biz.service.NamespaceService;
import com.ctrip.framework.apollo.common.auth.ActiveUser;
import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.common.utils.BeanUtils;
import com.ctrip.framework.apollo.core.dto.NamespaceDTO; import com.ctrip.framework.apollo.core.dto.NamespaceDTO;
import com.ctrip.framework.apollo.core.exception.NotFoundException; import com.ctrip.framework.apollo.core.exception.NotFoundException;
...@@ -25,16 +24,13 @@ public class NamespaceController { ...@@ -25,16 +24,13 @@ public class NamespaceController {
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces", method = RequestMethod.POST) @RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces", method = RequestMethod.POST)
public NamespaceDTO createOrUpdate(@PathVariable("appId") String appId, public NamespaceDTO createOrUpdate(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName, @RequestBody NamespaceDTO dto, @PathVariable("clusterName") String clusterName, @RequestBody NamespaceDTO dto) {
@ActiveUser UserDetails user) {
Namespace entity = BeanUtils.transfrom(Namespace.class, dto); Namespace entity = BeanUtils.transfrom(Namespace.class, dto);
Namespace managedEntity = namespaceService.findOne(appId, clusterName, entity.getNamespaceName()); Namespace managedEntity = namespaceService.findOne(appId, clusterName, entity.getNamespaceName());
if (managedEntity != null) { if (managedEntity != null) {
managedEntity.setDataChangeLastModifiedBy(user.getUsername());
BeanUtils.copyEntityProperties(entity, managedEntity); BeanUtils.copyEntityProperties(entity, managedEntity);
entity = namespaceService.update(managedEntity); entity = namespaceService.update(managedEntity);
} else { } else {
entity.setDataChangeCreatedBy(user.getUsername());
entity = namespaceService.save(entity); entity = namespaceService.save(entity);
} }
...@@ -42,14 +38,14 @@ public class NamespaceController { ...@@ -42,14 +38,14 @@ public class NamespaceController {
return dto; return dto;
} }
@RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}", method = RequestMethod.DELETE) @RequestMapping(path = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName:.+}", method = RequestMethod.DELETE)
public void delete(@PathVariable("appId") String appId, public void delete(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName, @PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName, @ActiveUser UserDetails user) { @PathVariable("namespaceName") String namespaceName, @RequestParam String operator) {
Namespace entity = namespaceService.findOne(appId, clusterName, namespaceName); Namespace entity = namespaceService.findOne(appId, clusterName, namespaceName);
if (entity == null) throw new NotFoundException( if (entity == null) throw new NotFoundException(
String.format("namespace not found for %s %s %s", appId, clusterName, namespaceName)); String.format("namespace not found for %s %s %s", appId, clusterName, namespaceName));
namespaceService.delete(entity.getId(), user.getUsername()); namespaceService.delete(entity.getId(), operator);
} }
@RequestMapping("/apps/{appId}/clusters/{clusterName}/namespaces") @RequestMapping("/apps/{appId}/clusters/{clusterName}/namespaces")
...@@ -67,7 +63,7 @@ public class NamespaceController { ...@@ -67,7 +63,7 @@ public class NamespaceController {
return BeanUtils.transfrom(NamespaceDTO.class, namespace); return BeanUtils.transfrom(NamespaceDTO.class, namespace);
} }
@RequestMapping("/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}") @RequestMapping("/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName:.+}")
public NamespaceDTO get(@PathVariable("appId") String appId, public NamespaceDTO get(@PathVariable("appId") String appId,
@PathVariable("clusterName") String clusterName, @PathVariable("clusterName") String clusterName,
@PathVariable("namespaceName") String namespaceName) { @PathVariable("namespaceName") String namespaceName) {
......
...@@ -9,14 +9,12 @@ import com.ctrip.framework.apollo.biz.message.Topics; ...@@ -9,14 +9,12 @@ import com.ctrip.framework.apollo.biz.message.Topics;
import com.ctrip.framework.apollo.biz.service.ConfigService; import com.ctrip.framework.apollo.biz.service.ConfigService;
import com.ctrip.framework.apollo.biz.service.NamespaceService; import com.ctrip.framework.apollo.biz.service.NamespaceService;
import com.ctrip.framework.apollo.biz.service.ReleaseService; import com.ctrip.framework.apollo.biz.service.ReleaseService;
import com.ctrip.framework.apollo.common.auth.ActiveUser;
import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.common.utils.BeanUtils;
import com.ctrip.framework.apollo.core.ConfigConsts; import com.ctrip.framework.apollo.core.ConfigConsts;
import com.ctrip.framework.apollo.core.dto.ReleaseDTO; import com.ctrip.framework.apollo.core.dto.ReleaseDTO;
import com.ctrip.framework.apollo.core.exception.NotFoundException; import com.ctrip.framework.apollo.core.exception.NotFoundException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
...@@ -78,13 +76,13 @@ public class ReleaseController { ...@@ -78,13 +76,13 @@ public class ReleaseController {
@PathVariable("namespaceName") String namespaceName, @PathVariable("namespaceName") String namespaceName,
@RequestParam("name") String name, @RequestParam("name") String name,
@RequestParam(name = "comment", required = false) String comment, @RequestParam(name = "comment", required = false) String comment,
@ActiveUser UserDetails user) { @RequestParam("operator") String operator) {
Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName);
if (namespace == null) { if (namespace == null) {
throw new NotFoundException(String.format("Could not find namespace for %s %s %s", appId, throw new NotFoundException(String.format("Could not find namespace for %s %s %s", appId,
clusterName, namespaceName)); clusterName, namespaceName));
} }
Release release = releaseService.buildRelease(name, comment, namespace, user.getUsername()); Release release = releaseService.buildRelease(name, comment, namespace, operator);
messageSender.sendMessage(assembleKey(appId, clusterName, namespaceName), messageSender.sendMessage(assembleKey(appId, clusterName, namespaceName),
Topics.APOLLO_RELEASE_TOPIC); Topics.APOLLO_RELEASE_TOPIC);
return BeanUtils.transfrom(ReleaseDTO.class, release); return BeanUtils.transfrom(ReleaseDTO.class, release);
......
...@@ -85,8 +85,7 @@ public class ControllerExceptionTest { ...@@ -85,8 +85,7 @@ public class ControllerExceptionTest {
when(adminService.createNewApp(any(App.class))) when(adminService.createNewApp(any(App.class)))
.thenThrow(new ServiceException("create app failed")); .thenThrow(new ServiceException("create app failed"));
UserDetails user = new User("user", "", new ArrayList<GrantedAuthority>()); appController.createOrUpdate(dto);
appController.createOrUpdate(dto, user);
} }
private AppDTO generateSampleDTOData() { private AppDTO generateSampleDTOData() {
...@@ -95,6 +94,8 @@ public class ControllerExceptionTest { ...@@ -95,6 +94,8 @@ public class ControllerExceptionTest {
dto.setName("someName"); dto.setName("someName");
dto.setOwnerName("someOwner"); dto.setOwnerName("someOwner");
dto.setOwnerEmail("someOwner@ctrip.com"); dto.setOwnerEmail("someOwner@ctrip.com");
dto.setDataChangeLastModifiedBy("test");
dto.setDataChangeCreatedBy("test");
return dto; return dto;
} }
} }
...@@ -46,6 +46,7 @@ public class ItemSetControllerTest extends AbstractControllerTest { ...@@ -46,6 +46,7 @@ public class ItemSetControllerTest extends AbstractControllerTest {
Assert.assertEquals("application", namespace.getNamespaceName()); Assert.assertEquals("application", namespace.getNamespaceName());
ItemChangeSets itemSet = new ItemChangeSets(); ItemChangeSets itemSet = new ItemChangeSets();
itemSet.setDataChangeLastModifiedBy("created");
RestTemplate createdTemplate = new TestRestTemplate("created", ""); RestTemplate createdTemplate = new TestRestTemplate("created", "");
createdTemplate.setMessageConverters(restTemplate.getMessageConverters()); createdTemplate.setMessageConverters(restTemplate.getMessageConverters());
...@@ -94,6 +95,7 @@ public class ItemSetControllerTest extends AbstractControllerTest { ...@@ -94,6 +95,7 @@ public class ItemSetControllerTest extends AbstractControllerTest {
Assert.assertEquals("application", namespace.getNamespaceName()); Assert.assertEquals("application", namespace.getNamespaceName());
ItemChangeSets createChangeSet = new ItemChangeSets(); ItemChangeSets createChangeSet = new ItemChangeSets();
createChangeSet.setDataChangeLastModifiedBy("created");
RestTemplate createdRestTemplate = new TestRestTemplate("created", ""); RestTemplate createdRestTemplate = new TestRestTemplate("created", "");
createdRestTemplate.setMessageConverters(restTemplate.getMessageConverters()); createdRestTemplate.setMessageConverters(restTemplate.getMessageConverters());
...@@ -118,20 +120,22 @@ public class ItemSetControllerTest extends AbstractControllerTest { ...@@ -118,20 +120,22 @@ public class ItemSetControllerTest extends AbstractControllerTest {
+ cluster.getName() + "/namespaces/" + namespace.getNamespaceName() + "/items", + cluster.getName() + "/namespaces/" + namespace.getNamespaceName() + "/items",
ItemDTO[].class); ItemDTO[].class);
ItemChangeSets udpateChangeSet = new ItemChangeSets(); ItemChangeSets updateChangeSet = new ItemChangeSets();
updateChangeSet.setDataChangeLastModifiedBy("updated");
RestTemplate updatedRestTemplate = new TestRestTemplate("updated", ""); RestTemplate updatedRestTemplate = new TestRestTemplate("updated", "");
updatedRestTemplate.setMessageConverters(restTemplate.getMessageConverters()); updatedRestTemplate.setMessageConverters(restTemplate.getMessageConverters());
int updatedSize = 2; int updatedSize = 2;
for (int i = 0; i < updatedSize; i++) { for (int i = 0; i < updatedSize; i++) {
items[i].setValue("updated_value_" + i); items[i].setValue("updated_value_" + i);
udpateChangeSet.addUpdateItem(items[i]); updateChangeSet.addUpdateItem(items[i]);
} }
response = updatedRestTemplate.postForEntity( response = updatedRestTemplate.postForEntity(
"http://localhost:" + port + "/apps/" + app.getAppId() + "/clusters/" + cluster.getName() "http://localhost:" + port + "/apps/" + app.getAppId() + "/clusters/" + cluster.getName()
+ "/namespaces/" + namespace.getNamespaceName() + "/itemset", + "/namespaces/" + namespace.getNamespaceName() + "/itemset",
udpateChangeSet, Void.class); updateChangeSet, Void.class);
Assert.assertEquals(HttpStatus.OK, response.getStatusCode()); Assert.assertEquals(HttpStatus.OK, response.getStatusCode());
List<Item> savedItems = itemRepository.findByNamespaceIdOrderByLineNumAsc(namespace.getId()); List<Item> savedItems = itemRepository.findByNamespaceIdOrderByLineNumAsc(namespace.getId());
Assert.assertEquals(createdSize, savedItems.size()); Assert.assertEquals(createdSize, savedItems.size());
...@@ -165,6 +169,7 @@ public class ItemSetControllerTest extends AbstractControllerTest { ...@@ -165,6 +169,7 @@ public class ItemSetControllerTest extends AbstractControllerTest {
Assert.assertEquals("application", namespace.getNamespaceName()); Assert.assertEquals("application", namespace.getNamespaceName());
ItemChangeSets createChangeSet = new ItemChangeSets(); ItemChangeSets createChangeSet = new ItemChangeSets();
createChangeSet.setDataChangeLastModifiedBy("created");
RestTemplate createdTemplate = new TestRestTemplate("created", ""); RestTemplate createdTemplate = new TestRestTemplate("created", "");
createdTemplate.setMessageConverters(restTemplate.getMessageConverters()); createdTemplate.setMessageConverters(restTemplate.getMessageConverters());
...@@ -190,6 +195,7 @@ public class ItemSetControllerTest extends AbstractControllerTest { ...@@ -190,6 +195,7 @@ public class ItemSetControllerTest extends AbstractControllerTest {
ItemDTO[].class); ItemDTO[].class);
ItemChangeSets deleteChangeSet = new ItemChangeSets(); ItemChangeSets deleteChangeSet = new ItemChangeSets();
deleteChangeSet.setDataChangeLastModifiedBy("deleted");
RestTemplate deletedTemplate = new TestRestTemplate("deleted", ""); RestTemplate deletedTemplate = new TestRestTemplate("deleted", "");
deletedTemplate.setMessageConverters(restTemplate.getMessageConverters()); deletedTemplate.setMessageConverters(restTemplate.getMessageConverters());
......
...@@ -76,6 +76,7 @@ public class ReleaseControllerTest extends AbstractControllerTest { ...@@ -76,6 +76,7 @@ public class ReleaseControllerTest extends AbstractControllerTest {
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
parameters.add("name", "someReleaseName"); parameters.add("name", "someReleaseName");
parameters.add("comment", "someComment"); parameters.add("comment", "someComment");
parameters.add("operator", "test");
HttpEntity<MultiValueMap<String, String>> entity = HttpEntity<MultiValueMap<String, String>> entity =
new HttpEntity<MultiValueMap<String, String>>(parameters, headers); new HttpEntity<MultiValueMap<String, String>>(parameters, headers);
ResponseEntity<ReleaseDTO> response = restTemplate.postForEntity( ResponseEntity<ReleaseDTO> response = restTemplate.postForEntity(
...@@ -111,7 +112,6 @@ public class ReleaseControllerTest extends AbstractControllerTest { ...@@ -111,7 +112,6 @@ public class ReleaseControllerTest extends AbstractControllerTest {
ReleaseService someReleaseService = mock(ReleaseService.class); ReleaseService someReleaseService = mock(ReleaseService.class);
MessageSender someMessageSender = mock(MessageSender.class); MessageSender someMessageSender = mock(MessageSender.class);
Namespace someNamespace = mock(Namespace.class); Namespace someNamespace = mock(Namespace.class);
UserDetails someUser = mock(UserDetails.class);
ReleaseController releaseController = new ReleaseController(); ReleaseController releaseController = new ReleaseController();
ReflectionTestUtils.setField(releaseController, "releaseService", someReleaseService); ReflectionTestUtils.setField(releaseController, "releaseService", someReleaseService);
...@@ -120,10 +120,9 @@ public class ReleaseControllerTest extends AbstractControllerTest { ...@@ -120,10 +120,9 @@ public class ReleaseControllerTest extends AbstractControllerTest {
when(someNamespaceService.findOne(someAppId, someCluster, someNamespaceName)) when(someNamespaceService.findOne(someAppId, someCluster, someNamespaceName))
.thenReturn(someNamespace); .thenReturn(someNamespace);
when(someUser.getUsername()).thenReturn(someUserName);
releaseController releaseController
.buildRelease(someAppId, someCluster, someNamespaceName, someName, someComment, someUser); .buildRelease(someAppId, someCluster, someNamespaceName, someName, someComment, "test");
verify(someMessageSender, times(1)) verify(someMessageSender, times(1))
.sendMessage(Joiner.on(ConfigConsts.CLUSTER_NAMESPACE_SEPARATOR) .sendMessage(Joiner.on(ConfigConsts.CLUSTER_NAMESPACE_SEPARATOR)
......
...@@ -21,7 +21,8 @@ public class ItemSetService { ...@@ -21,7 +21,8 @@ public class ItemSetService {
private AuditService auditService; private AuditService auditService;
@Transactional @Transactional
public void updateSet(ItemChangeSets changeSet, String owner) { public void updateSet(ItemChangeSets changeSet) {
String owner = changeSet.getDataChangeLastModifiedBy();
if (changeSet.getCreateItems() != null) { if (changeSet.getCreateItems() != null) {
for (ItemDTO item : changeSet.getCreateItems()) { for (ItemDTO item : changeSet.getCreateItems()) {
Item entity = BeanUtils.transfrom(Item.class, item); Item entity = BeanUtils.transfrom(Item.class, item);
......
...@@ -24,6 +24,7 @@ public class WebMvcConfig extends WebMvcConfigurerAdapter { ...@@ -24,6 +24,7 @@ public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override @Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false);
configurer.ignoreAcceptHeader(true).defaultContentType(MediaType.APPLICATION_JSON); configurer.ignoreAcceptHeader(true).defaultContentType(MediaType.APPLICATION_JSON);
} }
......
...@@ -226,6 +226,5 @@ public class BeanUtils { ...@@ -226,6 +226,5 @@ public class BeanUtils {
org.springframework.beans.BeanUtils.copyProperties(source, target, COPY_IGNORED_PROPERTIES); org.springframework.beans.BeanUtils.copyProperties(source, target, COPY_IGNORED_PROPERTIES);
} }
private static final String[] COPY_IGNORED_PROPERTIES = {"id", "dataChangeCreatedBy", private static final String[] COPY_IGNORED_PROPERTIES = {"id", "dataChangeCreatedTime", "dataChangeLastModifiedTime"};
"dataChangeCreatedTime", "dataChangeLastModifiedBy", "dataChangeLastModifiedTime"};
} }
package com.ctrip.framework.apollo.core.dto; package com.ctrip.framework.apollo.core.dto;
public class AppDTO { public class AppDTO extends BaseDTO{
private long id; private long id;
......
package com.ctrip.framework.apollo.core.dto; package com.ctrip.framework.apollo.core.dto;
public class AppNamespaceDTO { public class AppNamespaceDTO extends BaseDTO{
private long id; private long id;
private String name; private String name;
......
package com.ctrip.framework.apollo.core.dto;
public class BaseDTO {
protected String dataChangeCreatedBy;
protected String dataChangeLastModifiedBy;
public String getDataChangeCreatedBy() {
return dataChangeCreatedBy;
}
public void setDataChangeCreatedBy(String dataChangeCreatedBy) {
this.dataChangeCreatedBy = dataChangeCreatedBy;
}
public String getDataChangeLastModifiedBy() {
return dataChangeLastModifiedBy;
}
public void setDataChangeLastModifiedBy(String dataChangeLastModifiedBy) {
this.dataChangeLastModifiedBy = dataChangeLastModifiedBy;
}
}
package com.ctrip.framework.apollo.core.dto; package com.ctrip.framework.apollo.core.dto;
public class ClusterDTO { public class ClusterDTO extends BaseDTO{
private long id; private long id;
......
...@@ -6,7 +6,7 @@ import java.util.List; ...@@ -6,7 +6,7 @@ import java.util.List;
/** /**
* storage cud result * storage cud result
*/ */
public class ItemChangeSets { public class ItemChangeSets extends BaseDTO{
private List<ItemDTO> createItems = new LinkedList<>(); private List<ItemDTO> createItems = new LinkedList<>();
private List<ItemDTO> updateItems = new LinkedList<>(); private List<ItemDTO> updateItems = new LinkedList<>();
......
...@@ -2,7 +2,7 @@ package com.ctrip.framework.apollo.core.dto; ...@@ -2,7 +2,7 @@ package com.ctrip.framework.apollo.core.dto;
import java.util.Date; import java.util.Date;
public class ItemDTO { public class ItemDTO extends BaseDTO{
private long id; private long id;
......
package com.ctrip.framework.apollo.core.dto; package com.ctrip.framework.apollo.core.dto;
public class NamespaceDTO{ public class NamespaceDTO extends BaseDTO{
private long id; private long id;
private String appId; private String appId;
......
package com.ctrip.framework.apollo.core.dto; package com.ctrip.framework.apollo.core.dto;
public class ReleaseDTO{ public class ReleaseDTO extends BaseDTO{
private long id; private long id;
private String releaseKey; private String releaseKey;
......
...@@ -73,9 +73,9 @@ public class PortalSettings { ...@@ -73,9 +73,9 @@ public class PortalSettings {
healthCheckService = Executors.newScheduledThreadPool(1); healthCheckService = Executors.newScheduledThreadPool(1);
healthCheckService // healthCheckService
.scheduleWithFixedDelay(new HealthCheckTask(applicationContext), 1000, HEALTH_CHECK_INTERVAL, // .scheduleWithFixedDelay(new HealthCheckTask(applicationContext), 1000, HEALTH_CHECK_INTERVAL,
TimeUnit.MILLISECONDS); // TimeUnit.MILLISECONDS);
} }
......
...@@ -25,6 +25,7 @@ public class API { ...@@ -25,6 +25,7 @@ public class API {
} }
public String getAdminServiceHost(Env env) { public String getAdminServiceHost(Env env) {
return serviceLocator.getServiceAddress(env).getHomepageUrl(); return "http://localhost:8090";
// return serviceLocator.getServiceAddress(env).getHomepageUrl();
} }
} }
...@@ -27,9 +27,9 @@ import java.util.List; ...@@ -27,9 +27,9 @@ import java.util.List;
public class AdminServiceAPI { public class AdminServiceAPI {
@Service @Service
public static class HealthAPI extends API{ public static class HealthAPI extends API {
public Health health(Env env){ public Health health(Env env) {
return restTemplate.getForObject(getAdminServiceHost(env) + "/health", Health.class); return restTemplate.getForObject(getAdminServiceHost(env) + "/health", Health.class);
} }
} }
...@@ -37,20 +37,18 @@ public class AdminServiceAPI { ...@@ -37,20 +37,18 @@ public class AdminServiceAPI {
@Service @Service
public static class AppAPI extends API { public static class AppAPI extends API {
public static String APP_API = "/apps";
public List<AppDTO> findApps(Env env) { public List<AppDTO> findApps(Env env) {
AppDTO[] appDTOs = AppDTO[] appDTOs =
restTemplate.getForObject(getAdminServiceHost(env) + APP_API, AppDTO[].class); restTemplate.getForObject("{host}/apps", AppDTO[].class, getAdminServiceHost(env));
return Arrays.asList(appDTOs); return Arrays.asList(appDTOs);
} }
public AppDTO loadApp(Env env, String appId){ public AppDTO loadApp(Env env, String appId) {
return restTemplate.getForObject(getAdminServiceHost(env) + APP_API + "/" + appId, AppDTO.class); return restTemplate.getForObject("{host}/apps/{appId}", AppDTO.class, getAdminServiceHost(env), appId);
} }
public AppDTO createApp(Env env, AppDTO app) { public AppDTO createApp(Env env, AppDTO app) {
return restTemplate.postForEntity(getAdminServiceHost(env) + APP_API, app, AppDTO.class) return restTemplate.postForEntity("{host}/apps", app, AppDTO.class, getAdminServiceHost(env))
.getBody(); .getBody();
} }
} }
...@@ -60,38 +58,36 @@ public class AdminServiceAPI { ...@@ -60,38 +58,36 @@ public class AdminServiceAPI {
public static class NamespaceAPI extends API { public static class NamespaceAPI extends API {
public List<NamespaceDTO> findNamespaceByCluster(String appId, Env env, String clusterName) { public List<NamespaceDTO> findNamespaceByCluster(String appId, Env env, String clusterName) {
NamespaceDTO[] namespaceDTOs = restTemplate.getForObject( NamespaceDTO[] namespaceDTOs = restTemplate.getForObject("{host}/apps/{appId}/clusters/{clusterName}/namespaces",
getAdminServiceHost(env) NamespaceDTO[].class, getAdminServiceHost(env), appId,
+ String.format("apps/%s/clusters/%s/namespaces", appId, clusterName), clusterName);
NamespaceDTO[].class);
return Arrays.asList(namespaceDTOs); return Arrays.asList(namespaceDTOs);
} }
public NamespaceDTO loadNamespace(String appId, Env env, String clusterName, public NamespaceDTO loadNamespace(String appId, Env env, String clusterName,
String namespaceName) { String namespaceName) {
return restTemplate.getForObject(getAdminServiceHost(env) NamespaceDTO dto = restTemplate.getForObject("{host}/apps/{appId}/clusters/{clusterName}/namespaces/" + namespaceName,
+ String.format("apps/%s/clusters/%s/namespaces/%s", appId, clusterName, namespaceName), NamespaceDTO.class, getAdminServiceHost(env), appId, clusterName);
NamespaceDTO.class); return dto;
} }
public List<AppNamespaceDTO> findPublicAppNamespaces(Env env){ public List<AppNamespaceDTO> findPublicAppNamespaces(Env env) {
AppNamespaceDTO[] appNamespaceDTOs = restTemplate.getForObject( AppNamespaceDTO[]
getAdminServiceHost(env)+ "appnamespaces/public", appNamespaceDTOs =
AppNamespaceDTO[].class); restTemplate.getForObject("{host}/appnamespaces/public", AppNamespaceDTO[].class
, getAdminServiceHost(env));
return Arrays.asList(appNamespaceDTOs); return Arrays.asList(appNamespaceDTOs);
} }
public NamespaceDTO createNamespace(Env env, NamespaceDTO namespace) { public NamespaceDTO createNamespace(Env env, NamespaceDTO namespace) {
return restTemplate.postForEntity(getAdminServiceHost(env) + return restTemplate
String.format("/apps/%s/clusters/%s/namespaces", namespace.getAppId(), .postForEntity("{host}/apps/{appId}/clusters/{clusterName}/namespaces", namespace, NamespaceDTO.class,
namespace.getClusterName()), namespace, NamespaceDTO.class) getAdminServiceHost(env), namespace.getAppId(), namespace.getClusterName()).getBody();
.getBody();
} }
public AppNamespaceDTO createAppNamespace(Env env, AppNamespaceDTO appNamespace) { public AppNamespaceDTO createOrUpdate(Env env, AppNamespaceDTO appNamespace) {
return restTemplate.postForEntity(getAdminServiceHost(env) + return restTemplate.postForEntity("{host}/apps/{appId}/appnamespaces", appNamespace, AppNamespaceDTO.class,
String.format("/apps/%s/appnamespaces", appNamespace.getAppId()), appNamespace, AppNamespaceDTO.class) getAdminServiceHost(env), appNamespace.getAppId()).getBody();
.getBody();
} }
} }
...@@ -102,28 +98,27 @@ public class AdminServiceAPI { ...@@ -102,28 +98,27 @@ public class AdminServiceAPI {
public List<ItemDTO> findItems(String appId, Env env, String clusterName, String namespace) { public List<ItemDTO> findItems(String appId, Env env, String clusterName, String namespace) {
ItemDTO[] itemDTOs = ItemDTO[] itemDTOs =
restTemplate restTemplate
.getForObject( .getForObject("{host}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items",
getAdminServiceHost(env) + String.format( ItemDTO[].class,
"apps/%s/clusters/%s/namespaces/%s/items", appId, clusterName, namespace), getAdminServiceHost(env), appId, clusterName, namespace);
ItemDTO[].class);
return Arrays.asList(itemDTOs); return Arrays.asList(itemDTOs);
} }
public void updateItems(String appId, Env env, String clusterName, String namespace, public void updateItems(String appId, Env env, String clusterName, String namespace,
ItemChangeSets changeSets) { ItemChangeSets changeSets) {
restTemplate.postForEntity(getAdminServiceHost(env) + String restTemplate.postForEntity("{host}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/itemset",
.format("apps/%s/clusters/%s/namespaces/%s/itemset", appId, clusterName, namespace), changeSets, Void.class, getAdminServiceHost(env), appId, clusterName, namespace);
changeSets, Void.class);
} }
public ItemDTO createOrUpdateItem(String appId, Env env, String clusterName, String namespace, ItemDTO item){ public ItemDTO createOrUpdateItem(String appId, Env env, String clusterName, String namespace, ItemDTO item) {
return restTemplate.postForEntity(getAdminServiceHost(env) + String return restTemplate.postForEntity("{host}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items",
.format("apps/%s/clusters/%s/namespaces/%s/items", appId, clusterName, namespace), item, ItemDTO.class, getAdminServiceHost(env), appId, clusterName, namespace)
item, ItemDTO.class).getBody(); .getBody();
} }
public void deleteItem( Env env, long itemId){ public void deleteItem(Env env, long itemId, String operator) {
restTemplate.delete(getAdminServiceHost(env) + "items/" + itemId);
restTemplate.delete("{host}/items/{itemId}?operator={operator}", getAdminServiceHost(env), itemId, operator);
} }
} }
...@@ -131,8 +126,8 @@ public class AdminServiceAPI { ...@@ -131,8 +126,8 @@ public class AdminServiceAPI {
public static class ClusterAPI extends API { public static class ClusterAPI extends API {
public List<ClusterDTO> findClustersByApp(String appId, Env env) { public List<ClusterDTO> findClustersByApp(String appId, Env env) {
ClusterDTO[] clusterDTOs = restTemplate.getForObject( ClusterDTO[] clusterDTOs = restTemplate.getForObject("{host}/apps/{appId}/clusters", ClusterDTO[].class,
getAdminServiceHost(env) + String.format("apps/%s/clusters", appId), ClusterDTO[].class); getAdminServiceHost(env), appId);
return Arrays.asList(clusterDTOs); return Arrays.asList(clusterDTOs);
} }
} }
...@@ -142,29 +137,31 @@ public class AdminServiceAPI { ...@@ -142,29 +137,31 @@ public class AdminServiceAPI {
public ReleaseDTO loadLatestRelease(String appId, Env env, String clusterName, public ReleaseDTO loadLatestRelease(String appId, Env env, String clusterName,
String namespace) { String namespace) {
ReleaseDTO releaseDTO = restTemplate.getForObject( ReleaseDTO
getAdminServiceHost(env) + String.format( releaseDTO =
"apps/%s/clusters/%s/namespaces/%s/releases/latest", appId, clusterName, namespace), restTemplate
ReleaseDTO.class); .getForObject("{host}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/releases/latest",
ReleaseDTO.class, getAdminServiceHost(env), appId, clusterName, namespace);
return releaseDTO; return releaseDTO;
} }
public ReleaseDTO release(String appId, Env env, String clusterName, String namespace, public ReleaseDTO release(String appId, Env env, String clusterName, String namespace,
String releaseBy, String comment) { String releaseBy, String comment, String operator) {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
parameters.add("name", releaseBy); parameters.add("name", releaseBy);
parameters.add("comment", comment); parameters.add("comment", comment);
parameters.add("operator", operator);
HttpEntity<MultiValueMap<String, String>> entity = HttpEntity<MultiValueMap<String, String>> entity =
new HttpEntity<MultiValueMap<String, String>>(parameters, headers); new HttpEntity<MultiValueMap<String, String>>(parameters, headers);
ResponseEntity<ReleaseDTO> response = ResponseEntity<ReleaseDTO> response =
restTemplate restTemplate
.postForEntity( .postForEntity("{host}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/releases", entity,
getAdminServiceHost(env) + String.format( ReleaseDTO.class,
"apps/%s/clusters/%s/namespaces/%s/releases", appId, clusterName, namespace), getAdminServiceHost(env), appId, clusterName, namespace);
entity, ReleaseDTO.class);
return response.getBody(); return response.getBody();
} }
} }
} }
...@@ -17,6 +17,7 @@ import com.ctrip.framework.apollo.core.exception.BadRequestException; ...@@ -17,6 +17,7 @@ import com.ctrip.framework.apollo.core.exception.BadRequestException;
import com.ctrip.framework.apollo.core.exception.ServiceException; import com.ctrip.framework.apollo.core.exception.ServiceException;
import com.ctrip.framework.apollo.portal.PortalSettings; import com.ctrip.framework.apollo.portal.PortalSettings;
import com.ctrip.framework.apollo.portal.api.AdminServiceAPI; import com.ctrip.framework.apollo.portal.api.AdminServiceAPI;
import com.ctrip.framework.apollo.portal.auth.UserInfoHolder;
import com.ctrip.framework.apollo.portal.entity.vo.EnvClusterInfo; import com.ctrip.framework.apollo.portal.entity.vo.EnvClusterInfo;
@Service @Service
...@@ -24,6 +25,9 @@ public class PortalAppService { ...@@ -24,6 +25,9 @@ public class PortalAppService {
private Logger logger = LoggerFactory.getLogger(PortalAppService.class); private Logger logger = LoggerFactory.getLogger(PortalAppService.class);
@Autowired
private UserInfoHolder userInfoHolder;
@Autowired @Autowired
private PortalClusterService clusterService; private PortalClusterService clusterService;
...@@ -71,6 +75,7 @@ public class PortalAppService { ...@@ -71,6 +75,7 @@ public class PortalAppService {
} }
public void createAppInAllEnvs(AppDTO app) { public void createAppInAllEnvs(AppDTO app) {
enrichUserInfo(app);
List<Env> envs = portalSettings.getActiveEnvs(); List<Env> envs = portalSettings.getActiveEnvs();
for (Env env : envs) { for (Env env : envs) {
try { try {
...@@ -83,6 +88,7 @@ public class PortalAppService { ...@@ -83,6 +88,7 @@ public class PortalAppService {
} }
public void createApp(Env env, AppDTO app) { public void createApp(Env env, AppDTO app) {
enrichUserInfo(app);
try { try {
appAPI.createApp(env, app); appAPI.createApp(env, app);
} catch (HttpStatusCodeException e) { } catch (HttpStatusCodeException e) {
...@@ -91,6 +97,12 @@ public class PortalAppService { ...@@ -91,6 +97,12 @@ public class PortalAppService {
} }
} }
private void enrichUserInfo(AppDTO app){
String username = userInfoHolder.getUser().getUsername();
app.setDataChangeCreatedBy(username);
app.setDataChangeLastModifiedBy(username);
}
public EnvClusterInfo createEnvNavNode(Env env, String appId){ public EnvClusterInfo createEnvNavNode(Env env, String appId){
EnvClusterInfo node = new EnvClusterInfo(env); EnvClusterInfo node = new EnvClusterInfo(env);
node.setClusters(clusterService.findClusters(env, appId)); node.setClusters(clusterService.findClusters(env, appId));
......
...@@ -17,7 +17,9 @@ import com.ctrip.framework.apollo.core.dto.ReleaseDTO; ...@@ -17,7 +17,9 @@ import com.ctrip.framework.apollo.core.dto.ReleaseDTO;
import com.ctrip.framework.apollo.core.exception.BadRequestException; import com.ctrip.framework.apollo.core.exception.BadRequestException;
import com.ctrip.framework.apollo.core.exception.NotFoundException; import com.ctrip.framework.apollo.core.exception.NotFoundException;
import com.ctrip.framework.apollo.core.exception.ServiceException; import com.ctrip.framework.apollo.core.exception.ServiceException;
import com.ctrip.framework.apollo.core.utils.StringUtils;
import com.ctrip.framework.apollo.portal.api.AdminServiceAPI; import com.ctrip.framework.apollo.portal.api.AdminServiceAPI;
import com.ctrip.framework.apollo.portal.auth.UserInfoHolder;
import com.ctrip.framework.apollo.portal.entity.vo.ItemDiffs; import com.ctrip.framework.apollo.portal.entity.vo.ItemDiffs;
import com.ctrip.framework.apollo.portal.entity.vo.NamespaceIdentifer; import com.ctrip.framework.apollo.portal.entity.vo.NamespaceIdentifer;
import com.ctrip.framework.apollo.portal.entity.form.NamespaceTextModel; import com.ctrip.framework.apollo.portal.entity.form.NamespaceTextModel;
...@@ -33,13 +35,14 @@ public class PortalConfigService { ...@@ -33,13 +35,14 @@ public class PortalConfigService {
private Logger logger = LoggerFactory.getLogger(PortalConfigService.class); private Logger logger = LoggerFactory.getLogger(PortalConfigService.class);
@Autowired
private UserInfoHolder userInfoHolder;
@Autowired @Autowired
private AdminServiceAPI.NamespaceAPI namespaceAPI; private AdminServiceAPI.NamespaceAPI namespaceAPI;
@Autowired @Autowired
private AdminServiceAPI.ItemAPI itemAPI; private AdminServiceAPI.ItemAPI itemAPI;
@Autowired @Autowired
private AdminServiceAPI.ReleaseAPI releaseAPI; private AdminServiceAPI.ReleaseAPI releaseAPI;
@Autowired @Autowired
private ConfigTextResolver resolver; private ConfigTextResolver resolver;
...@@ -62,7 +65,9 @@ public class PortalConfigService { ...@@ -62,7 +65,9 @@ public class PortalConfigService {
if (changeSets.isEmpty()) { if (changeSets.isEmpty()) {
return; return;
} }
try { try {
changeSets.setDataChangeLastModifiedBy(userInfoHolder.getUser().getUsername());
itemAPI.updateItems(appId, env, clusterName, namespaceName, changeSets); itemAPI.updateItems(appId, env, clusterName, namespaceName, changeSets);
} catch (Exception e) { } catch (Exception e) {
logger.error("itemAPI.updateItems error. appId{},env:{},clusterName:{},namespaceName:{}", appId, env, clusterName, logger.error("itemAPI.updateItems error. appId{},env:{},clusterName:{},namespaceName:{}", appId, env, clusterName,
...@@ -72,41 +77,49 @@ public class PortalConfigService { ...@@ -72,41 +77,49 @@ public class PortalConfigService {
} }
public ItemDTO createOrUpdateItem(String appId, Env env, String clusterName, String namespaceName, ItemDTO item){ public ItemDTO createOrUpdateItem(String appId, Env env, String clusterName, String namespaceName, ItemDTO item) {
NamespaceDTO namespace = namespaceAPI.loadNamespace(appId, env, clusterName, namespaceName); NamespaceDTO namespace = namespaceAPI.loadNamespace(appId, env, clusterName, namespaceName);
if (namespace == null){ if (namespace == null) {
throw new BadRequestException( throw new BadRequestException(
"namespace:" + namespaceName + " not exist in env:" + env + ", cluster:" + clusterName); "namespace:" + namespaceName + " not exist in env:" + env + ", cluster:" + clusterName);
} }
String username = userInfoHolder.getUser().getUsername();
if (StringUtils.isEmpty(item.getDataChangeCreatedBy())) {
item.setDataChangeCreatedBy(username);
}
item.setDataChangeLastModifiedBy(username);
item.setNamespaceId(namespace.getId()); item.setNamespaceId(namespace.getId());
return itemAPI.createOrUpdateItem(appId, env, clusterName, namespaceName, item); return itemAPI.createOrUpdateItem(appId, env, clusterName, namespaceName, item);
} }
public void deleteItem(Env env, long itemId){ public void deleteItem(Env env, long itemId) {
itemAPI.deleteItem(env, itemId); itemAPI.deleteItem(env, itemId, userInfoHolder.getUser().getUsername());
} }
/** /**
* createRelease config items * createRelease config items
*/ */
public ReleaseDTO createRelease(NamespaceReleaseModel model) { public ReleaseDTO createRelease(NamespaceReleaseModel model) {
return releaseAPI.release(model.getAppId(), model.getEnv(), model.getClusterName(), return releaseAPI.release(model.getAppId(), model.getEnv(), model.getClusterName(),
model.getNamespaceName(), model.getReleaseBy(), model.getReleaseComment()); model.getNamespaceName(), model.getReleaseBy(), model.getReleaseComment()
, userInfoHolder.getUser().getUsername());
} }
public List<ItemDTO> findItems(String appId, Env env, String clusterName, String namespaceName) { public List<ItemDTO> findItems(String appId, Env env, String clusterName, String namespaceName) {
return itemAPI.findItems(appId, env, clusterName, namespaceName); return itemAPI.findItems(appId, env, clusterName, namespaceName);
} }
public void syncItems(List<NamespaceIdentifer> comparedNamespaces, List<ItemDTO> sourceItems){ public void syncItems(List<NamespaceIdentifer> comparedNamespaces, List<ItemDTO> sourceItems) {
List<ItemDiffs> itemDiffs = compare(comparedNamespaces, sourceItems); List<ItemDiffs> itemDiffs = compare(comparedNamespaces, sourceItems);
for (ItemDiffs itemDiff: itemDiffs){ for (ItemDiffs itemDiff : itemDiffs) {
NamespaceIdentifer namespaceIdentifer = itemDiff.getNamespace(); NamespaceIdentifer namespaceIdentifer = itemDiff.getNamespace();
ItemChangeSets changeSets = itemDiff.getDiffs();
changeSets.setDataChangeLastModifiedBy(userInfoHolder.getUser().getUsername());
try { try {
itemAPI itemAPI
.updateItems(namespaceIdentifer.getAppId(), namespaceIdentifer.getEnv(), .updateItems(namespaceIdentifer.getAppId(), namespaceIdentifer.getEnv(),
namespaceIdentifer.getClusterName(), namespaceIdentifer.getClusterName(),
namespaceIdentifer.getNamespaceName(), itemDiff.getDiffs()); namespaceIdentifer.getNamespaceName(), changeSets);
} catch (HttpClientErrorException e) { } catch (HttpClientErrorException e) {
logger.error("sync items error. namespace:{}", namespaceIdentifer); logger.error("sync items error. namespace:{}", namespaceIdentifer);
throw new ServiceException(String.format("sync item error. env:%s, clusterName:%s", namespaceIdentifer.getEnv(), throw new ServiceException(String.format("sync item error. env:%s, clusterName:%s", namespaceIdentifer.getEnv(),
...@@ -147,7 +160,7 @@ public class PortalConfigService { ...@@ -147,7 +160,7 @@ public class PortalConfigService {
return namespaceDTO.getId(); return namespaceDTO.getId();
} }
private ItemChangeSets parseChangeSets(NamespaceIdentifer namespace, List<ItemDTO> sourceItems){ private ItemChangeSets parseChangeSets(NamespaceIdentifer namespace, List<ItemDTO> sourceItems) {
ItemChangeSets changeSets = new ItemChangeSets(); ItemChangeSets changeSets = new ItemChangeSets();
List<ItemDTO> List<ItemDTO>
targetItems = targetItems =
...@@ -175,8 +188,7 @@ public class PortalConfigService { ...@@ -175,8 +188,7 @@ public class PortalConfigService {
changeSets.addCreateItem(buildItem(namespaceId, ++maxLineNum, sourceItem)); changeSets.addCreateItem(buildItem(namespaceId, ++maxLineNum, sourceItem));
} else if (!sourceValue.equals(targetItem.getValue()) || !sourceComment } else if (isModified(sourceValue, targetItem.getValue(), sourceComment, targetItem.getComment())) {//modified items
.equals(targetItem.getComment())) {//modified items
targetItem.setValue(sourceValue); targetItem.setValue(sourceValue);
targetItem.setComment(sourceComment); targetItem.setComment(sourceComment);
changeSets.addUpdateItem(targetItem); changeSets.addUpdateItem(targetItem);
...@@ -194,4 +206,19 @@ public class PortalConfigService { ...@@ -194,4 +206,19 @@ public class PortalConfigService {
createdItem.setNamespaceId(namespaceId); createdItem.setNamespaceId(namespaceId);
return createdItem; return createdItem;
} }
private boolean isModified(String sourceValue, String targetValue, String sourceComment, String targetComment) {
if (!sourceValue.equals(targetValue)) {
return true;
}
if (sourceComment == null) {
return !StringUtils.isEmpty(targetComment);
} else if (targetComment != null) {
return !sourceComment.equals(targetComment);
} else {
return false;
}
}
} }
...@@ -8,10 +8,10 @@ import com.ctrip.framework.apollo.core.dto.ItemDTO; ...@@ -8,10 +8,10 @@ import com.ctrip.framework.apollo.core.dto.ItemDTO;
import com.ctrip.framework.apollo.core.dto.NamespaceDTO; import com.ctrip.framework.apollo.core.dto.NamespaceDTO;
import com.ctrip.framework.apollo.core.dto.ReleaseDTO; import com.ctrip.framework.apollo.core.dto.ReleaseDTO;
import com.ctrip.framework.apollo.core.enums.Env; import com.ctrip.framework.apollo.core.enums.Env;
import com.ctrip.framework.apollo.core.exception.NotFoundException;
import com.ctrip.framework.apollo.core.utils.StringUtils; import com.ctrip.framework.apollo.core.utils.StringUtils;
import com.ctrip.framework.apollo.portal.PortalSettings; import com.ctrip.framework.apollo.portal.PortalSettings;
import com.ctrip.framework.apollo.portal.api.AdminServiceAPI; import com.ctrip.framework.apollo.portal.api.AdminServiceAPI;
import com.ctrip.framework.apollo.portal.auth.UserInfoHolder;
import com.ctrip.framework.apollo.portal.entity.vo.NamespaceVO; import com.ctrip.framework.apollo.portal.entity.vo.NamespaceVO;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -33,15 +33,14 @@ public class PortalNamespaceService { ...@@ -33,15 +33,14 @@ public class PortalNamespaceService {
private Logger logger = LoggerFactory.getLogger(PortalNamespaceService.class); private Logger logger = LoggerFactory.getLogger(PortalNamespaceService.class);
@Autowired
private UserInfoHolder userInfoHolder;
@Autowired @Autowired
private AdminServiceAPI.ItemAPI itemAPI; private AdminServiceAPI.ItemAPI itemAPI;
@Autowired @Autowired
private AdminServiceAPI.ReleaseAPI releaseAPI; private AdminServiceAPI.ReleaseAPI releaseAPI;
@Autowired @Autowired
private AdminServiceAPI.NamespaceAPI namespaceAPI; private AdminServiceAPI.NamespaceAPI namespaceAPI;
@Autowired @Autowired
private PortalSettings portalSettings; private PortalSettings portalSettings;
...@@ -53,13 +52,22 @@ public class PortalNamespaceService { ...@@ -53,13 +52,22 @@ public class PortalNamespaceService {
} }
public NamespaceDTO createNamespace(Env env, NamespaceDTO namespace) { public NamespaceDTO createNamespace(Env env, NamespaceDTO namespace) {
if (StringUtils.isEmpty(namespace.getDataChangeCreatedBy())){
namespace.setDataChangeCreatedBy(userInfoHolder.getUser().getUsername());
}
namespace.setDataChangeLastModifiedBy(userInfoHolder.getUser().getUsername());
return namespaceAPI.createNamespace(env, namespace); return namespaceAPI.createNamespace(env, namespace);
} }
public void createAppNamespace(AppNamespaceDTO appNamespace) { public void createAppNamespace(AppNamespaceDTO appNamespace) {
String operator = userInfoHolder.getUser().getUsername();
if (StringUtils.isEmpty(appNamespace.getDataChangeCreatedBy())){
appNamespace.setDataChangeCreatedBy(operator);
}
appNamespace.setDataChangeLastModifiedBy(operator);
for (Env env : portalSettings.getActiveEnvs()) { for (Env env : portalSettings.getActiveEnvs()) {
try { try {
namespaceAPI.createAppNamespace(env, appNamespace); namespaceAPI.createOrUpdate(env, appNamespace);
} catch (HttpStatusCodeException e) { } catch (HttpStatusCodeException e) {
logger.error(ExceptionUtils.toString(e)); logger.error(ExceptionUtils.toString(e));
throw e; throw e;
......
...@@ -278,7 +278,7 @@ ...@@ -278,7 +278,7 @@
<span class="glyphicon glyphicon-eye-open" aria-hidden="true" <span class="glyphicon glyphicon-eye-open" aria-hidden="true"
data-tooltip="tooltip" data-placement="bottom" title="查看" data-tooltip="tooltip" data-placement="bottom" title="查看"
data-toggle="modal" data-target="#itemModal" data-toggle="modal" data-target="#itemModal"
ng-click="retrieveItem(config.item, config.oldValue)"> ng-click="retrieveItem(namespace, config.item, config.oldValue)">
</span> </span>
&nbsp; &nbsp;
<span class="glyphicon glyphicon-edit" aria-hidden="true" <span class="glyphicon glyphicon-edit" aria-hidden="true"
......
...@@ -128,7 +128,7 @@ ...@@ -128,7 +128,7 @@
</div> </div>
<div class="row" style="margin-top: 10px;" ng-show="diff.diffs.updateItems.length > 0"> <div class="row" style="margin-top: 10px;" ng-show="diff.diffs.updateItems.length > 0">
<div class="form-horizontal"> <div class="form-horizontal">
<label class="col-sm-2 control-label">更新的配置</label> <label class="col-sm-2 control-label">修改的配置</label>
<div class="col-sm-9"> <div class="col-sm-9">
<table class="table table-bordered table-striped table-hover"> <table class="table table-bordered table-striped table-hover">
<thead> <thead>
...@@ -169,6 +169,9 @@ ...@@ -169,6 +169,9 @@
<div ng-include="'../views/common/footer.html'"></div> <div ng-include="'../views/common/footer.html'"></div>
<!-- jquery.js -->
<script src="../vendor/jquery.min.js" type="text/javascript"></script>
<!--angular--> <!--angular-->
<script src="../vendor/angular/angular.min.js"></script> <script src="../vendor/angular/angular.min.js"></script>
<script src="../vendor/angular/angular-route.min.js"></script> <script src="../vendor/angular/angular-route.min.js"></script>
...@@ -176,8 +179,7 @@ ...@@ -176,8 +179,7 @@
<script src="../vendor/angular/angular-toastr-1.4.1.tpls.min.js"></script> <script src="../vendor/angular/angular-toastr-1.4.1.tpls.min.js"></script>
<script src="../vendor/angular/loading-bar.min.js"></script> <script src="../vendor/angular/loading-bar.min.js"></script>
<!-- jquery.js -->
<script src="vendor/jquery.min.js" type="text/javascript"></script>
<!-- bootstrap.js --> <!-- bootstrap.js -->
<script src="../vendor/bootstrap/js/bootstrap.min.js" type="text/javascript"></script> <script src="../vendor/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
......
...@@ -170,10 +170,11 @@ application_module.controller("ConfigNamespaceController", ...@@ -170,10 +170,11 @@ application_module.controller("ConfigNamespaceController",
$scope.tableViewOperType = '', $scope.item = {}; $scope.tableViewOperType = '', $scope.item = {};
//查看配置 //查看配置
$scope.retrieveItem = function (item, oldValue) { $scope.retrieveItem = function (namespace, item, oldValue) {
switchTableViewOperType(TABLE_VIEW_OPER_TYPE.RETRIEVE); switchTableViewOperType(TABLE_VIEW_OPER_TYPE.RETRIEVE);
$scope.item = item; $scope.item = item;
$scope.item.oldValue = oldValue; $scope.item.oldValue = oldValue;
toOperationNamespaceName = namespace.namespace.namespaceName;
}; };
var toDeleteItemId = 0; var toDeleteItemId = 0;
...@@ -234,8 +235,8 @@ application_module.controller("ConfigNamespaceController", ...@@ -234,8 +235,8 @@ application_module.controller("ConfigNamespaceController",
toOperationNamespaceName, toOperationNamespaceName,
$scope.item).then( $scope.item).then(
function (result) { function (result) {
toastr.success("[" + cluster.env + "," + cluster.name + "]", toastr.success(cluster.env + " , " + $scope.item.key,
"创建成功"); "添加成功");
itemModal.modal('hide'); itemModal.modal('hide');
$rootScope.refreshNamespaces(namespace_view_type.TABLE); $rootScope.refreshNamespaces(namespace_view_type.TABLE);
}, function (result) { }, function (result) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment