Skip to content

Commit

Permalink
Record and display release delivery time
Browse files Browse the repository at this point in the history
  • Loading branch information
nobodyiam committed Oct 18, 2016
1 parent 914aafa commit c2d82c0
Show file tree
Hide file tree
Showing 10 changed files with 110 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,35 @@ public PageDTO<InstanceDTO> getByRelease(@RequestParam("releaseId") long release
List<InstanceDTO> instanceDTOs = Collections.emptyList();

if (instanceConfigsPage.hasContent()) {
Set<Long> instanceIds = instanceConfigsPage.getContent().stream().map
(InstanceConfig::getInstanceId).collect(Collectors.toSet());
Multimap<Long, InstanceConfig> instanceConfigMap = HashMultimap.create();
Set<String> otherReleaseKeys = Sets.newHashSet();

for (InstanceConfig instanceConfig : instanceConfigsPage.getContent()) {
instanceConfigMap.put(instanceConfig.getInstanceId(), instanceConfig);
otherReleaseKeys.add(instanceConfig.getReleaseKey());
}

Set<Long> instanceIds = instanceConfigMap.keySet();

List<Instance> instances = instanceService.findInstancesByIds(instanceIds);

if (!CollectionUtils.isEmpty(instances)) {
instanceDTOs = BeanUtils.batchTransform(InstanceDTO.class, instances);
}

for (InstanceDTO instanceDTO : instanceDTOs) {
Collection<InstanceConfig> configs = instanceConfigMap.get(instanceDTO.getId());
List<InstanceConfigDTO> configDTOs = configs.stream().map(instanceConfig -> {
InstanceConfigDTO instanceConfigDTO = new InstanceConfigDTO();
//to save some space
instanceConfigDTO.setRelease(null);
instanceConfigDTO.setReleaseDeliveryTime(instanceConfig.getReleaseDeliveryTime());
instanceConfigDTO.setDataChangeLastModifiedTime(instanceConfig
.getDataChangeLastModifiedTime());
return instanceConfigDTO;
}).collect(Collectors.toList());
instanceDTO.setConfigs(configDTOs);
}
}

return new PageDTO<>(instanceDTOs, pageable, instanceConfigsPage.getTotalElements());
Expand Down Expand Up @@ -126,6 +147,7 @@ public List<InstanceDTO> getByReleasesNotIn(@RequestParam("appId") String appId,
List<InstanceConfigDTO> configDTOs = configs.stream().map(instanceConfig -> {
InstanceConfigDTO instanceConfigDTO = new InstanceConfigDTO();
instanceConfigDTO.setRelease(releaseMap.get(instanceConfig.getReleaseKey()));
instanceConfigDTO.setReleaseDeliveryTime(instanceConfig.getReleaseDeliveryTime());
instanceConfigDTO.setDataChangeLastModifiedTime(instanceConfig
.getDataChangeLastModifiedTime());
return instanceConfigDTO;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,15 @@ public void getByRelease() throws Exception {
String someConfigAppId = "someConfigAppId";
String someConfigNamespace = "someNamespace";
String someIp = "someIp";
Date someReleaseDeliveryTime = new Date();
Date anotherReleaseDeliveryTime = new Date();

when(releaseService.findOne(someReleaseId)).thenReturn(someRelease);

InstanceConfig someInstanceConfig = assembleInstanceConfig(someInstanceId, someConfigAppId,
someConfigNamespace, someReleaseKey);
someConfigNamespace, someReleaseKey, someReleaseDeliveryTime);
InstanceConfig anotherInstanceConfig = assembleInstanceConfig(anotherInstanceId,
someConfigAppId, someConfigNamespace, someReleaseKey);
someConfigAppId, someConfigNamespace, someReleaseKey, anotherReleaseDeliveryTime);
List<InstanceConfig> instanceConfigs = Lists.newArrayList(someInstanceConfig,
anotherInstanceConfig);
Page<InstanceConfig> instanceConfigPage = new PageImpl<>(instanceConfigs, pageable,
Expand Down Expand Up @@ -113,6 +115,12 @@ public void getByRelease() throws Exception {

verifyInstance(someInstance, someInstanceDto);
verifyInstance(anotherInstance, anotherInstanceDto);

assertEquals(1, someInstanceDto.getConfigs().size());
assertEquals(someReleaseDeliveryTime, someInstanceDto.getConfigs().get(0).getReleaseDeliveryTime());

assertEquals(1, anotherInstanceDto.getConfigs().size());
assertEquals(anotherReleaseDeliveryTime, anotherInstanceDto.getConfigs().get(0).getReleaseDeliveryTime());
}

@Test(expected = NotFoundException.class)
Expand All @@ -133,6 +141,9 @@ public void testGetByReleasesNotIn() throws Exception {
long anotherReleaseId = 2;
String releaseIds = Joiner.on(",").join(someReleaseId, anotherReleaseId);

Date someReleaseDeliveryTime = new Date();
Date anotherReleaseDeliveryTime = new Date();

Release someRelease = mock(Release.class);
Release anotherRelease = mock(Release.class);
String someReleaseKey = "someReleaseKey";
Expand All @@ -153,6 +164,8 @@ public void testGetByReleasesNotIn() throws Exception {
when(anotherInstanceConfig.getInstanceId()).thenReturn(anotherInstanceId);
when(someInstanceConfig.getReleaseKey()).thenReturn(someInstanceConfigReleaseKey);
when(anotherInstanceConfig.getReleaseKey()).thenReturn(anotherInstanceConfigReleaseKey);
when(someInstanceConfig.getReleaseDeliveryTime()).thenReturn(someReleaseDeliveryTime);
when(anotherInstanceConfig.getReleaseDeliveryTime()).thenReturn(anotherReleaseDeliveryTime);
when(instanceService.findInstanceConfigsByNamespaceWithReleaseKeysNotIn(someConfigAppId,
someConfigClusterName, someConfigNamespaceName, Sets.newHashSet(someReleaseKey,
anotherReleaseKey))).thenReturn(Lists.newArrayList(someInstanceConfig,
Expand Down Expand Up @@ -203,6 +216,10 @@ public void testGetByReleasesNotIn() throws Exception {
assertEquals(anotherInstanceConfigReleaseKey, anotherInstanceDto.getConfigs().get(0)
.getRelease()
.getReleaseKey());

assertEquals(someReleaseDeliveryTime, someInstanceDto.getConfigs().get(0).getReleaseDeliveryTime());
assertEquals(anotherReleaseDeliveryTime, anotherInstanceDto.getConfigs().get(0)
.getReleaseDeliveryTime());
}

@Test
Expand Down Expand Up @@ -284,13 +301,14 @@ private Instance assembleInstance(long instanceId, String appId, String clusterN
}

private InstanceConfig assembleInstanceConfig(long instanceId, String configAppId, String
configNamespaceName, String releaseKey) {
configNamespaceName, String releaseKey, Date releaseDeliveryTime) {
InstanceConfig instanceConfig = new InstanceConfig();
instanceConfig.setInstanceId(instanceId);
instanceConfig.setConfigAppId(configAppId);
instanceConfig.setConfigNamespaceName(configNamespaceName);
instanceConfig.setReleaseKey(releaseKey);
instanceConfig.setDataChangeLastModifiedTime(new Date());
instanceConfig.setReleaseDeliveryTime(releaseDeliveryTime);
return instanceConfig;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ public class InstanceConfig {
@Column(name = "ReleaseKey", nullable = false)
private String releaseKey;

@Column(name = "ReleaseDeliveryTime", nullable = false)
private Date releaseDeliveryTime;

@Column(name = "DataChange_CreatedTime", nullable = false)
private Date dataChangeCreatedTime;

Expand Down Expand Up @@ -123,6 +126,14 @@ public void setConfigClusterName(String configClusterName) {
this.configClusterName = configClusterName;
}

public Date getReleaseDeliveryTime() {
return releaseDeliveryTime;
}

public void setReleaseDeliveryTime(Date releaseDeliveryTime) {
this.releaseDeliveryTime = releaseDeliveryTime;
}

@Override
public String toString() {
return MoreObjects.toStringHelper(this)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ public InstanceConfig updateInstanceConfig(InstanceConfig instanceConfig) {
"Instance config %d doesn't exist", instanceConfig.getId()));

existedInstanceConfig.setReleaseKey(instanceConfig.getReleaseKey());
existedInstanceConfig.setReleaseDeliveryTime(instanceConfig.getReleaseDeliveryTime());
existedInstanceConfig.setDataChangeLastModifiedTime(instanceConfig
.getDataChangeLastModifiedTime());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
*/
public class InstanceConfigDTO {
private ReleaseDTO release;
private Date releaseDeliveryTime;
private Date dataChangeLastModifiedTime;

public ReleaseDTO getRelease() {
Expand All @@ -24,4 +25,12 @@ public Date getDataChangeLastModifiedTime() {
public void setDataChangeLastModifiedTime(Date dataChangeLastModifiedTime) {
this.dataChangeLastModifiedTime = dataChangeLastModifiedTime;
}

public Date getReleaseDeliveryTime() {
return releaseDeliveryTime;
}

public void setReleaseDeliveryTime(Date releaseDeliveryTime) {
this.releaseDeliveryTime = releaseDeliveryTime;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,14 @@ void doAudit(InstanceConfigAuditModel auditModel) {
InstanceConfig instanceConfig = instanceService.findInstanceConfig(instanceId, auditModel
.getConfigAppId(), auditModel.getConfigClusterName(), auditModel.getConfigNamespace());

//we need to update no matter the release key is the same or not, to ensure the
//last modified time is updated each day
if (instanceConfig != null) {
instanceConfig.setReleaseKey(auditModel.getReleaseKey());
instanceConfig.setDataChangeLastModifiedTime(new Date());
if (!Objects.equals(instanceConfig.getReleaseKey(), auditModel.getReleaseKey())) {
instanceConfig.setReleaseKey(auditModel.getReleaseKey());
instanceConfig.setReleaseDeliveryTime(auditModel.getOfferTime());
}
//we need to update no matter the release key is the same or not, to ensure the
//last modified time is updated each day
instanceConfig.setDataChangeLastModifiedTime(auditModel.getOfferTime());
instanceService.updateInstanceConfig(instanceConfig);
return;
}
Expand All @@ -103,6 +106,8 @@ void doAudit(InstanceConfigAuditModel auditModel) {
instanceConfig.setConfigClusterName(auditModel.getConfigClusterName());
instanceConfig.setConfigNamespaceName(auditModel.getConfigNamespace());
instanceConfig.setReleaseKey(auditModel.getReleaseKey());
instanceConfig.setReleaseDeliveryTime(auditModel.getOfferTime());
instanceConfig.setDataChangeCreatedTime(auditModel.getOfferTime());

try {
instanceService.createInstanceConfig(instanceConfig);
Expand Down Expand Up @@ -174,10 +179,12 @@ public static class InstanceConfigAuditModel {
private String configClusterName;
private String configNamespace;
private String releaseKey;
private Date offerTime;

public InstanceConfigAuditModel(String appId, String clusterName, String dataCenter, String
clientIp, String configAppId, String configClusterName, String configNamespace, String
releaseKey) {
this.offerTime = new Date();
this.appId = appId;
this.clusterName = clusterName;
this.dataCenter = Strings.isNullOrEmpty(dataCenter) ? "" : dataCenter;
Expand Down Expand Up @@ -220,6 +227,10 @@ public String getConfigClusterName() {
return configClusterName;
}

public Date getOfferTime() {
return offerTime;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,20 +83,23 @@ function ConfigBaseInfoController($rootScope, $scope, $location, toastr, UserSer
var VISITED_APPS_STORAGE_KEY = "VisitedAppsV2";
var visitedAppsObject = JSON.parse(localStorage.getItem(VISITED_APPS_STORAGE_KEY));
var hasSaved = false;
if (visitedAppsObject) {
var visitedApps = visitedAppsObject[$rootScope.pageContext.userId];
if (visitedApps && visitedApps.length > 0) {
visitedApps.forEach(function (app) {
if (app == appId) {
hasSaved = true;
return;
}
});
}

} else {
if (!visitedAppsObject) {
visitedAppsObject = {};
visitedAppsObject[$rootScope.pageContext.userId] = [];
}

if (!visitedAppsObject[$rootScope.pageContext.userId]) {
visitedAppsObject[$rootScope.pageContext.userId] = [];
}

var visitedApps = visitedAppsObject[$rootScope.pageContext.userId];
if (visitedApps && visitedApps.length > 0) {
visitedApps.forEach(function (app) {
if (app == appId) {
hasSaved = true;
return;
}
});
}

var currentUserVisitedApps = visitedAppsObject[$rootScope.pageContext.userId];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ directive_module.directive('apollonspanel',

result.forEach(function (instance) {
var configs = instance.configs;
if (configs.length > 0) {
if (configs && configs.length > 0) {
configs.forEach(function (instanceConfig) {
var release = instanceConfig.release;
if (!groupedInstances[release.id]) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -409,14 +409,16 @@
<td>Cluster Name</td>
<td>Data Center</td>
<td>IP</td>
<td>配置获取时间</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="instance in namespace.latestReleaseInstances.content">
<td width="25%" ng-bind="instance.appId"></td>
<td width="25%" ng-bind="instance.clusterName"></td>
<td width="25%" ng-bind="instance.dataCenter"></td>
<td width="25%" ng-bind="instance.ip"></td>
<td width="20%" ng-bind="instance.appId"></td>
<td width="20%" ng-bind="instance.clusterName"></td>
<td width="20%" ng-bind="instance.dataCenter"></td>
<td width="20%" ng-bind="instance.ip"></td>
<td width="20%">{{instance.configs && instance.configs.length ? (instance.configs[0].releaseDeliveryTime | date: 'yyyy-MM-dd HH:mm:ss') : ''}}</td>
</tr>
</tbody>
</table>
Expand Down Expand Up @@ -450,14 +452,16 @@
<td>Cluster Name</td>
<td>Data Center</td>
<td>IP</td>
<td>配置获取时间</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="instance in namespace.notLatestReleaseInstances[release.id]">
<td width="25%" ng-bind="instance.appId"></td>
<td width="25%" ng-bind="instance.clusterName"></td>
<td width="25%" ng-bind="instance.dataCenter"></td>
<td width="25%" ng-bind="instance.ip"></td>
<td width="20%" ng-bind="instance.appId"></td>
<td width="20%" ng-bind="instance.clusterName"></td>
<td width="20%" ng-bind="instance.dataCenter"></td>
<td width="20%" ng-bind="instance.ip"></td>
<td width="20%">{{instance.configs && instance.configs.length ? (instance.configs[0].releaseDeliveryTime | date: 'yyyy-MM-dd HH:mm:ss') : ''}}</td>
</tr>
</tbody>
</table>
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@
<dependency>
<groupId>com.ctrip.framework</groupId>
<artifactId>framework-foundation</artifactId>
<version>1.2.0</version>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>com.dianping.cat</groupId>
Expand Down

0 comments on commit c2d82c0

Please sign in to comment.