[EXTDAM-63] [S3] Allow users to make an asset public/private (publication/activation) Created: 11/Feb/20  Updated: 19/Jan/21  Resolved: 11/Jan/21

Status: Closed
Project: External DAMs
Component/s: None
Affects Version/s: None
Fix Version/s: 1.0.4

Type: Story Priority: Neutral
Reporter: Ilgun Ilgun Assignee: Evzen Fochr
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Relates
dependency
is depended upon by EXTDAM-179 DOC: Publishing external assets (s3) Closed
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Release notes required:
Yes
Documentation update required:
Yes
Date of First Response:
Epic Link: DAM Phase 2
Sprint: Add-Ons 53, Add-Ons 54, Add-Ons 55
Story Points: 8

 Description   

Currently, we can have an asset private or public in the external system, however, there is no way of publication/activation of this assets in Mgnl. We need to let our users see whether the asset is private or public (like other apps with green vs red icon) and provide a way of handling those assets

AC

  • Action to mark an asset private
  • Action to mark an asset public 
  • Action Bar - When upload a new resource / editing , the publish / unpublish action should be added 

Dev notes. Implementation like Publication Workflow



 Comments   
Comment by Rabie Hayoun [ 23/Dec/20 ]

after merging, I am getting bellow exception:

2020-12-23 08:36:12,915 ERROR gnolia.external.dam.s3.service.AmazonS3GatewayImpl: ACL change failed.2020-12-23 08:36:12,915 ERROR gnolia.external.dam.s3.service.AmazonS3GatewayImpl: ACL change failed.software.amazon.awssdk.services.s3.model.NoSuchKeyException: The specified key does not exist. (Service: S3, Status Code: 404, Request ID: 88DC6F10330901A0, Extended Request ID: fYUdjXfRNaaOenflJ26dRVy2+QRvFs0+TlXHfiAr4zkmYLrplQaNRHL/xP/Jko4ocZekv9uyYOE=) at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleErrorResponse(AwsXmlPredicatedResponseHandler.java:156) ~[aws-xml-protocol-2.13.41.jar:?] at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handleResponse(AwsXmlPredicatedResponseHandler.java:106) ~[aws-xml-protocol-2.13.41.jar:?] at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handle(AwsXmlPredicatedResponseHandler.java:84) ~[aws-xml-protocol-2.13.41.jar:?] at software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlPredicatedResponseHandler.handle(AwsXmlPredicatedResponseHandler.java:42) ~[aws-xml-protocol-2.13.41.jar:?] at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler$Crc32ValidationResponseHandler.handle(AwsSyncClientHandler.java:94) ~[aws-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.handler.BaseClientHandler.lambda$successTransformationResponseHandler$4(BaseClientHandler.java:214) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:40) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:30) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:73) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:42) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:77) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:39) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:64) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:34) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:56) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:36) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:80) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:60) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:42) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:37) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:189) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:121) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:147) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:101) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45) ~[sdk-core-2.13.41.jar:?] at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:55) ~[aws-core-2.13.41.jar:?] at software.amazon.awssdk.services.s3.DefaultS3Client.putObjectAcl(DefaultS3Client.java:7384) ~[s3-2.13.41.jar:?] at info.magnolia.external.dam.s3.service.AmazonS3GatewayImpl.putAclForObject(AmazonS3GatewayImpl.java:316) ~[magnolia-external-dam-s3-1.0.4-SNAPSHOT.jar:?] at info.magnolia.external.dam.s3.service.AmazonS3GatewayImpl$$EnhancerByGuice$$89fab7ac.CGLIB$putAclForObject$14(<generated>) ~[magnolia-external-dam-s3-1.0.4-SNAPSHOT.jar:?] at info.magnolia.external.dam.s3.service.AmazonS3GatewayImpl$$EnhancerByGuice$$89fab7ac$$FastClassByGuice$$91838cd9.invoke(<generated>) ~[magnolia-external-dam-s3-1.0.4-SNAPSHOT.jar:?] at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228) ~[guice-4.2.2.jar:?] at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:76) ~[guice-4.2.2.jar:?] at info.magnolia.addon.commons.cache.interceptor.CachingInterceptor.invoke(CachingInterceptor.java:49) ~[magnolia-addon-commons-cache-1.0.jar:?] at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:78) ~[guice-4.2.2.jar:?] at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:54) ~[guice-4.2.2.jar:?] at info.magnolia.external.dam.s3.service.AmazonS3GatewayImpl$$EnhancerByGuice$$89fab7ac.putAclForObject(<generated>) ~[magnolia-external-dam-s3-1.0.4-SNAPSHOT.jar:?] at info.magnolia.external.dam.s3.service.DataProviderS3GatewayWrapper.putAclForObject(DataProviderS3GatewayWrapper.java:187) ~[magnolia-external-dam-s3-1.0.4-SNAPSHOT.jar:?] at info.magnolia.external.dam.s3.datasource.S3AssetProvider.setPublic(S3AssetProvider.java:216) ~[magnolia-external-dam-s3-1.0.4-SNAPSHOT.jar:?] at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_261] at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_261] at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[?:1.8.0_261] at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384) ~[?:1.8.0_261] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[?:1.8.0_261] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[?:1.8.0_261] at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_261] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_261] at java.util.stream.ReferencePipeline.reduce(ReferencePipeline.java:479) ~[?:1.8.0_261] at info.magnolia.external.dam.s3.app.action.PublishS3AssetAction.executeAsync(PublishS3AssetAction.java:52) ~[magnolia-external-dam-s3-1.0.4-SNAPSHOT.jar:?] at info.magnolia.external.dam.app.action.AsynchronousAction.lambda$execute$0(AsynchronousAction.java:68) ~[magnolia-external-dam-1.0.4-SNAPSHOT.jar:?] at java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1604) [?:1.8.0_261] at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java) [?:1.8.0_261] at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1596) [?:1.8.0_261] at java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:289) [?:1.8.0_261] at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java) [?:1.8.0_261] at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) [?:1.8.0_261] at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) [?:1.8.0_261] at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172) [?:1.8.0_261]

Comment by Rabie Hayoun [ 23/Dec/20 ]

I also missed one of the requirement(my bad), I don't see an action for unpublishing, S3 allows that. 

Generated at Mon Feb 12 01:51:32 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.