File tree Expand file tree Collapse file tree 2 files changed +9
-1
lines changed
core/controller/src/main/scala/org/apache/openwhisk/core/controller
tests/src/test/scala/org/apache/openwhisk/core/controller/test Expand file tree Collapse file tree 2 files changed +9
-1
lines changed Original file line number Diff line number Diff line change @@ -220,7 +220,7 @@ trait WhiskActionsApi extends WhiskCollectionAPI with PostActionActivation with
220
220
* - 500 Internal Server Error
221
221
*/
222
222
override def create (user : Identity , entityName : FullyQualifiedEntityName )(implicit transid : TransactionId ) = {
223
- parameter(' overwrite ? false ) { overwrite =>
223
+ parameter(' overwrite ? false , ' deleteOld ? false ) { ( overwrite, deleteOld) =>
224
224
entity(as[WhiskActionPut ]) { content =>
225
225
val request = content.resolve(user.namespace)
226
226
val checkAdditionalPrivileges = entitleReferencedEntities(user, Privilege .READ , request.exec).flatMap {
@@ -230,6 +230,10 @@ trait WhiskActionsApi extends WhiskCollectionAPI with PostActionActivation with
230
230
onComplete(checkAdditionalPrivileges) {
231
231
case Success (_) =>
232
232
onComplete(WhiskActionVersionList .get(entityName, entityStore)) {
233
+ case Success (result) if (result.versions.size >= actionMaxVersionLimit && ! deleteOld) =>
234
+ terminate(
235
+ Forbidden ,
236
+ s " [PUT] entity has ${result.versions.size} versions exist which exceed $actionMaxVersionLimit, delete one of them before create new one or pass deleteOld=true to delete oldest version automatically " )
233
237
case Success (result) =>
234
238
val id = result.matchedDocId(content.version).getOrElse(entityName.toDocId)
235
239
putEntity(
Original file line number Diff line number Diff line change @@ -1627,6 +1627,10 @@ class ActionsApiTests extends ControllerTestCommon with WhiskActionsApi {
1627
1627
1628
1628
val content = WhiskActionPut (parameters = Some (Parameters (" x" , " X" )))
1629
1629
Put (s " $collectionPath/ ${action.name}" , content) ~> Route .seal(routes(creds)) ~> check {
1630
+ status should be(Forbidden )
1631
+ }
1632
+
1633
+ Put (s " $collectionPath/ ${action.name}?deleteOld=true " , content) ~> Route .seal(routes(creds)) ~> check {
1630
1634
status should be(OK )
1631
1635
}
1632
1636
// the first version should be deleted automatically
You can’t perform that action at this time.
0 commit comments