Skip to content
Snippets Groups Projects
Commit 0243115c authored by Neelesh Thakur's avatar Neelesh Thakur
Browse files

add id for list all workflows

parent 663159ac
No related branches found
No related tags found
1 merge request!14update API to delegate secret retrieval via service and change azure backend to table storage
Pipeline #10432 passed
......@@ -10,8 +10,6 @@ import org.springframework.stereotype.Component;
@Component
public class CloudTableStore {
private final String PARTITION_KEY = "PartitionKey";
@Autowired
private CloudTable cloudTableClient;
......@@ -28,10 +26,10 @@ public class CloudTableStore {
}
}
public Iterable<? extends TableEntity> queryByPartitionId(final Class<? extends TableEntity> clazzType, String value) {
public Iterable<? extends TableEntity> queryByKey(final Class<? extends TableEntity> clazzType, final String key, final String value) {
String partitionFilter = TableQuery.generateFilterCondition(
PARTITION_KEY,
key,
TableQuery.QueryComparisons.EQUAL,
value);
......@@ -41,6 +39,29 @@ public class CloudTableStore {
return this.cloudTableClient.execute(partitionQuery);
}
public Iterable<? extends TableEntity> queryByCompoundKey(final Class<? extends TableEntity> clazzType,
final String rowKey, final String rowValue,
final String valueKey, final String value) {
String rowFilter = TableQuery.generateFilterCondition(
rowKey,
TableQuery.QueryComparisons.EQUAL,
rowValue);
String valueFilter = TableQuery.generateFilterCondition(
valueKey,
TableQuery.QueryComparisons.EQUAL,
value);
String combinedFilter = TableQuery.combineFilters(rowFilter,
TableQuery.Operators.AND, valueFilter);
TableQuery<? extends TableEntity> partitionQuery = TableQuery.from(clazzType)
.where(combinedFilter);
return this.cloudTableClient.execute(partitionQuery);
}
public void insertBatchEntities(TableBatchOperation batchOperation) {
try {
this.cloudTableClient.execute(batchOperation);
......
......@@ -15,6 +15,13 @@ import java.util.Map;
@Component
public class PartitionTableStore {
private final static String ID = "id";
private final static String VALUE = "value";
private final static String SENSITIVE = "sensitive";
private final String PARTITION_KEY = "PartitionKey";
private final String ROW_KEY = "RowKey";
@Autowired
private CloudTableStore cloudTableStore;
......@@ -22,6 +29,7 @@ public class PartitionTableStore {
Map<String, Property> requestProperties = partitionInfo.getProperties();
TableBatchOperation batchOperation = new TableBatchOperation();
batchOperation.insertOrReplace(this.getIdPartitionEntity(partitionId));
for (Map.Entry<String, Property> entry : requestProperties.entrySet()) {
String key = entry.getKey();
Property property = entry.getValue();
......@@ -32,8 +40,8 @@ public class PartitionTableStore {
if (property.isSensitive()) {
property.setValue(this.getTenantSafeSecreteId(partitionId, String.valueOf(property.getValue())));
}
properties.put("value", new EntityProperty(String.valueOf(property.getValue())));
properties.put("sensitive", new EntityProperty(property.isSensitive()));
properties.put(VALUE, new EntityProperty(String.valueOf(property.getValue())));
properties.put(SENSITIVE, new EntityProperty(property.isSensitive()));
partitionEntity.setProperties(properties);
batchOperation.insertOrReplace(partitionEntity);
}
......@@ -42,15 +50,14 @@ public class PartitionTableStore {
}
public boolean partitionExists(String partitionId) {
List<PartitionEntity> partitionEntities = this.queryByPartitionId(partitionId);
return !partitionEntities.isEmpty();
List<PartitionEntity> partitionEntities = this.queryById(partitionId);
return partitionEntities.size() == 1;
}
public Map<String, Property> getPartition(String partitionId) {
Map<String, Property> out = new HashMap<>();
List<PartitionEntity> partitionEntities = this.queryByPartitionId(partitionId);
List<PartitionEntity> partitionEntities = this.getAllByPartitionId(partitionId);
if (partitionEntities.isEmpty()) {
return out;
}
......@@ -58,33 +65,55 @@ public class PartitionTableStore {
for (PartitionEntity pe : partitionEntities) {
Property property = Property.builder().build();
HashMap<String, EntityProperty> properties = pe.getProperties();
if (properties.containsKey("sensitive")) {
property.setSensitive(properties.get("sensitive").getValueAsBoolean());
if (properties.containsKey(SENSITIVE)) {
property.setSensitive(properties.get(SENSITIVE).getValueAsBoolean());
}
if (properties.containsKey("value")) {
property.setValue(properties.get("value").getValueAsString());
if (properties.containsKey(VALUE)) {
property.setValue(properties.get(VALUE).getValueAsString());
}
out.put(pe.getRowKey(), property);
}
return out;
}
public List<PartitionEntity> queryByPartitionId(String partitionId) {
public void deletePartition(String partitionId) {
Iterable<PartitionEntity> results = (Iterable<PartitionEntity>) this.cloudTableStore.queryByKey(PartitionEntity.class,
PARTITION_KEY, partitionId);
for (PartitionEntity tableEntity : results) {
this.cloudTableStore.deleteCloudTableEntity(PartitionEntity.class, tableEntity.getPartitionKey(), tableEntity.getRowKey());
}
}
private List<PartitionEntity> queryById(String partitionId) {
List<PartitionEntity> out = new ArrayList<>();
Iterable<PartitionEntity> results = (Iterable<PartitionEntity>) this.cloudTableStore.queryByPartitionId(PartitionEntity.class, partitionId);
Iterable<PartitionEntity> results = (Iterable<PartitionEntity>) this.cloudTableStore.queryByCompoundKey(PartitionEntity.class,
ROW_KEY, ID,
VALUE, partitionId);
for (PartitionEntity tableEntity : results) {
tableEntity.setPartitionId(tableEntity.getPartitionKey());
tableEntity.setName(tableEntity.getRowKey());
out.add(tableEntity);
}
return out;
}
public void deletePartition(String partitionId) {
Iterable<PartitionEntity> results = (Iterable<PartitionEntity>) this.cloudTableStore.queryByPartitionId(PartitionEntity.class, partitionId);
private List<PartitionEntity> getAllByPartitionId(String partitionId) {
List<PartitionEntity> out = new ArrayList<>();
Iterable<PartitionEntity> results = (Iterable<PartitionEntity>) this.cloudTableStore.queryByKey(PartitionEntity.class,
PARTITION_KEY, partitionId);
for (PartitionEntity tableEntity : results) {
this.cloudTableStore.deleteCloudTableEntity(PartitionEntity.class, tableEntity.getPartitionKey(), tableEntity.getRowKey());
tableEntity.setPartitionId(tableEntity.getPartitionKey());
tableEntity.setName(tableEntity.getRowKey());
out.add(tableEntity);
}
return out;
}
private PartitionEntity getIdPartitionEntity(String partitionId) {
PartitionEntity partitionEntity = new PartitionEntity(partitionId, ID);
HashMap<String, EntityProperty> properties = new HashMap<>();
properties.put(VALUE, new EntityProperty(partitionId));
properties.put(SENSITIVE, new EntityProperty(false));
partitionEntity.setProperties(properties);
return partitionEntity;
}
private String getTenantSafeSecreteId(String partitionId, String secreteName) {
......
......@@ -36,10 +36,9 @@ public class CreatePartitionDescriptor extends RestDescriptor {
StringBuffer sb = new StringBuffer();
sb.append("{\n");
sb.append(" \"properties\": {")
.append("\"id\": \"").append(this.arg()).append("\",")
.append("\"elasticPassword\": {\"sensitive\":true,\"value\":\"test-password\"},")
.append("\"serviceBusConnection\": {\"sensitive\":true,\"value\":\"test-service-bus-connection\"},")
.append("\"cosmosConnection\": \"test-cosmos-connection\"")
.append("\"complianceRuleSet\": {\"value\":\"shared\"}")
.append("}\n")
.append("}");
return sb.toString();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment