This is an automated email from the ASF dual-hosted git repository.
tison pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-manager.git
The following commit(s) were added to refs/heads/master by this push:
new ee83cd2 feat: Support different environments to use different tokens
(#500)
ee83cd2 is described below
commit ee83cd22c99c44091b3b37054cdcffec4284dadf
Author: hrzzzz <[email protected]>
AuthorDate: Thu Jun 1 23:39:10 2023 +0800
feat: Support different environments to use different tokens (#500)
Co-authored-by: ruihongzhou <[email protected]>
---
front-end/src/lang/en.js | 4 +++
front-end/src/lang/zh.js | 4 +++
.../src/views/management/environments/index.vue | 28 +++++++++++----
.../manager/controller/EnvironmentsController.java | 4 +--
.../pulsar/manager/entity/EnvironmentEntity.java | 1 +
.../pulsar/manager/mapper/EnvironmentsMapper.java | 14 ++++----
.../manager/service/EnvironmentCacheService.java | 14 ++++++++
.../pulsar/manager/service/PulsarAdminService.java | 1 +
.../manager/service/impl/BrokersServiceImpl.java | 9 ++++-
.../service/impl/EnvironmentCacheServiceImpl.java | 14 ++++++++
.../service/impl/PulsarAdminServiceImpl.java | 41 ++++++++++++++++++++--
src/main/resources/META-INF/sql/herddb-schema.sql | 3 +-
src/main/resources/META-INF/sql/mysql-schema.sql | 1 +
.../resources/META-INF/sql/postgresql-schema.sql | 1 +
src/main/resources/META-INF/sql/sqlite-schema.sql | 1 +
.../dao/EnvironmentsRepositoryImplTest.java | 6 ++++
16 files changed, 126 insertions(+), 20 deletions(-)
diff --git a/front-end/src/lang/en.js b/front-end/src/lang/en.js
index 1161a62..5e01669 100644
--- a/front-end/src/lang/en.js
+++ b/front-end/src/lang/en.js
@@ -763,10 +763,14 @@ export default {
updateEnvNameLabel: 'Environment Name',
updateEnvServiceUrlPlaceHolder: 'Please input environment service url',
updateEnvBookieUrlPlaceHolder: 'Please input environment bookie url',
+ updateEnvTokenPlaceHolder: 'Please input environment token',
newEnvBookieUrlPlaceHolder: 'Please input environment bookie url',
+ newEnvTokenPlaceHolder: 'Please input environment token',
updateEnvServiceUrlLabel: 'Service URL',
updateEnvBookieUrlLabel: 'Bookie URL',
+ updateEnvTokenLabel: "Token",
newEnvBookieUrlLabel: 'Bookie URL',
+ newEnvTokenLabel: 'Token',
deleteEnvDialogCaption: 'Delete Environment',
deleteEnvDialogText: 'Are you sure you want to delete this environment?',
envNameIsRequired: 'Environment Name is required',
diff --git a/front-end/src/lang/zh.js b/front-end/src/lang/zh.js
index 610d2ba..fe7ec7a 100644
--- a/front-end/src/lang/zh.js
+++ b/front-end/src/lang/zh.js
@@ -757,14 +757,18 @@ export default {
newEnvNameLabel: 'Environment Name',
newEnvServiceUrlPlaceHolder: 'Please input environment service url',
newEnvBookieUrlPlaceHolder: 'Please input environment bookie url',
+ newEnvTokenPlaceHolder: 'Please input environment token',
newEnvServiceUrlLabel: 'Service URL',
newEnvBookieUrlLabel: 'Bookie URL',
+ newEnvTokenLabel: 'Token',
updateEnvDialogCaption: 'Update Environment',
updateEnvNameLabel: 'Environment Name',
updateEnvServiceUrlPlaceHolder: 'Please input environment service url',
updateEnvBookieUrlPlaceHolder: 'Please input environment bookie url',
+ updateEnvTokenPlaceHolder: 'Please input environment token',
updateEnvServiceUrlLabel: 'Service URL',
updateEnvBookieUrlLabel: 'Bookie URL',
+ updateEnvTokenLabel: "Token",
deleteEnvDialogCaption: 'Delete Environment',
deleteEnvDialogText: 'Are you sure you want to delete this environment?',
envNameIsRequired: 'Environment Name is required',
diff --git a/front-end/src/views/management/environments/index.vue
b/front-end/src/views/management/environments/index.vue
index 2aea2d7..383544e 100644
--- a/front-end/src/views/management/environments/index.vue
+++ b/front-end/src/views/management/environments/index.vue
@@ -67,6 +67,10 @@
<el-input v-model="form.bookie"
:placeholder="$t('env.newEnvBookieUrlPlaceHolder')"/>
</el-form-item>
+ <el-form-item v-if="dialogStatus==='create'"
:label="$t('env.newEnvTokenLabel')" prop="token">
+ <el-input v-model="form.token"
:placeholder="$t('env.newEnvTokenPlaceHolder')"/>
+ </el-form-item>
+
<el-form-item v-if="dialogStatus==='update'"
:label="$t('env.updateEnvNameLabel')">
<el-tag type="primary" size="medium">{{ form.environment }}</el-tag>
</el-form-item>
@@ -77,6 +81,11 @@
<el-form-item v-if="dialogStatus==='update'"
:label="$t('env.updateEnvBookieUrlLabel')" prop="bookie">
<el-input v-model="form.bookie"
:placeholder="$t('env.updateEnvBookieUrlPlaceHolder')"/>
</el-form-item>
+
+ <el-form-item v-if="dialogStatus==='update'"
:label="$t('env.updateEnvTokenLabel')" prop="token">
+ <el-input v-model="form.token"
:placeholder="$t('env.updateEnvTokenPlaceHolder')"/>
+ </el-form-item>
+
<el-form-item v-if="dialogStatus==='delete'">
<h4>{{ $t('env.deleteEnvDialogText') }}</h4>
</el-form-item>
@@ -111,19 +120,22 @@
form: {
environment: '',
broker: '',
- bookie: ''
+ bookie: '',
+ token: null
},
temp: {
'name': '',
'broker': '',
- 'bookie': ''
+ 'bookie': '',
+ 'token': '',
},
superUser: false,
roles: [],
rules: {
environment: [{ required: true, message:
this.$i18n.t('env.envNameIsRequired'), trigger: 'blur' }],
broker: [{ required: true, message:
this.$i18n.t('env.serviceUrlIsRequired'), trigger: 'blur' }],
- bookie: [{ required: true, message:
this.$i18n.t('env.bookieUrlIsRequired'), trigger: 'blur' }]
+ bookie: [{ required: true, message:
this.$i18n.t('env.bookieUrlIsRequired'), trigger: 'blur' }],
+ token: [{ required: false }]
}
}
},
@@ -145,7 +157,8 @@
this.environmentList.push({
'environment': response.data.data[i].name,
'broker': response.data.data[i].broker,
- 'bookie': response.data.data[i].bookie
+ 'bookie': response.data.data[i].bookie,
+ 'token': response.data.data[i].token
})
}
})
@@ -166,6 +179,7 @@
this.form.environment = row.environment
this.form.broker = row.broker
this.form.bookie = row.bookie
+ this.form.token = row.token
this.dialogFormVisible = true
this.dialogStatus = 'update'
},
@@ -190,7 +204,8 @@
const data = {
'name': this.form.environment,
'broker': this.form.broker,
- 'bookie': this.form.bookie
+ 'bookie': this.form.bookie,
+ 'token': this.form.token
}
putEnvironment(data).then(response => {
if (!response.data) return
@@ -243,7 +258,8 @@
const data = {
'name': this.form.environment,
'broker': this.form.broker,
- 'bookie': this.form.bookie
+ 'bookie': this.form.bookie,
+ 'token': this.form.token
}
updateEnvironment(data).then(response => {
if (!response.data) return
diff --git
a/src/main/java/org/apache/pulsar/manager/controller/EnvironmentsController.java
b/src/main/java/org/apache/pulsar/manager/controller/EnvironmentsController.java
index 4b8662f..a0ce1a7 100644
---
a/src/main/java/org/apache/pulsar/manager/controller/EnvironmentsController.java
+++
b/src/main/java/org/apache/pulsar/manager/controller/EnvironmentsController.java
@@ -120,7 +120,7 @@ public class EnvironmentsController {
return ResponseEntity.ok(result);
}
try {
-
pulsarAdminService.clusters(environmentEntity.getBroker()).getClusters();
+ pulsarAdminService.clusters(environmentEntity.getBroker(),
environmentEntity.getToken()).getClusters();
} catch (PulsarAdminException e) {
log.error("Failed to get clusters list.", e);
result.put("error", "This environment is error. Please check it");
@@ -147,7 +147,7 @@ public class EnvironmentsController {
return ResponseEntity.ok(result);
}
try {
-
pulsarAdminService.clusters(environmentEntity.getBroker()).getClusters();
+ pulsarAdminService.clusters(environmentEntity.getBroker(),
environmentEntity.getToken()).getClusters();
} catch (PulsarAdminException e) {
log.error("Failed to get clusters list.", e);
result.put("error", "This environment is error. Please check it");
diff --git
a/src/main/java/org/apache/pulsar/manager/entity/EnvironmentEntity.java
b/src/main/java/org/apache/pulsar/manager/entity/EnvironmentEntity.java
index 26d8483..23007af 100644
--- a/src/main/java/org/apache/pulsar/manager/entity/EnvironmentEntity.java
+++ b/src/main/java/org/apache/pulsar/manager/entity/EnvironmentEntity.java
@@ -27,4 +27,5 @@ public class EnvironmentEntity {
private String name;
private String broker;
private String bookie;
+ private String token;
}
diff --git
a/src/main/java/org/apache/pulsar/manager/mapper/EnvironmentsMapper.java
b/src/main/java/org/apache/pulsar/manager/mapper/EnvironmentsMapper.java
index b017856..9f2f26f 100644
--- a/src/main/java/org/apache/pulsar/manager/mapper/EnvironmentsMapper.java
+++ b/src/main/java/org/apache/pulsar/manager/mapper/EnvironmentsMapper.java
@@ -22,28 +22,28 @@ import java.util.List;
@Mapper
public interface EnvironmentsMapper {
- @Insert("INSERT INTO environments(name,broker,bookie)
VALUES(#{name},#{broker},#{bookie})")
+ @Insert("INSERT INTO environments(name,broker,bookie,token)
VALUES(#{name},#{broker},#{bookie},#{token})")
void insert(EnvironmentEntity environmentEntity);
- @Select("SELECT name,broker,bookie FROM environments where
broker=#{broker}")
+ @Select("SELECT name,broker,bookie,token FROM environments where
broker=#{broker}")
EnvironmentEntity findByBroker(String broker);
- @Select("SELECT name,broker,bookie FROM environments where name=#{name}")
+ @Select("SELECT name,broker,bookie,token FROM environments where
name=#{name}")
EnvironmentEntity findByName(String name);
- @Select("SELECT name,broker,bookie FROM environments")
+ @Select("SELECT name,broker,bookie,token FROM environments")
Page<EnvironmentEntity> findEnvironmentsList();
@Select({"<script>",
- "SELECT name,broker,bookie FROM environments",
+ "SELECT name,broker,bookie,token FROM environments",
"WHERE name IN <foreach collection='nameList' item='name' open='('
separator=',' close=')'> #{name} </foreach>" +
"</script>"})
Page<EnvironmentEntity> findEnvironmentsListByMultiName(@Param("nameList")
List<String> nameList);
- @Select("SELECT name,broker,bookie FROM environments")
+ @Select("SELECT name,broker,bookie,token FROM environments")
List<EnvironmentEntity> getAllEnvironments();
- @Update("UPDATE environments set broker=#{broker},bookie=#{bookie} where
name=#{name}")
+ @Update("UPDATE environments set
broker=#{broker},bookie=#{bookie},token=#{token} where name=#{name}")
void update(EnvironmentEntity environmentEntity);
@Delete("DELETE FROM environments WHERE name=#{name}")
diff --git
a/src/main/java/org/apache/pulsar/manager/service/EnvironmentCacheService.java
b/src/main/java/org/apache/pulsar/manager/service/EnvironmentCacheService.java
index eb33f93..f6ba388 100644
---
a/src/main/java/org/apache/pulsar/manager/service/EnvironmentCacheService.java
+++
b/src/main/java/org/apache/pulsar/manager/service/EnvironmentCacheService.java
@@ -50,6 +50,20 @@ public interface EnvironmentCacheService {
*/
String getServiceUrl(String environment, String cluster);
+ /**
+ * Return the environment name for a given service url.
+ * @param serviceUrl
+ * @return
+ */
+ String getEnvironment(String serviceUrl);
+
+ /**
+ * Set the mapping of serviceUrl and environment.
+ * @param serviceUrl
+ * @param environment
+ */
+ void setServiceUrlEnvironmentMapping(String serviceUrl, String
environment);
+
/**
* Refresh all the environments.
*/
diff --git
a/src/main/java/org/apache/pulsar/manager/service/PulsarAdminService.java
b/src/main/java/org/apache/pulsar/manager/service/PulsarAdminService.java
index ba2838f..0afdb6f 100644
--- a/src/main/java/org/apache/pulsar/manager/service/PulsarAdminService.java
+++ b/src/main/java/org/apache/pulsar/manager/service/PulsarAdminService.java
@@ -27,6 +27,7 @@ public interface PulsarAdminService {
PulsarAdmin getPulsarAdmin(String url);
BrokerStats brokerStats(String url);
Clusters clusters(String url);
+ Clusters clusters(String url, String token);
Brokers brokers(String url);
Tenants tenants(String url);
Namespaces namespaces(String url);
diff --git
a/src/main/java/org/apache/pulsar/manager/service/impl/BrokersServiceImpl.java
b/src/main/java/org/apache/pulsar/manager/service/impl/BrokersServiceImpl.java
index e632e85..2fedd11 100644
---
a/src/main/java/org/apache/pulsar/manager/service/impl/BrokersServiceImpl.java
+++
b/src/main/java/org/apache/pulsar/manager/service/impl/BrokersServiceImpl.java
@@ -19,6 +19,7 @@ import org.apache.pulsar.client.admin.PulsarAdminException;
import org.apache.pulsar.common.policies.data.FailureDomain;
import
org.apache.pulsar.manager.controller.exception.PulsarAdminOperationException;
import org.apache.pulsar.manager.service.BrokersService;
+import org.apache.pulsar.manager.service.EnvironmentCacheService;
import org.apache.pulsar.manager.service.PulsarAdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -37,9 +38,12 @@ public class BrokersServiceImpl implements BrokersService {
private final PulsarAdminService pulsarAdminService;
+ private final EnvironmentCacheService environmentCacheService;
+
@Autowired
- public BrokersServiceImpl(PulsarAdminService pulsarAdminService) {
+ public BrokersServiceImpl(PulsarAdminService pulsarAdminService,
EnvironmentCacheService environmentCacheService) {
this.pulsarAdminService = pulsarAdminService;
+ this.environmentCacheService = environmentCacheService;
}
@@ -67,7 +71,10 @@ public class BrokersServiceImpl implements BrokersService {
throw pulsarAdminOperationException;
}
+ String environment =
environmentCacheService.getEnvironment(requestHost);
+
for (String broker: brokersList) {
+
environmentCacheService.setServiceUrlEnvironmentMapping("http://" + broker,
environment);
Map<String, Object> brokerEntity = Maps.newHashMap();
List<String> failureDomain = this.getFailureDomain(broker,
failureDomains);
brokerEntity.put("broker", broker);
diff --git
a/src/main/java/org/apache/pulsar/manager/service/impl/EnvironmentCacheServiceImpl.java
b/src/main/java/org/apache/pulsar/manager/service/impl/EnvironmentCacheServiceImpl.java
index cce6ba0..4ea07aa 100644
---
a/src/main/java/org/apache/pulsar/manager/service/impl/EnvironmentCacheServiceImpl.java
+++
b/src/main/java/org/apache/pulsar/manager/service/impl/EnvironmentCacheServiceImpl.java
@@ -51,11 +51,14 @@ public class EnvironmentCacheServiceImpl implements
EnvironmentCacheService {
private final PulsarAdminService pulsarAdminService;
+ private final Map<String, String> serviceUrlEnvironmentMap;
+
@Autowired
public EnvironmentCacheServiceImpl(EnvironmentsRepository
environmentsRepository, PulsarAdminService pulsarAdminService) {
this.environmentsRepository = environmentsRepository;
this.environments = new ConcurrentHashMap<>();
this.pulsarAdminService = pulsarAdminService;
+ this.serviceUrlEnvironmentMap = new ConcurrentHashMap<>();
}
@Override
@@ -93,6 +96,16 @@ public class EnvironmentCacheServiceImpl implements
EnvironmentCacheService {
}
}
+ @Override
+ public void setServiceUrlEnvironmentMapping(String serviceUrl, String
environment) {
+ serviceUrlEnvironmentMap.put(serviceUrl, environment);
+ }
+
+ @Override
+ public String getEnvironment(String serviceUrl) {
+ return serviceUrlEnvironmentMap.get(serviceUrl);
+ }
+
private String pickOneServiceUrl(String webServiceUrl) {
if (webServiceUrl.contains(",")) {
String[] webServiceUrlList = webServiceUrl.split(",");
@@ -215,6 +228,7 @@ public class EnvironmentCacheServiceImpl implements
EnvironmentCacheService {
environment.getName(),
(e) -> new ConcurrentHashMap<>());
clusters.put(cluster, clusterData);
+ serviceUrlEnvironmentMap.put(environment.getBroker(),
environment.getName());
log.info("Successfully loaded cluster data for cluster {} @
environment {} : {}",
cluster, environment.getName(), clusterData);
return clusterData;
diff --git
a/src/main/java/org/apache/pulsar/manager/service/impl/PulsarAdminServiceImpl.java
b/src/main/java/org/apache/pulsar/manager/service/impl/PulsarAdminServiceImpl.java
index 3d89d75..c269dfa 100644
---
a/src/main/java/org/apache/pulsar/manager/service/impl/PulsarAdminServiceImpl.java
+++
b/src/main/java/org/apache/pulsar/manager/service/impl/PulsarAdminServiceImpl.java
@@ -17,6 +17,7 @@ import javax.annotation.PreDestroy;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
@@ -35,7 +36,11 @@ import
org.apache.pulsar.client.api.AuthenticationDataProvider;
import org.apache.pulsar.client.api.AuthenticationFactory;
import org.apache.pulsar.client.api.PulsarClientException;
import
org.apache.pulsar.manager.controller.exception.PulsarAdminOperationException;
+import org.apache.pulsar.manager.entity.EnvironmentEntity;
+import org.apache.pulsar.manager.entity.EnvironmentsRepository;
+import org.apache.pulsar.manager.service.EnvironmentCacheService;
import org.apache.pulsar.manager.service.PulsarAdminService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -63,6 +68,12 @@ public class PulsarAdminServiceImpl implements
PulsarAdminService {
private Map<String, PulsarAdmin> pulsarAdmins = new HashMap<>();
+ @Autowired
+ private EnvironmentsRepository environmentsRepository;
+
+ @Autowired
+ private EnvironmentCacheService environmentCacheService;
+
@PreDestroy
public void destroy() {
pulsarAdmins.values().forEach(value -> value.close());
@@ -70,11 +81,15 @@ public class PulsarAdminServiceImpl implements
PulsarAdminService {
public synchronized PulsarAdmin getPulsarAdmin(String url) {
if (!pulsarAdmins.containsKey(url)) {
- pulsarAdmins.put(url, this.createPulsarAdmin(url));
+ pulsarAdmins.put(url, this.createPulsarAdmin(url, null));
}
return pulsarAdmins.get(url);
}
+ public PulsarAdmin getPulsarAdmin(String url, String token) {
+ return this.createPulsarAdmin(url, token);
+ }
+
public BrokerStats brokerStats(String url) {
return getPulsarAdmin(url).brokerStats();
}
@@ -83,6 +98,11 @@ public class PulsarAdminServiceImpl implements
PulsarAdminService {
return getPulsarAdmin(url).clusters();
}
+ @Override
+ public Clusters clusters(String url, String token) {
+ return getPulsarAdmin(url, token).clusters();
+ }
+
public Brokers brokers(String url) {
return getPulsarAdmin(url).brokers();
}
@@ -129,13 +149,28 @@ public class PulsarAdminServiceImpl implements
PulsarAdminService {
return result;
}
- private PulsarAdmin createPulsarAdmin(String url) {
+ private String getEnvironmentToken(String url) {
+ Optional<EnvironmentEntity> optionalEnvironmentEntity =
environmentsRepository.findByBroker(url);
+ if (optionalEnvironmentEntity.isPresent()) {
+ return optionalEnvironmentEntity.get().getToken();
+ }
+ String environment = environmentCacheService.getEnvironment(url);
+ Optional<EnvironmentEntity> environmentEntityOptional =
environmentsRepository.findByName(environment);
+ return
environmentEntityOptional.map(EnvironmentEntity::getToken).orElse(null);
+ }
+
+ private PulsarAdmin createPulsarAdmin(String url, String token) {
try {
log.info("Create Pulsar Admin instance. url={}, authPlugin={},
authParams={}, tlsAllowInsecureConnection={}, tlsTrustCertsFilePath={},
tlsEnableHostnameVerification={}",
url, authPlugin, authParams, tlsAllowInsecureConnection,
tlsTrustCertsFilePath, tlsEnableHostnameVerification);
PulsarAdminBuilder pulsarAdminBuilder = PulsarAdmin.builder();
pulsarAdminBuilder.serviceHttpUrl(url);
- if (StringUtils.isNotBlank(pulsarJwtToken)) {
+ if (null == token) {
+ token = getEnvironmentToken(url);
+ }
+ if (StringUtils.isNotBlank(token)) {
+
pulsarAdminBuilder.authentication(AuthenticationFactory.token(token));
+ } else if (StringUtils.isNotBlank(pulsarJwtToken)) {
pulsarAdminBuilder.authentication(AuthenticationFactory.token(pulsarJwtToken));
} else {
pulsarAdminBuilder.authentication(authPlugin, authParams);
diff --git a/src/main/resources/META-INF/sql/herddb-schema.sql
b/src/main/resources/META-INF/sql/herddb-schema.sql
index 4d3e9c7..6dd985d 100644
--- a/src/main/resources/META-INF/sql/herddb-schema.sql
+++ b/src/main/resources/META-INF/sql/herddb-schema.sql
@@ -16,7 +16,8 @@
CREATE TABLE IF NOT EXISTS environments (
name varchar(256) NOT NULL PRIMARY KEY,
broker varchar(1024) NOT NULL,
- bookie varchar(1024) NOT NULL
+ bookie varchar(1024) NOT NULL,
+ token varchar(1024)
);
CREATE TABLE IF NOT EXISTS topics_stats (
diff --git a/src/main/resources/META-INF/sql/mysql-schema.sql
b/src/main/resources/META-INF/sql/mysql-schema.sql
index 7b09dd1..5474f11 100644
--- a/src/main/resources/META-INF/sql/mysql-schema.sql
+++ b/src/main/resources/META-INF/sql/mysql-schema.sql
@@ -20,6 +20,7 @@ CREATE TABLE IF NOT EXISTS environments (
name varchar(256) NOT NULL,
broker varchar(1024) NOT NULL,
bookie varchar(1024) NOT NULL,
+ token varchar(1024),
CONSTRAINT PK_name PRIMARY KEY (name),
UNIQUE (broker)
)ENGINE=InnoDB CHARACTER SET utf8;
diff --git a/src/main/resources/META-INF/sql/postgresql-schema.sql
b/src/main/resources/META-INF/sql/postgresql-schema.sql
index a208030..40d1d32 100644
--- a/src/main/resources/META-INF/sql/postgresql-schema.sql
+++ b/src/main/resources/META-INF/sql/postgresql-schema.sql
@@ -20,6 +20,7 @@ CREATE TABLE IF NOT EXISTS environments (
name varchar(256) NOT NULL,
broker varchar(1024) NOT NULL,
bookie varchar(1024) NOT NULL,
+ token varchar(1024),
CONSTRAINT PK_name PRIMARY KEY (name),
UNIQUE (broker)
);
diff --git a/src/main/resources/META-INF/sql/sqlite-schema.sql
b/src/main/resources/META-INF/sql/sqlite-schema.sql
index 8d54416..ce8a134 100644
--- a/src/main/resources/META-INF/sql/sqlite-schema.sql
+++ b/src/main/resources/META-INF/sql/sqlite-schema.sql
@@ -16,6 +16,7 @@ CREATE TABLE IF NOT EXISTS environments (
name varchar(256) NOT NULL,
broker varchar(1024) NOT NULL,
bookie varchar(1024) NOT NULL,
+ token varchar(1024),
CONSTRAINT PK_name PRIMARY KEY (name),
UNIQUE (broker)
);
diff --git
a/src/test/java/org/apache/pulsar/manager/dao/EnvironmentsRepositoryImplTest.java
b/src/test/java/org/apache/pulsar/manager/dao/EnvironmentsRepositoryImplTest.java
index ff7397e..9f2c6e0 100644
---
a/src/test/java/org/apache/pulsar/manager/dao/EnvironmentsRepositoryImplTest.java
+++
b/src/test/java/org/apache/pulsar/manager/dao/EnvironmentsRepositoryImplTest.java
@@ -47,12 +47,14 @@ public class EnvironmentsRepositoryImplTest {
environmentEntity.setName("test-environment");
environmentEntity.setBroker("http://localhost:8080");
environmentEntity.setBookie("http://localhost:8000");
+ environmentEntity.setToken("token");
environmentsRepository.save(environmentEntity);
Page<EnvironmentEntity> environmentEntityPage =
environmentsRepository.getEnvironmentsList(1, 1);
environmentEntityPage.count(true);
environmentEntityPage.getResult().forEach((result) -> {
Assert.assertEquals("test-environment", result.getName());
Assert.assertEquals("http://localhost:8080", result.getBroker());
+ Assert.assertEquals("token", result.getToken());
environmentsRepository.remove(result.getName());
});
}
@@ -63,21 +65,25 @@ public class EnvironmentsRepositoryImplTest {
environmentEntity.setName("test-environment");
environmentEntity.setBroker("https://localhost:8080");
environmentEntity.setBookie("https://localhost:8000");
+ environmentEntity.setToken("token");
environmentsRepository.save(environmentEntity);
Optional<EnvironmentEntity> environmentEntityOptionalGet =
environmentsRepository
.findByBroker("https://localhost:8080");
EnvironmentEntity environmentEntityGet =
environmentEntityOptionalGet.get();
Assert.assertEquals("test-environment",
environmentEntityGet.getName());
Assert.assertEquals("https://localhost:8080",
environmentEntityGet.getBroker());
+ Assert.assertEquals("token", environmentEntityGet.getToken());
environmentEntity.setBroker("https://localhost:8081");
environmentEntity.setBookie("https://localhost:8001");
+ environmentEntity.setToken("token1");
environmentsRepository.update(environmentEntity);
Optional<EnvironmentEntity> environmentEntityOptionalUpdate =
environmentsRepository
.findByName("test-environment");
EnvironmentEntity environmentEntityUpdate =
environmentEntityOptionalUpdate.get();
Assert.assertEquals("test-environment",
environmentEntityUpdate.getName());
Assert.assertEquals("https://localhost:8081",
environmentEntityUpdate.getBroker());
+ Assert.assertEquals("token1", environmentEntityUpdate.getToken());
environmentsRepository.remove(environmentEntityUpdate.getName());
}