Skip to content

Commit

Permalink
Issue-91 Handle non-existent items when deleting (#134)
Browse files Browse the repository at this point in the history
* Issue-91 Handle non-existent items when deleting

* Issue-91 Handle bucket ACL being non-existent

* Issue-91 Fix Handle bucket ACL being non-existent
  • Loading branch information
maddisondavid authored Jul 26, 2020
1 parent 5c251d5 commit 77487d4
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,11 @@ public static BucketAcl get(Connection connection, String id,
return response.readEntity(BucketAcl.class);
}

}
public static boolean exists(Connection connection, String id,
String namespace) throws EcsManagementClientException {
UriBuilder uri = connection.getUriBuilder()
.segment(OBJECT, BUCKET, id, ACL)
.queryParam(NAMESPACE, namespace);
return connection.existenceQuery(uri, null);
}
}
37 changes: 32 additions & 5 deletions src/main/java/com/emc/ecs/servicebroker/service/EcsService.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,11 @@ void initialize() {

CompletableFuture deleteBucket(String id) {
try {
BucketAction.delete(connection, prefix(id), broker.getNamespace());
if (bucketExists(prefix(id))) {
BucketAction.delete(connection, prefix(id), broker.getNamespace());
} else {
logger.info("Bucket {} no longer exists, assume already deleted", prefix(id));
}

return null;
} catch (Exception e) {
Expand All @@ -95,6 +99,11 @@ CompletableFuture deleteBucket(String id) {

CompletableFuture wipeAndDeleteBucket(String id) {
try {
if (!bucketExists(prefix(id))) {
logger.info("Bucket {} no longer exists, assume already deleted", prefix(id));
return null;
}

addUserToBucket(id, broker.getRepositoryUser());

logger.info("Started Wiped of bucket {}", prefix(id));
Expand Down Expand Up @@ -193,6 +202,11 @@ private boolean bucketExists(String id) throws EcsManagementClientException {
broker.getNamespace());
}

private boolean aclExists(String id) throws EcsManagementClientException {
return BucketAclAction.exists(connection, prefix(id),
broker.getNamespace());
}

UserSecretKey createUser(String id) {
try {
logger.info(String.format("Creating user %s", prefix(id)));
Expand Down Expand Up @@ -232,7 +246,11 @@ Boolean userExists(String id) throws ServiceBrokerException {
}

void deleteUser(String id) throws EcsManagementClientException {
ObjectUserAction.delete(connection, prefix(id));
if (userExists(id)) {
ObjectUserAction.delete(connection, prefix(id));
} else {
logger.info("User {} no longer exists, assume already deleted", id);
}
}

void addUserToBucket(String id, String username) {
Expand Down Expand Up @@ -271,6 +289,11 @@ void addUserToBucket(String id, String username,

void removeUserFromBucket(String id, String username)
throws EcsManagementClientException {
if (!aclExists(id)) {
logger.info("ACL {} no longer exists when removing user {}", prefix(id), prefix(username));
return;
}

BucketAcl acl = BucketAclAction.get(connection, prefix(id),
broker.getNamespace());
List<BucketUserAcl> newUserAcl = acl.getAcl().getUserAccessList()
Expand Down Expand Up @@ -471,7 +494,11 @@ Map<String, Object> createNamespace(String id, ServiceDefinitionProxy service, P
}

void deleteNamespace(String id) throws EcsManagementClientException {
NamespaceAction.delete(connection, prefix(id));
if (namespaceExists(prefix((id)))) {
NamespaceAction.delete(connection, prefix(id));
} else {
logger.info("Namespace {} no longer exists, assume already deleted", prefix(id));
}
}

/**
Expand All @@ -491,8 +518,8 @@ private void bucketWipeCompleted(BucketWipeResult result, String id) {
// Wipe Succeeded, Attempt Bucket Delete
try {
logger.info("BucketWipe SUCCEEDED, deleted {} objects, Deleting bucket {}", result.getDeletedObjects(), prefix(id));
BucketAction.delete(connection, prefix(id), broker.getNamespace());
} catch (EcsManagementClientException e) {
deleteBucket(id);
} catch (Exception e) {
logger.error("Error deleting bucket "+prefix(id), e);
throw new RuntimeException("Error Deleting Bucket "+prefix(id)+" "+e.getMessage());
}
Expand Down

0 comments on commit 77487d4

Please sign in to comment.