@Override public Optional<EndpointSpecificConfigurationDto> deleteActiveConfigurationByEndpointKeyHash(byte[] endpointKeyHash) { Optional<EndpointSpecificConfigurationDto> configuration = findActiveConfigurationByEndpointKeyHash(endpointKeyHash); if (configuration.isPresent()) { int confSchemaVersion = configuration.get().getConfigurationSchemaVersion(); endpointSpecificConfigurationDao.removeByEndpointKeyHashAndConfigurationVersion(endpointKeyHash, confSchemaVersion); } return configuration; }
@Override public EndpointSpecificConfiguration save(EndpointSpecificConfigurationDto dto) { LOG.debug("Saving endpoint specific configuration {}", dto); CassandraEndpointSpecificConfiguration configuration = findByEndpointKeyHashAndConfigurationVersion(dto.getEndpointKeyHash(), dto.getConfigurationSchemaVersion()); if (configuration != null) { dto.setVersion(configuration.getVersion()); } configuration = save(new CassandraEndpointSpecificConfiguration(dto)); if (LOG.isTraceEnabled()) { LOG.trace("Saved: {}", configuration); } else { LOG.debug("Saved: {}", configuration != null); } return configuration; }
@Override public EndpointSpecificConfiguration save(EndpointSpecificConfigurationDto dto) { LOG.debug("Saving endpoint specific configuration {}", dto); MongoEndpointSpecificConfiguration configuration = (MongoEndpointSpecificConfiguration) findByEndpointKeyHashAndConfigurationVersion(dto.getEndpointKeyHash(), dto.getConfigurationSchemaVersion()); if (configuration != null) { dto.setVersion(configuration.getVersion()); } configuration = save(new MongoEndpointSpecificConfiguration(dto)); if (LOG.isTraceEnabled()) { LOG.trace("Saved: {}", configuration); } else { LOG.debug("Saved: {}", configuration != null); } return configuration; }
/** * All-args constructor. */ public MongoEndpointSpecificConfiguration(EndpointSpecificConfigurationDto dto) { this.endpointKeyHash = dto.getEndpointKeyHash(); this.configurationVersion = dto.getConfigurationSchemaVersion(); this.configuration = dto.getConfiguration(); this.version = dto.getVersion(); generateId(); }
/** * Create new instance of <code>CassandraEndpointSpecificConfiguration</code>. * * @param dto is data transfer object contain data that * assign on fields of new instance */ public CassandraEndpointSpecificConfiguration(EndpointSpecificConfigurationDto dto) { this.endpointKeyHash = getByteBuffer(dto.getEndpointKeyHash()); this.configurationVersion = dto.getConfigurationSchemaVersion(); this.configuration = dto.getConfiguration(); this.version = dto.getVersion(); }
private void validateEndpointSpecificConfiguration(EndpointSpecificConfigurationDto configurationDto, String appId) { validateString(configurationDto.getConfiguration(), "Endpoint specific configuration body is required"); int configurationVersion = configurationDto.getConfigurationSchemaVersion(); String configurationBody = configurationDto.getConfiguration(); configurationBody = configurationService.normalizeAccordingToOverrideConfigurationSchema(appId, configurationVersion, configurationBody); configurationDto.setConfiguration(configurationBody); }
@Test public void testShouldDeleteActiveConfigurationByEndpointKeyHash() { when(endpointServiceMock.findEndpointProfileByKeyHash(KEY)).thenReturn(generateProfile()); when(daoMock.findByEndpointKeyHashAndConfigurationVersion(KEY, CONF_VERSION)).thenReturn(configuration); when(configuration.toDto()).thenReturn(configurationDto); when(configurationDto.getConfigurationSchemaVersion()).thenReturn(CONF_VERSION); Assert.assertTrue(SERVICE.deleteActiveConfigurationByEndpointKeyHash(KEY).isPresent()); verify(endpointServiceMock).findEndpointProfileByKeyHash(KEY); verify(daoMock).findByEndpointKeyHashAndConfigurationVersion(KEY, CONF_VERSION); verify(daoMock).removeByEndpointKeyHashAndConfigurationVersion(KEY, CONF_VERSION); }
@Test public void testShouldDeleteByEndpointKeyHashAndConfSchemaVersion() { EndpointProfileDto profile = generateProfile(); profile.setConfigurationVersion(0); when(endpointServiceMock.findEndpointProfileByKeyHash(KEY)).thenReturn(profile); when(daoMock.findByEndpointKeyHashAndConfigurationVersion(KEY, CONF_VERSION)).thenReturn(configuration); when(configuration.toDto()).thenReturn(configurationDto); when(configurationServiceMock.findConfSchemaByAppIdAndVersion(APP_ID, CONF_VERSION)).thenReturn(new ConfigurationSchemaDto()); when(configurationDto.getConfigurationSchemaVersion()).thenReturn(CONF_VERSION); Assert.assertTrue(SERVICE.deleteByEndpointKeyHashAndConfSchemaVersion(KEY, CONF_VERSION).isPresent()); verify(endpointServiceMock).findEndpointProfileByKeyHash(KEY); verify(daoMock).findByEndpointKeyHashAndConfigurationVersion(KEY, CONF_VERSION); verify(daoMock).removeByEndpointKeyHashAndConfigurationVersion(KEY, CONF_VERSION); verify(configurationServiceMock).findConfSchemaByAppIdAndVersion(APP_ID, CONF_VERSION); }
@Override public EndpointSpecificConfigurationDto save(EndpointSpecificConfigurationDto configurationDto) { EndpointProfileDto profileDto = getEndpointProfileDto(configurationDto.getEndpointKeyHash()); if (configurationDto.getConfigurationSchemaVersion() == null) { configurationDto.setConfigurationSchemaVersion(profileDto.getConfigurationVersion()); } validateEndpointSpecificConfiguration(configurationDto, profileDto.getApplicationId()); return endpointSpecificConfigurationDao.save(configurationDto).toDto(); }
private void sendEndpointConfigurationRefreshMessage(EndpointSpecificConfigurationDto configuration) { byte[] endpointKeyHashBytes = configuration.getEndpointKeyHash(); EndpointProfileDto endpointProfile = endpointService.findEndpointProfileByKeyHash(endpointKeyHashBytes); if (!configuration.getConfigurationSchemaVersion().equals(endpointProfile.getConfigurationVersion())) { return; } checkNeighbors(); String endpointKeyHash = Base64Util.encode(configuration.getEndpointKeyHash()); ApplicationDto appDto = applicationService.findAppById(endpointProfile.getApplicationId()); OperationsNodeInfo server = resolve(endpointKeyHash); if (server != null) { ThriftEndpointConfigurationRefreshMessage msg = new ThriftEndpointConfigurationRefreshMessage(); msg.setAddress(new ThriftEntityAddress(appDto.getTenantId(), appDto.getApplicationToken(), ThriftClusterEntityType.ENDPOINT, ByteBuffer.wrap(endpointKeyHashBytes))); msg.setActorClassifier(ThriftActorClassifier.GLOBAL); if (LOG.isTraceEnabled()) { LOG.trace("Sending message {} to [{}]", msg, Neighbors.getServerId(server.getConnectionInfo())); } neighbors.sendMessage(server.getConnectionInfo(), OperationsServiceMsg.fromEndpointConfigurationRefresh(msg)); } else { LOG.warn("Can't find server for endpoint [{}]", endpointKeyHash); } }