private AccessControlList s3AclFromSyncAcl(ObjectAcl syncAcl, boolean ignoreInvalid) { AccessControlList s3Acl = new AccessControlList(); s3Acl.setOwner(new CanonicalUser(syncAcl.getOwner(), syncAcl.getOwner())); for (String user : syncAcl.getUserGrants().keySet()) { AbstractGrantee grantee = new CanonicalUser(user, user); for (String permission : syncAcl.getUserGrants().get(user)) { Permission perm = getS3Permission(permission, ignoreInvalid); if (perm != null) s3Acl.addGrants(new Grant(grantee, perm)); } } for (String group : syncAcl.getGroupGrants().keySet()) { AbstractGrantee grantee = new Group(group); for (String permission : syncAcl.getGroupGrants().get(group)) { Permission perm = getS3Permission(permission, ignoreInvalid); if (perm != null) s3Acl.addGrants(new Grant(grantee, perm)); } } return s3Acl; }
@Override public Map<String, List<Object>> getHeaders() { Map<String, List<Object>> headers = super.getHeaders(); if (objectMetadata != null) headers.putAll(objectMetadata.toHeaders()); if (acl != null) headers.putAll(acl.toHeaders()); if (cannedAcl != null) RestUtil.putSingle(headers, S3Constants.AMZ_ACL, cannedAcl.getHeaderValue()); return headers; }
private void setPermission(SegmentHandle handle, Permission permission) { AccessControlList acl = client.getObjectAcl(config.getBucket(), config.getRoot() + handle.getSegmentName()); acl.getGrants().clear(); acl.addGrants(new Grant(new CanonicalUser(config.getAccessKey(), config.getAccessKey()), permission)); client.setObjectAcl( new SetObjectAclRequest(config.getBucket(), config.getRoot() + handle.getSegmentName()).withAcl(acl)); }
AccessControlList acl = new AccessControlList(); acl.addGrants(new Grant(new CanonicalUser(config.getAccessKey(), config.getAccessKey()), READ_WRITE_PERMISSION)); request.setAcl(acl);
private ObjectAcl syncAclFromS3Acl(AccessControlList s3Acl) { ObjectAcl syncAcl = new ObjectAcl(); syncAcl.setOwner(s3Acl.getOwner().getId()); for (Grant grant : s3Acl.getGrants()) { AbstractGrantee grantee = grant.getGrantee(); if (grantee instanceof Group) syncAcl.addGroupGrant(((Group) grantee).getUri(), grant.getPermission().toString()); else if (grantee instanceof CanonicalUser) syncAcl.addUserGrant(((CanonicalUser) grantee).getId(), grant.getPermission().toString()); } return syncAcl; }
private StreamSegmentInformation doGetStreamSegmentInfo(String streamSegmentName) { long traceId = LoggerHelpers.traceEnter(log, "getStreamSegmentInfo", streamSegmentName); S3ObjectMetadata result = client.getObjectMetadata(config.getBucket(), config.getRoot() + streamSegmentName); AccessControlList acls = client.getObjectAcl(config.getBucket(), config.getRoot() + streamSegmentName); boolean canWrite = acls.getGrants().stream().anyMatch(grant -> grant.getPermission().compareTo(Permission.WRITE) >= 0); StreamSegmentInformation information = StreamSegmentInformation.builder() .name(streamSegmentName) .length(result.getContentLength()) .sealed(!canWrite) .lastModified(new ImmutableDate(result.getLastModified().toInstant().toEpochMilli())) .build(); LoggerHelpers.traceLeave(log, "getStreamSegmentInfo", traceId, streamSegmentName); return information; }
@Override public Map<String, List<Object>> getHeaders() { Map<String, List<Object>> headers = super.getHeaders(); if (cannedAcl != null) RestUtil.putSingle(headers, S3Constants.AMZ_ACL, cannedAcl.getHeaderValue()); if (acl != null) headers.putAll(acl.toHeaders()); if (vPoolId != null) RestUtil.putSingle(headers, RestUtil.EMC_VPOOL, vPoolId); if (fileSystemEnabled != null) RestUtil.putSingle(headers, RestUtil.EMC_FS_ENABLED, fileSystemEnabled); if (staleReadAllowed != null) RestUtil.putSingle(headers, RestUtil.EMC_STALE_READ_ALLOWED, staleReadAllowed); if (encryptionEnabled != null) RestUtil.putSingle(headers, RestUtil.EMC_ENCRYPTION_ENABLED, encryptionEnabled); if (retentionPeriod != null) RestUtil.putSingle(headers, RestUtil.EMC_RETENTION_PERIOD, retentionPeriod); if (metadataSearchKeys != null) RestUtil.putSingle(headers, RestUtil.EMC_METADATA_SEARCH, metadataSearchKeys); return headers; }
@Override public Map<String, List<Object>> getHeaders() { Map<String, List<Object>> headers = super.getHeaders(); if (range != null) RestUtil.putSingle(headers, RestUtil.HEADER_RANGE, "bytes=" + range.toString()); if (objectMetadata != null) headers.putAll(objectMetadata.toHeaders()); if (ifModifiedSince != null) RestUtil.putSingle(headers, RestUtil.HEADER_IF_MODIFIED_SINCE, RestUtil.headerFormat(ifModifiedSince)); if (ifUnmodifiedSince != null) RestUtil.putSingle(headers, RestUtil.HEADER_IF_UNMODIFIED_SINCE, RestUtil.headerFormat(ifUnmodifiedSince)); if (ifMatch != null) RestUtil.putSingle(headers, RestUtil.HEADER_IF_MATCH, ifMatch); if (ifNoneMatch != null) RestUtil.putSingle(headers, RestUtil.HEADER_IF_NONE_MATCH, ifNoneMatch); if (acl != null) headers.putAll(acl.toHeaders()); if (cannedAcl != null) RestUtil.putSingle(headers, S3Constants.AMZ_ACL, cannedAcl.getHeaderValue()); return headers; }
@Override public Map<String, List<Object>> getHeaders() { Map<String, List<Object>> headers = super.getHeaders(); String source = String.format("/%s/%s", RestUtil.urlEncode(sourceBucketName), RestUtil.urlEncode(sourceKey)); if (sourceVersionId != null) source += "?versionId=" + sourceVersionId; RestUtil.putSingle(headers, S3Constants.AMZ_COPY_SOURCE, source); if (ifSourceModifiedSince != null) RestUtil.putSingle(headers, S3Constants.AMZ_SOURCE_MODIFIED_SINCE, ifSourceModifiedSince); if (ifSourceUnmodifiedSince != null) RestUtil.putSingle(headers, S3Constants.AMZ_SOURCE_UNMODIFIED_SINCE, ifSourceUnmodifiedSince); if (ifSourceMatch != null) RestUtil.putSingle(headers, S3Constants.AMZ_SOURCE_MATCH, ifSourceMatch); if (ifSourceNoneMatch != null) RestUtil.putSingle(headers, S3Constants.AMZ_SOURCE_NONE_MATCH, ifSourceNoneMatch); if (ifTargetMatch != null) RestUtil.putSingle(headers, RestUtil.HEADER_IF_MATCH, ifTargetMatch); if (ifTargetNoneMatch != null) RestUtil.putSingle(headers, RestUtil.HEADER_IF_NONE_MATCH, ifTargetNoneMatch); if (objectMetadata != null) { RestUtil.putSingle(headers, S3Constants.AMZ_METADATA_DIRECTIVE, "REPLACE"); headers.putAll(objectMetadata.toHeaders()); } if (acl != null) headers.putAll(acl.toHeaders()); if (cannedAcl != null) RestUtil.putSingle(headers, S3Constants.AMZ_ACL, cannedAcl.getHeaderValue()); return headers; }